这是一个有点特殊的QGIS,但认为这是一种低水平,所以我在这里张贴。我肯定可以把这个移到gis.stackexchange.com网站如果那样更好的话。在
尝试使用QgsRasterCalculator,它似乎需要一个QString类型的对象作为两个参数。我试图创建一个QString(like described here),但得到:
import PyQt4
PyQt4.QtCore.QString('foo')
Traceback (most recent call last):
File "<input>", line 1, in <module>
AttributeError: 'module' object has no attribute 'QString'
因此,我尝试在第一个参数(calc = QgsRasterCalculator( 'demffac > 120', newStreams, 'GTiff', rFac.extent(), rFac.crs().authid(), rFac.height(), rFac.width(), entries)
)中使用常规字符串,得到:
{cd2}
我使用的是QGIS 2.14,它是documented as using QString(据我所知)。我试图使用sip
包来重置(per these instructions),但QGIS的python控制台似乎不想更改(ValueError: API 'QString' has already been set to version 2
)。在
有没有办法让我的QgsRasterCalculator()
通话正常?谢谢你的任何信息!在
/=================编辑:我的QGIS对建议的响应的屏幕抓图========= /================== 版本信息:
^{pr2}$
仔细观察回溯,似乎}对象,而您似乎正在传递}对象。为什么要传入
QgsRasterCalculator
不需要使用QString
。通过为前三个参数传递python字符串可以证明这一点,并且错误消息根本没有抱怨它们。相反,它抱怨第五个参数,它必须是int
或{unicode
或{rFac.crs().authid()
的返回值?当然,您应该传入rFac.crs()
,而不是authid()
(即{a1})。在关于
QString
的潜在问题:当与Python2一起使用时,PyQt4确实具有
QString
类,除非您采取显式的步骤来更改by using the sip module。问题开头的代码不是您实际运行的代码,因为它不会引发特定错误:如果正确导入
^{pr2}$QtCore
模块,代码可以正常工作:请注意,单独导入
PyQt4
包是没有意义的。它只是一个空的命名空间(出于性能原因)惰性地导入其他模块。因此,您必须始终显式地导入Qt模块,就像我前面所做的那样。在附言:
在问题的后半部分,pyqtapi似乎已经被更改为版本2,这将关闭对
QString
的支持。要重新打开它,您需要执行以下操作:但是,在导入任何其他PyQt模块之前,必须先完成此步骤。在
相关问题 更多 >
编程相关推荐