Схема обучения GDAL C++ API Класс линии OGRGeometry OGRLineString

Класс 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");
    }

рекомендация

отblog.csdn.net/qq_69574549/article/details/132005783