navit 0.5.3-trunk
Loading...
Searching...
No Matches
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
20#ifndef __NAVIT_MAPTOOL_H_
21#define __NAVIT_MAPTOOL_H_
22
23#include "attr.h"
24#include "attr_type_def.h"
25#include "config.h"
26#include "coord.h"
27#include "geom.h"
28#include "item.h"
29#include "item_type_def.h"
30#include "types.h"
31#include <glib.h>
32
33#define sq(x) ((double)(x) * (x))
34
35#define BUFFER_SIZE 1280
36
37#define debug_tile(x) 0
38#define debug_itembin(x) 0
39
40#define RELATION_MEMBER_PRINT_FORMAT "%d:" LONGLONG_FMT ":%s"
41#define RELATION_MEMBER_PARSE_FORMAT "%d:" LONGLONG_FMT ":%n"
42
43struct tile_data {
44 char buffer[1024];
48};
49
56
57struct tile_info {
58 int write;
59 int maxlen;
60 char *suffix;
61 GList **tiles_list;
63};
64
65extern struct tile_head {
68 char *name;
69 char *zip_data;
71 int zipnum;
73 struct tile_head *next;
74 char *comp_data;
76 unsigned long crc;
80 // char subtiles[0];
82
93struct item_bin {
95 int len;
99 int clen;
100};
101
109struct attr_bin {
111 int len;
114};
115
117 int (*func)(struct item_bin_sink_func *func, struct item_bin *ib, struct tile_data *tile_data);
118 void *priv_data[8];
119};
120
122 void *priv_data[8];
124};
125#define NODE_ID_BITS 56
126struct node_item {
127 struct coord c;
128 unsigned long long int nd_id : NODE_ID_BITS;
130};
131
132struct zip_info;
133struct country_table;
134
139typedef unsigned long long int osmid;
140#define OSMID_FMT ULONGLONG_FMT
141
151
152/* boundaries.c */
153
163
164char *osm_tag_value(struct item_bin *ib, char *key);
165
166osmid boundary_relid(struct boundary *b);
167
168GList *process_boundaries(FILE *boundaries, FILE *ways);
169
170GList *boundary_find_matches(GList *bl, struct coord *c);
171
172void free_boundaries(GList *l);
173
174/* buffer.c */
175
177struct buffer {
181 long long malloced;
183 unsigned char *base;
185 long long size;
186};
187
188void save_buffer(char *filename, struct buffer *b, long long offset);
189int load_buffer(char *filename, struct buffer *b, long long offset, long long size);
190long long sizeof_buffer(char *filename);
191
192/* ch.c */
193
194void ch_generate_tiles(char *map_suffix, char *suffix, FILE *tilesdir_out, struct zip_info *zip_info);
195void ch_assemble_map(char *map_suffix, char *suffix, struct zip_info *zip_info);
196
197/* coastline.c */
198
199void process_coastlines(FILE *in, FILE *out);
200
201/* itembin.c */
202
203int item_bin_read(struct item_bin *ib, FILE *in);
204void item_bin_set_type(struct item_bin *ib, enum item_type type);
205void item_bin_init(struct item_bin *ib, enum item_type type);
206void item_bin_add_coord(struct item_bin *ib, struct coord *c, int count);
207void item_bin_add_coord_reverse(struct item_bin *ib, struct coord *c, int count);
208void item_bin_bbox(struct item_bin *ib, struct rect *r);
209void item_bin_copy_coord(struct item_bin *ib, struct item_bin *from, int dir);
210void item_bin_copy_attr(struct item_bin *ib, struct item_bin *from, enum attr_type attr);
211void item_bin_add_coord_rect(struct item_bin *ib, struct rect *r);
212int attr_bin_write_data(struct attr_bin *ab, enum attr_type type, void *data, int size);
213int attr_bin_write_attr(struct attr_bin *ab, struct attr *attr);
214void item_bin_add_attr_data(struct item_bin *ib, enum attr_type type, void *data, int size);
215void item_bin_add_attr(struct item_bin *ib, struct attr *attr);
216void item_bin_add_attr_int(struct item_bin *ib, enum attr_type type, int val);
217void *item_bin_get_attr(struct item_bin *ib, enum attr_type type, void *last);
218struct attr_bin *item_bin_get_attr_bin(struct item_bin *ib, enum attr_type type, void *last);
220void item_bin_add_attr_longlong(struct item_bin *ib, enum attr_type type, long long val);
221void item_bin_add_attr_string(struct item_bin *ib, enum attr_type type, char *str);
222void item_bin_add_hole(struct item_bin *ib, struct coord *coord, int ccount);
223void item_bin_add_attr_range(struct item_bin *ib, enum attr_type type, short min, short max);
224void item_bin_remove_attr(struct item_bin *ib, void *ptr);
225void item_bin_write(struct item_bin *ib, FILE *out);
226struct item_bin *item_bin_dup(struct item_bin *ib);
227void item_bin_write_clipped(struct item_bin *ib, struct tile_parameter *param, struct item_bin_sink *out);
228void item_bin_dump(struct item_bin *ib, FILE *out);
229void dump_itembin(struct item_bin *ib);
230void item_bin_set_type_by_population(struct item_bin *ib, int population);
231void item_bin_write_match(struct item_bin *ib, enum attr_type type, enum attr_type match, int maxdepth, FILE *out);
232int item_bin_sort_file(char *in_file, char *out_file, struct rect *r, int *size);
233void clip_line(struct item_bin *ib, struct rect *r, struct tile_parameter *param, struct item_bin_sink *out);
234void clip_polygon(struct item_bin *ib, struct rect *r, struct tile_parameter *param, struct item_bin_sink *out);
236
237/* itembin_buffer.c */
238struct node_item *read_node_item(FILE *in);
239struct item_bin *read_item(FILE *in);
240struct item_bin *read_item_range(FILE *in, int *min, int *max);
241struct item_bin *init_item(enum item_type type);
242extern struct item_bin *tmp_item_bin;
243
244/* itembin_slicer.c */
245void itembin_nicer_slicer(struct tile_info *info, struct item_bin *ib, FILE *reference, char *buffer, int min);
246
247/* maptool.c */
248
249extern long long slice_size;
250extern int thread_count;
251extern int attr_debug_level;
252extern char *suffix;
253extern int ignore_unknown;
254extern GHashTable *dedupe_ways_hash;
255extern int slices;
256extern struct buffer node_buffer;
258extern int bytes_read;
259extern int overlap;
260extern int unknown_country;
261extern int experimental;
262void sig_alrm(int sig);
263void sig_alrm_end(void);
264
265/* misc.c */
266extern struct rect world_bbox;
267
268void bbox_extend(struct coord *c, struct rect *r);
269void bbox(struct coord *c, int count, struct rect *r);
270int contains_bbox(int xl, int yl, int xh, int yh, struct rect *r);
271int bbox_contains_coord(struct rect *r, struct coord *c);
272int bbox_contains_bbox(struct rect *out, struct rect *in);
273long long bbox_area(struct rect const *r);
274void phase1_map(GList *maps, FILE *out_ways, FILE *out_nodes);
275void dump(FILE *in);
276int phase4(FILE **in, int in_count, int with_range, char *suffix, FILE *tilesdir_out, struct zip_info *zip_info);
277int phase5(FILE **in, FILE **references, int in_count, int with_range, char *suffix, struct zip_info *zip_info);
278void process_binfile(FILE *in, FILE *out);
279void add_aux_tiles(char *name, struct zip_info *info);
280void cat(FILE *in, FILE *out);
282
283/* osm.c */
296
304
305void osm_warning(char *type, osmid id, int cont, char *fmt, ...);
306void osm_info(char *type, osmid id, int cont, char *fmt, ...);
307void osm_add_tag(char *k, char *v);
308void osm_add_node(osmid id, double lat, double lon);
309void osm_add_way(osmid id);
310void osm_add_relation(osmid id);
311void osm_end_relation(struct maptool_osm *osm);
312void osm_add_member(enum relation_member_type type, osmid ref, char *role);
313void osm_end_way(struct maptool_osm *osm);
314void osm_end_node(struct maptool_osm *osm);
315void osm_add_nd(osmid ref);
316osmid item_bin_get_id(struct item_bin *ib);
317void flush_nodes(int final);
318void sort_countries(int keep_tmpfiles);
319void process_associated_streets(FILE *in, struct files_relation_processing *files_relproc);
320void process_house_number_interpolations(FILE *in, struct files_relation_processing *files_relproc);
321void process_multipolygons(FILE *in, FILE *coords, FILE *ways, FILE *ways_index, FILE *out);
322void process_turn_restrictions(FILE *in, FILE *coords, FILE *ways, FILE *ways_index, FILE *out);
323void process_turn_restrictions_old(FILE *in, FILE *coords, FILE *ways, FILE *ways_index, FILE *out);
324void clear_node_item_buffer(void);
325void ref_ways(FILE *in);
326void resolve_ways(FILE *in, FILE *out);
327unsigned long long item_bin_get_nodeid(struct item_bin *ib);
328unsigned long long item_bin_get_wayid(struct item_bin *ib);
329unsigned long long item_bin_get_relationid(struct item_bin *ib);
330void process_way2poi(FILE *in, FILE *out, int type);
331int map_resolve_coords_and_split_at_intersections(FILE *in, FILE *out, FILE *out_index, FILE *out_graph,
332 FILE *out_coastline, int final);
333void write_countrydir(struct zip_info *zip_info, int max_index_size);
334void osm_process_towns(FILE *in, FILE *boundaries, FILE *ways, char *suffix);
335void load_countries(void);
336void remove_countryfiles(void);
337struct country_table *country_from_iso2(char *iso);
338void osm_init(FILE *);
339
340/* osm_o5m.c */
341int map_collect_data_osm_o5m(FILE *in, struct maptool_osm *osm);
342
343/* osm_psql.c */
344int map_collect_data_osm_db(char *dbstr, struct maptool_osm *osm);
345
346/* osm_protobuf.c */
347int map_collect_data_osm_protobuf(FILE *in, struct maptool_osm *osm);
348int osm_protobufdb_load(FILE *in, char *dir);
349
350/* osm_relations.c */
351struct relations *relations_new(void);
352struct relations_func *relations_func_new(void (*func)(void *func_priv, void *relation_priv, struct item_bin *member,
353 void *member_priv),
354 void *func_priv);
355void relations_add_relation_member_entry(struct relations *rel, struct relations_func *func, void *relation_priv,
356 void *member_priv, enum relation_member_type type, osmid id);
357void relations_add_func(struct relations *rel, struct relations_func *func);
359void relations_process(struct relations *rel, FILE *nodes, FILE *ways);
360void relations_process_multi(struct relations **rel, int count, FILE *nodes, FILE *ways);
361void relations_destroy(struct relations *rel);
362
363/* osm_xml.c */
364int osm_xml_get_attribute(char *xml, char *attribute, char *buffer, int buffer_size);
366int map_collect_data_osm(FILE *in, struct maptool_osm *osm);
367
368/* sourcesink.c */
369
370struct item_bin_sink *item_bin_sink_new(void);
372 struct tile_data *tile_data));
375void item_bin_sink_destroy(struct item_bin_sink *sink);
376int item_bin_write_to_sink(struct item_bin *ib, struct item_bin_sink *sink, struct tile_data *tile_data);
377struct item_bin_sink *file_reader_new(FILE *in, int limit, int offset);
378int file_reader_finish(struct item_bin_sink *sink);
379int file_writer_process(struct item_bin_sink_func *func, struct item_bin *ib, struct tile_data *tile_data);
380struct item_bin_sink_func *file_writer_new(FILE *out);
381int file_writer_finish(struct item_bin_sink_func *file_writer);
382int tile_collector_process(struct item_bin_sink_func *tile_collector, struct item_bin *ib, struct tile_data *tile_data);
384
385/* tempfile.c */
386
387char *tempfile_name(char *suffix, char *name);
388FILE *tempfile(char *suffix, char *name, int mode);
389void tempfile_unlink(char *suffix, char *name);
390void tempfile_rename(char *suffix, char *from, char *to);
391char *tempfile_obtain_prefix(void);
392void tempfile_cleanup(void);
393
394/* tile.c */
395extern GHashTable *tile_hash, *tile_hash2;
396
397struct aux_tile {
398 char *name;
399 char *filename;
400 int size;
401};
402
403extern GList *aux_tile_list;
404
405int tile(struct rect *r, char *suffix, char *ret, int max, int overlap, struct rect *tr);
406void tile_bbox(char *tile, struct rect *r, int overlap);
407int tile_len(char *tile);
408void load_tilesdir(FILE *in);
409void tile_write_item_to_tile(struct tile_info *info, struct item_bin *ib, FILE *reference, char *name);
410void tile_write_item_minmax(struct tile_info *info, struct item_bin *ib, FILE *reference, int min, int max);
411int add_aux_tile(struct zip_info *zip_info, char *name, char *filename, int size);
413int create_tile_hash(void);
414void write_tilesdir(struct tile_info *info, struct zip_info *zip_info, FILE *out);
415void merge_tiles(struct tile_info *info);
416extern struct attr map_information_attrs[32];
417void index_init(struct zip_info *info, int version);
418void index_submap_add(struct tile_info *info, struct tile_head *th);
419
420/* zip.c */
421#ifdef HAVE_LZMA
422void *lzma_allocator_create(int level);
423void lzma_allocator_destroy(void *allocator);
424#endif
425char *compress_for_zip(char *input, int input_size, int level, int method, int *out_size, int *out_method,
426 char **reuse_buf, size_t *reuse_size, void *lzma_alloc);
427void write_zipmember(struct zip_info *zip_info, char *name, int filelen, char *data, int data_size);
428void write_zipmember_raw(struct zip_info *zip_info, char *name, int filelen, char *compressed_data, int compressed_size,
429 int uncompressed_size, unsigned long crc, int zipmthd);
430int zip_write_index(struct zip_info *info);
432struct zip_info *zip_new(void);
433void zip_set_zip64(struct zip_info *info, int on);
435void zip_set_compression_method(struct zip_info *info, int method);
437void zip_set_maxnamelen(struct zip_info *info, int max);
438int zip_get_maxnamelen(struct zip_info *info);
439int zip_add_member(struct zip_info *info);
440int zip_set_timestamp(struct zip_info *info, char *timestamp);
441int zip_open(struct zip_info *info, char *out, char *dir, char *index);
442FILE *zip_get_index(struct zip_info *info);
443int zip_get_zipnum(struct zip_info *info);
445void zip_set_zipnum(struct zip_info *info, int num);
446void zip_close(struct zip_info *info);
447void zip_destroy(struct zip_info *info);
448
449/* osm.c */
450int process_multipolygons_find_loops(osmid relid, int in_count, struct item_bin **parts, int **scount, int ***sequences,
451 int **direction);
452int process_multipolygons_loop_dump(struct item_bin **bin, int scount, int *sequence, int *direction,
453 struct coord *buffer);
454int process_multipolygons_loop_count(struct item_bin **bin, int scount, int *sequence);
455
456/* Break compilation on 32 bit architectures, as we're going to cast osmid's to gpointer to use them as keys to
457 * GHashTable's */
459 char s[sizeof(gpointer) < sizeof(osmid) ? -1 : 1];
460};
461
462#endif // __NAVIT_MAPTOOL_H_
attr_type
Definition attr_type_def.h:11
struct node * nodes
static int match(struct country_search *this_, enum attr_type type, const char *name)
Definition country.c:376
#define max(a, b)
Definition garmin.c:682
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:87
item_type
Definition item_type_def.h:8
GList * maps
Definition map.c:28
void relations_destroy(struct relations *rel)
Definition osm_relations.c:246
struct item_bin * tmp_item_bin
Definition itembin_buffer.c:27
int zip_get_maxnamelen(struct zip_info *info)
Definition zip.c:403
void resolve_ways(FILE *in, FILE *out)
Definition osm.c:3990
void bbox(struct coord *c, int count, struct rect *r)
Definition misc.c:66
void osm_add_nd(osmid ref)
Definition osm.c:3940
void ch_assemble_map(char *map_suffix, char *suffix, struct zip_info *zip_info)
Definition ch.c:440
void osm_xml_decode_entities(char *buffer)
Definition osm_xml.c:71
struct buffer node_buffer
Definition maptool.c:65
void osm_end_way(struct maptool_osm *osm)
Definition osm.c:1840
struct item_bin_sink * file_reader_new(FILE *in, int limit, int offset)
Definition sourcesink.c:64
struct item_bin_sink_func * tile_collector_new(struct item_bin_sink *out)
Definition sourcesink.c:134
void sig_alrm_end(void)
Definition maptool.c:211
void zip_set_zipnum(struct zip_info *info, int num)
Definition zip.c:453
int map_collect_data_osm_protobuf(FILE *in, struct maptool_osm *osm)
Definition osm_protobuf.c:257
void clip_line(struct item_bin *ib, struct rect *r, struct tile_parameter *param, struct item_bin_sink *out)
Definition itembin.c:566
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:101
void item_bin_add_attr_data(struct item_bin *ib, enum attr_type type, void *data, int size)
Definition itembin.c:109
void zip_set_compression_method(struct zip_info *info, int method)
Definition zip.c:391
void add_aux_tiles(char *name, struct zip_info *info)
Definition misc.c:556
GList * process_boundaries(FILE *boundaries, FILE *ways)
Definition boundaries.c:331
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:196
void item_bin_add_coord(struct item_bin *ib, struct coord *c, int count)
Definition itembin.c:48
void item_bin_bbox(struct item_bin *ib, struct rect *r)
Definition itembin.c:62
void ref_ways(FILE *in)
Definition osm.c:3982
void process_turn_restrictions(FILE *in, FILE *coords, FILE *ways, FILE *ways_index, FILE *out)
Definition osm.c:3714
void write_tilesdir(struct tile_info *info, struct zip_info *zip_info, FILE *out)
Definition tile.c:490
void bbox_extend(struct coord *c, struct rect *r)
Definition misc.c:55
int bytes_read
Definition maptool.c:73
void item_bin_set_type(struct item_bin *ib, enum item_type type)
Definition itembin.c:38
int map_collect_data_osm_o5m(FILE *in, struct maptool_osm *osm)
Definition osm_o5m.c:155
void zip_set_compression_level(struct zip_info *info, int level)
Definition zip.c:387
long long bbox_area(struct rect const *r)
Definition misc.c:117
void item_bin_dump(struct item_bin *ib, FILE *out)
Definition itembin.c:308
struct item_bin * init_item(enum item_type type)
Definition itembin_buffer.c:96
void zip_close(struct zip_info *info)
Definition zip.c:457
void write_zipmember(struct zip_info *zip_info, char *name, int filelen, char *data, int data_size)
Definition zip.c:211
void clear_node_item_buffer(void)
Definition osm.c:1476
char * osm_tag_value(struct item_bin *ib, char *key)
Definition boundaries.c:26
int file_writer_finish(struct item_bin_sink_func *file_writer)
Definition sourcesink.c:112
int processed_relations
Definition maptool.h:257
void itembin_nicer_slicer(struct tile_info *info, struct item_bin *ib, FILE *reference, char *buffer, int min)
Definition itembin_slicer.c:786
int item_order_by_type(enum item_type type)
Definition misc.c:155
char * compress_for_zip(char *input, int input_size, int level, int method, int *out_size, int *out_method, char **reuse_buf, size_t *reuse_size, void *lzma_alloc)
Definition zip.c:164
int ignore_unknown
Definition maptool.c:52
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:3007
void item_bin_write_match(struct item_bin *ib, enum attr_type type, enum attr_type match, int maxdepth, FILE *out)
Definition itembin.c:425
void write_zipmember_raw(struct zip_info *zip_info, char *name, int filelen, char *compressed_data, int compressed_size, int uncompressed_size, unsigned long crc, int zipmthd)
Definition zip.c:236
struct attr_bin * item_bin_get_attr_bin(struct item_bin *ib, enum attr_type type, void *last)
Definition itembin.c:170
int map_collect_data_osm(FILE *in, struct maptool_osm *osm)
Definition osm_xml.c:168
void process_multipolygons(FILE *in, FILE *coords, FILE *ways, FILE *ways_index, FILE *out)
Definition osm.c:3359
GHashTable * tile_hash
Definition tile.c:46
GHashTable * dedupe_ways_hash
Definition maptool.c:54
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:30
void write_countrydir(struct zip_info *zip_info, int max_index_size)
Definition osm.c:4124
void osm_add_member(enum relation_member_type type, osmid ref, char *role)
Definition osm.c:1765
int zip_set_timestamp(struct zip_info *info, char *timestamp)
Definition zip.c:411
void item_bin_add_attr(struct item_bin *ib, struct attr *attr)
Definition itembin.c:114
struct item_bin * read_item_range(FILE *in, int *min, int *max)
Definition itembin_buffer.c:86
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:28
#define NODE_ID_BITS
Definition maptool.h:125
int processed_ways
Definition maptool.h:257
int experimental
Definition maptool.c:63
void tile_write_item_minmax(struct tile_info *info, struct item_bin *ib, FILE *reference, int min, int max)
Definition tile.c:332
void zip_set_maxnamelen(struct zip_info *info, int max)
Definition zip.c:399
char * suffix
GHashTable * tile_hash2
Definition maptool.h:395
int osm_protobufdb_load(FILE *in, char *dir)
Definition osm_protobufdb.c:650
void item_bin_sink_func_destroy(struct item_bin_sink_func *func)
Definition sourcesink.c:37
int attr_debug_level
Definition maptool.c:51
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:68
void item_bin_add_coord_reverse(struct item_bin *ib, struct coord *c, int count)
Definition itembin.c:56
void osm_end_relation(struct maptool_osm *osm)
Definition osm.c:1749
void tempfile_unlink(char *suffix, char *name)
Definition tempfile.c:85
void relations_add_relation_default_entry(struct relations *rel, struct relations_func *func)
Definition osm_relations.c:117
void process_binfile(FILE *in, FILE *out)
Definition misc.c:549
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:634
void tile_bbox(char *tile, struct rect *r, int overlap)
Definition tile.c:132
void process_coastlines(FILE *in, FILE *out)
Definition coastline.c:506
int process_multipolygons_find_loops(osmid relid, int in_count, struct item_bin **parts, int **scount, int ***sequences, int **direction)
Definition osm.c:2921
int phase4(FILE **in, int in_count, int with_range, char *suffix, FILE *tilesdir_out, struct zip_info *zip_info)
Definition misc.c:295
void sort_countries(int keep_tmpfiles)
Definition osm.c:2391
struct item_bin * read_item(FILE *in)
Definition itembin_buffer.c:70
void item_bin_add_attr_int(struct item_bin *ib, enum attr_type type, int val)
Definition itembin.c:149
void dump(FILE *in)
Definition misc.c:286
void process_associated_streets(FILE *in, struct files_relation_processing *files_relproc)
Definition osm.c:2702
int attr_bin_write_data(struct attr_bin *ab, enum attr_type type, void *data, int size)
Definition itembin.c:96
int thread_count
Definition maptool.c:53
void item_bin_copy_coord(struct item_bin *ib, struct item_bin *from, int dir)
Definition itembin.c:75
int process_multipolygons_loop_dump(struct item_bin **bin, int scount, int *sequence, int *direction, struct coord *buffer)
Definition osm.c:2961
int zip_open(struct zip_info *info, char *out, char *dir, char *index)
Definition zip.c:422
int item_bin_write_to_sink(struct item_bin *ib, struct item_bin_sink *sink, struct tile_data *tile_data)
Definition sourcesink.c:51
void clip_polygon(struct item_bin *ib, struct rect *r, struct tile_parameter *param, struct item_bin_sink *out)
Definition itembin.c:611
void relations_process(struct relations *rel, FILE *nodes, FILE *ways)
Definition osm_relations.c:131
void item_bin_add_attr_string(struct item_bin *ib, enum attr_type type, char *str)
Definition itembin.c:203
void item_bin_remove_attr(struct item_bin *ib, void *ptr)
Definition itembin.c:134
struct rect world_bbox
Definition misc.c:50
relation_member_type
Definition maptool.h:298
@ rel_member_relation
Definition maptool.h:302
@ rel_member_node
Definition maptool.h:300
@ rel_member_way
Definition maptool.h:301
@ UNUSED
Definition maptool.h:299
struct zip_info * zip_new(void)
Definition zip.c:377
void osm_info(char *type, osmid id, int cont, char *fmt,...)
Definition osm.c:961
void relations_add_func(struct relations *rel, struct relations_func *func)
Definition osm_relations.c:77
void osm_add_way(osmid id)
Definition osm.c:1616
void item_bin_copy_attr(struct item_bin *ib, struct item_bin *from, enum attr_type attr)
Definition itembin.c:85
void index_init(struct zip_info *info, int version)
Definition tile.c:620
void load_tilesdir(FILE *in)
Definition tile.c:457
FILE * tempfile(char *suffix, char *name, int mode)
Definition tempfile.c:67
void osm_warning(char *type, osmid id, int cont, char *fmt,...)
Definition osm.c:954
void osm_add_relation(osmid id)
Definition osm.c:1643
int tile_collector_process(struct item_bin_sink_func *tile_collector, struct item_bin *ib, struct tile_data *tile_data)
Definition sourcesink.c:117
struct relations * relations_new(void)
Definition osm_relations.c:59
void free_boundaries(GList *l)
Definition boundaries.c:343
char * tempfile_obtain_prefix(void)
Definition tempfile.c:31
void item_bin_set_type_by_population(struct item_bin *ib, int population)
Definition itembin.c:405
void * item_bin_get_attr(struct item_bin *ib, enum attr_type type, void *last)
Definition itembin.c:156
void process_house_number_interpolations(FILE *in, struct files_relation_processing *files_relproc)
Definition osm.c:2759
void flush_nodes(int final)
Definition osm.c:1412
void item_bin_add_attr_range(struct item_bin *ib, enum attr_type type, short min, short max)
Definition itembin.c:212
void cat(FILE *in, FILE *out)
long long sizeof_buffer(char *filename)
Determines size of buffer for file.
Definition buffer.c:90
void save_buffer(char *filename, struct buffer *b, long long offset)
Saves a buffer to a file.
Definition buffer.c:34
int file_reader_finish(struct item_bin_sink *sink)
Definition sourcesink.c:76
void zip_set_zip64(struct zip_info *info, int on)
Definition zip.c:383
void ch_generate_tiles(char *map_suffix, char *suffix, FILE *tilesdir_out, struct zip_info *zip_info)
Definition ch.c:407
int zip_write_index(struct zip_info *info)
Definition zip.c:305
struct item_bin_sink_func * file_writer_new(FILE *out)
Definition sourcesink.c:103
int phase5(FILE **in, FILE **references, int in_count, int with_range, char *suffix, struct zip_info *zip_info)
Definition misc.c:496
void item_bin_sink_add_func(struct item_bin_sink *sink, struct item_bin_sink_func *func)
Definition sourcesink.c:41
void load_countries(void)
Definition osm.c:4225
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:4019
void item_bin_sink_destroy(struct item_bin_sink *sink)
Definition sourcesink.c:45
long long slice_size
Definition maptool.c:50
void tempfile_cleanup(void)
Definition tempfile.c:47
GList * boundary_find_matches(GList *bl, struct coord *c)
Definition boundaries.c:173
void osm_process_towns(FILE *in, FILE *boundaries, FILE *ways, char *suffix)
Definition osm.c:2256
int item_bin_read(struct item_bin *ib, FILE *in)
Definition itembin.c:28
GList * aux_tile_list
Definition tile.c:44
void item_bin_write(struct item_bin *ib, FILE *out)
Definition itembin.c:251
struct attr map_information_attrs[32]
Definition tile.c:618
char * tempfile_name(char *suffix, char *name)
Definition tempfile.c:64
unsigned long long int osmid
Definition maptool.h:139
int load_buffer(char *filename, struct buffer *b, long long offset, long long size)
Loads a buffer from a file.
Definition buffer.c:55
int slices
Definition maptool.c:56
void process_turn_restrictions_old(FILE *in, FILE *coords, FILE *ways, FILE *ways_index, FILE *out)
struct country_table * country_from_iso2(char *iso)
Definition osm.c:1681
FILE * zip_get_index(struct zip_info *info)
Definition zip.c:441
int add_aux_tile(struct zip_info *zip_info, char *name, char *filename, int size)
Definition tile.c:350
void tempfile_rename(char *suffix, char *from, char *to)
Definition tempfile.c:91
void item_bin_write_clipped(struct item_bin *ib, struct tile_parameter *param, struct item_bin_sink *out)
Definition itembin.c:263
int tile_len(char *tile)
Definition tile.c:163
unsigned long long item_bin_get_nodeid(struct item_bin *ib)
Definition osm.c:1009
void relations_process_multi(struct relations **rel, int count, FILE *nodes, FILE *ways)
Definition osm_relations.c:184
void item_bin_add_coord_rect(struct item_bin *ib, struct rect *r)
Definition itembin.c:91
void osm_add_tag(char *k, char *v)
Definition osm.c:1070
int processed_nodes_out
Definition maptool.h:257
void item_bin_add_hole(struct item_bin *ib, struct coord *coord, int ccount)
add a "hole" to an item
Definition itembin.c:231
void osm_init(FILE *)
Definition osm.c:4277
void remove_countryfiles(void)
Definition osm.c:4257
struct geom_poly_segment * item_bin_to_poly_segment(struct item_bin *ib, int type)
Definition itembin.c:556
int zip_get_zipnum(struct zip_info *info)
Definition zip.c:445
unsigned long long item_bin_get_wayid(struct item_bin *ib)
Definition osm.c:1013
struct tile_head * tile_head_root
int zip_write_directory(struct zip_info *info)
Definition zip.c:329
int zip_get_compression_level(struct zip_info *info)
Definition zip.c:449
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:4050
void zip_destroy(struct zip_info *info)
Definition zip.c:463
struct item_bin_sink * item_bin_sink_new(void)
Definition sourcesink.c:24
int bbox_contains_bbox(struct rect *out, struct rect *in)
Definition misc.c:105
struct node_item * read_node_item(FILE *in)
Definition itembin_buffer.c:29
int file_writer_process(struct item_bin_sink_func *func, struct item_bin *ib, struct tile_data *tile_data)
Definition sourcesink.c:97
unsigned long long item_bin_get_relationid(struct item_bin *ib)
Definition osm.c:1020
struct attr_bin * item_bin_get_attr_bin_last(struct item_bin *ib)
Definition itembin.c:184
int attr_bin_write_attr(struct attr_bin *ab, struct attr *attr)
Definition itembin.c:105
int zip_add_member(struct zip_info *info)
Definition zip.c:407
int processed_nodes
Definition maptool.c:69
int create_tile_hash(void)
Definition tile.c:421
void osm_add_node(osmid id, double lat, double lon)
Definition osm.c:1439
int overlap
Definition maptool.c:71
void tile_write_item_to_tile(struct tile_info *info, struct item_bin *ib, FILE *reference, char *name)
Definition tile.c:325
int zip_get_compression_method(struct zip_info *info)
Definition zip.c:395
int item_bin_sort_file(char *in_file, char *out_file, struct rect *r, int *size)
Definition itembin.c:510
osmid item_bin_get_id(struct item_bin *ib)
Definition osm.c:1027
int write_aux_tiles(struct zip_info *zip_info)
Definition tile.c:370
int processed_tiles
Definition maptool.h:257
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:1942
void dump_itembin(struct item_bin *ib)
Definition itembin.c:344
void item_bin_init(struct item_bin *ib, enum item_type type)
Definition itembin.c:42
int unknown_country
Definition maptool.c:57
struct item_bin * item_bin_dup(struct item_bin *ib)
Definition itembin.c:255
void merge_tiles(struct tile_info *info)
Definition tile.c:549
static struct pcoord c
Definition popup.c:368
static unsigned char limit[]
Definition street.c:364
char name[0]
Definition street.c:3
Definition maptool.h:109
int len
Definition maptool.h:111
enum attr_type type
Definition maptool.h:113
Definition attr.h:138
Definition maptool.h:397
char * name
Definition maptool.h:398
char * filename
Definition maptool.h:399
int size
Definition maptool.h:400
Definition maptool.h:154
osmid admin_centre
Definition maptool.h:161
GList * segments
Definition maptool.h:158
GList * children
Definition maptool.h:159
GList * sorted_segments
Definition maptool.h:158
struct item_bin * ib
Definition maptool.h:155
struct rect r
Definition maptool.h:160
struct country_table * country
Definition maptool.h:156
char * iso2
Definition maptool.h:157
Definition maptool.h:177
unsigned char * base
Definition maptool.h:183
long long size
Definition maptool.h:185
long long malloced
Definition maptool.h:181
int malloced_step
Definition maptool.h:179
Definition coord.h:34
Definition osm.c:148
Definition maptool.h:143
FILE * nodes2_out
Definition maptool.h:149
FILE * ways_out
Definition maptool.h:145
FILE * ways_in
Definition maptool.h:144
FILE * nodes_out
Definition maptool.h:147
FILE * nodes_in
Definition maptool.h:146
FILE * nodes2_in
Definition maptool.h:148
Definition geom.h:47
Definition maptool.h:116
void * priv_data[8]
Definition maptool.h:118
int(* func)(struct item_bin_sink_func *func, struct item_bin *ib, struct tile_data *tile_data)
Definition maptool.h:117
Definition maptool.h:121
void * priv_data[8]
Definition maptool.h:122
GList * sink_funcs
Definition maptool.h:123
Definition maptool.h:93
int clen
Definition maptool.h:99
enum item_type type
Definition maptool.h:97
int len
Definition maptool.h:95
Definition garmin_img.c:471
Definition maptool.h:458
char s[sizeof(gpointer)< sizeof(osmid) ? -1 :1]
Definition maptool.h:459
Definition maptool.h:284
FILE * boundaries
Definition maptool.h:285
FILE * nodes
Definition maptool.h:290
FILE * turn_restrictions
Definition maptool.h:287
FILE * line2poi
Definition maptool.h:292
FILE * house_number_interpolations
Definition maptool.h:289
FILE * poly2poi
Definition maptool.h:293
FILE * towns
Definition maptool.h:294
FILE * associated_streets
Definition maptool.h:288
FILE * multipolygons
Definition maptool.h:286
FILE * ways
Definition maptool.h:291
Definition maptool.h:126
char ref_way
Definition maptool.h:129
unsigned long long int nd_id
Definition maptool.h:128
struct coord c
Definition maptool.h:127
Definition geom.h:34
Definition osm_relations.c:37
void(* func)(void *func_priv, void *relation_priv, struct item_bin *member, void *member_priv)
Definition osm_relations.c:38
void * func_priv
Definition osm_relations.c:39
Definition osm_relations.c:28
Definition navigation.c:115
Definition maptool.h:43
struct rect item_bbox
Definition maptool.h:46
int tile_depth
Definition maptool.h:45
struct rect tile_bbox
Definition maptool.h:47
Definition maptool.h:65
struct tile_head * next
Definition maptool.h:73
int comp_size
Definition maptool.h:75
char * name
Definition maptool.h:68
int compression_method
Definition maptool.h:79
int compression_level
Definition maptool.h:78
char * zip_data
Definition maptool.h:69
int process
Definition maptool.h:72
int total_size_used
Definition maptool.h:70
int zipnum
Definition maptool.h:71
int zipmthd
Definition maptool.h:77
char * comp_data
Definition maptool.h:74
unsigned long crc
Definition maptool.h:76
int total_size
Definition maptool.h:67
int num_subtiles
Definition maptool.h:66
Definition maptool.h:57
GList ** tiles_list
Definition maptool.h:61
int maxlen
Definition maptool.h:59
FILE * tilesdir_out
Definition maptool.h:62
char * suffix
Definition maptool.h:60
int write
Definition maptool.h:58
Definition maptool.h:50
int min
Definition maptool.h:51
enum attr_type attr_to_copy
Definition maptool.h:54
int overlap
Definition maptool.h:53
int max
Definition maptool.h:52
A map tile, a rectangular region of the world.
Definition binfile.c:63
Definition garmin_img.c:73
Definition zip.c:35
FILE * dir
Definition zip.c:47
FILE * index
Definition zip.c:46
void version(void)
Definition main.c:31
unsigned char key
Definition tree.c:0