当我尝试运行此python代码时:
def convertProjection(self,x,y,from_crs,to_crs):
crsSrc = QgsCoordinateReferenceSystem(from_crs)
crsDest = QgsCoordinateReferenceSystem(to_crs)
xform = QgsCoordinateTransform(crsSrc, crsDest)
pt = xform.transform(QgsPoint(x,y))
return pt.x, pt.y
# Remove the "EPSG:" part
from_crs = 3857
to_crs = 4326
x = -11705274.6374
y = 4826473.6922
lon, lat = self.convertProjection(x,y,from_crs,to_crs)
此错误发生者:
/usr/bin/python3.5 /home/jithin/PycharmProjects/PythonTests/XYTOLatLong_Conversion.py
Traceback (most recent call last):
File "/home/jithin/PycharmProjects/PythonTests/XYTOLatLong_Conversion.py", line 36, in <module>
lon, lat = self.convertProjection(x,y,from_crs,to_crs)
NameError: name 'self' is not defined
感谢您的帮助。...谢谢...
答案 0 :(得分:1)
好像您从一个类复制了该代码。
在Python中,按照惯例(PEP 8),“自我”是指对象的当前实例。如果您的代码在类之外,则不会定义self,因为没有实例。
您应该更改
def convertProjection(self,x,y,from_crs,to_crs):
到
def convertProjection(x,y,from_crs,to_crs):
,然后在没有“ self”的情况下调用该函数。
答案 1 :(得分:0)
convertProjection
是在类外部定义的常规函数,因此您不应将其用作绑定方法。
更改:
def convertProjection(self,x,y,from_crs,to_crs):
收件人:
def convertProjection(x,y,from_crs,to_crs):
并更改:
lon, lat = self.convertProjection(x,y,from_crs,to_crs)
到
lon, lat = convertProjection(x,y,from_crs,to_crs)