X-Git-Url: https://source.tree.se/git?p=treecutter.git;a=blobdiff_plain;f=xinclude%2Faddress.py;h=8ce6a6a7b77c581068cb8974afdd21c18b5a5357;hp=3b7ff38a3754fe945d227280d133758de70b574d;hb=4c22c0870f67f5e3a88bdc8ad72f6608362b223f;hpb=25ce3f9f366b09975a5f23b589dc71c0ee550aa5 diff --git a/xinclude/address.py b/xinclude/address.py index 3b7ff38..8ce6a6a 100755 --- a/xinclude/address.py +++ b/xinclude/address.py @@ -7,10 +7,12 @@ from httplib2 import Http import urllib from math import * from lxml import etree +from lxml.builder import ElementMaker from PIL import Image, ImageDraw from StringIO import StringIO from geohash import encode from geographiclib.geodesic import Geodesic +from treecutter import constants as const # EC Equator lenght EC = 40075016.686 # meter @@ -21,7 +23,6 @@ ZOOMRANGE = range(1, 18) # tile size TS = 256 - h = Http(".cache") class Coord(object): @@ -74,6 +75,11 @@ class Coord(object): yo = int(floor((y-floor(y))*TS)) return (xo, yo) + def distance(self, point): + res = Geodesic.WGS84.Inverse(self.latitude, self.longitude, + point.latitude, point.longitude) + return res['s12'] + def png(self,zoom=15,size=(TS,TS)): filename = encode(self.latitude, self.longitude)+'.png' if path.isfile(filename): @@ -120,28 +126,27 @@ class Coord(object): gridc = grid.crop((xp-TS/2,yp-TS/2,xp+TS/2,yp+TS/2)) gridc.save(filename) - def db_xml(self): - uri = etree.Element(DB+'uri',nsmap=NSMAP) - ln = etree.SubElement(uri, DB+'link') - ln.set(XLINK+'href',self.osmlink()) - imo = etree.SubElement(ln, DB+'inlinemediaobject') - io = etree.SubElement(imo, DB+'imageobject', condition="web") - idat = etree.SubElement(io , DB+'imagedata', - fileref=encode(self.latitude, self.longitude)+'.png', - format='PNG') - to = etree.SubElement(imo, DB+'textobject') - ph = etree.SubElement(to, DB+'phrase') - ph.text = "geo:"+str(self.latitude)+","+str(self.longitude) - para = etree.SubElement(ln, DB+'para') - para.text = self.dms() + img = encode(self.latitude, self.longitude)+'.png' + phr = "geo:"+str(self.latitude)+","+str(self.longitude) + + db = ElementMaker(namespace=const.DB_NS, nsmap=const.NSMAP) + uri = db.uri(db.link( + db.inlinemediaobject( + db.imageobject(db.imagedata( + fileref=img, + format='PNG')) + db.textobject(db.phrase(phr)) + ), + db.para(self.dms()) + **{const.XLINK+"href": self.osmlink()})) return uri + class Address(object): """Address object to contain everything known about an address""" def __init__(self,address): self._address_string = address - self._root = etree.Element(DB+'address',nsmap=NSMAP) self._coord = None def geocode(self,country=None):