2016-02-25 30 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一起工作,所以我会尝试将它一起移动! –