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

Diff of /navit/navit/maptool/osm_xml.c

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

Revision 35 Revision 36
60 {""",'"'}, 60 {""",'"'},
61 {"'",'\''}, 61 {"'",'\''},
62 {"&",'&'}, 62 {"&",'&'},
63 {"&#60;",'<'}, 63 {"&#60;",'<'},
64 {"&#62;",'>'}, 64 {"&#62;",'>'},
65 {"&#123;",'{'},
66 {"&#125;",'}'},
65}; 67};
66 68
67void 69void
68osm_xml_decode_entities(char *buffer) 70osm_xml_decode_entities(char *buffer)
69{ 71{
155 else if (!strcmp(type_buffer,"way")) 157 else if (!strcmp(type_buffer,"way"))
156 type=2; 158 type=2;
157 else if (!strcmp(type_buffer,"relation")) 159 else if (!strcmp(type_buffer,"relation"))
158 type=3; 160 type=3;
159 else { 161 else {
160 fprintf(stderr,"Unknown type %s\n",type_buffer); 162 //fprintf(stderr,"Unknown type %s\n",type_buffer);
161 type=0; 163 type=0;
162 } 164 }
163 osm_add_member(type, atoll(ref_buffer), role_buffer); 165 osm_add_member(type, atoll(ref_buffer), role_buffer);
164 166
165 return 1; 167 return 1;
174 osm_add_nd(atoll(ref_buffer)); 176 osm_add_nd(atoll(ref_buffer));
175 return 1; 177 return 1;
176} 178}
177 179
178int 180int
179map_collect_data_osm(FILE *in, FILE *out_ways, FILE *out_nodes, FILE *out_turn_restrictions, FILE *out_boundaries) 181map_collect_data_osm(FILE *in, struct maptool_osm *osm)
180{ 182{
181 int size=BUFFER_SIZE; 183 int size=BUFFER_SIZE;
182 char buffer[size]; 184 char buffer[size];
183 char *p; 185 char *p;
184 sig_alrm(0); 186 sig_alrm(0);
185 while (fgets(buffer, size, in)) { 187 while (fgets(buffer, size, in)) {
186 p=strchr(buffer,'<'); 188 p=strchr(buffer,'<');
187 if (! p) { 189 if (! p) {
188 fprintf(stderr,"WARNING: wrong line %s\n", buffer); 190 //fprintf(stderr,"WARNING: wrong line %s\n", buffer);
189 continue; 191 continue;
190 } 192 }
191 if (!strncmp(p, "<?xml ",6)) { 193 if (!strncmp(p, "<?xml ",6)) {
192 } else if (!strncmp(p, "<osm ",5)) { 194 } else if (!strncmp(p, "<osm ",5)) {
193 } else if (!strncmp(p, "<bound ",7)) { 195 } else if (!strncmp(p, "<bound ",7)) {
194 } else if (!strncmp(p, "<node ",6)) { 196 } else if (!strncmp(p, "<node ",6)) {
195 if (!parse_node(p)) 197 if (!parse_node(p))
198 {
196 fprintf(stderr,"WARNING: failed to parse %s\n", buffer); 199 //fprintf(stderr,"WARNING: failed to parse %s\n", buffer);
200 }
197 processed_nodes++; 201 processed_nodes++;
198 } else if (!strncmp(p, "<tag ",5)) { 202 } else if (!strncmp(p, "<tag ",5)) {
199 if (!parse_tag(p)) 203 if (!parse_tag(p))
204 {
200 fprintf(stderr,"WARNING: failed to parse %s\n", buffer); 205 //fprintf(stderr,"WARNING: failed to parse %s\n", buffer);
206 }
201 } else if (!strncmp(p, "<way ",5)) { 207 } else if (!strncmp(p, "<way ",5)) {
202 if (!parse_way(p)) 208 if (!parse_way(p))
209 {
203 fprintf(stderr,"WARNING: failed to parse %s\n", buffer); 210 //fprintf(stderr,"WARNING: failed to parse %s\n", buffer);
211 }
204 processed_ways++; 212 processed_ways++;
205 } else if (!strncmp(p, "<nd ",4)) { 213 } else if (!strncmp(p, "<nd ",4)) {
206 if (!parse_nd(p)) 214 if (!parse_nd(p))
215 {
207 fprintf(stderr,"WARNING: failed to parse %s\n", buffer); 216 //fprintf(stderr,"WARNING: failed to parse %s\n", buffer);
217 }
208 } else if (!strncmp(p, "<relation ",10)) { 218 } else if (!strncmp(p, "<relation ",10)) {
209 if (!parse_relation(p)) 219 if (!parse_relation(p))
220 {
210 fprintf(stderr,"WARNING: failed to parse %s\n", buffer); 221 fprintf(stderr,"WARNING: failed to parse %s\n", buffer);
222 }
211 processed_relations++; 223 processed_relations++;
212 } else if (!strncmp(p, "<member ",8)) { 224 } else if (!strncmp(p, "<member ",8)) {
213 if (!parse_member(p)) 225 if (!parse_member(p))
226 {
214 fprintf(stderr,"WARNING: failed to parse %s\n", buffer); 227 //fprintf(stderr,"WARNING: failed to parse %s\n", buffer);
228 }
215 } else if (!strncmp(p, "</node>",7)) { 229 } else if (!strncmp(p, "</node>",7)) {
216 osm_end_node(out_nodes); 230 osm_end_node(osm);
217 } else if (!strncmp(p, "</way>",6)) { 231 } else if (!strncmp(p, "</way>",6)) {
218 osm_end_way(out_ways); 232 osm_end_way(osm);
219 } else if (!strncmp(p, "</relation>",11)) { 233 } else if (!strncmp(p, "</relation>",11)) {
220 osm_end_relation(out_turn_restrictions, out_boundaries); 234 osm_end_relation(osm);
221 } else if (!strncmp(p, "</osm>",6)) { 235 } else if (!strncmp(p, "</osm>",6)) {
222 } else { 236 } else {
223 fprintf(stderr,"WARNING: unknown tag in %s\n", buffer); 237 // fprintf(stderr,"WARNING: unknown tag in %s\n", buffer);
224 } 238 }
225 } 239 }
226 sig_alrm(0); 240 sig_alrm(0);
227 sig_alrm_end(); 241 sig_alrm_end();
228 return 1; 242 return 1;

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

   
Visit the ZANavi Wiki