- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想将 boost::geometry::simplify
方法与 OGRLineString
一起使用。虽然我可以通过宏注册 OGRPoint
:
BOOST_GEOMETRY_REGISTER_POINT_2D_GET_SET(OGRPoint, double, cs::cartesian, OGRPoint::getX, OGRPoint::getY, OGRPoint::setX, OGRPoint::setY)
我目前无法使用以下代码:
#include <boost/geometry/geometry.hpp>
#include <boost/geometry/geometries/register/point.hpp>
#include <boost/geometry/geometries/register/linestring.hpp>
#include <boost/geometry/geometries/linestring.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
BOOST_GEOMETRY_REGISTER_POINT_2D_GET_SET(OGRPoint, double, cs::cartesian, OGRPoint::getX, OGRPoint::getY, OGRPoint::setX, OGRPoint::setY)
BOOST_GEOMETRY_REGISTER_LINESTRING(OGRLineString)
void example()
{
OGRLineString test;
OGRLineString simplified;
boost::geometry::simplify(test, simplified, 0.5);
}
Simplyfy 方法无法编译,我收到有关 boost:mpl::eval_if_c 的错误信息,这对我没有帮助。
最佳答案
Boost.Geometry linestring必须满足 Boost.Range 概念。例如,std::vector 会这样做。但是开箱即用的 OGRLineString。
首先,应该定义一个迭代器,遍历 OGRLineString 包含的点。使用 OGRLineString::getPoint(...) 这基本上是可能的。
其次,如果实现了迭代器,这可能是最难的部分,OGRLineString 应该适应 Boost.Range,例如如所述here .
如果这样做,Boost.Geometry 应该将 OGRLineString 识别为线串并可以读取它。
但是,要写入 OGRLineString,还需要执行一个额外的步骤。它应该是一个“可变范围”。因为这还没有在 Boost.Range 中定义,直到现在它只是一个几何图形,可以通过在 boost::geometry::traits 命名空间(clear、push_back 和 resize)中专门化三个类来实现。
关于boost - 如何将 OGRLineString 注册为 boost 线串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13196503/
我想将 boost::geometry::simplify 方法与 OGRLineString 一起使用。虽然我可以通过宏注册 OGRPoint: BOOST_GEOMETRY_REGISTER_PO
我正在创建一个包装器,允许将 OGR 的类与 Boost.Geometry 一起使用。到目前为止,我已经创建了必要的迭代器外观并使用 Boost.Geometry 注册了 OGR 的几何类( OGRP
我是一名优秀的程序员,十分优秀!