Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.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 3.x 在纵向端使用basemap打印无缝形状文件_Python 3.x_Shapefile_Matplotlib Basemap - Fatal编程技术网

Python 3.x 在纵向端使用basemap打印无缝形状文件

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

我正在使用在中发现的大陆形状文件(大陆多边形)绘制南极洲海岸线。形状文件从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.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的开始/结束。我编辑了这篇文章来展示发生了什么。