[OSM-dev] visible-Flag in PBF

Scott Crosby scott at sacrosby.com
Sat May 7 22:43:11 BST 2011


On Sat, May 7, 2011 at 4:04 PM, Christian Vetter <veaac.fdirct at gmail.com> wrote:

>> There are about 80k blobs. If 1-byte tags are used for the counts,
>> overhead is:9 bytes each:
>>
>>   2 bytes indexdata tag&length in the BlobHeader
>>   3*1 bytes (tags for 3 fields)
>>   2*1 bytes (varint count for N==0)
>>   1*2 bytes (varint count for N < 2**14)
>>
>> I assume that few blobs contain more than one entity type. Using
>> booleans only saves one byte of overhead compared to this.
>
> I believe we can get away with 4 bytes:
> 2 bytes tag + length
> 1 + 1 byte for one field ( bool )
> We omit all fields that equal zero ( they are optional ) and the
> reader can then treat that as if it were set to zero

I think that this is a bad idea, because then you can't easily
distinguish between a count of zero and files written by a program
that doesn't set a count.

>
>>> About 312s to compress all blobs for Germany. Changing the dictionary
>>> size does not change much. I lowered it all the way down to 64kb and
>>> the values stayed the same essentially.
>>>
>>
>> And deflate?
>>
>
> 185s

Thank you.

Here's the tradeoffs: Lzma is about twice as slow as deflate to
compress and 10% smaller. Decompression should be a little slower than
deflate. Is that worth adding a LZMA dependency to any PBF reader?

My verdict is no. Protobufs and deflate have extensive language
support, LZMA doesn't and may be superseded by XZ.

Anyone want to make a compelling case for LZMA? Stefan?

Scott



More information about the dev mailing list