在matplotlib图上叠加海岸线

时间:2015-02-25 17:47:57

标签: python matplotlib matplotlib-basemap map-projections

我希望在代表某个区域的图表上叠加一些海岸线。该区域由框定义:

  • 上:3900000
  • 底部:3450000
  • 左:300000
  • 右:800000

使用坐标系WGS_1984_UTM_Zone_36N。

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

还有另一种在Basemap中定义该区域的方法吗?

谢谢!

编辑:我试图返回由utm系统中的框定义的海岸线区域,使用框的末端的纬度/经度值将导致所覆盖区域的过度/不足转换回utm系统时的海岸线(我想,如果我错了,请纠正我。)

2 个答案:

答案 0 :(得分:4)

尝试使用cartopy及其新的epsg功能:

projection = ccrs.epsg(32636)
fig, ax = plt.subplots(figsize=(5, 5),
                      subplot_kw=dict(projection=projection))
ax.coastlines(resolution='10m')

这是一个带有示例的笔记本: http://nbviewer.ipython.org/gist/ocefpaf/832cf7917c21da229564

答案 1 :(得分:0)

from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
import numpy as np

# make sure the value of resolution is a lowercase L,
#  for 'low', not a numeral 1
map = Basemap(projection='merc', lat_0=57, lon_0=-135,
    resolution = 'h', area_thresh = 0.1,
    llcrnrlon=-136.25, llcrnrlat=56,
    urcrnrlon=-134.25, urcrnrlat=57.75)

map.drawcoastlines()
map.drawcountries()
map.fillcontinents(color='coral')
map.drawmapboundary()

map.drawmeridians(np.arange(0, 360, 30))
map.drawparallels(np.arange(-90, 90, 30))

plt.show()

enter image description here

所有链接https://peak5390.wordpress.com/2012/12/08/matplotlib-basemap-tutorial-making-a-simple-map/