我在geojson中定义了一个多多边形。我在试着计算它的面积。
当我遍历表面上的代码路径时,我得到了非常混乱的结果。我怀疑这是因为我错误地使用了某些元素。
boundaries = {...valid geojson...}
field_feature_collection = RGeo::GeoJSON.decode(boundaries, geo_factory: RGeo::Geographic.simple_mercator_factory)
first_feature = field_feature_collection[0]
first_feature.geometry.area
# => 1034773.6727743163 我知道我的特色建筑面积约为602982平方米。我想不出如何将其与上面的结果相协调。
我怀疑我遗漏了一些明显的预测。
有谁知道出了什么问题吗?
发布于 2021-05-11 22:38:57
这很可能是因为在GeoJSON解码器中使用simple_mercator_factory作为geo_factory。simple_mercator_factory从经度/纬度坐标系解析几何图形,但执行所有计算(长度、面积等)。使用几何图形的墨卡托投影(EPSG:3857)。
墨卡托投影距离赤道越远,变形越大,这就是为什么你得到的面积大约是你预期的两倍。
根据您的项目范围,使用不同的投影可能更合适,特别是如果面积是您的关键指标。如果您选择不同的投影,rgeo-proj4 gem刚刚更新为与较新版本的PROJ一起工作,因此您可以在您的应用程序中创建适当的转换。
另一种选择是使用RGeo::Geographic.spherical_factory,它使用地球的球面近似,将提供比墨卡托投影更逼真的区域,但它比使用GEOS支持的笛卡尔工厂(这是simple_mercator_factory使用的)要慢。
https://stackoverflow.com/questions/67477231
复制相似问题