我正在嘗試用matplotlib和底圖對自己進行歸類。作爲一個開始,我試圖生成一個格陵蘭的圖像,該圖像與我擁有數據的特定網格匹配。創建與地球上特定區域相對應的簡單底圖
下面這些令人毛骨悚然的細節描述了我的問題:我無法創建與所需投影/區域匹配的圖像。
的投影和電網,我想匹配: 投影爲Proj4字符串:"+proj=stere +lat_0=90 +lon_0=-45 +lat_ts=70 +ellps=WGS84 +datum=WGS84 +units=m"
通過網格所限定的區域是800x14002000米分辨率網格其中:LowerLeft角落(米)的 外緣: -700,000,-3,400,000。 UpperRight Corner(m)的外邊緣:900,000,-600,000。 =>(-700,000 + 2000 * 800,-3,400,000 + 2000 * 1400)
底圖不會讓我指定以米爲單位的角度,因此我必須將這些轉換爲緯度/經度。
> gdaltransform -s_srs "+proj=stere +lat_0=90 +lon_0=-45 +lat_ts=70 +ellps=WGS84 +datum=WGS84 +units=m" -t_srs "+proj=latlong"`
-700000 -3400000
-56.6336339989404 58.7244253840871 0
900000 -600000
11.3099324740202 80.0389929796586 0
現在我應該有所有的信息來創建一個800x1400圖像。
from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
def create_map():
fig = plt.figure(1, figsize=(8, 14), frameon=False, dpi=100)
fig.add_axes([0, 0, 1, 1])
m = Basemap(resolution="i",
projection='stere', lat_ts=70, lat_0=90., lon_0=-45.,
llcrnrlon=-56.6336339989404, llcrnrlat=58.7244253840871,
urcrnrlon=11.3099324740202, urcrnrlat=80.0389929796586,
rsphere=(6378137.0, 6356752.3142))
m.drawcoastlines()
m.fillcontinents(color='#c1c1c1')
m.drawmapboundary(fill_color='#6587ad', linewidth=0.0)
plt.savefig('greenland.png', pad_inches=0.0, bbox_inches='tight')
if __name__ == '__main__':
create_map()
我面對的問題是,當我這樣做時,我得到一個800x1399的圖像。如果我在plt.savefig
命令中沒有包含bbox_inches='tight'
,我會得到一張800x1400的圖像,沿着(編輯)底邊(編輯)顯示一條不可見的像素。
任何人都可以幫助我,這樣我就可以確定我正確設置了我的底圖嗎?我覺得我可能只是錯過了一個簡單的訣竅,但沒有得到我期望的大小的圖像很奇怪。
一如既往,在此先感謝。