谁能告诉我如何获得车道的地理坐标?
Can anyone tell me how to get the geo-coordinates of lanes also?
我有一个文件osm.net.xml
,它取自真实地图。该文件包括边缘和车道的形状(X/Y 坐标)。我 运行 下面命令 convert/create 包含地理坐标的文件:
netconvert --sumo-net-file osm.net.xml --plain-output-prefix plain --proj.plain-geo
输入文件如下(包括x/y坐标edges
和lanes
):
我得到的输出文件为:
我没有看到任何包含车道地理坐标的输出文件。在plain.edg.xml
中,只有边缘的形状信息而没有车道的形状信息:
谁能告诉我如何获得 lane
的地理坐标???
目前无法执行此操作。您只能尝试使用 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)
我做了类似的事情来读取整个 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 关联的车道信息。
我有一个文件osm.net.xml
,它取自真实地图。该文件包括边缘和车道的形状(X/Y 坐标)。我 运行 下面命令 convert/create 包含地理坐标的文件:
netconvert --sumo-net-file osm.net.xml --plain-output-prefix plain --proj.plain-geo
输入文件如下(包括x/y坐标edges
和lanes
):
我得到的输出文件为:
我没有看到任何包含车道地理坐标的输出文件。在plain.edg.xml
中,只有边缘的形状信息而没有车道的形状信息:
谁能告诉我如何获得 lane
的地理坐标???
目前无法执行此操作。您只能尝试使用 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)
我做了类似的事情来读取整个 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 关联的车道信息。