def Update(self, f): import OsmSax if f == "-": i = OsmSax.OscSaxReader(sys.stdin) else: i = OsmSax.OscSaxReader(f) i.CopyTo(self)
def Import(self, f): if f == "-": import OsmSax i = OsmSax.OsmSaxReader(sys.stdin) elif f.endswith(".pbf"): import OsmPbf i = OsmPbf.OsmPbfReader(f, None) else: import OsmSax i = OsmSax.OsmSaxReader(f, None) i.CopyTo(self)
def _Get(self, start): if start == None: return None class _output: data = None def NodeCreate(self, data): self.data = data def WayCreate(self, data): self.data = data def RelationCreate(self, data): self.data = data self._debug_in_way = True self._debug_in_relation = True self._output = _output() parser = OsmSax.make_parser() parser.setContentHandler(self) parser.feed("<?xml version='1.0' encoding='UTF-8'?>") f = self._GetFile() f.seek(start) while not self._output.data: parser.feed(f.readline()) return self._output.data
def begin(self): if self.config.dst.endswith(".bz2"): output = bz2.BZ2File(self.config.dst, "w") else: output = open(self.config.dst, "w") self.outxml = OsmSax.OsmSaxWriter(output, "UTF-8") self.outxml.startDocument() self.outxml.startElement("analysers", {})
def fetch_osm_elem(type, id): osmdw = OsmSax.OsmDictWriter() osm_read = fetch_osm_data(type, id, full=False) if osm_read: osm_read.CopyTo(osmdw) elem = osmdw.data[type] if len(elem) > 0: return elem[0]
def begin(self): if self.config.dst.endswith(".bz2"): output = bz2.BZ2File(self.config.dst, "w") else: output = open(self.config.dst, "w") self.outxml = OsmSax.OsmSaxWriter(output, "UTF-8") self.outxml.startDocument() self.outxml.startElement( "analysers", {"timestamp": time.strftime("%Y-%m-%dT%H:%M:%SZ", time.gmtime())})
def fetch_osm_data(type, id, full=True): elem_url = os.path.join(remote_url_read + 'api/0.6/', type, str(id)) if type == "way" and full: elem_url = os.path.join(elem_url, "full") try: elem_io = urllib2.urlopen(elem_url) osm_read = OsmSax.OsmSaxReader(elem_io) return osm_read except: pass
def _Copy(self, output, get_start, get_end): self._debug_in_way = True self._debug_in_relation = True self._output = output parser = OsmSax.make_parser() parser.setContentHandler(self) f = self._GetFile() start = get_start(f) end = get_end(f) count = end - start bs = 1024 f.seek(start) parser.feed("<?xml version='1.0' encoding='UTF-8'?>") parser.feed("<osm>") for i in range(count / bs): parser.feed(f.read(bs)) parser.feed(f.read(count - bs * int(count / bs))) parser.feed("</osm>")
open(self._reldir + "/" + i + "/" + j + "/" + k).read())) ########################################################################### if __name__ == "__main__": import sys if sys.argv[1] == "--init": InitFolder(sys.argv[2]) if sys.argv[1] == "--import": if sys.argv[3] == "-": import OsmSax i = OsmSax.OsmSaxReader(sys.stdin) elif sys.argv[3].endswith(".pbf"): import OsmPbf i = OsmPbf.OsmPbfReader(sys.argv[3]) else: import OsmSax i = OsmSax.OsmSaxReader(sys.argv[3]) o = OsmBin(sys.argv[2], "w") i.CopyTo(o) if sys.argv[1] == "--update": import OsmSax if sys.argv[3] == "-": i = OsmSax.OscSaxReader(sys.stdin) else: i = OsmSax.OscSaxReader(sys.argv[3])