[osmosis-dev] Reading PBF without author information fails

Igor Podolskiy igor.podolskiy at vwi-stuttgart.de
Wed Jul 4 22:43:30 BST 2012


Hi,

On 04.07.2012 19:42, WanMil wrote:
> I have another question regarding osmconvert / osmosis PBF reading.
>
> osmosis is not able to read pbf files that have no author information
> (removed with osmconvert africa.osm.pbf --drop-author
> -o=africa_noauthor.osm.pbf)
>
> When reading the africa_noauthor.osm.pbf file with osmosis an
> IndexOutOfBoundsException is thrown. Is the author information mandatory
> for osmosis? Is it possible to change that?
well... Osmosis doesn't care much about authors and it sure does not 
require them AFAIK. However, this is irrelevant, as the exception is not 
thrown by Osmosis. It is thrown by the PBF deserialization library, 
which is not even part of Osmosis.

Given the stack trace that you kindly provided:

> java.lang.IndexOutOfBoundsException: Index: 0
>         at java.util.Collections$EmptyList.get(Unknown Source)
>         at crosby.binary.Osmformat$DenseInfo.getUid(Osmformat.java:3026)
> [...]

you can see that the exception is thrown in crosby.binary.Osmformat. 
This class is autogenerated by the protobuf compiler from the format 
description (namely osmformat.proto). The exception is thrown when 
parsing a DenseInfo message. This is defined as follows:

message DenseInfo {
    repeated int32 version = 1 [packed = true];
    repeated sint64 timestamp = 2 [packed = true]; // DELTA coded
    repeated sint64 changeset = 3 [packed = true]; // DELTA coded
    repeated sint32 uid = 4 [packed = true]; // DELTA coded
    repeated sint32 user_sid = 5 [packed = true]; // String IDs for 
usernames. DELTA coded
    repeated bool visible = 6 [packed = true];
}

The user id is indeed optional ("repeated" means zero or more times), so 
there _can_ be valid OSM PBFs that have no author information - if they 
are properly encoded.

Given that the exception is thrown in generated code which deals with 
pure deserialization, I strongly suspect that your input PBF is somehow 
broken. Which means this --drop-author business in osmconvert is 
suspicious. Which means that you should talk to Marqqs about the problem :)

BTW, did you try feeding this noauthor PBF into osmium? If you did, what 
was the result?

In the meantime, may I suggest a workaround for the task at hand:

   osmosis --read-pbf africa.osm.pbf --write-pbf africa-noauthor.osm.pbf 
omitMetadata=true

drops the author just as well (along with other non-essential stuff) :) 
Or is there something wrong with that?

Greetings from Stuttgart
Igor



More information about the osmosis-dev mailing list