osgEarth::CircleNode 半径和 SRS 关系

osgEarth::CircleNode Radius and SRS Relation

提问人:selpak 提问时间:11/10/2023 最后编辑:selpak 更新时间:11/10/2023 访问量:14

问:

我想在地图中显示一个 CircleNode。但是当我实际测量它时,我看到的半径是不对的。

  osg::ref_ptr<CircleNode> circle = new CircleNode();
  circle->setPosition(center); // center has the same srs as the map
  circle->setRadius(Distance(2000, Units::METERS));
  ...

当我创建一条线时,它显示了正确的距离

auto centerPoint = m_Center.transform(m_Center.getSRS()->getGeographicSRS());
    double outLon;
    double outLat;
    GeoMath::destination(osgEarth::deg2rad(centerPoint.y()),
      osgEarth::deg2rad(centerPoint.x()), osgEarth::deg2rad(angle),
      radius.as(Units::METERS), outLat, outLon); // move 2km

    centerPoint.x() = osgEarth::rad2deg(outLon);
    centerPoint.y() = osgEarth::rad2deg(outLat);
    const auto endPoint = wgsCenterPoint.transform(m_Center.getSRS());
  ...

在下图中,红色圆圈的半径为2公里。

Line vs CircleNode

地图剖面是

+proj=webmerc +a=6378137 +b=6378137 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +单位=m +nadgrids=@null +towgs84=0,0,0,0,0,0,0 +no_defs

地图源为 http://[abc].tile.openstreetmap.org/{z}/{x}/{y}.png (spherical-mercator)

我错过了什么?
谢谢

编辑

似乎 CircleNode 没有将 SRS 传递给 GeometryFactory。

https://github.com/gwaldron/osgearth/blob/fd58fbbaa658ed731e6e823af0c2c2148bf58a2d/src/osgEarth/CircleNode.cpp#L149C5-L149C21

GIS 操作系统地球

评论


答: 暂无答案