我使用miniconda2安装了cartopy。运行一个小样本时,代码永远不会通过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 :(得分: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分钟 - 希望它对你有用!