Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.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 - Fatal编程技术网

Python Matplotlib基础地图:放大正交投影

Python Matplotlib基础地图:放大正交投影,python,matplotlib,matplotlib-basemap,Python,Matplotlib,Matplotlib Basemap,我试着在正交投影中绘制一个区域,以便将它与像这样的卫星图像叠加在一起 所以我试着放大正交投影,比如 使用此代码: fig = plt.figure(figsize = (5,5)) map = Basemap(projection = 'ortho', lon_0 = 15, lat_0 = 68,\ resolution = 'c') lllon = 7 urlon = 21 lllat = 67 urlat = 70 xmin, ymin = map(l

我试着在正交投影中绘制一个区域,以便将它与像这样的卫星图像叠加在一起

所以我试着放大正交投影,比如

使用此代码:

fig = plt.figure(figsize = (5,5))

map = Basemap(projection = 'ortho', lon_0 = 15, lat_0 = 68,\
               resolution = 'c')

lllon = 7
urlon = 21
lllat = 67
urlat = 70

xmin, ymin = map(lllon, lllat)
xmax, ymax = map(urlon, urlat)

ax = plt.gca()

ax.set_xlim([xmin, xmax])
ax.set_ylim([ymin, ymax])

map.drawcoastlines(linewidth = .1)
map.drawmeridians(np.arange(-180,180,1), linewidth = .01)
map.drawparallels(np.arange(-80,80,.25), linewidth = .01)
还有一些用于绘制线,但这会生成中心和比例正确的图像,但不会裁剪到指定的区域,如下所示:


有人知道如何解决这个问题吗

问题代码生成完整的正交投影,如中所示

正交投影将地球显示为一颗卫星,卫星在地球上方无限高的轨道上可以看到它

为了只显示其中的一部分,可以将贴图的边缘提供给Basemap调用

不幸的是,我们需要使用x,y值

因此,以下工作将起作用:

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

fig = plt.figure(figsize = (5,5))

m = Basemap(projection = 'ortho', lon_0 = 0, lat_0 = 10,
            llcrnrx=-3000000, llcrnry=1000000, urcrnrx=3000000, urcrnry=6000000, 
            resolution = 'c')

m.drawcoastlines(linewidth = 1)
m.drawcountries()

plt.show()
显示了一个不同的选项,用于在绘制地图后设置轴限制

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

fig = plt.figure(figsize = (5,5))

map = Basemap(projection = 'ortho', lon_0 = 15, lat_0 = 68,\
               resolution = 'l')

map.drawcoastlines(linewidth = 1)
map.drawmeridians(np.arange(-180,180,1), linewidth = 1)
map.drawparallels(np.arange(-80,80,.25), linewidth = 1)

lllon = 7
urlon = 21
lllat = 67
urlat = 70

xmin, ymin = map(lllon, lllat)
xmax, ymax = map(urlon, urlat)

ax = plt.gca()

ax.set_xlim([xmin, xmax])
ax.set_ylim([ymin, ymax])

plt.show()

非常感谢。所以这个例子不再有效了?有没有办法找出哪个llcrnrx对应哪个经度?纬度也一样吗?再次感谢!现在工作。它在开始时不起作用,因为我在保存fig=plt.gcf fig.savefig'/home/map.png',dpi=600时已将边界框设置为“紧密”,bbox_inches='tight',这样就保存了整个光盘。在地图上绘制后需要设置轴限制。即使我在脚本末尾设置了轴限制,我仍然可以获得完整的光盘视图。所以这似乎不起作用。我在答案中添加了有效的代码。