我有一个python文件“../sumo-0.22.0/tools/sumolib/net/init.py”,其中包含一个函数:
def convertLonLat2XY(self, lon, lat, rawUTM=False):
x, y = self.getGeoProj()(lon, lat)
if rawUTM:
return x, y
else:
x_off, y_off = self.getLocationOffset()
return x + x_off, y + y_off
当我输入python2.7时:
import sys
sys.path.append('C:/Users/user/src/sumo-0.22.0/tools')
import traci
import sumolib
radius = 0.1
x, y = sumolib.net.convertLonLat2XY(4.8671096, 45.7597116)
我收到了这个错误:
AttributeError: 'module' object has no attribute 'convertLonLat2XY'
我该如何调整此错误?
答案 0 :(得分:1)
您尝试使用的功能不是模块的功能,而是模块中定义的Net类的功能。因此,在使用它之前,您需要创建一个网络实例,这可能意味着您需要在SUMO网络中读取。这是必要的,因为坐标转换所需的投影信息是网络的一部分。
您的代码应如下所示:
import os,sys
sys.path.append(os.path.join(os.environ["SUMO_HOME"], "tools"))
import sumolib
net = sumolib.net.readNet("net.net.xml")
x, y = net.convertLonLat2XY(4.8671096, 45.7597116)
" net.net.xml"在这里作为您实际网络的占位符。
此代码依赖于将环境变量SUMO_HOME设置为正确的目录,这是保持代码独立于实际安装路径的良好做法,但您当然可以像在示例中一样使用完全路径。 / p>