is_land 在底图中 (python)

is_land in basemap (python)

我一直在尝试用 mpl_toolkits.basemap 中的 .is_land 来掩盖土地。

当运行宁下面的代码:

map = Basemap(llcrnrlon = 7.298914095230308, llcrnrlat = 58.98235690451632, urcrnrlon = 12.27072348324015, urcrnrlat = 57.92306182768044,projection='cyl', resolution='f')

value = map.is_land(11.61168822665539, 57.86868795294363)

print(value) returns 错

但未指定区域时

map = Basemap(projection='cyl', resolution='f')

value = map.is_land(11.61168822665539, 57.86868795294363)

print(value) returns 正确

我不明白为什么。

我确实需要指定区域,否则代码会比 运行 慢 5-6 倍。

is_land 应用不正确。根据 http://matplotlib.org/basemap/api/basemap_api.html?highlight=is_land#mpl_toolkits.basemap.Basemap.is_land is_land returns 如果给定的 x,y 点(在投影坐标中)在陆地上,则为 True,否则为 False。土地的定义是基于 与 class 实例关联的 GSHHS 海岸线多边形。积分 陆地区域内的湖泊不算陆地点。

这意味着您必须将经纬度坐标转换为投影的 x,y,然后 运行 is_land。喜欢这里:

map = Basemap(llcrnrlon = 7.298914095230308, llcrnrlat = 58.98235690451632, 
               urcrnrlon = 12.27072348324015, urcrnrlat = 
               57.92306182768044,projection='cyl', resolution='f')

lon, lat = 11.61168822665539, 57.86868795294363) # test coords
xpt, ypt = map( lon, lat ) # convert to projection map
value = map.is_land(xpt, ypt) # test is_land