使用matplotlib python仅保存地图的一部分
我正在使用matplotlib以及带有以下代码的底图使用matplotlib python仅保存地图的一部分,python,matplotlib-basemap,Python,Matplotlib Basemap,我正在使用matplotlib以及带有以下代码的底图 import matplotlib.pyplot as plt from mpl_toolkits.basemap import Basemap,cm #Map Center core = (151.35,-23.92) LAT = core[1] LON = core[0] zoom_scale = 5/111 #create a bounding box from the central co=ordinates bbox = [LA
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap,cm
#Map Center
core = (151.35,-23.92)
LAT = core[1]
LON = core[0]
zoom_scale = 5/111
#create a bounding box from the central co=ordinates
bbox = [LAT-zoom_scale,LAT+zoom_scale, LON-zoom_scale,LON+zoom_scale]
#create an instance of the basemap object
m = Basemap(epsg=4326,llcrnrlat=bbox[0],urcrnrlat=bbox[1],\
llcrnrlon=bbox[2],urcrnrlon=bbox[3],resolution='i')
#Add and arcgis basemap
m.arcgisimage(service="World_Imagery", xpixels=7000, verbose=False)
t = Bbox.from_extents(151.324,-23.9414,151.357,-23.9117)
#save the image
plt.savefig(plotOutDir+'/'+ "new", bbox_inches = t,pad_inches = 0)
这是输出
但是,这会将整个地图保存为图像。
是否有一种方法可以通过在plt.savefig方法中作为参数之一传入一个区段对象,将此地图的一小部分保存为png?
或者有没有其他方法可以实现这一点?嗯,这里有一个稍微迂回的想法来解决这个问题。您可以通过如下方式指定要裁剪的像素来裁剪PIL
图像
对象:。然后可以使用image.save()
将裁剪后的图像保存到磁盘。您还可以将matplotlib
图形
转换为PIL图像
,如下所示:
结合这些想法,您可以在现有代码下插入以下内容。您需要将bbox从英寸转换为像素
#导入PIL
从PIL导入图像
#抓取当前图形对象
图=plt.gcf()
#使用第二个链接中的代码段将matplotlib fig转换为PIL图像
def图2IMG(图):
“”“将Matplotlib图形转换为PIL图像并返回它”“”
输入io
buf=io.BytesIO()
图savefig(buf)
buf.seek(0)
img=图像打开(buf)
返回img
img=图2img(图)
#使用第一个链接中的代码进行裁剪和保存
#注意:在这里用像素填充你的bbox区域!!
面积=(400400800800)
裁剪面积=裁剪面积(面积)
裁剪图片保存(plotOutDir+'/'+“新建”)
嗯,这里有一个有点迂回的想法来解决这个问题。您可以通过如下方式指定要裁剪的像素来裁剪PIL图像
对象:。然后可以使用image.save()
将裁剪后的图像保存到磁盘。您还可以将matplotlib
图形
转换为PIL图像
,如下所示:
结合这些想法,您可以在现有代码下插入以下内容。您需要将bbox从英寸转换为像素
#导入PIL
从PIL导入图像
#抓取当前图形对象
图=plt.gcf()
#使用第二个链接中的代码段将matplotlib fig转换为PIL图像
def图2IMG(图):
“”“将Matplotlib图形转换为PIL图像并返回它”“”
输入io
buf=io.BytesIO()
图savefig(buf)
buf.seek(0)
img=图像打开(buf)
返回img
img=图2img(图)
#使用第一个链接中的代码进行裁剪和保存
#注意:在这里用像素填充你的bbox区域!!
面积=(400400800800)
裁剪面积=裁剪面积(面积)
裁剪图片保存(plotOutDir+'/'+“新建”)
请共享有关您的代码和正在/未发生的事情的更多详细信息。请共享有关您的代码和正在/未发生的事情的更多详细信息。我的边界框是地理范围。我的边界框是地理范围