底图中的重复地图
Repetitive map in Basemap
如何在卫星轨道的底图中重复经度图?
Like this map
为了获得连续的卫星轨道,我尝试了不同的 llcrnrlon
和 urcrnrlon
。如果集合 llcrnrlon=-180
和 urcrnrlon
的主要值为 180
(意图重复一些子午线),底图不会生成地图
This is the current map of the satellite track
您可以将 -360
的最小值传递给 llcrnrlon
,将 720
的最大值传递给 urcrnrlon
(范围更大 Basemap
将抱怨)。使用这种设置,Basemap
的某些函数会产生重复图像。最好只是举个例子:
from matplotlib import pyplot as plt
from mpl_toolkits import basemap
import numpy as np
fig, ax = plt.subplots(figsize=(15,6))
lonmin = -360
lonmax = 720
latmin = -90
latmax = 90
##setting up the map
bmp = basemap.Basemap(
ax=ax,
llcrnrlat=latmin, llcrnrlon=lonmin,
urcrnrlat=latmax, urcrnrlon=lonmax,
)
bmp.drawcoastlines()
bmp.drawcountries()
bmp.drawmapboundary(fill_color='cyan')
bmp.fillcontinents(color='coral')
##bmp.arcgisimage() <-- does not work
##bmp.bluemarble() <-- works to some extent
##drawing a fake track
lons = np.linspace(lonmin, lonmax, 200)
rads = lons/150*np.pi
lats = np.sin(rads)*0.95*latmax
bmp.plot(lons,lats, 'r--', lw=5)
plt.show()
生成的图像如下所示:
如您所见,地图的最后一部分(右侧)不再绘制,因此最好将自己限制在 urcrnrlon
的最大值 540
。我还有两个背景图片功能。 arcgisimage()
抛出它无法处理跨越日边界的地图的错误,但 bluemarble()
有效,即使只在较小的区域。如果您希望地图更频繁地重复,我认为您必须 stitch
将多个轴放在一起,然后将数据分成几部分,然后在各自的地图上绘制。
如何在卫星轨道的底图中重复经度图?
Like this map
为了获得连续的卫星轨道,我尝试了不同的 llcrnrlon
和 urcrnrlon
。如果集合 llcrnrlon=-180
和 urcrnrlon
的主要值为 180
(意图重复一些子午线),底图不会生成地图
This is the current map of the satellite track
您可以将 -360
的最小值传递给 llcrnrlon
,将 720
的最大值传递给 urcrnrlon
(范围更大 Basemap
将抱怨)。使用这种设置,Basemap
的某些函数会产生重复图像。最好只是举个例子:
from matplotlib import pyplot as plt
from mpl_toolkits import basemap
import numpy as np
fig, ax = plt.subplots(figsize=(15,6))
lonmin = -360
lonmax = 720
latmin = -90
latmax = 90
##setting up the map
bmp = basemap.Basemap(
ax=ax,
llcrnrlat=latmin, llcrnrlon=lonmin,
urcrnrlat=latmax, urcrnrlon=lonmax,
)
bmp.drawcoastlines()
bmp.drawcountries()
bmp.drawmapboundary(fill_color='cyan')
bmp.fillcontinents(color='coral')
##bmp.arcgisimage() <-- does not work
##bmp.bluemarble() <-- works to some extent
##drawing a fake track
lons = np.linspace(lonmin, lonmax, 200)
rads = lons/150*np.pi
lats = np.sin(rads)*0.95*latmax
bmp.plot(lons,lats, 'r--', lw=5)
plt.show()
生成的图像如下所示:
如您所见,地图的最后一部分(右侧)不再绘制,因此最好将自己限制在 urcrnrlon
的最大值 540
。我还有两个背景图片功能。 arcgisimage()
抛出它无法处理跨越日边界的地图的错误,但 bluemarble()
有效,即使只在较小的区域。如果您希望地图更频繁地重复,我认为您必须 stitch
将多个轴放在一起,然后将数据分成几部分,然后在各自的地图上绘制。