sumolib.output.convert.kml
This module includes functions for converting SUMO's FCD output into Google's KML format (https://developers.google.com/kml/documentation/kmlreference)
1# Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo 2# Copyright (C) 2014-2026 German Aerospace Center (DLR) and others. 3# This program and the accompanying materials are made available under the 4# terms of the Eclipse Public License 2.0 which is available at 5# https://www.eclipse.org/legal/epl-2.0/ 6# This Source Code may also be made available under the following Secondary 7# Licenses when the conditions for such availability set forth in the Eclipse 8# Public License 2.0 are satisfied: GNU General Public License, version 2 9# or later which is available at 10# https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html 11# SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later 12 13# @file kml.py 14# @author Jakob Erdmann 15# @author Laura Bieker 16# @author Ronald Nippold 17# @date 2019-08-20 18 19""" 20This module includes functions for converting SUMO's FCD output into Google's 21KML format (https://developers.google.com/kml/documentation/kmlreference) 22""" 23from __future__ import absolute_import 24from collections import defaultdict 25 26 27def fcd2kml(inpFCD, outSTRM, ignored): 28 tracks = defaultdict(list) 29 for timestep in inpFCD: 30 for v in timestep.vehicle: 31 tracks[v.id].append((timestep.time, v.x, v.y)) 32 33 outSTRM.write('<?xml version="1.0" encoding="UTF-8"?>\n') 34 outSTRM.write('<kml xmlns="http://www.opengis.net/kml/2.2">\n') 35 outSTRM.write('<Document>\n') 36 for vehicle in sorted(tracks): 37 outSTRM.write("\t<name>SUMO FCD</name>\n") 38 outSTRM.write("\t<open>1</open>\n") 39 outSTRM.write("\t<description>traces of SUMO FCD output</description>\n") 40 outSTRM.write("\t<Style id=\"trace-%s\">\n" % vehicle) 41 outSTRM.write("\t\t<LineStyle>\n") 42 outSTRM.write("\t\t<color>7f0000ff</color>\n") 43 outSTRM.write("\t\t<colorMode>random</colorMode> \n") 44 outSTRM.write("\t\t<width>6</width>\n") 45 outSTRM.write("\t\t<gx:labelVisibility>1</gx:labelVisibility>\n") 46 outSTRM.write("\t\t</LineStyle>\n") 47 outSTRM.write("\t</Style>\n") 48 outSTRM.write("\t<Placemark>\n") 49 outSTRM.write("\t\t<name>FCD %s</name>\n" % vehicle) 50 outSTRM.write("\t\t<styleUrl>#trace-%s</styleUrl>\n" % vehicle) 51 outSTRM.write("\t\t<LineString>\n") 52 outSTRM.write("\t\t<extrude>1</extrude>\n") 53 outSTRM.write("\t\t<tessellate>1</tessellate>\n") 54 outSTRM.write("\t\t\t<coordinates>\n") 55 for timestamp, lon, lat in tracks[vehicle]: 56 outSTRM.write('\t\t\t\t%s,%s\n' % (lon, lat)) 57 outSTRM.write("\t\t\t</coordinates>\n") 58 outSTRM.write("\t\t</LineString>\n") 59 outSTRM.write("\t</Placemark>\n") 60 outSTRM.write('</Document>\n') 61 outSTRM.write('</kml>\n')
def
fcd2kml(inpFCD, outSTRM, ignored):
28def fcd2kml(inpFCD, outSTRM, ignored): 29 tracks = defaultdict(list) 30 for timestep in inpFCD: 31 for v in timestep.vehicle: 32 tracks[v.id].append((timestep.time, v.x, v.y)) 33 34 outSTRM.write('<?xml version="1.0" encoding="UTF-8"?>\n') 35 outSTRM.write('<kml xmlns="http://www.opengis.net/kml/2.2">\n') 36 outSTRM.write('<Document>\n') 37 for vehicle in sorted(tracks): 38 outSTRM.write("\t<name>SUMO FCD</name>\n") 39 outSTRM.write("\t<open>1</open>\n") 40 outSTRM.write("\t<description>traces of SUMO FCD output</description>\n") 41 outSTRM.write("\t<Style id=\"trace-%s\">\n" % vehicle) 42 outSTRM.write("\t\t<LineStyle>\n") 43 outSTRM.write("\t\t<color>7f0000ff</color>\n") 44 outSTRM.write("\t\t<colorMode>random</colorMode> \n") 45 outSTRM.write("\t\t<width>6</width>\n") 46 outSTRM.write("\t\t<gx:labelVisibility>1</gx:labelVisibility>\n") 47 outSTRM.write("\t\t</LineStyle>\n") 48 outSTRM.write("\t</Style>\n") 49 outSTRM.write("\t<Placemark>\n") 50 outSTRM.write("\t\t<name>FCD %s</name>\n" % vehicle) 51 outSTRM.write("\t\t<styleUrl>#trace-%s</styleUrl>\n" % vehicle) 52 outSTRM.write("\t\t<LineString>\n") 53 outSTRM.write("\t\t<extrude>1</extrude>\n") 54 outSTRM.write("\t\t<tessellate>1</tessellate>\n") 55 outSTRM.write("\t\t\t<coordinates>\n") 56 for timestamp, lon, lat in tracks[vehicle]: 57 outSTRM.write('\t\t\t\t%s,%s\n' % (lon, lat)) 58 outSTRM.write("\t\t\t</coordinates>\n") 59 outSTRM.write("\t\t</LineString>\n") 60 outSTRM.write("\t</Placemark>\n") 61 outSTRM.write('</Document>\n') 62 outSTRM.write('</kml>\n')