Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.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
使用matplotlib python仅保存地图的一部分_Python_Matplotlib Basemap - Fatal编程技术网

使用matplotlib python仅保存地图的一部分

使用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

我正在使用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 = [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+'/'+“新建”)

请共享有关您的代码和正在/未发生的事情的更多详细信息。请共享有关您的代码和正在/未发生的事情的更多详细信息。我的边界框是地理范围。我的边界框是地理范围