aboutsummaryrefslogtreecommitdiffstats
path: root/pbf2db/pbf2db.py
diff options
context:
space:
mode:
authorslomo <steve.harrison@gmx.net>2011-01-12 20:37:16 +0100
committerslomo <steve.harrison@gmx.net>2011-01-12 20:37:16 +0100
commit2cb5dd752037ff81329578d1514dac7de0e3ee16 (patch)
tree58c043051b7f9e49c54db57ab65dec097281a0cc /pbf2db/pbf2db.py
parent8758b959552cc282b2d9b72055130958a8f9101b (diff)
downloadosm-xapi-2cb5dd752037ff81329578d1514dac7de0e3ee16.tar.gz
osm-xapi-2cb5dd752037ff81329578d1514dac7de0e3ee16.tar.xz
osm-xapi-2cb5dd752037ff81329578d1514dac7de0e3ee16.zip
merged code from old repo
Diffstat (limited to 'pbf2db/pbf2db.py')
-rwxr-xr-xpbf2db/pbf2db.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/pbf2db/pbf2db.py b/pbf2db/pbf2db.py
new file mode 100755
index 0000000..c6089fc
--- /dev/null
+++ b/pbf2db/pbf2db.py
@@ -0,0 +1,44 @@
+#!/usr/bin/python
+
+import osmformat_pb2
+import fileformat_pb2
+import sys
+import socket
+import zlib
+from binarystream import BinaryStream
+
+
+headerSizeMax = 64 * 1024
+bodySizeMax = 32*1024*1024
+
+f = open("berlin.osm.pbf")
+stream = BinaryStream(f)
+headerSize = socket.ntohl(stream.readUInt32());
+
+if headerSizeMax < headerSize:
+ raise ValueError("Header to long")
+
+headerbuff = stream.readBytes(headerSize)
+blobheader = fileformat_pb2.BlobHeader()
+blobheader.ParseFromString(headerbuff)
+bodysize = blobheader.datasize
+
+if bodySizeMax < bodysize:
+ raise ValueError("Body to fat")
+
+blobbuff = stream.readBytes(bodysize)
+blob = fileformat_pb2.Blob()
+blob.ParseFromString(blobbuff)
+
+if blob.raw != "":
+ rawstr = blob.raw
+else:
+ rawstr = zlib.decompress(blob.zlib_data)
+
+headerblock = osmformat_pb2.HeaderBlock()
+headerblock.ParseFromString(rawstr)
+
+print "Source:",headerblock.source
+print "Writingprog:",headerblock.writingprogram
+print "required features:",headerblock.required_features
+