【发布时间】:2020-07-20 08:04:32
【问题描述】:
在thisgeopandas 示例中,南极洲陆地质量在重新投影到墨卡托投影之前从GeoDataFrame 删除,以防止包含极点的形状出现问题(它会变得无限大)。
我想知道,是否有可能找到一种更稳健的重投影方法,从而不需要手动调整数据框。特别是因为我正在使用一个没有单独的南极洲行的数据集:
我有两个想法:
1。使用目的地信息crs
以epsg website 为例,显示“使用区域”:
我们可以使用它在重新投影之前准备数据:删除任何向南延伸超过 -80 度的形状,或者将其与描述目标 crs 使用区域的shapely Polygon 相交,就源 crs - 在这种情况下是标准 epsg:4326 所以 Polygon([(-180,-80), (-180,84), ...])。
这种方法的问题:我不确定是否可以从任何crs 的某个地方以编程方式访问此使用区域信息,例如来自GeoDataFrame 对象。
2。在帖子中修复
就做吧,以后再挑出错误的重新投影的部分。例如,在我目前的情况下,重新投影的地理数据框 gdf_merc = gdf.to_crs(epsg=3395) 确实有错误...
...但是通过在几何的字符串表示中搜索 inf 单词,我可以在 MultiPolygon...中找到有问题的 Polygon...
In [360]: for i, polygon in enumerate(gdf_merc.geometry[0]):
...: if 'inf' in str(polygon):
...: print(i)
0
...然后删除它:
这种方法的问题:看起来很复杂,我更愿意从一开始就防止出现任何问题。
关于如何解决这两种方法的任何想法,或者是否有第三种方法?
一句话:我对一般情况感兴趣,其中 any crs 可以被重新投影到,所以我不想抢先删除南极洲(“以防万一”),就像其他预测可能完全没问题,更重要的是,它们可能还有其他问题区域。
非常感谢!
【问题讨论】: