def create_kml(self,name):
        """
        create kml file from the HeatMap results
        :param name: filename
        """
        file = Kml()
        counts = [s.count**0.5 for s in self.heatmap]
        c_min, c_max = min(counts), max(counts)
        divisor= (c_max-c_min)/9
        for s in self.heatmap:
            single = file.newpolygon(name=str(s.count),
                                     outerboundaryis=s.get_coordinates())
            single.style.polystyle.color = COL[int(((s.count**0.5)-c_min)//divisor)]

        file.save(name+'.kml')
# generate geometries
point = kml.newpoint(name="TestPoint", coords=[(-23.094721, 33.4838)])

linestring = kml.newlinestring(name="TestLinestring")
linestring.coords = [(-23.1659603, 33.4754108), (-23.1631279, 33.4767710),
                     (-23.1604671, 33.4769858), (-23.1554890, 33.4758403),
                     (-23.1545448, 33.4731198), (-23.1518841, 33.4686807),
                     (-23.1486225, 33.4667476), (-23.1433010, 33.4662464),
                     (-23.1391811, 33.4666044), (-23.1354904, 33.4686807),
                     (-23.1324005, 33.4715447), (-23.1305981, 33.4754824),
                     (-23.1307697, 33.4795631), (-23.1289673, 33.4822835),
                     (-23.1247616, 33.4828562), (-23.1208992, 33.4819255),
                     (-23.1177235, 33.4796347), (-23.1159210, 33.4762699),
                     (-23.1117153, 33.4736925), (-23.1081963, 33.4726186)]

polygon1 = kml.newpolygon(name="TestPolygonOnlyOuter")
polygon1.outerboundaryis = [
    (-23.0895710, 33.4706855), (-23.0868244, 33.4729050),
    (-23.0818462, 33.4744085), (-23.0760098, 33.4738357),
    (-23.0727482, 33.4737641), (-23.0702591, 33.4745517),
    (-23.0689716, 33.4755540), (-23.0683708, 33.4769142),
    (-23.0689716, 33.4778449), (-23.0709457, 33.4772722),
    (-23.0737782, 33.4761267), (-23.0778122, 33.4772006),
    (-23.0790138, 33.4786324), (-23.0786705, 33.4804938),
    (-23.0774689, 33.4819255), (-23.0756664, 33.4823551),
    (-23.0742931, 33.4837868), (-23.0740356, 33.4856480),
    (-23.0724049, 33.4870797), (-23.0697441, 33.4884398),
    (-23.0687141, 33.4880103), (-23.0688000, 33.4871513),
    (-23.0714607, 33.4854333), (-23.0706882, 33.4832857),
    (-23.0691433, 33.4851469), (-23.0657101, 33.4849322),
    (-23.0639076, 33.4828562), (-23.0632210, 33.4807085),
Example #3
0
kml = Kml(
    name="Usage", open=1
)  # open=1 just opens the document in the TOC (table of contents). Not a necessary step.

# A simple Point
kml.newpoint(name="Kirstenbosch", coords=[(18.432314, -33.988862)])

# A simple Linestring showing off HTML markup
lin = kml.newlinestring(name="Pathway",
                        description="A pathway in <b>Kirstenbosch</b>",
                        coords=[(18.43312, -33.98924), (18.43224, -33.98914),
                                (18.43144, -33.98911), (18.43095, -33.98904)])

# A simple Polygon with a hole in it.
pol = kml.newpolygon(name="Atrium Garden",
                     outerboundaryis=[(18.43348, -33.98985),
                                      (18.43387, -33.99004262216968),
                                      (18.43410, -33.98972),
                                      (18.43371, -33.98952),
                                      (18.43348, -33.98985)],
                     innerboundaryis=[[(18.43360, -33.98982),
                                       (18.43386, -33.98995),
                                       (18.43401, -33.98974),
                                       (18.43376, -33.98962),
                                       (18.43360, -33.98982)]])

# Saving
kml.save(os.path.splitext(__file__)[0] + ".kml")
#kml.savekmz(os.path.splitext(__file__)[0] + ".kmz") # uncomment to save to kmz
#print kml.kml() # uncomment to see the kml printed to screen
Example #4
0
pnt.iconstyle.color = 'ffff0000'  # Blue
pnt.iconstyle.scale = 3  # Icon thrice as big
pnt.iconstyle.icon.href = 'http://maps.google.com/mapfiles/kml/shapes/info-i.png'  # Culry 'information i

# A Point with a styleMap. The Text changes from blue to red on mouse over.
pnt = kml.newpoint(name="Kirstenbosch StyleMap", coords=[(18.432314,-33.988862)])
pnt.stylemap.normalstyle.labelstyle.color = 'ffff0000'
pnt.stylemap.highlightstyle.labelstyle.color = 'ff0000ff'

# A red thick LineString
lin = kml.newlinestring(name="Pathway", description="A pathway in Kirstenbosch",
                        coords=[(18.43312,-33.98924), (18.43224,-33.98914), (18.43144,-33.98911), (18.43095,-33.98904)])
lin.linestyle.color = Color.red  # Red
lin.linestyle.width = 10  # 10 pixels

# A Polygon with a hole. Half invisible.
pol = kml.newpolygon(name="Atrium Garden",
                     outerboundaryis=[(18.43348,-33.98985), (18.43387,-33.99004262216968), (18.43410,-33.98972), (18.43371,-33.98952), (18.43348,-33.98985)],
                     innerboundaryis=[(18.43360,-33.98982), (18.43386,-33.98995), (18.43401,-33.98974), (18.43376,-33.98962), (18.43360,-33.98982)])
pol.polystyle.color = '990000ff'  # Red
pol.polystyle.outline = 0

# A Point showing off a BalloonStyle
pnt = kml.newpoint(name="BallonStyle", coords=[(18.429191, -33.987286)])
pnt.balloonstyle.text = "These are trees and this text is blue with a green background."
pnt.balloonstyle.bgcolor = Color.lightgreen
pnt.balloonstyle.textcolor = Color.rgb(0, 0, 255)

# Saving
kml.save(os.path.splitext(__file__)[0] + ".kml")
def csv_to_kml(input_filename):

	# open input file
	csv_file = open(input_filename,'rU')
	reader = csv.DictReader(csv_file)
	# preamble 
	input_filename_base, input_filename_ext = os.path.splitext(input_filename)
		
	# open output file
	kml_file = open(input_filename_base + '.kml','w')

	kml_file.write(r"""<?xml version="1.0" encoding="utf-8" ?>
	<kml xmlns="http://www.opengis.net/kml/2.2">
	""")
	kml_file.write("<Document><name>%s</name>" % input_filename_base)
	kml_file.write(r""" <Style id="grid1k"><IconStyle> <Icon> <color>ff0000</color> </Icon> </IconStyle></Style>""")
	
	kml_file.write(r"""
	<Schema name="sample" id="sample">
		<SimpleField name="Name" type="string"></SimpleField>
		<SimpleField name="Description" type="string"></SimpleField>
		<SimpleField name="GID" type="string"></SimpleField>
	</Schema>
	""")
	gids_unique = set()
	gids = []
	locs_1k = []        
	# main loop 
	for line in reader:

		kml_file.write('  <Placemark>\n')
		kml_file.write('  <name>GID=%s</name>\n' % (line['GID_100m']))
		kml_file.write('\t<ExtendedData><SchemaData schemaUrl=\"#sample\">\n')
		kml_file.write('  <SimpleField name="GID">%s</SimpleField>\n' % (line['GID_100m']))
		kml_file.write('\t\t</SchemaData></ExtendedData>\n')
		kml_file.write("     <Point><coordinates>%s,%s</coordinates></Point>\n" % (line['x'], line['y']))
		kml_file.write('  </Placemark>\n')
	        
	        gids_unique.add(line['GID_1k'])
	        gids.append(line['GID_1k'])
                locs_1k.append([line['x_1k'], line['y_1k']])

	# epilogue
	kml_file.write('\t</Document>\n\t</kml>')
	csv_file.close()
	kml_file.close()
	gids_unique = list(gids_unique)
	locs_1k_unique = []
	for gid in gids_unique:
	    locs_1k_unique.append([locs_1k[k] for k, x in enumerate(map(lambda x: x==gid, gids)) if x][0])
	
	for i, loc in enumerate(locs_1k_unique):
	    kml=Kml()
	    proj_para =  "+proj=laea +ellps=WGS84 +lon_0=20 +lat_0=5 +units=m +no_defs"
	    project = pyproj.Proj(proj_para)
	    loc_laea = list(project(loc[0], loc[1]))
	    center_pt = kml.newpoint(name=gids_unique[i], description="1k by 1k grid", coords=[(loc[0], loc[1])])
            pol = kml.newpolygon(name="1k grid", description="A pathway in Kirstenbosch",  
                                 outerboundaryis=[project(loc_laea[0]-500, loc_laea[1]+500, inverse=True), 
                                                  project(loc_laea[0]+500, loc_laea[1]+500, inverse=True), 
                                                  project(loc_laea[0]+500, loc_laea[1]-500, inverse=True),
                                                  project(loc_laea[0]-500, loc_laea[1]-500, inverse=True), 
                                                  project(loc_laea[0]-500, loc_laea[1]+500, inverse=True)],
                                 innerboundaryis=[project(loc_laea[0]-500, loc_laea[1]+500, inverse=True), 
                                                  project(loc_laea[0]+500, loc_laea[1]+500, inverse=True), 
                                                  project(loc_laea[0]+500, loc_laea[1]-500, inverse=True),
                                                  project(loc_laea[0]-500, loc_laea[1]-500, inverse=True), 
                                                  project(loc_laea[0]-500, loc_laea[1]+500, inverse=True)])
            pol.polystyle.color = 'ff0000ff' 
	    kml.save("csv/"+gids_unique[i]+".kml")
Example #6
0
def csv_to_kml(input_filename):

	# open input file
	csv_file = open(input_filename,'rU')
	reader = csv.DictReader(csv_file)
	# preamble 
	input_filename_base, input_filename_ext = os.path.splitext(input_filename)
	print(input_filename_base)	
	# open output file
	kml_file = open(input_filename_base + '.kml','w')

	kml_file.write(r"""<?xml version="1.0" encoding="utf-8" ?>
	<kml xmlns="http://www.opengis.net/kml/2.2">
	""")
	kml_file.write("<Document><name>%s</name>" % input_filename_base)
	kml_file.write(r""" <Style id="grid1k"><IconStyle> <Icon> <color>ff0000</color> </Icon> </IconStyle></Style>""")
	
	kml_file.write(r"""
	<Schema name="sample" id="sample">
		<SimpleField name="Name" type="string"></SimpleField>
		<SimpleField name="Description" type="string"></SimpleField>
		<SimpleField name="GID" type="string"></SimpleField>
	</Schema>
	""")
	gids_unique = set()
	gids = []
	locs_1k = []        
	# main loop 
	for line in reader:

		kml_file.write('  <Placemark>\n')
		kml_file.write('  <name>GID=%s</name>\n' % (line['GID_100m']))
		kml_file.write('\t<ExtendedData><SchemaData schemaUrl=\"#sample\">\n')
		kml_file.write('  <SimpleField name="GID">%s</SimpleField>\n' % (line['GID_100m']))
		kml_file.write('\t\t</SchemaData></ExtendedData>\n')
		kml_file.write("     <Point><coordinates>%s,%s</coordinates></Point>\n" % (line['x'], line['y']))
		kml_file.write('  </Placemark>\n')
	        
	        gids_unique.add(line['GID_1k'])
	        gids.append(line['GID_1k'])
                locs_1k.append([line['x_1k'], line['y_1k']])

	# epilogue
	kml_file.write('\t</Document>\n\t</kml>')
	csv_file.close()
	kml_file.close()

	gids_unique = list(gids_unique)
	locs_1k_unique = []
	for gid in gids_unique:
	    locs_1k_unique.append([locs_1k[k] for k, x in enumerate(map(lambda x: x==gid, gids)) if x][0])
	
	for i, loc in enumerate(locs_1k_unique):
	    kml=Kml()
	    proj_para =  "+proj=laea +ellps=WGS84 +lon_0=20 +lat_0=5 +units=m +no_defs"
	    project = pyproj.Proj(proj_para)
	    loc_laea = list(project(loc[0], loc[1]))
	    center_pt = kml.newpoint(name=gids_unique[i], description="1k by 1k grid", coords=[(loc[0], loc[1])])
            pol = kml.newpolygon(name="1k grid", description="A pathway in Kirstenbosch",  
                                 outerboundaryis=[project(loc_laea[0]-500, loc_laea[1]+500, inverse=True), 
                                                  project(loc_laea[0]+500, loc_laea[1]+500, inverse=True), 
                                                  project(loc_laea[0]+500, loc_laea[1]-500, inverse=True),
                                                  project(loc_laea[0]-500, loc_laea[1]-500, inverse=True), 
                                                  project(loc_laea[0]-500, loc_laea[1]+500, inverse=True)],
                                 innerboundaryis=[project(loc_laea[0]-500, loc_laea[1]+500, inverse=True), 
                                                  project(loc_laea[0]+500, loc_laea[1]+500, inverse=True), 
                                                  project(loc_laea[0]+500, loc_laea[1]-500, inverse=True),
                                                  project(loc_laea[0]-500, loc_laea[1]-500, inverse=True), 
                                                  project(loc_laea[0]-500, loc_laea[1]+500, inverse=True)])
            pol.polystyle.color = 'ff0000ff' 
	    kml.save("output/drone_flight_1k/"+gids_unique[i]+".kml")
Example #7
0
def createBorderKML():
    kml = Kml(name="Hungary")
    border = kml.newpolygon(name="Hungarian border", outerboundaryis=poly_red)
    border.polystyle.color = '00000f0f'
    kml.save("maps/border.kml")