| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
import win32clipboard
import cgi, gmapUtil, string, os
#takes a list of [lat,long] and returns a keyhole file
def kmlFromLatLong(maptitle,latlongs):
import gmapUtil
from xml.dom.minidom import Document, parseString
import cgi
docString = """<Document><name>%s</name><visibility>1</visibility><Folder><name>Destination</name><visibility>1</visibility></Folder></Document>""" % (cgi.escape(maptitle))
doc = parseString(docString)
documentNode = doc.documentElement
folderNode = documentNode.getElementsByTagName('Folder')[0]
for latlong in latlongs:
latitude = unicode(latlong[0])
longitude = unicode(latlong[1])
description = cgi.escape("%s,%s" % (latitude,longitude))
name = description
range = 600.0 # set to 600 m for now
tilt = 0
heading = 0
visibility = 1
#styleUrl = "root://styleMaps#default?iconId=0x304"
styleUrl = "root://styleMaps#default?iconId=0x307"
coordinates = "%s, %s, %s" % (longitude, latitude, "65")
viewString = """<View><longitude>%s</longitude><latitude>%s</latitude><range>%s</range><tilt>%s</tilt><heading>%s</heading></View>""" % (longitude, latitude, unicode(range), unicode(tilt), unicode(heading))
restString = """<visibility>%s</visibility><styleUrl>%s</styleUrl><Point><coordinates>%s</coordinates></Point>""" % (visibility,styleUrl,coordinates)
PlacemarkNodeString = """<Placemark><description>%s</description><name>%s</name>%s%s</Placemark>""" % (description, name,viewString,restString)
print PlacemarkNodeString
pDoc = parseString(PlacemarkNodeString)
folderNode.appendChild(pDoc.documentElement)
return doc.toxml(encoding='utf-8')
win32clipboard.OpenClipboard()
gURL = win32clipboard.GetClipboardData()
win32clipboard.CloseClipboard()
# of form http://maps.google.com/maps?q=berkeley,+ca&ll=37.882751,-122.302134&spn=0.020416,0.039312&hl=en
#try:
ll = cgi.parse_qs(gURL)['ll'][0]
latlongs = [string.split(ll,",")]
# print out in some nice form for flickr geotagging
latitude = unicode(latlongs[0][0])
longitude = unicode(latlongs[0][1])
geocodeTags = "geotagged geo:lat=%s geo:long=%s geo:lon=%s" % (latitude,longitude,longitude)
# put on clipboard
win32clipboard.OpenClipboard()
win32clipboard.EmptyClipboard()
win32clipboard.SetClipboardText(geocodeTags)
win32clipboard.CloseClipboard()
kml = kmlFromLatLong('destination TITLE', latlongs)
# now invoke keyhole
dir = r'C:\Documents and Settings\Administrator\Application Data\Google\GoogleEarth'
destinationKmlFile = dir + "\destination.kml"
f = open(destinationKmlFile,"w")
f.write(kml)
f.close()
keyholeApp = r'C:\PROGRA~1\GOOGLE\GOOGLE~1\GOOGLE~1.EXE'
cmd = '%s "%s"' % (keyholeApp,destinationKmlFile)
print cmd
os.system(cmd) |