搭建网站的工具,网站免费维护期是多少,嘉定做网站的,网站的定位与功能OGRCircularString Class ogrsf_frmts.h
OGRCircularString 类是 OGR 几何库中的一个类#xff0c;用于表示圆弧字符串#xff08;circular string#xff09;类型的几何图形。圆弧字符串是由一系列圆弧段组成的几何图形#xff0c;每个圆弧段由三个点定义…OGRCircularString Class ogrsf_frmts.h
OGRCircularString 类是 OGR 几何库中的一个类用于表示圆弧字符串circular string类型的几何图形。圆弧字符串是由一系列圆弧段组成的几何图形每个圆弧段由三个点定义起始点、中间点和终止点。这些圆弧段可以连接成一个闭合的圆弧字符串也可以构成一个非闭合的曲线
Public Functions
OGRCircularString()
创建一个空的圆弧字符串 OGRCircularStringconst OGRCircularString other)
复制构造函数 OGRCircularString operatorconst OGRCircularString other)
赋值运算符 importFromWkb
virtual OGRErr importFromWkb(const unsigned char*, size_t, OGRwkbVariant, size_t nBytesConsumedOut) override
从已知的二进制数据中指定几何图形
参数: pabyData -- 二进制输入数据。 nSize -- pabyData 的大小以字节为单位如果不知道则为 -1。 eWkbVariant -- 如果 wkbVariantPostGIS1则对曲线几何代码进行特殊解释 nBytesConsumptiondOut -- 输出参数。消耗的字节数。
返回: OGRERR_NONE如果一切顺利否则OGRERR_NOT_ENOUGH_DATA、OGRERR_UNSUPPORTED_GEOMETRY_TYPE或OGRERR_CORRUPT_DATA中的任何一个都可能被退回 exportToWkb
virtual OGRErr exportToWkb(OGRwkbByteOrder, unsigned char*, OGRwkbVariant wkbVariantOldOgc) const override
将几何图形转换为众所周知的二进制格式
参数: eByteOrder -- wkbXDR 或 wkbNDR 之一分别表示 MSB 或 LSB 字节顺序。 pabyData -- 写入二进制表示的缓冲区。此缓冲区的大小必须至少为 OGRGeometryWkbSize 字节。 eWkbVariant -- 导出三维或更多几何图形时使用什么标准。默认的 wkbVariantOldOgc 是历史的 OGR 变体。wkbVariantIso 是 ISO SQL/MM 中定义的变体并被 OGC 用于 SFSQL 1.2。
返回: 当前始终返回OGRERR_NONE importFromWkt
virtual OGRErr importFromWktconst char** override
从已知文本数据中指定几何图形
参数:
ppszInput -- 指向源文本指针的指针。指针将更新为已使用文本之后的指针。
返回: OGRERR_NONE如果一切顺利否则OGRERR_NOT_ENOUGH_DATA、OGRERR_UNSUPPORTED_GEOMETRY_TYPE或OGRERR_CORRUPT_DATA中的任何一个都可能被退回 exportToWkt
virtual stdstring exportToWktconst OGRWktOptions opts OGRWktOptions OGRErr *err nullptr const override
将循环字符串导出到 WKT
参数: opts -- 输出选项。 err -- 指向错误代码的指针如果需要。
返回:
表示此循环字符串的 WKT 字符串 IsValid
virtual OGRBoolean IsValid const override
测试几何图形是否有效
返回: 如果几何图形没有点则为 TRUE否则为 FALSE getEnvelope
virtual void getEnvelopeOGREnvelope *psEnvelope const override
计算并返回传递的 psEnvelope 结构中此几何图形的边界包络
参数:
psEnvelope -- 放置结果的结构
// 创建一个圆弧几何对象OGRCircularString circularString;// 添加一些点到圆弧circularString.addPoint(0, 0);circularString.addPoint(1, 1);circularString.addPoint(2, 2);// 创建一个用于存储外包络矩形的结构体OGREnvelope envelope;// 获取圆弧的外包络矩形circularString.getEnvelope(envelope);// 打印外包络矩形的坐标信息std::cout MinX: envelope.MinX std::endl;std::cout MinY: envelope.MinY std::endl;std::cout MaxX: envelope.MaxX std::endl;std::cout MaxY: envelope.MaxY std::endl; getEnvelope
virtual void getEnvelopeOGREnvelope3D *psEnvelope const override
计算并返回传递的 psEnvelope 结构中此几何图形的边界包络 3D
参数:
psEnvelope -- 放置结果的结构 clone
virtual OGRCircularString *clone const override
创建此对象的副本
返回: 具有与原始对象相同的几何和空间参考系统的新对象实例 get_Length
virtual double get_Length() const override
返回曲线的长度
返回: 曲线的长度如果曲线尚未初始化则为零 CurveToLine
virtual OGRLineString *CurveToLinedouble dfMaxAngleStepSizeDegrees 0 const char *const *papszOptions nullptr const override
参数: dfMaxAngleStepSizeDegrees -- 沿弧的最大步长以度为单位使用默认设置为零。 papszOptions -- 选项作为以 null 结尾的字符串列表或 NULL。
返回: 近似曲线的线串 Value
virtual void Valuedouble OGRPoint* const override
沿曲线在给定距离处获取点
参数: dfDistance -- 沿采样位置的曲线的距离。对于此曲线此距离应介于 0 和 get_Length 之间。 poPoint -- 要指定曲线位置的点 // 创建一个OGRPoint对象表示圆弧曲线的起点OGRPoint startPoint(0.0, 0.0);// 创建一个圆弧曲线对象构建一个圆弧OGRCircularString circularString;circularString.addPoint(startPoint);circularString.addCircularArc(10.0, 0.0, 20.0);// 调用Value函数计算圆弧上的点double Distance 15.0; // 假设给定一个长度OGRPoint resultPoint;circularString.Value(Distance, resultPoint);// 打印计算得到的点坐标std::cout Point on circular arc at angle angle : resultPoint.getX() , resultPoint.getY() std::endl; get_Area
virtual double get_Area() const override
获取闭合曲线的面积 getGeometryType
virtual OGRwkbGeometryType getGeometryType() const override
获取几何类型 getGeometryName
Virtual const char *getGeometryName const override
获取几何类型的 WKT 名称
返回:用于此几何类型的名称采用众所周知的文本格式。返回的指针指向静态内部字符串不应修改或释放 segmentize
virtual void segmentize(double dfMaxLength) override
修改几何图形使其没有比给定距离更长的线段
参数:
dfMaxLength -- 分割后 2 点之间的最大距离
// 创建一个圆弧几何对象OGRPoint point1(0, 0);OGRPoint point2(5, 0);OGRPoint point3(10, 0);OGRCircularString circularString;circularString.addPoint(point1);circularString.addPoint(point2);circularString.addPoint(point3);// 打印原始的圆弧几何对象std::cout 原始圆弧几何对象 std::endl;char* wkt;circularString.exportToWkt(wkt);std::cout wkt std::endl;CPLFree(wkt);// 使用最大长度为2.0的线段对圆弧几何对象进行分段circularString.segmentize(2.0);// 打印分段后的圆弧几何对象std::cout 分段后的圆弧几何对象 std::endl;circularString.exportToWkt(wkt);std::cout wkt std::endl;CPLFree(wkt) hasCurveGeometry
virtual OGRBoolean hasCurveGeometryint bLookForNonLinear FALSE const override
如果此几何图形是或具有曲线几何图形则返回此几何图形 线性几何类型 OGRPoint点几何类型表示一个点。OGRLineString线几何类型表示一条折线由一系列连续的线段组成。OGRRing环几何类型是线性几何类型的特殊类型表示闭合的线。环几何类型可以用于表示简单多边形的外环或内环。 曲线几何类型 OGRCircularString圆弧几何类型表示一个圆弧。OGRCompoundCurve复合曲线几何类型由多个线段和圆弧组成的复杂曲线。OGRCurvePolygon曲线多边形几何类型表示由曲线组成的多边形。曲线多边形由外环和零个或多个内环组成这些环可以是线性环或圆弧环。 当 bLookForNonLinear 参数设置为 FALSE 时表示只查找线性的子几何对象不查找曲线类型的子几何对象包括圆弧、复合曲线等。当 bLookForNonLinear 参数设置为 TRUE 时表示同时查找曲线类型和线性类型的子几何对象 参数:
bLookForNonLinear -- 将其设置为 TRUE 以检查几何图形是否为 CIRCULARSTRING 或包含 CIRCULARSTRING。
返回: 如果此几何图形是或具有曲线几何图形则为 TRUE OGRPoint point(10.0, 20.0);//检查点是否具有曲线几何(非线性)。if (point.hasCurveGeometry()) {std::cout The point contains curve geometry. std::endl;} else {std::cout The point does not contain curve geometry. std::endl;} getLinearGeometry
virtual OGRGeometry *getLinearGeometry(double dfMaxAngleStepSizeDegrees 0, const char *const *papszOptions nullptr) const override
返回此几何图形的非曲线版本可能是近似值
参数: dfMaxAngleStepSizeDegrees -- 沿弧的最大步长以度为单位使用默认设置为零。 papszOptions -- 选项作为以 null 结尾的字符串列表。
返回: 新的几何图形
OGRPoint p1(0, 0);
OGRPoint p2(1, 1);
OGRPoint p3(2, 0);OGRCircularString cs;
cs.addPoint(p1);
cs.addPoint(p2);
cs.addPoint(p3);// 转换为线性几何对象
OGRGeometry* linearGeom cs.getLinearGeometry();
在上面的例子中一开始设置的点在 OGRCircularString 中表示一个圆弧段可以用中心点、起始点、终止点和半径等信息来表示。但是当将 OGRCircularString 对象转换为线性几何对象时圆弧段将被拆分成一组连续的直线段这些直线段近似地组成了原始圆弧的形状。