On Sat, Oct 16, 2010 at 8:42 AM, Frederik Ramm <[email protected]> wrote:
> Hi, > > > On 10/16/2010 03:25 PM, Stefan de Konink wrote: > >> Also, can you give me the URL for the source code for pbf2osm to check >>> that a few edge-cases are correctly handled? >>> >> >> http://git.openstreetmap.nl/index.cgi/pbf2osm.git/ >> > > I'm hoping to take that, fix it up a bit (so that the resulting binary is > not called "test" any more etc ;) and put in in the OSM SVN together with a > set of Debian scripts that automatically build the protobuf stuff and > produce a statically linked Debian package with little no dependencies. I > think that should further reduce the hurdle to using it. > Looks pretty good. I liked the coding style. Very simple, short, and concise. I have a few things to note. When parsing the header: if (state == osmheader) { HeaderBlock *hmsg = header_block__unpack (NULL, bmsg->raw_size, uncompressed); if (hmsg == NULL) { fprintf(stderr, "Error unpacking HeaderBlock message\n"); return 1; } if (verbose) fprintf(stderr, "%s\n", hmsg->required_features[0]); header_block__free_unpacked (hmsg, &protobuf_c_system_allocator); The full array of required features should be checked and your program should error out if any required feature other than "OsmSchema-V0.6" or "DenseNodes" appears. When parsing timestamps: #define printtimestamp(attribute, timestamp) \ char tsbuf[21]; \ deltatime2timestamp(timestamp * (pmsg->date_granularity / 1000), tsbuf); \ fputs_unlocked(" "attribute"=\"", stdout); \ fputs_unlocked(tsbuf, stdout); \ fputc_unlocked('"', stdout); The formula is: (timestamp*date_granularity) / 1000 In the comments, you mention that the Nodes stuff is untested. You can build a file that uses Nodes instead of DenseNodes by invoking osmosis with '--write-pbf file=foo.osm.pbf usedense=false'. Thanks, I enjoyed looking at your code and style of coding. Scott
_______________________________________________ dev mailing list [email protected] http://lists.openstreetmap.org/listinfo/dev

