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
# tile size
TS = 256
-DB_NS="http://docbook.org/ns/docbook"
-DB = "{%s}" % DB_NS
-XI_NS="http://www.w3.org/2001/XInclude"
-XI = "{%s}" % XI_NS
-XLINK_NS="http://www.w3.org/1999/xlink"
-XLINK = "{%s}" % XLINK_NS
-HTML_NS="http://www.w3.org/1999/xhtml"
-HTML = "{%s}" % HTML_NS
-NSMAP = {None : DB_NS,
- 'xlink' : XLINK_NS}
-
-
h = Http(".cache")
class Coord(object):
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):