我有一个osm.net.xml文件,它取自真实的地图。该文件包括边缘和车道的形状(X/Y坐标)。我运行以下命令来转换/创建包含地理坐标的文件:
netconvert --sumo-net-file osm.net.xml --plain-output-prefix plain --proj.plain-geo
输入文件如下所示(它包括edges和lanes的x/y坐标):

我得到的输出文件如下:

我没有看到任何包含车道地理坐标的输出文件。在plain.edg.xml中,只有边缘的形状信息,而没有车道的形状信息:

谁能告诉我怎么也能得到lane的地理坐标?
发布于 2021-10-08 04:18:44
目前还不能这样做。您只能尝试使用python脚本解析网络并自己进行地理位置转换,请参阅此处的示例:https://sumo.dlr.de/docs/Tools/Sumolib.html#import_a_network_and_retrieve_nodes_and_edges它可能会归结为以下内容:
import sumolib
net = sumolib.net.readNet('myNet.net.xml')
laneShape = net.getLane('myLaneID').getShape()
for x, y in laneShape:
lon, lat = net.convertXY2LonLat(x,y)发布于 2021-10-12 08:50:53
我做了类似这样的操作来读取整个XML文件。将每个x,y对值转换为经度,如下所示:
# Read the XML file
tree = et.parse(PATH_TO_XML_FILE)
file = tree.getroot()
geoCoordinatesString = ""
# Iterate edge nodes in the file
for edge in file.iter('edge'):
# Iterate lanes of the current edge-node
for lane in edge.iter('lane'):
laneID = lane.get("id")
laneShape = lane.get("shape")
laneCoordinates = laneShape.split()
geoCoordinatesString = ""
# Iterate each coordinate in the shape of lane
for coordinate in laneCoordinates:
geoCoordinates = np.array(coordinate.split(","))
geoCoordinates = geoCoordinates.astype(float)
geoCoordinateLon, geoCoordinateLat = net.convertXY2LonLat(geoCoordinates[0],geoCoordinates[1])
geoCoordinatesString = "{:}{:},{:} ".format(
geoCoordinatesString, str(geoCoordinateLon), str(geoCoordinateLat)
)
# Display each lane's shape geo-coordinates
geoCoordinatesString = geoCoordinatesString.strip()
print ("- {:}".format(geoCoordinatesString)) 此输出允许我存储与车道ID相关联的车道信息。
https://stackoverflow.com/questions/69476820
复制相似问题