Класс OGRLineString "ogr_geometry.h"
OGRLineString
Класс — это класс геометрических объектов в библиотеке OGR, используемый для представления линейных сегментов или полилиний. Он состоит из нескольких координатных точек и образует отрезок между координатными точками. OGRLineString
Может содержать координатные точки 2D, 3D или 3D+M, где M представляет дополнительные показатели, такие как время или скорость.
Публичные функции
OGRLineString()
Создать пустую строку
OGRLineString ( const OGRLineString и прочее )
конструктор копирования
OGRLineString и оператор = ( const OGRLineString и прочее )
оператор присваивания
клон
виртуальная OGRLineString *clone() переопределение константы
создать копию этого объекта
OGRLineString lineString;
// 添加两个坐标点构成线段
lineString.addPoint(0.0, 0.0);
lineString.addPoint(10.0, 10.0);
// 克隆 OGRLineString 对象
OGRLineString* clonedLineString = lineString.clone();
криваяк линии
виртуальный OGRLineString *CurveToLine(double dfMaxAngleStepSizeDegrees = 0, const char *const *papszOptions = nullptr) переопределение константы
Возвращает строку линии из геометрии кривой
параметр:
-
dfMaxAngleStepSizeDegrees — максимальный размер шага по дуге в градусах, по умолчанию установлен равным нулю.
-
papszOptions -- параметры в виде списка строк, заканчивающихся нулем, или NULL.
Возвращает: строку, которая аппроксимирует кривую
OGRLineString lineString;
// Add points to the lineString (this could be a curve)
lineString.addPoint(0, 0);
lineString.addPoint(1, 1);
lineString.addPoint(2, 0);
// Convert curve to line
OGRLineString* convertedLine = lineString.CurveToLine();
// Output the converted line's points
for (int i = 0; i < convertedLine->getNumPoints(); ++i) {
double x, y;
convertedLine->getPoint(i, &x, &y);
std::cout << "Point " << i << ": (" << x << ", " << y << ")" << std::endl;
}
// Release memory
delete convertedLine;
getCurveGeometry
виртуальная OGRGeometry *getCurveGeometry(const char *const *papszOptions = nullptr) переопределение константы
Возвращает изогнутую версию этой геометрии
параметр:
papszOptions -- Параметры в виде списка строк, заканчивающихся нулем. Временно не используется. Должно быть установлено значение NULL.
Возвращает: новая геометрия
// 创建一个线性曲线对象
OGRLineString linearRing;
linearRing.addPoint(0, 0);
linearRing.addPoint(1, 0);
linearRing.addPoint(1, 1);
linearRing.addPoint(0, 1);
linearRing.addPoint(0, 0);
// 获取线性曲线的几何对象
OGRGeometry* curveGeometry = linearRing.getCurveGeometry();
// 输出几何对象的类型
if (curveGeometry != nullptr) {
OGRwkbGeometryType geomType = curveGeometry->getGeometryType();
const char* typeName = OGRGeometryTypeToName(geomType);
printf("Curve geometry type: %s\n", typeName);
// 释放内存
OGRGeometryFactory::destroyGeometry(curveGeometry);
} else {
printf("Failed to get curve geometry.\n");
}
get_Area
виртуальное двойное переопределение константы get_Area()
Получить площадь (замкнутой) кривой
Возвращает: площадь объекта в квадратных единицах используемой системы пространственной привязки.
// 创建一个多边形对象
OGRLinearRing ring;
ring.addPoint(0, 0);
ring.addPoint(1, 0);
ring.addPoint(1, 1);
ring.addPoint(0, 1);
ring.addPoint(0, 0);
OGRPolygon polygon;
polygon.addRing(&ring);
// 获取多边形对象的面积
double area = polygon.get_Area();
// 输出面积
printf("Polygon area: %f\n", area);
getGeometryType
виртуальный OGRwkbGeometryType getGeometryType() переопределение константы
возвращаться:
тип геометрии
// 创建一个点对象
OGRPoint point(10.0, 20.0);
// 获取点对象的几何类型
OGRwkbGeometryType geomType = point.getGeometryType();
// 输出几何类型
switch (geomType) {
case wkbPoint:
printf("Geometry Type: Point\n");
break;
case wkbLineString:
printf("Geometry Type: LineString\n");
break;
case wkbPolygon:
printf("Geometry Type: Polygon\n");
break;
// 更多几何类型的处理...
default:
printf("Unknown Geometry Type\n");
break;
}
getGeometryName
Виртуальный константный символ *getGeometryName() переопределение константы
Получить имя WKT типа геометрии
Возвращает: имя, используемое для этого типа геометрии, в известном текстовом формате. Возвращаемый указатель указывает на статическую внутреннюю строку и не должен изменяться или освобождаться.
// 创建一个点对象
OGRPoint point(10.0, 20.0);
// 获取几何对象的名称
const char* geometryName = point.getGeometryName();
// 输出几何对象的名称
printf("Geometry Name: %s\n", geometryName);
по часовой стрелке
виртуальный int isClockwise() переопределение константы
Возвращает TRUE, если кольцо имеет обмотку по часовой стрелке (или вес менее 2 фунтов).
Возвращает: true, если по часовой стрелке, иначе false.
/ 创建一个多边形对象
OGRLinearRing ring;
ring.addPoint(0, 0);
ring.addPoint(0, 1);
ring.addPoint(1, 1);
ring.addPoint(1, 0);
ring.addPoint(0, 0);
OGRPolygon polygon;
polygon.addRing(&ring);
// 判断多边形顶点排列方向
int clockwise = polygon.isClockwise();
// 输出判断结果
if (clockwise > 0) {
printf("Polygon is clockwise.\n");
} else if (clockwise < 0) {
printf("Polygon is counterclockwise.\n");
} else {
printf("Vertices are collinear or not a valid polygon.\n");
}