2017-04-27 60 views
0

我想繪製一些以矩陣形式存在的數據例如溫度。這些數據是區域性的,所以我不需要全球地圖。爲墨盒上的墨卡託投影定義縱向範圍

我有:

  1. 矩陣數據(MXN)的
  2. 矢量限定緯度(MX1)和經度(NX1)

我想它使用cartopy用積墨卡託投影。但是,mercator只允許我定義最小和最大經度,而不是最小和最大離線。這最終給了我一大片土地。

Mercator(central_longitude=103.0,min_latitude=gridlat[0],max_latitude=gridlat[-1]) 

我該如何去設置沿海地圖的最小和最大經度?最終,我只想將我的數據與覆蓋它的國家邊界一起繪製出來,就像使用ncview看起來一樣。

回答

2

在選擇投影時,通常不會設置地圖的範圍,您可以稍後使用您創建的軸的set_extent方法進行設置。事實上,cartopy中的默認行爲是爲了適合繪製數據的程度,所以當您使用普通墨卡託投影進行繪圖時,您想要的應該是發生的情況。以下是在地理座標中明確設置範圍的示例:

import cartopy.crs as ccrs 
import matplotlib.pyplot as plt 

# Create Mercator projection with dateline in the middle: 
ax = plt.axes(projection=ccrs.Mercator(central_longitude=180)) 
# Draw coastlines so we know where we are: 
ax.coastlines() 
# Set the map extent, making sure to specify the correct coordinate system 
# for geographical coordinates: 
ax.set_extent([90, 270, -40, 40], crs=ccrs.PlateCarree()) 
plt.show() 
+0

爲什麼投影定義爲ax.set_extent ccrs.PlateCaree()?它應該是墨卡託嗎? – user2118915

+1

不,它應該是您提供數值範圍的座標系。在這種情況下,我想在緯度/經度座標中指定地圖範圍,因此「PlateCarree」是合適的選擇。如果我使用「墨卡託」,我必須在墨卡託投影的原生座標中指定範圍。 – ajdawson

+0

@ user2118915如果它適合您,請「接受」答案。謝謝。 – pelson