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();
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)
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)
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)
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
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
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
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
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
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()
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
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
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()
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)
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
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
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
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()
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
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
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)
def runTest(self): factory = kmldom.KmlFactory_GetFactory() placemark = factory.CreatePlacemark() name = 'hi' placemark.set_name(name) assert name == placemark.get_name()
def runTest(self): factory = kmldom.KmlFactory_GetFactory() placemark = factory.CreatePlacemark() feature = kmlengine.GetRootFeature(placemark) assert feature assert kmldom.AsPlacemark(feature)
#!/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))