Python 3.x 在纵向端使用basemap打印无缝形状文件
我正在使用在中发现的大陆形状文件(大陆多边形)绘制南极洲海岸线。形状文件从180ºW到180ºE,这意味着多边形在太平洋的某个地方结束和开始。当我以太平洋为中心绘制此形状文件时,结果是海岸线从180ºW开始,使其西部没有任何海岸线,如下所示:Python 3.x 在纵向端使用basemap打印无缝形状文件,python-3.x,shapefile,matplotlib-basemap,Python 3.x,Shapefile,Matplotlib Basemap,我正在使用在中发现的大陆形状文件(大陆多边形)绘制南极洲海岸线。形状文件从180ºW到180ºE,这意味着多边形在太平洋的某个地方结束和开始。当我以太平洋为中心绘制此形状文件时,结果是海岸线从180ºW开始,使其西部没有任何海岸线,如下所示: import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.basemap import Basemap shapefile = 'continent' lat = np.ar
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
shapefile = 'continent'
lat = np.arange(-90,-55,2.5)
lon = np.arange(-260,20,2.5)
X, Y = np.meshgrid(lon,lat)
fig=plt.figure(dpi=200)
m=Basemap(projection='cyl',resolution='i',llcrnrlon=np.nanmin(lon),llcrnrlat=np.nanmin(lat),\
urcrnrlon=np.nanmax(lon),urcrnrlat=np.nanmax(lat))
xi, yi = m(X,Y)
m.readshapefile(shapefile, 'continent',color='k',linewidth=0.6)
m.drawparallels(np.arange(-80,-40,10),labels=[True,False,False,True],color='0.55',fontsize=6)
m.drawmeridians(np.arange(-260,20,20),labels=[True,False,False,True],color='0.55',fontsize=6
plt.show()
有没有办法避免这种情况发生
我没有使用basemap的绘制海岸线
,因为它包含了我不想在绘图中看到的部分海冰,而且我对QGIS一无所知,所以这并不是我的首选
编辑:使用另一种投影,如极赤平投影,使其在绘图上显示一条直线,我假设该直线是shapefile的起点/终点(从90ºS到海岸线的180º直线)。下面是一个示例,使用与上面相同的代码,但使用spstere
projection:
fig=plt.figure(dpi=200)
m=Basemap(projection='spstere',boundinglat=-60,lon_0=90,resolution='l')
xi, yi = m(X,Y)
m.readshapefile(shapefile, 'continent',color='k',linewidth=0.6)
m.drawparallels(np.arange(-80,-40,10),labels=[True,False,False,True],color='0.55',fontsize=6)
m.drawmeridians(np.arange(-180,200,20),labels=[True,False,False,True],color='0.55',fontsize=6)
输出:
如果您使用更适合绘制南极周围数据的投影,可能效果会更好,例如南极赤平摄影(
spstere
)?@j08lue谢谢您的输入。使用任何类型的极轴投影,尽管它显示了整个海岸线,但会生成一条线,我假设这条线是shapefile的开始/结束。我编辑了这篇文章来展示发生了什么。