使用 QgsDistanceArea.convertLengthMeasurement 的意外转换结果
Unexpected conversion result using QgsDistanceArea.convertLengthMeasurement
我是 Python 和 QGIS 的新手,我正在尝试编写一个 Python 插件以用于 QGIS v3.6.0。
我正在尝试使用 QgsDistanceArea().convertLengthMeasurement 转换测量值
我已尝试使用此 link 中的代码(滚动到接近末尾的提示 #2)https://www.e-education.psu.edu/geog489/node/2360。
qda = QgsDistanceArea()
qda.setEllipsoid('EPSG') #not sure if this is required (the project CRS is EPSG:27700)
#set input measurement
m = 1000 #not sure if the unit type needs to be set
#convert the measurement
converted = qda.convertLengthMeasurement(m, QgsUnitTypes.DistanceKilometers)
print("measure: ", m)
print("converted: ", converted)
我希望输出为:
m: 1000
converted: 1
但实际输出是:
m: 1000
converted: 111319.49079327358
在 QGIS v2 中,convertLengthMeasurement 似乎需要一个参数来描述输入单位类型。然而在QGIS v3(我正在使用的版本)中,只需要输出单位类型。
我知道我可以简单地除以 1000 来将米换算成千米,但我想使用 convertLengthMeasurement。
如有任何帮助,我们将不胜感激。
进一步搜索后,EPSG:27700 似乎使用了 WGS84 椭球体。 "EPSG" 不是有效的 ellipsoidAcronym。
添加以下行:
qda.setEllipsoid('WGS84')
似乎可以正常工作。
我是 Python 和 QGIS 的新手,我正在尝试编写一个 Python 插件以用于 QGIS v3.6.0。
我正在尝试使用 QgsDistanceArea().convertLengthMeasurement 转换测量值
我已尝试使用此 link 中的代码(滚动到接近末尾的提示 #2)https://www.e-education.psu.edu/geog489/node/2360。
qda = QgsDistanceArea()
qda.setEllipsoid('EPSG') #not sure if this is required (the project CRS is EPSG:27700)
#set input measurement
m = 1000 #not sure if the unit type needs to be set
#convert the measurement
converted = qda.convertLengthMeasurement(m, QgsUnitTypes.DistanceKilometers)
print("measure: ", m)
print("converted: ", converted)
我希望输出为:
m: 1000
converted: 1
但实际输出是:
m: 1000
converted: 111319.49079327358
在 QGIS v2 中,convertLengthMeasurement 似乎需要一个参数来描述输入单位类型。然而在QGIS v3(我正在使用的版本)中,只需要输出单位类型。
我知道我可以简单地除以 1000 来将米换算成千米,但我想使用 convertLengthMeasurement。
如有任何帮助,我们将不胜感激。
进一步搜索后,EPSG:27700 似乎使用了 WGS84 椭球体。 "EPSG" 不是有效的 ellipsoidAcronym。
添加以下行:
qda.setEllipsoid('WGS84')
似乎可以正常工作。