added kml output to geolog

pull/3/head
Jeff Laughlin 2014-01-06 23:25:54 -05:00
rodzic 8c093b1fad
commit bb6b5c78de
1 zmienionych plików z 28 dodań i 7 usunięć

Wyświetl plik

@ -18,16 +18,16 @@
import argparse
import ConfigParser
import logging
import os
import sys
import traceback
import os
import qrz
import logging
import geojson as gj
from ctydat import CtyDat, InvalidDxcc
import kml
import qrz
log = logging.getLogger('geolog')
#log.setLevel(logging.INFO)
@ -113,9 +113,6 @@ class Log(object):
points = []
lines = []
for qso in self.qsos:
if None in (qso['lat'], qso['lon']):
log.warning("No coords %s" % qso)
continue
point = gj.Point((qso['lon'], qso['lat']))
points.append(gj.Feature(geometry=point,
properties=qso))
@ -130,6 +127,26 @@ class Log(object):
gj.dumps(gj.FeatureCollection(lines), *args, **kwargs),
)
def write_kml(self, file):
dom = kml.KML()
doc = dom.createDocument(self.callsign + " log")
folder = dom.createFolder(self.callsign + " log")
doc.appendChild(folder)
dom.root.appendChild(doc)
callnode = dom.createPlacemark(self.callsign, self.lat, self.lon)
folder.appendChild(callnode)
for qso in self.qsos:
to_call, lat, lon = qso['to_call'], qso["lat"], qso["lon"]
callnode = dom.createPlacemark(to_call, lat, lon)
callnode2 = dom.createPlacemark(to_call, lat, lon)
theline = dom.createLineString(
((lat, lon, 0), (self.lat, self.lon, 0)),
tessel=True)
folder.appendChild(callnode2)
callnode.appendChild(theline)
callnode.removeChild(callnode.childNodes[1])
folder.appendChild(callnode)
dom.writepretty(file)
def geolog(logfile, outfile, username, password, cachepath):
with open(logfile) as logfile:
@ -151,6 +168,10 @@ def geolog(logfile, outfile, username, password, cachepath):
with open(linefile, "w") as linefile:
linefile.write(lines)
kmlfile = ''.join((outfile, '.kml'))
with open(kmlfile, "w") as kmlfile:
qsolog.write_kml(kmlfile)
def main(argv=None):
if argv is None: