Пример #1
0
 def Update(self, f):
     import OsmSax
     if f == "-":
         i = OsmSax.OscSaxReader(sys.stdin)
     else:
         i = OsmSax.OscSaxReader(f)
     i.CopyTo(self)
Пример #2
0
 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)
Пример #3
0
    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
Пример #4
0
    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
Пример #5
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", {})
Пример #6
0
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]
Пример #7
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())})
Пример #8
0
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
Пример #9
0
 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>")
Пример #10
0
 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>")
Пример #11
0
                            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])