2016-02-25 34 views
1

我已經使用miniconda2安裝了紙盒。當運行一個小樣本時,代碼永遠不會超過plt.imshow行中的圖像轉換,它只會使用100%CPU掛起。這裏的代碼:變換期間掛着的紙盒

#!~/miniconda2/bin/python 
import cartopy.crs as ccrs 
import matplotlib 
matplotlib.use('Agg') 
import matplotlib.pyplot as plt 
import numpy as np 
import datetime 
import time 
import sys 

print datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S') 

fname = '2016_2_24_1200_MTSAT3_10_S1_grid.jpeg' 

img = plt.imread(fname) 

print datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S') 

img_proj = ccrs.Geostationary(satellite_height=35786000) 
img_extent = (-5500000, 5500000, -5500000, 5500000) 

ax = plt.axes(projection=ccrs.Miller()) 
ax.coastlines() 
ax.set_global() 
origin = 'upper' 

print datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S') 

plt.imshow(img, transform=img_proj, extent=img_extent, origin=origin, cmap='gray') 
fig.savefig('html/test.jpg') 

任何線索的人?

+0

圖像本身是公有領域嗎?可以通過將圖像換成「numpy.arange(12).reshape(3,4)''來重現嗎? – pelson

+0

這裏有一個你可以使用的文件:http://wx.inside.net/sat/2016_2_26_1000_MTSAT3_7_S1_grid.jpeg – Balthasar

+0

我在此期間發現它只是導致這個問題的地球靜止轉換。無論如何,它通常會在幾個小時後出現錯誤11而失敗。所有其他轉換都相當快速並按預期運行。 – Balthasar

回答

1

所以我有一個與Cartopy中的圖像轉換類似的問題,我已經通過向Cartopy腳本添加關鍵字來解決該問題。在您的Python安裝目錄中,轉至Lib\site-packages\cartopy。您需要編輯的文件是img_transform.py,並且您還需要刪除img_transform.pyc以使其重新編譯並進行更改。

img_transform.pyc你需要編輯的行是:

kdtree = scipy.spatial.cKDTree(xyz) 

這是Cartopy v0.14.2線288(最新在寫作時)。

改變這一行:

kdtree = scipy.spatial.cKDTree(xyz, balanced_tree=False) 

該關閉那是SciPy的v0.16引入了新的默認(參見scipy.spatial.ckdtree running slowly)。

對於我來說,這使得> 24小時返回採取~3分鐘,希望它適合你!

+0

嗨Siyh 感謝您指出了這一點,並提供相關的https://github.com/SciTools/cartopy/issues/744。 我真的需要現在以這種或那種方式將這種修復方法合併,那麼您是否準備好完成,或者我們可以繼續https://github.com/SciTools/cartopy/pull/510,其中我嘗試了包括你的建議? 在此先感謝 –

+0

嗨pp-mo,我試圖提交CLA表單(通過電子郵件發送給@pelson,無法找到任何其他信息發送它),我明白是需要修復被接受,等待迴應。我不熟悉GitHub,還有什麼我可以/需要做的事情來完成合並? – Siyh

+0

謝謝Siyh。 我和@pelson一起工作,所以我會嘗試將它一起移動! –