AttributeError:'module'对象没有属性'convertLonLat2XY'

时间:2016-03-09 12:52:49

标签: python-2.7

我有一个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'

我该如何调整此错误?

1 个答案:

答案 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>