是基线图中的陆地(python)
我一直在试图用是基线图中的陆地(python),python,matplotlib-basemap,Python,Matplotlib Basemap,我一直在试图用mpl\u工具包.basemap中的.is\u land来屏蔽land 运行以下代码时: map=Basemap(llcrnrlon=7.298914095230308,llcrnrlat=58.98235690451632, urcrnrlon=12.27072348324015,urcrnrlat= 57.92306182768044,投影='cyl',分辨率='f') value=map.is_-land(11.6116882265539,57.86868795294363)
mpl\u工具包.basemap
中的.is\u land
来屏蔽land
运行以下代码时:
map=Basemap(llcrnrlon=7.298914095230308,llcrnrlat=58.98235690451632,
urcrnrlon=12.27072348324015,urcrnrlat=
57.92306182768044,投影='cyl',分辨率='f')
value=map.is_-land(11.6116882265539,57.86868795294363)
打印(值)
返回False
但当不指定区域时
map=Basemap(投影='cyl',分辨率='f')
value=map.is_-land(11.6116882265539,57.86868795294363)
打印(值)
返回True
我不知道为什么
我确实需要指定区域,否则代码运行速度会慢5-6倍。您应用的
不正确。根据
is_land
如果给定的x,y点(在投影坐标中)在land上,则返回True,否则返回False。土地的定义基于
GSHHS与类实例关联的海岸线多边形。要点
陆地区域内的湖泊上方不算作陆地点
这意味着您必须将横向坐标转换为投影的x,y,然后运行is\u 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
使用projection='cyl'
,它是板卡利投影。因此,您可以在map.is\u land()
中使用以度数表示的lat。换句话说,在这种情况下,xpt,ypt=map(lon,lat)
。