之前有一个问题是关于如何使用Cartopy检查地理坐标点是否在陆地或海洋上的。可以参考以下代码来判断一个地理坐标点是否在陆地上:"is_land":
请查看链接:https://stackoverflow.com/questions/asktitle=Checking%20if%20a%20geocoordinate%20point%20is%20land%20or%20ocean%20using%20cartopy%20and%20Natural%20Earth%2010m%20data。
当将自然地球“物理”“陆地”形状文件的分辨率更改为“10m”时,此代码对于地理坐标(0,0)返回“True”的结果是 意外 的。
这是自然地球形状文件数据还是shapely实用程序代码的问题?
请查看链接:https://stackoverflow.com/questions/asktitle=Checking%20if%20a%20geocoordinate%20point%20is%20land%20or%20ocean%20using%20cartopy%20and%20Natural%20Earth%2010m%20data。
import cartopy.io.shapereader as shpreader
import shapely.geometry as sgeom
from shapely.ops import unary_union
from shapely.prepared import prep
land_shp_fname = shpreader.natural_earth(resolution='50m',
category='physical', name='land')
land_geom =
unary_union(list(shpreader.Reader(land_shp_fname).geometries()))
land = prep(land_geom)
def is_land(x, y):
return land.contains(sgeom.Point(x, y))
当将自然地球“物理”“陆地”形状文件的分辨率更改为“10m”时,此代码对于地理坐标(0,0)返回“True”的结果是 意外 的。
>>> print(is_land(0, 0))
True
这是自然地球形状文件数据还是shapely实用程序代码的问题?
print shapely.__version__
1.6.4.post1