Esempio n. 1
0
def convert_json_to_kml(f_in, f_out):
    
    # load JSON file
    fc = open(f_in,"r").read();
    fc = fc.split("}")[:-1];
    rec = map(lambda x: json.loads(x + "}"), fc);

    # parse GPS data strings into lat/lon/el
    for r in rec:
        fix = r["gps_gpgga"].split(",");
        r["lat"] = gpsconv(fix[2]) * (+1) # N
        r["lon"] = gpsconv(fix[4]) * (-1) # W
        r["elev"] = float(fix[9])
    
    # sort in time order
    rec = sorted(rec, key=itemgetter('gps_time')) 

    # set up KML file
    factory = kmldom.KmlFactory.GetFactory() 
    root = factory.CreateKml() 
    document = factory.CreateDocument() 
    document.set_name("GR-UHDGPS RSSI Measurement: Track Data") 

    # prepare to re-scale RSSI range to plotting elevations...
    rssis = map(lambda x: x["power"], rec)
    rssi_range = (min(rssis), max(rssis))
    plot_el_range = (0,25.0)

    # set up plots 
    el_key = ["power"];
    el_scale = [(plot_el_range[1] - plot_el_range[0]) / (rssis[1] - rssis[0])]
    el_off = [plot_el_range[0] - rssi_range[0] ]
    labels = ["RSSI"];

    # loop through generating them
    for i in range(0,len(el_key)):
        (k, s, n, o) = (el_key[i], el_scale[i], labels[i], el_off[i])
        # add our track
        factory = kmldom.KmlFactory_GetFactory()
        placemark = factory.CreatePlacemark()
        placemark.set_name(n)
        coordinates = factory.CreateCoordinates()
        for i in range(0,len(rec)):
            x = rec[i];
            coordinates.add_latlngalt(x["lat"], x["lon"], 0)
            coordinates.add_latlngalt(x["lat"], x["lon"], ((x[k])+o)*s)
            coordinates.add_latlngalt(x["lat"], x["lon"], 0)
        linestring = factory.CreateLineString()
        linestring.set_tessellate(True);
        linestring.set_coordinates(coordinates)
        linestring.set_altitudemode(1)
        placemark.set_geometry(linestring)
        document.add_feature(placemark);

    # write the kml file
    root.set_feature(document) 
    kml_file = kmlengine.KmlFile.CreateFromImport(root) 
    f = open(f_out,"w");
    f.write( kml_file.SerializeToString()[1]  );
    f.close();
Esempio n. 2
0
def main():
    print '== This is %s' % sys.argv[0]

    factory = kmldom.KmlFactory_GetFactory()

    print 'Create a Point Placemark...'

    print 'Create coordinates...'
    coordinates = factory.CreateCoordinates()
    coordinates.add_latlng(37.38, -122.123)

    print 'Create Point and set coordinates...'
    point = factory.CreatePoint()
    point.set_coordinates(coordinates)

    print 'Create Placemark and set geometry...'
    placemark = factory.CreatePlacemark()
    placemark.set_geometry(point)
    print placemark.has_geometry()

    print 'Create kml and set feature...'
    kml = factory.CreateKml()
    kml.set_feature(placemark)

    print 'Serialize to xml...'
    print kmldom.SerializePretty(kml)
Esempio n. 3
0
def main():
    print '== This is %s' % sys.argv[0]

    factory = kmldom.KmlFactory_GetFactory()

    print 'Coordinates is a vector of Vec3...'

    coordinates = factory.CreateCoordinates()
    coordinates.add_latlng(1, 1)
    coordinates.add_latlng(2, 2)
    coordinates.add_latlng(3, 3)

    for i in range(coordinates.get_coordinates_array_size()):
        print 'longitude', coordinates.get_coordinates_array_at(
            i).get_longitude()
        print 'latitude', coordinates.get_coordinates_array_at(
            i).get_latitude()
        print 'altitude', coordinates.get_coordinates_array_at(
            i).get_altitude()

    print kmldom.SerializePretty(coordinates)

    # Python deletes coordinates.

    print 'Create a Folder with some Features...'

    folder = factory.CreateFolder()
    folder.add_feature(factory.CreatePlacemark())
    folder.add_feature(factory.CreateFolder())

    for i in range(folder.get_feature_array_size()):
        print 'feature Type', folder.get_feature_array_at(i).Type()

    print kmldom.SerializePretty(folder)
Esempio n. 4
0
def main():
    print '== This is %s' % sys.argv[0]

    factory = kmldom.KmlFactory_GetFactory()

    # <Document>
    document = factory.CreateDocument()

    # Each Create*Placemark() creates and returns a Placemark.
    document.add_feature(CreatePointPlacemark('pt0', 1, 2))
    document.add_feature(CreatePointPlacemark('pt1', 3, 4))
    lnglat = [(1, 2), (3, 4), (5, 6), (7, 8)]
    document.add_feature(CreateSimple2dLineStringPlacemark('line', lnglat))
    document.add_feature(CreateSimple2dPolygonPlacemark('box'))
    document.add_feature(Create2HolePolygonPlacemark('2 holes'))

    # <Placemark><MultiGeometry><Point>... <LineString>...
    placemark = factory.CreatePlacemark()
    multigeometry = factory.CreateMultiGeometry()
    multigeometry.add_geometry(factory.CreatePoint())
    multigeometry.add_geometry(factory.CreateLineString())
    placemark.set_geometry(multigeometry)
    document.add_feature(placemark)

    # <kml>
    kml = factory.CreateKml()
    kml.set_feature(document)

    print 'Serialize to xml...'
    print kmldom.SerializePretty(kml)
Esempio n. 5
0
def CreatePointPlacemark(name, lat, lng):
    factory = kmldom.KmlFactory_GetFactory()
    placemark = factory.CreatePlacemark()
    placemark.set_name(name)
    coordinates = factory.CreateCoordinates()
    coordinates.add_latlng(lat, lng)
    point = factory.CreatePoint()
    point.set_coordinates(coordinates)
    placemark.set_geometry(point)
    return placemark
Esempio n. 6
0
 def runTest(self):
   factory = kmldom.KmlFactory_GetFactory()
   kml = factory.CreateElementById(kmldom.Type_kml)
   assert kml
   kmlfile = kmlengine.KmlFile.CreateFromImport(kml)
   assert kmlfile
   (ok, xml) = kmlfile.SerializeToString()
   assert ok
   kExpectedXml = '<?xml version="1.0" encoding="utf-8"?>\n' \
       '<kml xmlns="http://www.opengis.net/kml/2.2"/>\n'
   assert kExpectedXml == xml
Esempio n. 7
0
def CreateSimple2dLineStringPlacemark(name, latlng):
    factory = kmldom.KmlFactory_GetFactory()
    placemark = factory.CreatePlacemark()
    placemark.set_name(name)
    coordinates = factory.CreateCoordinates()
    for (lat, lng) in latlng:
        coordinates.add_latlng(lat, lng)
    linestring = factory.CreateLineString()
    linestring.set_tessellate(True)
    linestring.set_coordinates(coordinates)
    placemark.set_geometry(linestring)
    return placemark
Esempio n. 8
0
def create_point_placemark(name, lat, lon):
    factory = kmldom.KmlFactory_GetFactory()

    cs = factory.CreateCoordinates()
    cs.add_latlng(lat, lon)

    pt = factory.CreatePoint()
    pt.set_coordinates(cs)

    pm = factory.CreatePlacemark()
    pm.set_geometry(pt)
    pm.set_name(name)
    return pm
Esempio n. 9
0
def Create2HolePolygonPlacemark(name):
    factory = kmldom.KmlFactory_GetFactory()

    # <Polygon>
    polygon = factory.CreatePolygon()

    # <outerBoundaryIs><LinearRing><coordinates>
    outerboundaryis = factory.CreateOuterBoundaryIs()
    linearring = factory.CreateLinearRing()
    coordinates = factory.CreateCoordinates()
    coordinates.add_latlngalt(37.823360, -122.374208, 0)
    coordinates.add_latlngalt(37.823360, -122.369120, 0)
    coordinates.add_latlngalt(37.827271, -122.369073, 0)
    coordinates.add_latlngalt(37.827259, -122.374655, 0)
    coordinates.add_latlngalt(37.823360, -122.374208, 0)
    linearring.set_coordinates(coordinates)
    outerboundaryis.set_linearring(linearring)
    polygon.set_outerboundaryis(outerboundaryis)

    # <innerBoundaryIs><LinearRing><coordinates>
    innerboundaryis = factory.CreateInnerBoundaryIs()
    linearring = factory.CreateLinearRing()
    coordinates = factory.CreateCoordinates()
    coordinates.add_latlngalt(37.825728, -122.373670, 0)
    coordinates.add_latlngalt(37.825715, -122.372255, 0)
    coordinates.add_latlngalt(37.826578, -122.372886, 0)
    coordinates.add_latlngalt(37.825728, -122.373670, 0)
    linearring.set_coordinates(coordinates)
    innerboundaryis.set_linearring(linearring)
    polygon.add_innerboundaryis(innerboundaryis)

    # <innerBoundaryIs><LinearRing><coordinates>
    innerboundaryis = factory.CreateInnerBoundaryIs()
    linearring = factory.CreateLinearRing()
    coordinates = factory.CreateCoordinates()
    coordinates.add_latlngalt(37.824914, -122.371487, 0)
    coordinates.add_latlngalt(37.824089, -122.372024, 0)
    coordinates.add_latlngalt(37.824065, -122.370626, 0)
    coordinates.add_latlngalt(37.824914, -122.371487, 0)
    linearring.set_coordinates(coordinates)
    innerboundaryis.set_linearring(linearring)
    polygon.add_innerboundaryis(innerboundaryis)

    # <Placemark><name>... <Polygon>...
    placemark = factory.CreatePlacemark()
    placemark.set_name(name)
    placemark.set_geometry(polygon)

    return placemark
Esempio n. 10
0
 def runTest(self):
   factory = kmldom.KmlFactory_GetFactory()
   placemark = factory.CreatePlacemark()
   name = 'hi'
   placemark.set_name(name)
   clone_element = kmlengine.Clone(placemark)
   assert clone_element
   clone_placemark = kmldom.AsPlacemark(clone_element)
   assert clone_placemark
   assert name == clone_placemark.get_name()
   # Change the name in the original
   new_name = 'new name'
   placemark.set_name(new_name)
   # Verify that the clone still has the old name
   assert name == clone_placemark.get_name()
Esempio n. 11
0
def main():
    print '== This is %s' % sys.argv[0]

    factory = kmldom.KmlFactory_GetFactory()

    print 'Create a LookAt with altitudeMode...'
    lookat = factory.CreateLookAt()
    lookat.set_altitudemode(kmldom.ALTITUDEMODE_RELATIVETOGROUND)
    print 'lookat.has_altitudemode()', lookat.has_altitudemode()
    print 'lookat.altitudemode()', lookat.get_altitudemode()
    if lookat.get_altitudemode() == kmldom.ALTITUDEMODE_RELATIVETOGROUND:
        print 'Yes, it is relativeToGround'
    print 'Serialize it to pretty xml...'
    lookat_kml = kmldom.SerializePretty(lookat)
    print lookat_kml
Esempio n. 12
0
def create_line_placemark(name, coords):
    factory = kmldom.KmlFactory_GetFactory()

    cs = factory.CreateCoordinates()
    for lat, lon in coords:
        cs.add_latlng(lat, lon)

    ls = factory.CreateLineString()
    ls.set_tessellate(True)
    ls.set_coordinates(cs)

    pm = factory.CreatePlacemark()
    pm.set_geometry(ls)
    pm.set_name(name)
    return pm
Esempio n. 13
0
def main():
    print '== This is %s' % sys.argv[0]

    factory = kmldom.KmlFactory_GetFactory()

    print 'Creating a Placemark...'
    placemark = factory.CreatePlacemark()

    print 'Get the Type()...'
    print 'Placemark.Type()', placemark.Type()

    print 'has_xxx() all return false...'
    print 'Placemark.has_id()', placemark.has_id()
    print 'Placemark.has_name()', placemark.has_name()
    print 'Placemark.has_visibility()', placemark.has_visibility()
    print 'Placemark.has_geometry()', placemark.has_geometry()

    print 'Set some fields...'
    # Object std::string
    placemark.set_id("pm123")
    # Feature std::string
    placemark.set_name("hi")
    # Feature bool
    placemark.set_visibility(False)  # True by default

    print 'has_xxx() now return true...'
    print 'Placemark.has_id()', placemark.has_id()
    print 'Placemark.has_name()', placemark.has_name()
    print 'Placemark.has_id()', placemark.has_id()

    print 'Get some fields...'
    print 'Placemark.id()', placemark.get_id()
    print 'Placemark.name()', placemark.get_name()
    print 'Placemark.visibility()', placemark.get_visibility()

    print 'Clear fields...'
    placemark.clear_name()
    placemark.clear_id()
    placemark.clear_visibility()
    print 'Placemark.has_id()', placemark.has_id()
    print 'Placemark.has_name()', placemark.has_name()
    print 'placemark.has_visibility()', placemark.has_visibility()

    print 'visibility is true by default...'
    print 'placemark.visibility()', placemark.get_visibility()
Esempio n. 14
0
def create_kml_document(name):
    factory = kmldom.KmlFactory_GetFactory()

    icon = factory.CreateIconStyleIcon()
    icon.set_href('http://maps.google.com/mapfiles/kml/paddle/blu-circle.png')

    icon_style = factory.CreateIconStyle()
    icon_style.set_scale(0.64)
    icon_style.set_icon(icon)

    style = factory.CreateStyle()
    style.set_id('default')
    style.set_iconstyle(icon_style)

    icon = factory.CreateIconStyleIcon()
    icon.set_href('http://maps.gstatic.com/intl/en_ALL/mapfiles/' \
                  + 'ms/micons/sailing.white.png')

    icon_style = factory.CreateIconStyle()
    icon_style.set_scale(0.5)
    icon_style.set_icon(icon)

    style_sail = factory.CreateStyle()
    style_sail.set_id('sailboat')
    style_sail.set_iconstyle(icon_style)

    func_line_style = factory.CreateLineStyle()
    func_line_style.set_color(kmlbase.Color32(0xFF66CC66))
    func_line_style.set_width(2)
    func_poly_style = factory.CreatePolyStyle()
    func_poly_style.set_color(kmlbase.Color32(0x9F66CC66))
    style_func = factory.CreateStyle()
    style_func.set_id('func')
    style_func.set_linestyle(func_line_style)
    style_func.set_polystyle(func_poly_style)

    doc = factory.CreateDocument()
    doc.set_name(name)
    doc.add_styleselector(style)
    doc.add_styleselector(style_func)
    doc.add_styleselector(style_sail)

    kml = factory.CreateKml()
    kml.set_feature(doc)
    return (kml, doc)
Esempio n. 15
0
 def runTest(self):
   factory = kmldom.KmlFactory_GetFactory()
   # TODO: This crashes CreateFromImport as do all non-Object complex elements
   # kml = factory.CreateKml()
   # This returns an ElementPtr for the given element and works fine in
   # CreateFromImport:
   kml_as_element = factory.CreateElementById(kmldom.Type_kml)
   kml = kmldom.AsKml(kml_as_element)
   kml.set_feature(factory.CreatePlacemark())
   kmlfile = kmlengine.KmlFile.CreateFromImport(kml_as_element)
   assert kmlfile
   root = kmlfile.get_root()
   assert root
   kml = kmldom.AsKml(root)
   assert kml
   assert kml.has_feature()
   placemark = kmldom.AsPlacemark(kml.get_feature())
   assert placemark
Esempio n. 16
0
def create_func_placemark(name, func, scale = 1):
    factory = kmldom.KmlFactory_GetFactory()

    cs = factory.CreateCoordinates()
    for lat, lon, val in func:
        val *= scale
        cs.add_latlngalt(lat, lon, val)

    ls = factory.CreateLineString()
    ls.set_tessellate(True)
    ls.set_extrude(True)
    ls.set_coordinates(cs)
    ls.set_altitudemode(kmldom.ALTITUDEMODE_ABSOLUTE)

    pm = factory.CreatePlacemark()
    pm.set_geometry(ls)
    pm.set_name(name)
    pm.set_styleurl('#func')
    return pm
Esempio n. 17
0
def CreateSimple2dPolygonPlacemark(name):
    factory = kmldom.KmlFactory_GetFactory()

    # <outerBoundaryIs><LinearRing>...
    linearing = factory.CreateLinearRing()
    outerboundaryis = factory.CreateOuterBoundaryIs()
    outerboundaryis.set_linearring(linearing)

    # <Polygon><outerBoundaryIs>... <innerBoundaryIs>...
    polygon = factory.CreatePolygon()
    polygon.set_tessellate(True)
    polygon.set_outerboundaryis(outerboundaryis)

    # <Placemark><Polygon>...
    placemark = factory.CreatePlacemark()
    placemark.set_name(name)
    placemark.set_geometry(polygon)

    return placemark
Esempio n. 18
0
 def runTest(self):
   factory = kmldom.KmlFactory_GetFactory()
   placemark = factory.CreatePlacemark()
   id = 'placemark123'
   name = 'some name'
   placemark.set_id(id)
   placemark.set_name(name)
   folder = factory.CreateFolder()
   folder.add_feature(placemark)
   kmlfile = kmlengine.KmlFile.CreateFromImport(folder)
   assert kmlfile
   object = kmlfile.GetObjectById(id)
   assert object
   placemark = kmldom.AsPlacemark(object)
   assert placemark
   assert placemark.has_id()
   assert id == placemark.get_id()
   assert placemark.has_name()
   assert name == placemark.get_name()
Esempio n. 19
0
def genBasicStyle(id):
    factory = kmldom.KmlFactory_GetFactory()
    style = factory.CreateStyle()
    style.set_id(id)
    # Create style objects
    iconStyle = factory.CreateIconStyle()
    labelStyle = factory.CreateLabelStyle()
    lineStyle = factory.CreateLineStyle()
    polyStyle = factory.CreatePolyStyle()
    balloonStyle = factory.CreateBalloonStyle()
    listStyle = factory.CreateListStyle()
    # Set styles
    style.set_iconstyle(iconStyle)
    style.set_labelstyle(labelStyle)
    style.set_linestyle(lineStyle)
    style.set_polystyle(polyStyle)
    style.set_balloonstyle(balloonStyle)
    style.set_liststyle(listStyle)
    return style
Esempio n. 20
0
 def __init__(self,
              ely,
              fednum,
              nowater=True,
              party=None,
              turnout=False,
              tolerance=None):
     self.ely = ely
     self.fednum = fednum
     self.nowater = nowater
     self.ed_namee = ""
     self.ed_namef = ""
     self.conn = pg.connect('canada', '127.0.0.1', 5432, None, None,
                            'canada', 'aew2ohVu')
     self.factory = kmldom.KmlFactory_GetFactory()
     self.kml = self.factory.CreateElementById(kmldom.Type_kml)
     self.parties = ["conservative", "liberal", "ndp", "bloc", "green"]
     self.party = party
     self.turnout = turnout
     self.geo_tolerance = tolerance
Esempio n. 21
0
    def save_to_kml(self, filename):
        filedir, file = os.path.split(filename)
        filebase, fileext = os.path.splitext(file)

        kml, doc = create_kml_document(self.get_type_name() + ': ' + filebase)

        factory = kmldom.KmlFactory_GetFactory()
        
        points = factory.CreateFolder()
        points.set_name('Points')
        for i, p in enumerate(self):
            point = create_point_placemark('Point ' + str(i), \
                    rad_to_deg(p[0]), rad_to_deg(p[1]))
            try:
                point.set_description(p.comment)
            except AttributeError:
                pass
            point.set_styleurl('#default')
            points.add_feature(point)

        lines = factory.CreateFolder()
        lines.set_name('Track')
        for i, ln in enumerate(self.segments):
            vec = ln.v
            p1 = list(ln.p1)
            p2 = list(ln.p2)
            ln = (rad_to_deg(p1), rad_to_deg(p2))
            line = create_line_placemark('Segment ' + str(i), ln)
            description = 'Vector: ' + vec_to_str(vec) 
            line.set_description(description)
            lines.add_feature(line)

        description = 'UTC: ' + str(datetime.utcnow())
        description += ' Length: ' + str(int(self.length / 1852)) + ' nm'
        doc.set_description(description)
        doc.add_feature(points)
        doc.add_feature(lines)
        
        save_kml_document(kml, filename)
Esempio n. 22
0
 def runTest(self):
   factory = kmldom.KmlFactory_GetFactory()
   placemark = factory.CreatePlacemark()
   name = 'hi'
   placemark.set_name(name)
   assert name == placemark.get_name()
Esempio n. 23
0
 def runTest(self):
   factory = kmldom.KmlFactory_GetFactory()
   placemark = factory.CreatePlacemark()
   feature = kmlengine.GetRootFeature(placemark)
   assert feature
   assert kmldom.AsPlacemark(feature)
Esempio n. 24
0
#!/usr/bin/env python

import kmldom
import urllib2
import re

factory = kmldom.KmlFactory_GetFactory()
folder = factory.CreateFolder()

coords = urllib2.urlopen(
    "https://www.debian.org/devel/developers.coords").readlines()

for line in coords:
    coord = line.strip()[:-2].strip()
    lat, lon = re.split("  *", coord)
    placemark = factory.CreatePlacemark()
    placemark.set_name('Debian Developer')
    coordinates = factory.CreateCoordinates()
    coordinates.add_latlng(float(lat), float(lon))
    point = factory.CreatePoint()
    point.set_coordinates(coordinates)
    placemark.set_geometry(point)
    folder.add_feature(placemark)

document = factory.CreateDocument()
document.add_feature(folder)
kml = factory.CreateKml()
kml.set_feature(document)

with open("/srv/map.debian.net/html/data/developers.kml", "w") as out:
    out.write(kmldom.SerializePretty(kml))