[OSM-dev] Delta-encoding in PBF
David Paleino
dapal at debian.org
Sat Dec 18 10:53:34 GMT 2010
Hello people,
I'm writing a parser in C# for PBF dumps. However, I'm having issues with the
Delta-{en|de}coding.
I thought I succesfully implemented the decoding when I saw "correct"
latitudes/longitudes, with the following (pseudo-)code:
---8<---
function decode(delta) {
ret = []
for (i=0; i < delta.Count; i++) {
if (i == 0) {
ret.append(delta[0])
continue
}
ret.append(delta[0] + delta[i])
}
return ret
}
--->8---
This worked great with latitudes/longitudes, which I converted with the
"OUT = IN * granularity / 10**9"
formula I found in the .proto.
However, it seems that I can't understand the way user_sid is encoded. I tried
to apply the same function, but it returned negative numbers at a certain
point, and I obviously had an OutOfRange exception.
I must also say that I originally thought that the delta-encoding worked like
this:
1) write the first number, at list[0]
2) at position n, write the result of "list[n-1] - list[n]"
Did I just miss the correct documentation?
Thank you,
David
--
. ''`. Debian developer | http://wiki.debian.org/DavidPaleino
: :' : Linuxer #334216 --|-- http://www.hanskalabs.net/
`. `'` GPG: 1392B174 ----|---- http://deb.li/dapal
`- 2BAB C625 4E66 E7B8 450A C3E1 E6AA 9017 1392 B174
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: not available
URL: <http://lists.openstreetmap.org/pipermail/dev/attachments/20101218/7ba7ac2d/attachment.pgp>
More information about the dev
mailing list