[OSM-dev] Binary Format, Performance, pbf2osm

Stefan de Konink stefan at konink.de
Sun Oct 17 12:34:39 BST 2010


On Sun, 17 Oct 2010, Stefan de Konink wrote:

> message 'PrimitiveBlock': missing required field 'stringtable'
> Error unpacking PrimitiveBlock message
>
> (gdb) print *hmsg
> $3 = {base = {descriptor = 0x406740, n_unknown_fields = 0,
>     unknown_fields = 0x0}, bbox = 0x0, n_required_features = 0,
>  required_features = 0x0, n_optional_features = 0, optional_features = 0x0,
>   writingprogram = 0x0, source = 0x0}
>
> But lets look what is in the raw message:
>
> (gdb) print bmsg.raw
> $2 = {len = 56,
>  data = 0x60b550 
> "\n\032\b\276\210\360\350B\020\340\220\361\227g\030\236\226\305\344\370\002 
> \340\347\351\223\340\002\"\016OsmSchema-V0.6\"\nDenseNodes\201\n\002"}
>
> Could it be an empty block?

(It missed a required feature)

If we look at one block after it, which the error actually has:

(gdb) print *bmsg
$1 = {base = {descriptor = 0x4057e0, n_unknown_fields = 0,
     unknown_fields = 0x0}, has_raw = 1, raw = {len = 141264,
     data = 0x7ffff7eaf010 "\n\261D\n"}, has_raw_size = 0, raw_size = 0,
   has_zlib_data = 0, zlib_data = {len = 0, data = 0x0}, has_lzma_data = 0,
   lzma_data = {len = 0, data = 0x0}, has_bzip2_data = 0, bzip2_data = {
     len = 0, data = 0x0}}

The block has raw_size = 0 (that will result in badness!)

Now the question is? I'm trusting raw_size (because it is equal for 
uncompress and compressed data) and it means the output size. I see that 
you have only set 'len' of the raw message. While it is set in the 
compressed case. Why is it 0?


Stefan



More information about the dev mailing list