navit  0.5.3-trunk
maptool.h
Go to the documentation of this file.
1 /*
2  * Navit, a modular navigation system.
3  * Copyright (C) 2005-2011 Navit Team
4  *
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU General Public License
7  * version 2 as published by the Free Software Foundation.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the
16  * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17  * Boston, MA 02110-1301, USA.
18  */
19 #include "config.h"
20 #include <glib.h>
21 #include "coord.h"
22 #include "item.h"
23 #include "attr.h"
24 #include "geom.h"
25 #include "types.h"
26 
27 #define sq(x) ((double)(x)*(x))
28 
29 #define BUFFER_SIZE 1280
30 
31 #define debug_tile(x) 0
32 #define debug_itembin(x) 0
33 
34 #define RELATION_MEMBER_PRINT_FORMAT "%d:"LONGLONG_FMT":%s"
35 #define RELATION_MEMBER_PARSE_FORMAT "%d:"LONGLONG_FMT":%n"
36 
37 struct tile_data {
38  char buffer[1024];
40  struct rect item_bbox;
41  struct rect tile_bbox;
42 };
43 
45  int min;
46  int max;
47  int overlap;
49 };
50 
51 struct tile_info {
52  int write;
53  int maxlen;
54  char *suffix;
56  FILE *tilesdir_out;
57 };
58 
59 extern struct tile_head {
62  char *name;
63  char *zip_data;
65  int zipnum;
66  int process;
67  struct tile_head *next;
68  // char subtiles[0];
70 
71 
82 struct item_bin {
84  int len;
86  enum item_type type;
88  int clen;
89 };
90 
98 struct attr_bin {
100  int len;
102  enum attr_type type;
103 };
104 
105 
107  int (*func)(struct item_bin_sink_func *func, struct item_bin *ib, struct tile_data *tile_data);
108  void *priv_data[8];
109 };
110 
112  void *priv_data[8];
114 };
115 #define NODE_ID_BITS 56
116 struct node_item {
117  struct coord c;
118 unsigned long long int nd_id:
119  NODE_ID_BITS;
120  char ref_way;
121 };
122 
123 struct zip_info;
124 
125 struct country_table;
126 
131 typedef unsigned long long int osmid;
132 #define OSMID_FMT ULONGLONG_FMT
133 
136  FILE *ways_in;
137  FILE *ways_out;
138  FILE *nodes_in;
139  FILE *nodes_out;
140  FILE *nodes2_in;
141  FILE *nodes2_out;
142 };
143 
144 /* boundaries.c */
145 
146 struct boundary {
147  struct item_bin *ib;
149  char *iso2;
152  struct rect r;
154 };
155 
156 char *osm_tag_value(struct item_bin *ib, char *key);
157 
158 osmid boundary_relid(struct boundary *b);
159 
160 GList *process_boundaries(FILE *boundaries, FILE *ways);
161 
162 GList *boundary_find_matches(GList *bl, struct coord *c);
163 
164 void free_boundaries(GList *l);
165 
166 /* buffer.c */
167 
169 struct buffer {
173  long long malloced;
175  unsigned char *base;
177  long long size;
178 };
179 
180 void save_buffer(char *filename, struct buffer *b, long long offset);
181 int load_buffer(char *filename, struct buffer *b, long long offset, long long size);
182 long long sizeof_buffer(char *filename);
183 
184 /* ch.c */
185 
186 void ch_generate_tiles(char *map_suffix, char *suffix, FILE *tilesdir_out, struct zip_info *zip_info);
187 void ch_assemble_map(char *map_suffix, char *suffix, struct zip_info *zip_info);
188 
189 /* coastline.c */
190 
191 void process_coastlines(FILE *in, FILE *out);
192 
193 /* itembin.c */
194 
195 int item_bin_read(struct item_bin *ib, FILE *in);
196 void item_bin_set_type(struct item_bin *ib, enum item_type type);
197 void item_bin_init(struct item_bin *ib, enum item_type type);
198 void item_bin_add_coord(struct item_bin *ib, struct coord *c, int count);
199 void item_bin_add_coord_reverse(struct item_bin *ib, struct coord *c, int count);
200 void item_bin_bbox(struct item_bin *ib, struct rect *r);
201 void item_bin_copy_coord(struct item_bin *ib, struct item_bin *from, int dir);
202 void item_bin_copy_attr(struct item_bin *ib, struct item_bin *from, enum attr_type attr);
203 void item_bin_add_coord_rect(struct item_bin *ib, struct rect *r);
204 int attr_bin_write_data(struct attr_bin *ab, enum attr_type type, void *data, int size);
205 int attr_bin_write_attr(struct attr_bin *ab, struct attr *attr);
206 void item_bin_add_attr_data(struct item_bin *ib, enum attr_type type, void *data, int size);
207 void item_bin_add_attr(struct item_bin *ib, struct attr *attr);
208 void item_bin_add_attr_int(struct item_bin *ib, enum attr_type type, int val);
209 void *item_bin_get_attr(struct item_bin *ib, enum attr_type type, void *last);
210 struct attr_bin * item_bin_get_attr_bin(struct item_bin *ib, enum attr_type type, void *last);
211 struct attr_bin * item_bin_get_attr_bin_last(struct item_bin *ib);
212 void item_bin_add_attr_longlong(struct item_bin *ib, enum attr_type type, long long val);
213 void item_bin_add_attr_string(struct item_bin *ib, enum attr_type type, char *str);
214 void item_bin_add_hole(struct item_bin * ib, struct coord * coord, int ccount);
215 void item_bin_add_attr_range(struct item_bin *ib, enum attr_type type, short min, short max);
216 void item_bin_remove_attr(struct item_bin *ib, void *ptr);
217 void item_bin_write(struct item_bin *ib, FILE *out);
218 struct item_bin *item_bin_dup(struct item_bin *ib);
219 void item_bin_write_clipped(struct item_bin *ib, struct tile_parameter *param, struct item_bin_sink *out);
220 void item_bin_dump(struct item_bin *ib, FILE *out);
221 void dump_itembin(struct item_bin *ib);
222 void item_bin_set_type_by_population(struct item_bin *ib, int population);
223 void item_bin_write_match(struct item_bin *ib, enum attr_type type, enum attr_type match, int maxdepth, FILE *out);
224 int item_bin_sort_file(char *in_file, char *out_file, struct rect *r, int *size);
225 void clip_line(struct item_bin *ib, struct rect *r, struct tile_parameter *param, struct item_bin_sink *out);
226 void clip_polygon(struct item_bin *ib, struct rect *r, struct tile_parameter *param, struct item_bin_sink *out);
228 
229 /* itembin_buffer.c */
230 struct node_item *read_node_item(FILE *in);
231 struct item_bin *read_item(FILE *in);
232 struct item_bin *read_item_range(FILE *in, int *min, int *max);
233 struct item_bin *init_item(enum item_type type);
234 extern struct item_bin *tmp_item_bin;
235 
236 /* itembin_slicer.c */
237 void itembin_nicer_slicer(struct tile_info *info, struct item_bin *ib, FILE *reference, char * buffer, int min);
238 
239 
240 /* maptool.c */
241 
242 extern long long slice_size;
243 extern int thread_count;
244 extern int attr_debug_level;
245 extern char *suffix;
246 extern int ignore_unknown;
247 extern GHashTable *dedupe_ways_hash;
248 extern int slices;
249 extern struct buffer node_buffer;
251 extern int bytes_read;
252 extern int overlap;
253 extern int unknown_country;
254 extern int experimental;
255 void sig_alrm(int sig);
256 void sig_alrm_end(void);
257 
258 /* misc.c */
259 extern struct rect world_bbox;
260 
261 
262 void bbox_extend(struct coord *c, struct rect *r);
263 void bbox(struct coord *c, int count, struct rect *r);
264 int contains_bbox(int xl, int yl, int xh, int yh, struct rect *r);
265 int bbox_contains_coord(struct rect *r, struct coord *c);
266 int bbox_contains_bbox(struct rect *out, struct rect *in);
267 long long bbox_area(struct rect const *r);
268 void phase1_map(GList *maps, FILE *out_ways, FILE *out_nodes);
269 void dump(FILE *in);
270 int phase4(FILE **in, int in_count, int with_range, char *suffix, FILE *tilesdir_out, struct zip_info *zip_info);
271 int phase5(FILE **in, FILE **references, int in_count, int with_range, char *suffix, struct zip_info *zip_info);
272 void process_binfile(FILE *in, FILE *out);
273 void add_aux_tiles(char *name, struct zip_info *info);
274 void cat(FILE *in, FILE *out);
276 
277 
278 /* osm.c */
279 struct maptool_osm {
280  FILE *boundaries;
285  FILE *nodes;
286  FILE *ways;
287  FILE *line2poi;
288  FILE *poly2poi;
289  FILE *towns;
290 };
291 
298 };
299 
300 void osm_warning(char *type, osmid id, int cont, char *fmt, ...);
301 void osm_info(char *type, osmid id, int cont, char *fmt, ...);
302 void osm_add_tag(char *k, char *v);
303 void osm_add_node(osmid id, double lat, double lon);
304 void osm_add_way(osmid id);
305 void osm_add_relation(osmid id);
306 void osm_end_relation(struct maptool_osm *osm);
307 void osm_add_member(enum relation_member_type type, osmid ref, char *role);
308 void osm_end_way(struct maptool_osm *osm);
309 void osm_end_node(struct maptool_osm *osm);
310 void osm_add_nd(osmid ref);
311 osmid item_bin_get_id(struct item_bin *ib);
312 void flush_nodes(int final);
313 void sort_countries(int keep_tmpfiles);
314 void process_associated_streets(FILE *in, struct files_relation_processing *files_relproc);
315 void process_house_number_interpolations(FILE *in, struct files_relation_processing *files_relproc);
316 void process_multipolygons(FILE *in, FILE *coords, FILE *ways, FILE *ways_index, FILE *out);
317 void process_turn_restrictions(FILE *in, FILE *coords, FILE *ways, FILE *ways_index, FILE *out);
318 void process_turn_restrictions_old(FILE *in, FILE *coords, FILE *ways, FILE *ways_index, FILE *out);
319 void clear_node_item_buffer(void);
320 void ref_ways(FILE *in);
321 void resolve_ways(FILE *in, FILE *out);
322 unsigned long long item_bin_get_nodeid(struct item_bin *ib);
323 unsigned long long item_bin_get_wayid(struct item_bin *ib);
324 unsigned long long item_bin_get_relationid(struct item_bin *ib);
325 void process_way2poi(FILE *in, FILE *out, int type);
326 int map_resolve_coords_and_split_at_intersections(FILE *in, FILE *out, FILE *out_index, FILE *out_graph,
327  FILE *out_coastline, int final);
328 void write_countrydir(struct zip_info *zip_info, int max_index_size);
329 void osm_process_towns(FILE *in, FILE *boundaries, FILE *ways, char *suffix);
330 void load_countries(void);
331 void remove_countryfiles(void);
332 struct country_table * country_from_iso2(char *iso);
333 void osm_init(FILE*);
334 
335 /* osm_o5m.c */
336 int map_collect_data_osm_o5m(FILE *in, struct maptool_osm *osm);
337 
338 /* osm_psql.c */
339 int map_collect_data_osm_db(char *dbstr, struct maptool_osm *osm);
340 
341 /* osm_protobuf.c */
342 int map_collect_data_osm_protobuf(FILE *in, struct maptool_osm *osm);
343 int osm_protobufdb_load(FILE *in, char *dir);
344 
345 /* osm_relations.c */
346 struct relations * relations_new(void);
347 struct relations_func *relations_func_new(void (*func)(void *func_priv, void *relation_priv, struct item_bin *member,
348  void *member_priv), void *func_priv);
349 void relations_add_relation_member_entry(struct relations *rel, struct relations_func *func, void *relation_priv,
350  void *member_priv, enum relation_member_type type, osmid id);
352 void relations_process(struct relations *rel, FILE *nodes, FILE *ways);
353 void relations_process_multi(struct relations **rel, int count, FILE *nodes, FILE *ways);
354 void relations_destroy(struct relations *rel);
355 
356 
357 /* osm_xml.c */
358 int osm_xml_get_attribute(char *xml, char *attribute, char *buffer, int buffer_size);
359 void osm_xml_decode_entities(char *buffer);
360 int map_collect_data_osm(FILE *in, struct maptool_osm *osm);
361 
362 
363 /* sourcesink.c */
364 
365 struct item_bin_sink *item_bin_sink_new(void);
367  struct tile_data *tile_data));
369 void item_bin_sink_add_func(struct item_bin_sink *sink, struct item_bin_sink_func *func);
370 void item_bin_sink_destroy(struct item_bin_sink *sink);
371 int item_bin_write_to_sink(struct item_bin *ib, struct item_bin_sink *sink, struct tile_data *tile_data);
372 struct item_bin_sink *file_reader_new(FILE *in, int limit, int offset);
373 int file_reader_finish(struct item_bin_sink *sink);
374 int file_writer_process(struct item_bin_sink_func *func, struct item_bin *ib, struct tile_data *tile_data);
375 struct item_bin_sink_func *file_writer_new(FILE *out);
376 int file_writer_finish(struct item_bin_sink_func *file_writer);
377 int tile_collector_process(struct item_bin_sink_func *tile_collector, struct item_bin *ib, struct tile_data *tile_data);
379 
380 /* tempfile.c */
381 
382 char *tempfile_name(char *suffix, char *name);
383 FILE *tempfile(char *suffix, char *name, int mode);
384 void tempfile_unlink(char *suffix, char *name);
385 void tempfile_rename(char *suffix, char *from, char *to);
386 
387 /* tile.c */
388 extern GHashTable *tile_hash,*tile_hash2;
389 
390 struct aux_tile {
391  char *name;
392  char *filename;
393  int size;
394 };
395 
396 extern GList *aux_tile_list;
397 
398 int tile(struct rect *r, char *suffix, char *ret, int max, int overlap, struct rect *tr);
399 void tile_bbox(char *tile, struct rect *r, int overlap);
400 int tile_len(char *tile);
401 void load_tilesdir(FILE *in);
402 void tile_write_item_to_tile(struct tile_info *info, struct item_bin *ib, FILE *reference, char *name);
403 void tile_write_item_minmax(struct tile_info *info, struct item_bin *ib, FILE *reference, int min, int max);
404 int add_aux_tile(struct zip_info *zip_info, char *name, char *filename, int size);
405 int write_aux_tiles(struct zip_info *zip_info);
406 int create_tile_hash(void);
407 void write_tilesdir(struct tile_info *info, struct zip_info *zip_info, FILE *out);
408 void merge_tiles(struct tile_info *info);
409 extern struct attr map_information_attrs[32];
410 void index_init(struct zip_info *info, int version);
411 void index_submap_add(struct tile_info *info, struct tile_head *th);
412 
413 /* zip.c */
414 void write_zipmember(struct zip_info *zip_info, char *name, int filelen, char *data, int data_size);
415 int zip_write_index(struct zip_info *info);
416 int zip_write_directory(struct zip_info *info);
417 struct zip_info *zip_new(void);
418 void zip_set_zip64(struct zip_info *info, int on);
419 void zip_set_compression_level(struct zip_info *info, int level);
420 void zip_set_maxnamelen(struct zip_info *info, int max);
421 int zip_get_maxnamelen(struct zip_info *info);
422 int zip_add_member(struct zip_info *info);
423 int zip_set_timestamp(struct zip_info *info, char *timestamp);
424 int zip_open(struct zip_info *info, char *out, char *dir, char *index);
425 FILE *zip_get_index(struct zip_info *info);
426 int zip_get_zipnum(struct zip_info *info);
427 void zip_set_zipnum(struct zip_info *info, int num);
428 void zip_close(struct zip_info *info);
429 void zip_destroy(struct zip_info *info);
430 
431 /* osm.c */
432 int process_multipolygons_find_loops(osmid relid, int in_count, struct item_bin ** parts, int **scount,
433  int *** sequences,
434  int **direction);
435 int process_multipolygons_loop_dump(struct item_bin** bin, int scount, int*sequence, int*direction,
436  struct coord * buffer);
437 int process_multipolygons_loop_count(struct item_bin** bin, int scount, int*sequence);
438 
439 /* Break compilation on 32 bit architectures, as we're going to cast osmid's to gpointer to use them as keys to GHashTable's */
441  char s[sizeof(gpointer)<sizeof(osmid)?-1:1];
442 };
attr_type
Definition: attr.h:34
struct node * nodes
static int match(struct country_search *this_, enum attr_type type, const char *name)
Definition: country.c:380
#define max(a, b)
Definition: garmin.c:685
struct triple lng lat
Definition: garmin_img.c:0
char data
Definition: garmin_img.c:2
unsigned char info
Definition: garmin_img.c:0
char filename[8]
Definition: garmin_img.c:1
char type[3]
Definition: garmin_img.c:2
int size
Definition: garmin_img.c:3
int offset
Definition: garmin_img.c:0
static int buffer_size
Definition: vehicle_file.c:80
item_type
Definition: item.h:29
GList * maps
Definition: map.c:29
void relations_destroy(struct relations *rel)
Definition: osm_relations.c:237
struct item_bin * tmp_item_bin
Definition: itembin_buffer.c:27
int zip_get_maxnamelen(struct zip_info *info)
Definition: zip.c:280
void resolve_ways(FILE *in, FILE *out)
Definition: osm.c:3950
void bbox(struct coord *c, int count, struct rect *r)
Definition: misc.c:66
void osm_add_nd(osmid ref)
Definition: osm.c:3899
void ch_assemble_map(char *map_suffix, char *suffix, struct zip_info *zip_info)
Definition: ch.c:444
char * tempfile_name(char *suffix, char *name)
Definition: tempfile.c:26
void osm_xml_decode_entities(char *buffer)
Definition: osm_xml.c:72
struct buffer node_buffer
Definition: maptool.c:67
void osm_end_way(struct maptool_osm *osm)
Definition: osm.c:1815
struct item_bin * read_item(FILE *in)
Definition: itembin_buffer.c:72
void sig_alrm_end(void)
Definition: maptool.c:213
void zip_set_zipnum(struct zip_info *info, int num)
Definition: zip.c:327
int map_collect_data_osm_protobuf(FILE *in, struct maptool_osm *osm)
Definition: osm_protobuf.c:261
void clip_line(struct item_bin *ib, struct rect *r, struct tile_parameter *param, struct item_bin_sink *out)
Definition: itembin.c:576
struct item_bin * read_item_range(FILE *in, int *min, int *max)
Definition: itembin_buffer.c:89
void relations_add_relation_member_entry(struct relations *rel, struct relations_func *func, void *relation_priv, void *member_priv, enum relation_member_type type, osmid id)
Definition: osm_relations.c:93
void item_bin_add_attr_data(struct item_bin *ib, enum attr_type type, void *data, int size)
Definition: itembin.c:112
void add_aux_tiles(char *name, struct zip_info *info)
Definition: misc.c:411
struct attr_bin * item_bin_get_attr_bin_last(struct item_bin *ib)
Definition: itembin.c:190
GList * process_boundaries(FILE *boundaries, FILE *ways)
Definition: boundaries.c:297
void sig_alrm(int sig)
Definition: maptool.c:206
void item_bin_add_attr_longlong(struct item_bin *ib, enum attr_type type, long long val)
Definition: itembin.c:202
void item_bin_add_coord(struct item_bin *ib, struct coord *c, int count)
Definition: itembin.c:51
void item_bin_bbox(struct item_bin *ib, struct rect *r)
Definition: itembin.c:65
void ref_ways(FILE *in)
Definition: osm.c:3942
void process_turn_restrictions(FILE *in, FILE *coords, FILE *ways, FILE *ways_index, FILE *out)
Definition: osm.c:3672
void write_tilesdir(struct tile_info *info, struct zip_info *zip_info, FILE *out)
Definition: tile.c:491
void bbox_extend(struct coord *c, struct rect *r)
Definition: misc.c:55
int bytes_read
Definition: maptool.c:75
void item_bin_set_type(struct item_bin *ib, enum item_type type)
Definition: itembin.c:40
int map_collect_data_osm_o5m(FILE *in, struct maptool_osm *osm)
Definition: osm_o5m.c:152
void zip_set_compression_level(struct zip_info *info, int level)
Definition: zip.c:272
long long bbox_area(struct rect const *r)
Definition: misc.c:117
char * osm_tag_value(struct item_bin *ib, char *key)
Definition: boundaries.c:26
void item_bin_dump(struct item_bin *ib, FILE *out)
Definition: itembin.c:316
void zip_close(struct zip_info *info)
Definition: zip.c:331
void write_zipmember(struct zip_info *zip_info, char *name, int filelen, char *data, int data_size)
Definition: zip.c:78
void clear_node_item_buffer(void)
Definition: osm.c:1452
int file_writer_finish(struct item_bin_sink_func *file_writer)
Definition: sourcesink.c:118
int processed_relations
Definition: maptool.h:250
void itembin_nicer_slicer(struct tile_info *info, struct item_bin *ib, FILE *reference, char *buffer, int min)
Definition: itembin_slicer.c:787
int item_order_by_type(enum item_type type)
Definition: misc.c:155
int ignore_unknown
Definition: maptool.c:54
int process_multipolygons_loop_count(struct item_bin **bin, int scount, int *sequence)
get number of coordinates inside a sequence calculated by process_multipolygon_find_loop
Definition: osm.c:2965
void item_bin_write_match(struct item_bin *ib, enum attr_type type, enum attr_type match, int maxdepth, FILE *out)
Definition: itembin.c:434
int map_collect_data_osm(FILE *in, struct maptool_osm *osm)
Definition: osm_xml.c:171
void process_multipolygons(FILE *in, FILE *coords, FILE *ways, FILE *ways_index, FILE *out)
Definition: osm.c:3317
GHashTable * tile_hash
Definition: tile.c:51
GHashTable * dedupe_ways_hash
Definition: maptool.c:56
void write_countrydir(struct zip_info *zip_info, int max_index_size)
Definition: osm.c:4087
void osm_add_member(enum relation_member_type type, osmid ref, char *role)
Definition: osm.c:1739
int zip_set_timestamp(struct zip_info *info, char *timestamp)
Definition: zip.c:289
void item_bin_add_attr(struct item_bin *ib, struct attr *attr)
Definition: itembin.c:117
int bbox_contains_coord(struct rect *r, struct coord *c)
Definition: misc.c:93
int osm_xml_get_attribute(char *xml, char *attribute, char *buffer, int buffer_size)
Definition: osm_xml.c:29
#define NODE_ID_BITS
Definition: maptool.h:115
int processed_ways
Definition: maptool.h:250
int experimental
Definition: maptool.c:65
void tile_write_item_minmax(struct tile_info *info, struct item_bin *ib, FILE *reference, int min, int max)
Definition: tile.c:336
void zip_set_maxnamelen(struct zip_info *info, int max)
Definition: zip.c:276
char * suffix
GHashTable * tile_hash2
Definition: maptool.h:388
int osm_protobufdb_load(FILE *in, char *dir)
Definition: osm_protobufdb.c:660
void item_bin_sink_func_destroy(struct item_bin_sink_func *func)
Definition: sourcesink.c:41
int attr_debug_level
Definition: maptool.c:53
struct item_bin_sink_func * item_bin_sink_func_new(int(*func)(struct item_bin_sink_func *func, struct item_bin *ib, struct tile_data *tile_data))
Definition: sourcesink.c:35
void item_bin_add_coord_reverse(struct item_bin *ib, struct coord *c, int count)
Definition: itembin.c:59
void osm_end_relation(struct maptool_osm *osm)
Definition: osm.c:1724
void tempfile_unlink(char *suffix, char *name)
Definition: tempfile.c:47
void relations_add_relation_default_entry(struct relations *rel, struct relations_func *func)
Definition: osm_relations.c:109
struct relations_func * relations_func_new(void(*func)(void *func_priv, void *relation_priv, struct item_bin *member, void *member_priv), void *func_priv)
Definition: osm_relations.c:65
void process_binfile(FILE *in, FILE *out)
Definition: misc.c:404
struct item_bin * init_item(enum item_type type)
Definition: itembin_buffer.c:100
int contains_bbox(int xl, int yl, int xh, int yh, struct rect *r)
Definition: misc.c:77
void index_submap_add(struct tile_info *info, struct tile_head *th)
Definition: tile.c:635
void tile_bbox(char *tile, struct rect *r, int overlap)
Definition: tile.c:138
void process_coastlines(FILE *in, FILE *out)
Definition: coastline.c:505
int process_multipolygons_find_loops(osmid relid, int in_count, struct item_bin **parts, int **scount, int ***sequences, int **direction)
Definition: osm.c:2879
int phase4(FILE **in, int in_count, int with_range, char *suffix, FILE *tilesdir_out, struct zip_info *zip_info)
Definition: misc.c:297
void sort_countries(int keep_tmpfiles)
Definition: osm.c:2358
struct item_bin_sink_func * tile_collector_new(struct item_bin_sink *out)
Definition: sourcesink.c:142
void item_bin_add_attr_int(struct item_bin *ib, enum attr_type type, int val)
Definition: itembin.c:153
void dump(FILE *in)
Definition: misc.c:288
void process_associated_streets(FILE *in, struct files_relation_processing *files_relproc)
Definition: osm.c:2666
void * item_bin_get_attr(struct item_bin *ib, enum attr_type type, void *last)
Definition: itembin.c:160
int attr_bin_write_data(struct attr_bin *ab, enum attr_type type, void *data, int size)
Definition: itembin.c:99
int thread_count
Definition: maptool.c:55
void item_bin_copy_coord(struct item_bin *ib, struct item_bin *from, int dir)
Definition: itembin.c:78
int process_multipolygons_loop_dump(struct item_bin **bin, int scount, int *sequence, int *direction, struct coord *buffer)
Definition: osm.c:2920
int zip_open(struct zip_info *info, char *out, char *dir, char *index)
Definition: zip.c:300
int item_bin_write_to_sink(struct item_bin *ib, struct item_bin_sink *sink, struct tile_data *tile_data)
Definition: sourcesink.c:55
void clip_polygon(struct item_bin *ib, struct rect *r, struct tile_parameter *param, struct item_bin_sink *out)
Definition: itembin.c:620
void relations_process(struct relations *rel, FILE *nodes, FILE *ways)
Definition: osm_relations.c:123
void item_bin_add_attr_string(struct item_bin *ib, enum attr_type type, char *str)
Definition: itembin.c:209
void item_bin_remove_attr(struct item_bin *ib, void *ptr)
Definition: itembin.c:138
struct rect world_bbox
Definition: misc.c:50
relation_member_type
Definition: maptool.h:293
@ rel_member_relation
Definition: maptool.h:297
@ rel_member_node
Definition: maptool.h:295
@ rel_member_way
Definition: maptool.h:296
@ UNUSED
Definition: maptool.h:294
FILE * tempfile(char *suffix, char *name, int mode)
Definition: tempfile.c:29
void osm_info(char *type, osmid id, int cont, char *fmt,...)
Definition: osm.c:946
void osm_add_way(osmid id)
Definition: osm.c:1591
void item_bin_copy_attr(struct item_bin *ib, struct item_bin *from, enum attr_type attr)
Definition: itembin.c:88
void index_init(struct zip_info *info, int version)
Definition: tile.c:621
void load_tilesdir(FILE *in)
Definition: tile.c:458
void osm_warning(char *type, osmid id, int cont, char *fmt,...)
Definition: osm.c:939
void osm_add_relation(osmid id)
Definition: osm.c:1617
int tile_collector_process(struct item_bin_sink_func *tile_collector, struct item_bin *ib, struct tile_data *tile_data)
Definition: sourcesink.c:124
void free_boundaries(GList *l)
Definition: boundaries.c:307
void item_bin_set_type_by_population(struct item_bin *ib, int population)
Definition: itembin.c:413
void process_house_number_interpolations(FILE *in, struct files_relation_processing *files_relproc)
Definition: osm.c:2719
void flush_nodes(int final)
Definition: osm.c:1389
void item_bin_add_attr_range(struct item_bin *ib, enum attr_type type, short min, short max)
Definition: itembin.c:218
void cat(FILE *in, FILE *out)
long long sizeof_buffer(char *filename)
Determines size of buffer for file.
Definition: buffer.c:89
void save_buffer(char *filename, struct buffer *b, long long offset)
Saves a buffer to a file.
Definition: buffer.c:33
int file_reader_finish(struct item_bin_sink *sink)
Definition: sourcesink.c:81
void zip_set_zip64(struct zip_info *info, int on)
Definition: zip.c:268
void ch_generate_tiles(char *map_suffix, char *suffix, FILE *tilesdir_out, struct zip_info *zip_info)
Definition: ch.c:411
struct relations * relations_new(void)
Definition: osm_relations.c:55
int zip_write_index(struct zip_info *info)
Definition: zip.c:175
struct item_bin_sink * file_reader_new(FILE *in, int limit, int offset)
Definition: sourcesink.c:69
int phase5(FILE **in, FILE **references, int in_count, int with_range, char *suffix, struct zip_info *zip_info)
Definition: misc.c:358
GList * boundary_find_matches(GList *bl, struct coord *c)
Definition: boundaries.c:156
void item_bin_sink_add_func(struct item_bin_sink *sink, struct item_bin_sink_func *func)
Definition: sourcesink.c:45
void load_countries(void)
Definition: osm.c:4185
int map_collect_data_osm_db(char *dbstr, struct maptool_osm *osm)
osmid boundary_relid(struct boundary *b)
Definition: boundaries.c:42
void process_way2poi(FILE *in, FILE *out, int type)
Definition: osm.c:3980
void item_bin_sink_destroy(struct item_bin_sink *sink)
Definition: sourcesink.c:49
long long slice_size
Definition: maptool.c:52
void osm_process_towns(FILE *in, FILE *boundaries, FILE *ways, char *suffix)
Definition: osm.c:2225
int item_bin_read(struct item_bin *ib, FILE *in)
Definition: itembin.c:30
GList * aux_tile_list
Definition: tile.c:49
void item_bin_write(struct item_bin *ib, FILE *out)
Definition: itembin.c:257
struct attr map_information_attrs[32]
Definition: tile.c:619
unsigned long long int osmid
Definition: maptool.h:125
int load_buffer(char *filename, struct buffer *b, long long offset, long long size)
Loads a buffer from a file.
Definition: buffer.c:54
int slices
Definition: maptool.c:58
struct item_bin_sink * item_bin_sink_new(void)
Definition: sourcesink.c:28
void process_turn_restrictions_old(FILE *in, FILE *coords, FILE *ways, FILE *ways_index, FILE *out)
struct attr_bin * item_bin_get_attr_bin(struct item_bin *ib, enum attr_type type, void *last)
Definition: itembin.c:175
struct country_table * country_from_iso2(char *iso)
Definition: osm.c:1656
int add_aux_tile(struct zip_info *zip_info, char *name, char *filename, int size)
Definition: tile.c:354
struct geom_poly_segment * item_bin_to_poly_segment(struct item_bin *ib, int type)
Definition: itembin.c:566
struct item_bin * item_bin_dup(struct item_bin *ib)
Definition: itembin.c:262
void tempfile_rename(char *suffix, char *from, char *to)
Definition: tempfile.c:53
FILE * zip_get_index(struct zip_info *info)
Definition: zip.c:319
void item_bin_write_clipped(struct item_bin *ib, struct tile_parameter *param, struct item_bin_sink *out)
Definition: itembin.c:270
int tile_len(char *tile)
Definition: tile.c:169
unsigned long long item_bin_get_nodeid(struct item_bin *ib)
Definition: osm.c:994
void relations_process_multi(struct relations **rel, int count, FILE *nodes, FILE *ways)
Definition: osm_relations.c:175
void item_bin_add_coord_rect(struct item_bin *ib, struct rect *r)
Definition: itembin.c:94
void osm_add_tag(char *k, char *v)
Definition: osm.c:1055
int processed_nodes_out
Definition: maptool.h:250
void item_bin_add_hole(struct item_bin *ib, struct coord *coord, int ccount)
add a "hole" to an item
Definition: itembin.c:237
void osm_init(FILE *)
Definition: osm.c:4237
void remove_countryfiles(void)
Definition: osm.c:4217
int zip_get_zipnum(struct zip_info *info)
Definition: zip.c:323
unsigned long long item_bin_get_wayid(struct item_bin *ib)
Definition: osm.c:998
struct tile_head * tile_head_root
int zip_write_directory(struct zip_info *info)
Definition: zip.c:199
int map_resolve_coords_and_split_at_intersections(FILE *in, FILE *out, FILE *out_index, FILE *out_graph, FILE *out_coastline, int final)
Definition: osm.c:4012
void zip_destroy(struct zip_info *info)
Definition: zip.c:337
int bbox_contains_bbox(struct rect *out, struct rect *in)
Definition: misc.c:105
int file_writer_process(struct item_bin_sink_func *func, struct item_bin *ib, struct tile_data *tile_data)
Definition: sourcesink.c:102
unsigned long long item_bin_get_relationid(struct item_bin *ib)
Definition: osm.c:1005
int attr_bin_write_attr(struct attr_bin *ab, struct attr *attr)
Definition: itembin.c:108
int zip_add_member(struct zip_info *info)
Definition: zip.c:284
struct zip_info * zip_new(void)
Definition: zip.c:264
int processed_nodes
Definition: maptool.c:71
int create_tile_hash(void)
Definition: tile.c:426
void osm_add_node(osmid id, double lat, double lon)
Definition: osm.c:1414
struct node_item * read_node_item(FILE *in)
Definition: itembin_buffer.c:30
int overlap
Definition: maptool.c:73
void tile_write_item_to_tile(struct tile_info *info, struct item_bin *ib, FILE *reference, char *name)
Definition: tile.c:329
int item_bin_sort_file(char *in_file, char *out_file, struct rect *r, int *size)
Definition: itembin.c:519
osmid item_bin_get_id(struct item_bin *ib)
Definition: osm.c:1012
int write_aux_tiles(struct zip_info *zip_info)
Definition: tile.c:374
int processed_tiles
Definition: maptool.h:250
void phase1_map(GList *maps, FILE *out_ways, FILE *out_nodes)
Definition: misc.c:121
void osm_end_node(struct maptool_osm *osm)
Definition: osm.c:1914
void dump_itembin(struct item_bin *ib)
Definition: itembin.c:352
void item_bin_init(struct item_bin *ib, enum item_type type)
Definition: itembin.c:44
int unknown_country
Definition: maptool.c:59
struct item_bin_sink_func * file_writer_new(FILE *out)
Definition: sourcesink.c:109
void merge_tiles(struct tile_info *info)
Definition: tile.c:550
int tile(struct rect *r, char *suffix, char *ret, int max, int overlap, struct rect *tr)
Definition: tile.c:74
struct _GList GList
Definition: navit.h:30
static struct pcoord c
Definition: popup.c:375
static unsigned char limit[]
Definition: street.c:364
char name[0]
Definition: street.c:3
Definition: maptool.h:98
int len
Definition: maptool.h:100
enum attr_type type
Definition: maptool.h:102
Definition: attr.h:157
Definition: maptool.h:390
char * name
Definition: maptool.h:391
char * filename
Definition: maptool.h:392
int size
Definition: maptool.h:393
Definition: maptool.h:146
osmid admin_centre
Definition: maptool.h:153
GList * segments
Definition: maptool.h:150
GList * children
Definition: maptool.h:151
GList * sorted_segments
Definition: maptool.h:150
struct item_bin * ib
Definition: maptool.h:147
struct rect r
Definition: maptool.h:152
struct country_table * country
Definition: maptool.h:148
char * iso2
Definition: maptool.h:149
Definition: maptool.h:169
unsigned char * base
Definition: maptool.h:175
long long size
Definition: maptool.h:177
long long malloced
Definition: maptool.h:173
int malloced_step
Definition: maptool.h:171
Definition: coord.h:34
Definition: osm.c:138
Definition: maptool.h:135
FILE * nodes2_out
Definition: maptool.h:141
FILE * ways_out
Definition: maptool.h:137
FILE * ways_in
Definition: maptool.h:136
FILE * nodes_out
Definition: maptool.h:139
FILE * nodes_in
Definition: maptool.h:138
FILE * nodes2_in
Definition: maptool.h:140
Definition: geom.h:49
Definition: maptool.h:106
void * priv_data[8]
Definition: maptool.h:108
int(* func)(struct item_bin_sink_func *func, struct item_bin *ib, struct tile_data *tile_data)
Definition: maptool.h:107
Definition: maptool.h:111
void * priv_data[8]
Definition: maptool.h:112
GList * sink_funcs
Definition: maptool.h:113
Definition: maptool.h:82
int clen
Definition: maptool.h:88
enum item_type type
Definition: maptool.h:86
int len
Definition: maptool.h:84
Definition: garmin_img.c:476
Definition: maptool.h:440
char s[sizeof(gpointer)< sizeof(osmid)?-1:1]
Definition: maptool.h:441
Definition: maptool.h:279
FILE * boundaries
Definition: maptool.h:280
FILE * nodes
Definition: maptool.h:285
FILE * turn_restrictions
Definition: maptool.h:282
FILE * line2poi
Definition: maptool.h:287
FILE * house_number_interpolations
Definition: maptool.h:284
FILE * poly2poi
Definition: maptool.h:288
FILE * towns
Definition: maptool.h:289
FILE * associated_streets
Definition: maptool.h:283
FILE * multipolygons
Definition: maptool.h:281
FILE * ways
Definition: maptool.h:286
Definition: maptool.h:116
char ref_way
Definition: maptool.h:120
unsigned long long int nd_id
Definition: maptool.h:119
struct coord c
Definition: maptool.h:117
Definition: geom.h:35
Definition: osm_relations.c:32
void(* func)(void *func_priv, void *relation_priv, struct item_bin *member, void *member_priv)
Definition: osm_relations.c:33
void * func_priv
Definition: osm_relations.c:34
Definition: osm_relations.c:25
Definition: navigation.c:111
Definition: maptool.h:37
struct rect item_bbox
Definition: maptool.h:40
int tile_depth
Definition: maptool.h:39
struct rect tile_bbox
Definition: maptool.h:41
Definition: maptool.h:59
struct tile_head * next
Definition: maptool.h:67
char * name
Definition: maptool.h:62
char * zip_data
Definition: maptool.h:63
int process
Definition: maptool.h:66
int total_size_used
Definition: maptool.h:64
int zipnum
Definition: maptool.h:65
int total_size
Definition: maptool.h:61
int num_subtiles
Definition: maptool.h:60
Definition: maptool.h:51
GList ** tiles_list
Definition: maptool.h:55
int maxlen
Definition: maptool.h:53
FILE * tilesdir_out
Definition: maptool.h:56
char * suffix
Definition: maptool.h:54
int write
Definition: maptool.h:52
Definition: maptool.h:44
int min
Definition: maptool.h:45
enum attr_type attr_to_copy
Definition: maptool.h:48
int overlap
Definition: maptool.h:47
int max
Definition: maptool.h:46
A map tile, a rectangular region of the world.
Definition: binfile.c:64
Definition: garmin_img.c:78
Definition: zip.c:28
FILE * dir
Definition: zip.c:39
FILE * index
Definition: zip.c:38
void version(void)
Definition: main.c:31
unsigned char key
Definition: tree.c:0