2015-10-14 84 views
1

所以我試圖在pycharm IDE中使用python在Equirectangular地圖投影上繪製隕石撞擊(作爲標準圖像加載)是通過時間遞增來「動畫」,以顯示從1500年至今的50年期間的影響。使用散點圖和世界地圖圖像在地圖上顯示流星的影響,長寬比問題

要做到這一點,我使用經過標準化(表示在0 - 1之間)的經緯度座標(從NASA csv文件)到散點圖上的繪圖點的元組列表,然後與地圖重疊圖片。

簡碼解釋: 在第一部分中,normalize_lat_lon從我寫的數據處理文件中提取,該文件對經度和緯度進行了歸一化處理。

影響是Year,Lat,Lon的元組列表。 img是分辨率爲2048 x 1025 的世界地圖圖片1.998 * a是我嘗試糾正我所擁有的比率問題。 由於x值乘以1.998(2048/1025) 的分辨率幾乎爲2:1,理論上應該允許我相應地進行繪圖。

這是主要的部分代碼:

lat_lon = [data.normalise_lat_lon(b, c) fpr a, b, c in impacts] 
x, y = [1.998*a for a, b in lat_lon], [b for a, b in lat_lon] 

plt.scatter(x, y, s=200, color='red') 
plt.imshow(img) 

我的問題是縮放散點圖與世界地圖圖像來排隊。 使用上面的修補程序乘以1.998 * a似乎將所有散點圖卡在左上角,如下所示。

Meteorite Impacts MCV:代碼的簡化版本,而無需通過其他時間段循環或需要從核苷酸酶文件標準化緯度的經度

from matplotlib import pyplot as plt 

plt.ion() 
plot.title("Meteorite Impacts 1990 - 2000") 

impacts = [(1994, 0.5, 0.3),(1991, 0.4, 0.3),(1998, 0.1, 0.1),(1992, 0.8, 
0.8)] 
lat_lon = [(b, c) for a, b, c in impacts] 
x, y = [1.9*a for a, b in lat_lon], [b for a, b in lat_lon] 
plt.imread("Equirectangular-projection.jpg") 
plt.scatter(x, y) 
plt.show() 

我可以把HTTPS對項目的混帳其他人克隆/分叉,不知道我是否被允許這樣做。

+0

據我的理解,你不能這樣做。您擁有的座標軸不是Lat-Lon,您需要使用適當的地理庫來執行此操作。請查看底圖:https://basemaptutorial.readthedocs.org/en/latest/ – user4421975

+0

FWIW,NASA equirectangular地圖具有正確的寬高比。我建議編輯你的背景圖像:或者只是裁剪多餘的像素行,或者縮放x2,在頂部和底部裁剪一行,然後向下縮小。 –

+0

一個[MCVE](http://stackoverflow.com/help/MCVE)將在這裏幫助 – tom

回答

0

所以原因有兩個。

1 - 的imshow()由像素函數圖像素,所以我不得不通過即有相應的軸的分辨率(2048×1025)

2乘以x上的ÿ - 我也有緯度和經度confuzzled,匝out long is x and lat is y