/[zanavi_public1]/navit/navit/maptool/osm_protobuf.c
ZANavi

Diff of /navit/navit/maptool/osm_protobuf.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 35 Revision 36
183#endif 183#endif
184} 184}
185 185
186 186
187static void 187static void
188process_dense(OSMPBF__PrimitiveBlock *primitive_block, OSMPBF__DenseNodes *dense, FILE *out_nodes) 188process_dense(OSMPBF__PrimitiveBlock *primitive_block, OSMPBF__DenseNodes *dense, struct maptool_osm *osm)
189{ 189{
190 int i,j=0,has_tags; 190 int i,j=0,has_tags;
191 long long id=0,lat=0,lon=0,changeset=0,timestamp=0; 191 long long id=0,lat=0,lon=0,changeset=0,timestamp=0;
192 int version,user_sid=0,uid=0; 192 int version,user_sid=0,uid=0;
193 193
223 } else 223 } else
224 printf("/>\n"); 224 printf("/>\n");
225#else 225#else
226 } 226 }
227#endif 227#endif
228 osm_end_node(out_nodes); 228 osm_end_node(osm);
229 j++; 229 j++;
230 } 230 }
231} 231}
232 232
233#if 0 233#if 0
239 process_timestamp(info->timestamp); 239 process_timestamp(info->timestamp);
240} 240}
241#endif 241#endif
242 242
243static void 243static void
244process_way(OSMPBF__PrimitiveBlock *primitive_block, OSMPBF__Way *way, FILE *out_ways) 244process_way(OSMPBF__PrimitiveBlock *primitive_block, OSMPBF__Way *way, struct maptool_osm *osm)
245{ 245{
246 int i; 246 int i;
247 long long ref=0; 247 long long ref=0;
248 248
249 osm_add_way(way->id); 249 osm_add_way(way->id);
264 for (i = 0 ; i < way->n_keys ; i++) 264 for (i = 0 ; i < way->n_keys ; i++)
265 process_tag(primitive_block, way->keys[i], way->vals[i]); 265 process_tag(primitive_block, way->keys[i], way->vals[i]);
266#if 0 266#if 0
267 printf("\t</way>\n"); 267 printf("\t</way>\n");
268#endif 268#endif
269 osm_end_way(out_ways); 269 osm_end_way(osm);
270} 270}
271 271
272static void 272static void
273process_relation(OSMPBF__PrimitiveBlock *primitive_block, OSMPBF__Relation *relation, FILE *out_turn_restrictions, FILE *out_boundaries) 273process_relation(OSMPBF__PrimitiveBlock *primitive_block, OSMPBF__Relation *relation, struct maptool_osm *osm)
274{ 274{
275 int i; 275 int i;
276 long long ref=0; 276 long long ref=0;
277 char rolebuff[1024]; 277 char rolebuff[1024];
278 278
311 for (i = 0 ; i < relation->n_keys ; i++) 311 for (i = 0 ; i < relation->n_keys ; i++)
312 process_tag(primitive_block, relation->keys[i], relation->vals[i]); 312 process_tag(primitive_block, relation->keys[i], relation->vals[i]);
313#if 0 313#if 0
314 printf("\t</relation>\n"); 314 printf("\t</relation>\n");
315#else 315#else
316 osm_end_relation(out_turn_restrictions, out_boundaries); 316 osm_end_relation(osm);
317#endif 317#endif
318} 318}
319 319
320static void 320static void
321process_osmdata(OSMPBF__Blob *blob, unsigned char *data, FILE *out_nodes, FILE *out_ways, FILE *out_turn_restrictions, FILE *out_boundaries) 321process_osmdata(OSMPBF__Blob *blob, unsigned char *data, struct maptool_osm *osm)
322{ 322{
323 int i,j; 323 int i,j;
324 OSMPBF__PrimitiveBlock *primitive_block; 324 OSMPBF__PrimitiveBlock *primitive_block;
325 primitive_block=osmpbf__primitive_block__unpack(&protobuf_c_system_allocator, blob->raw_size, data); 325 primitive_block=osmpbf__primitive_block__unpack(&protobuf_c_system_allocator, blob->raw_size, data);
326 for (i = 0 ; i < primitive_block->n_primitivegroup ; i++) { 326 for (i = 0 ; i < primitive_block->n_primitivegroup ; i++) {
327 OSMPBF__PrimitiveGroup *primitive_group=primitive_block->primitivegroup[i]; 327 OSMPBF__PrimitiveGroup *primitive_group=primitive_block->primitivegroup[i];
328 process_dense(primitive_block, primitive_group->dense, out_nodes); 328 process_dense(primitive_block, primitive_group->dense, osm);
329 for (j = 0 ; j < primitive_group->n_ways ; j++) 329 for (j = 0 ; j < primitive_group->n_ways ; j++)
330 process_way(primitive_block, primitive_group->ways[j], out_ways); 330 process_way(primitive_block, primitive_group->ways[j], osm);
331 for (j = 0 ; j < primitive_group->n_relations ; j++) 331 for (j = 0 ; j < primitive_group->n_relations ; j++)
332 process_relation(primitive_block, primitive_group->relations[j], out_turn_restrictions, out_boundaries); 332 process_relation(primitive_block, primitive_group->relations[j], osm);
333#if 0 333#if 0
334 printf("Group %p %d %d %d %d\n",primitive_group->dense,primitive_group->n_nodes,primitive_group->n_ways,primitive_group->n_relations,primitive_group->n_changesets); 334 printf("Group %p %d %d %d %d\n",primitive_group->dense,primitive_group->n_nodes,primitive_group->n_ways,primitive_group->n_relations,primitive_group->n_changesets);
335#endif 335#endif
336 } 336 }
337 osmpbf__primitive_block__free_unpacked(primitive_block, &protobuf_c_system_allocator); 337 osmpbf__primitive_block__free_unpacked(primitive_block, &protobuf_c_system_allocator);
338} 338}
339 339
340 340
341int 341int
342map_collect_data_osm_protobuf(FILE *in, FILE *out_ways, FILE *out_nodes, FILE *out_turn_restrictions, FILE *out_boundaries) 342map_collect_data_osm_protobuf(FILE *in, struct maptool_osm *osm)
343{ 343{
344 OSMPBF__BlobHeader *header; 344 OSMPBF__BlobHeader *header;
345 OSMPBF__Blob *blob; 345 OSMPBF__Blob *blob;
346 unsigned char *data; 346 unsigned char *data;
347#if 0 347#if 0
352 blob=read_blob(header, in); 352 blob=read_blob(header, in);
353 data=uncompress_blob(blob); 353 data=uncompress_blob(blob);
354 if (!strcmp(header->type,"OSMHeader")) { 354 if (!strcmp(header->type,"OSMHeader")) {
355 process_osmheader(blob, data); 355 process_osmheader(blob, data);
356 } else if (!strcmp(header->type,"OSMData")) { 356 } else if (!strcmp(header->type,"OSMData")) {
357 process_osmdata(blob, data, out_nodes, out_ways, out_turn_restrictions, out_boundaries); 357 process_osmdata(blob, data, osm);
358 } else { 358 } else {
359 printf("unknown\n"); 359 printf("unknown\n");
360 return 0; 360 return 0;
361 } 361 }
362 free(data); 362 free(data);

Legend:
Removed from v.35  
changed lines
  Added in v.36

   
Visit the ZANavi Wiki