User:Laserman/gpx2stg.py
Jump to navigation
Jump to search
gpx2stg.py
precise way to place shared objects in the Fg Scenery by using the OpenStreetMap Editor "JOSM"
example gpx file exported from JOSM:
<?xml version='1.0' encoding='UTF-8'?>
<gpx version="1.1" creator="JOSM GPX export" xmlns="http://www.topografix.com/GPX/1/1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd">
<metadata>
<bounds minlat="51.6847476" minlon="7.09489" maxlat="51.6870975" maxlon="7.1052296"/>
</metadata>
<wpt lat="51.68474756644179" lon="7.103785297249551">
</wpt>
<wpt lat="51.68667857011125" lon="7.097848901875471">
</wpt>
<wpt lat="51.68709745361677" lon="7.094889961003022">
</wpt>
<wpt lat="51.68668414010407" lon="7.097757201021684">
</wpt>
<wpt lat="51.686192807753315" lon="7.105229579867249">
</wpt>
</gpx>
convert to stg format:
./gpx2stg.py -i gasometer.gpx -m Models/Industrial/Gasometer.xml -e 100 > 3072872.stg
#!/usr/bin/python
# gpx2stg.py by d-laser
#
# reads a .gpx file of points that i export from JOSM
# writes stg formated to stdout
#
import sys, getopt
import xml.etree.ElementTree as ET
helptext = 'gpx2stg.py -i <inputfile> -m <path to shared model> -e <elevation>'
def main(argv):
model = "Models/Industrial/GenericStorageTank15m.ac"
elev = 50
heading = 0
inputfile = "kugeln.gpx"
outputfile=''
try:
opts, args = getopt.getopt(argv,"hi:m:e:")
except getopt.GetoptError:
print helptext
sys.exit(2)
for opt, arg in opts:
if opt == '-h':
print helptext
sys.exit()
elif opt == "-i":
inputfile = arg
elif opt == "-m":
model = arg
elif opt == "-e":
elev = arg
#print 'Input file is ', inputfile
#print 'Output file is ', outputfile
#print 'Number of arguments:', len(sys.argv), 'arguments.'
#print 'Argument List:', str(sys.argv)
tree = ET.parse(inputfile)
root = tree.getroot()
for child in root:
point = child.attrib
if point:
print "OBJECT_SHARED", model, point['lon'],point['lat'], elev, heading
if __name__ == "__main__":
main(sys.argv[1:])