Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在matplotlib图上覆盖海岸线_Python_Matplotlib_Matplotlib Basemap_Map Projections - Fatal编程技术网

Python 在matplotlib图上覆盖海岸线

Python 在matplotlib图上覆盖海岸线,python,matplotlib,matplotlib-basemap,map-projections,Python,Matplotlib,Matplotlib Basemap,Map Projections,我想在代表一个区域的图形上叠加一些海岸线。该区域由以下框定义: 顶部:3900000 底部:3450000 左:30万 右:80万 坐标系为WGS_1984_UTM_Zone_36N 我已经尝试使用mpl_toolkits.basemap,但是我无法确定如何指定该区域,因为ESPG代码(32636)不被basemap接受,并且当我尝试手动插入投影参数时(m=basemap(projection='tmerc',k_0=0.9996,lat_0=0,lon_0=33,llcrnrx=30000

我想在代表一个区域的图形上叠加一些海岸线。该区域由以下框定义:

  • 顶部:3900000
  • 底部:3450000
  • 左:30万
  • 右:80万
坐标系为WGS_1984_UTM_Zone_36N

我已经尝试使用mpl_toolkits.basemap,但是我无法确定如何指定该区域,因为ESPG代码(32636)不被basemap接受,并且当我尝试手动插入投影参数时(
m=basemap(projection='tmerc',k_0=0.9996,lat_0=0,lon_0=33,llcrnrx=300000,llcrnry=3450000,urcrnx=800000,urcrny=3900000
)它仍然需要一个lat-long边界框

有没有其他方法可以在Basemap中定义该区域

谢谢

编辑:我试图返回由utm系统中的长方体定义的海岸线区域,使用长方体末端的lat/long值将导致转换回utm系统时海岸线覆盖区域的上/下覆盖(我想,如果我错了,请纠正我)

所有这些都在这个链接上


在这个链接上,请尝试cartopy及其新的epsg功能:

projection = ccrs.epsg(32636)
fig, ax = plt.subplots(figsize=(5, 5),
                      subplot_kw=dict(projection=projection))
ax.coastlines(resolution='10m')
下面是一个笔记本,其中有一个示例:

试试cartopy及其新的epsg功能:

projection = ccrs.epsg(32636)
fig, ax = plt.subplots(figsize=(5, 5),
                      subplot_kw=dict(projection=projection))
ax.coastlines(resolution='10m')
下面是一个笔记本,其中有一个示例:

你看了吗?有帮助吗?我将它分成两部分,(1)将顶部/底部/等转换为横向/纵向角,然后(2)使用底图绘制。你可以使用PyProj(正如farenorth建议的)或一个名为“utm”的小实用程序,它几乎只进行这些转换(你可以得到它)farenorth@Ajean,谢谢你的输入(特别是utm实用程序),但是请查看我的问题的编辑。你看了吗?有帮助吗?我将它分为两部分,(1)将顶部/底部/等转换为lat/lon角,然后(2)使用Basemap绘图。你可以使用PyProj(如farenorth所建议的)或一个称为“utm”的小实用程序,它几乎只进行这些转换(你可以得到它)farenorth@Ajean,感谢你的输入(特别是utm实用程序),但是,请参见我的问题的编辑。嗨,Johnathan,谢谢你的回答。也许我误解了投影的工作原理,但我认为,尽管你可以在lat/long和utm之间转换点,但转换由其中四个点组成的长方体将导致转换区域的弯曲边缘(在一定比例下可以忽略不计)。我已经更新了我的问题,以更具体地了解utm边界。嗨,Johnathan,谢谢你的回答。也许我误解了投影的工作原理,但我认为虽然你可以在lat/long和utm之间转换点,但转换由其中四个点组成的长方体将导致转换区域的弯曲边缘(在一定范围内可以忽略不计)。我已经更新了我的问题,使其更具体地描述utm边界。感谢ocefpaf,但是请查看我问题的编辑,我不是试图在由lat/longs定义的框中提取海岸线,而是试图在utm系统(米)中定义的框中提取海岸线。这些是不同的东西,因为梅里迪安人是球体上的直线,而恒定的utm北距是平面地图上的直线。你看到笔记本了吗?我没有定义lon/lat bbox。我使用的是你的utm坐标。是的,你输入utm坐标,然后将其转换为lat long,程序从DEF框中提取海岸线被lat-long长方体所包围。lat-long长方体顶点之间的直线与UTM长方体顶点之间的直线所经过的位置不同。这就是我一直试图得到的差异。另一种看待它的方式是:如果不是这样,为什么lat-long和UTM坐标系都存在?不。T该程序从EPGS投影代码中提取海岸线,轴是用UTM定义的!!!UTM2LonLat只是为了检查值是否正确!!!@ocefpaf抱歉,由于某些原因,我查找原始问题坐标的方式意味着它们与我实际要找的坐标有点出入(例如80000而不是75000),因此,当我看到返回的海岸线区域时,我认为是程序返回了一些海岸线。我想我永远都不会理解ArcGIS为什么要做它所做的一些事情。感谢ocefpaf,但是请查看对我问题的编辑,我不是试图在由lat/longs定义的框中提取海岸线,我是tr提取utm系统中定义的方框中的海岸线(米)。这些是不同的东西,因为梅里迪安人是球体上的直线,而恒定的utm北距是平面地图上的直线。你看到笔记本了吗?我没有定义lon/lat bbox。我使用的是你的utm坐标。是的,你输入utm坐标,然后将其转换为lat long,程序从DEF框中提取海岸线被lat-long长方体所包围。lat-long长方体顶点之间的直线与UTM长方体顶点之间的直线所经过的位置不同。这就是我一直试图得到的差异。另一种看待它的方式是:如果不是这样,为什么lat-long和UTM坐标系都存在?不。T该程序从EPGS投影代码中提取海岸线,轴是用UTM定义的!!!UTM2LonLat只是为了检查值是否正确!!!@ocefpaf抱歉,由于某些原因,我查找原始问题坐标的方式意味着它们与我实际要找的坐标有点出入(例如80000而不是75000),所以当我看到返回的海岸线区域时,我认为是程序将它们稍微返回。我想我永远都不会理解为什么ArcGIS会做一些事情。