2 * This file is part of mapper
4 * Copyright (C) 2007 Kaj-Michael Lang
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License along
17 * with this program; if not, write to the Free Software Foundation, Inc.,
18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
25 #define W_ONEWAY (1 << 1)
26 #define W_ROUNDABOUT (1 << 2)
27 #define W_LINK (1 << 3)
28 #define W_AREA (1 << 4)
29 #define W_NOEXIT (1 << 5)
30 #define W_NOACCESS (1 << 6)
32 #define ILAT_TURKU 911084432
33 #define ILON_TURKU 265542144
35 /* POI category ID's are special, the # is divied
36 * by 100 and the result is the importance/priority of the poi.
37 * This can be used by the client program to discard
38 * unimportant poi at different zoom levels.
39 * It limits the categories to 100/priority but... I think that's fine :)
46 NODE_AMENITY_PARKING=100,
47 NODE_AMENITY_FUEL=101,
48 NODE_AMENITY_SPEEDCAM=102,
50 NODE_AMENITY_HOSPITAL=120,
51 NODE_AMENITY_PHARMACY=121,
52 NODE_AMENITY_POLICE=130,
54 NODE_TOURISM_HOTEL=200,
55 NODE_TOURISM_HOSTEL=201,
56 NODE_TOURISM_MOTEL=202,
59 NODE_AMENITY_BANK=206,
61 NODE_AMENITY_POST=210,
62 NODE_AMENITY_POST_BOX=211,
64 NODE_TOURISM_INFO=219,
66 NODE_AMENITY_TAXI=220,
67 NODE_RAILWAY_STATION=230,
68 NODE_RAILWAY_HALT=231,
69 NODE_AMENITY_BUS_STATION=236,
70 NODE_AMENITY_BOAT=240,
71 NODE_AIRPORT_TERMINAL=250,
73 NODE_TOURISM_CAMP_SITE=280,
74 NODE_TOURISM_CARAVAN_SITE=281,
75 NODE_TOURISM_PICNIC_SITE=282,
77 NODE_AMENITY_FOOD=301,
80 NODE_AMENITY_CINEMA=303,
81 NODE_AMENITY_THEATRE=304,
82 NODE_AMENITY_SHOP=305,
83 NODE_AMENITY_CAFE=306,
84 NODE_AMENITY_TELEPHONE=307,
86 NODE_TOURISM_THEME_PARK=309,
88 NODE_AMENITY_LIBRARY=311,
89 NODE_AMENITY_NIGHTCLUB=312,
90 NODE_AMENITY_COLLEGE=320,
91 NODE_AMENITY_SCHOOL=321,
92 NODE_AMENITY_TOWNHALL=325,
93 NODE_TOURISM_ATTRACTION=330,
95 NODE_HISTORIC_MUSEUM=340,
96 NODE_HISTORIC_CASTLE=341,
99 NODE_SPORT_CENTER=400,
100 NODE_SPORT_STADIUM=401,
101 NODE_SPORT_SKIING=402,
102 NODE_SPORT_SWIMMING=403,
103 NODE_SPORT_FOOTBALL=404,
104 NODE_SPORT_SOCCER=405,
106 NODE_SPORT_TENNIS=407,
107 NODE_SPORT_BOWLING=408,
108 NODE_SPORT_RUGBY=409,
109 NODE_SPORT_CLIMBING=410,
110 NODE_SPORT_MOTOR=411,
111 NODE_SPORT_HOCKEY=412,
112 NODE_SPORT_BASKETBALL=414,
113 NODE_SPORT_CANOE=415,
114 NODE_SPORT_BASEBALL=416,
115 NODE_SPORT_SKATING=417,
116 NODE_SPORT_SKATEBOARD=418,
117 NODE_SPORT_RACQUET=419,
118 NODE_SPORT_CROQUET=420,
119 NODE_SPORT_CRICKET=421,
120 NODE_SPORT_PELOTA=422,
121 NODE_SPORT_TABLE_TENNIS=423,
122 NODE_SPORT_GYMNASTICS=424,
123 NODE_SPORT_CYCLING=425,
124 NODE_SPORT_BOWLS=426,
125 NODE_SPORT_ATHLETICS=427,
126 NODE_SPORT_SHOOTING=430,
127 NODE_SPORT_PAINTBALL=431,
129 NODE_SPORT_HORSES=436,
130 NODE_SPORT_OTHER=450,
132 NODE_AMENITY_GENERIC=900,
136 NODE_PLACE_START=1000,
137 NODE_PLACE_SUBURB=1001, /* http://wiki.openstreetmap.org/index.php/Proposed_features/Suburb */
138 NODE_PLACE_LOCALITY=1002, /* http://wiki.openstreetmap.org/index.php/Proposed_features/Locality */
139 NODE_PLACE_HAMLET=1049,
140 NODE_PLACE_VILLAGE=1050,
141 NODE_PLACE_ISLAND=1051,
142 NODE_PLACE_TOWN=1099,
143 NODE_PLACE_CITY=1100,
144 NODE_PLACE_AREA=1200,
145 NODE_PLACE_COUNTRY=1490,
149 NODE_TRAFFIC_SIGNALS=2000,
186 /* Route waypoint types */
193 /* A place (city,town,village,suburb) */
194 typedef struct _osm_place osm_place;
207 typedef struct _osm_way_node osm_way_node;
208 struct _osm_way_node {
216 typedef struct _osm_way osm_way;
232 osm_way_node *node_f;
233 osm_way_node *node_t;
239 typedef struct _osm_waypoint osm_waypoint;
240 struct _osm_waypoint {
242 waypoint_type_t type;
245 /* Location: way/street we are on, city/town/village/hamlet and suburb */
246 /* With helpers, speed and heading at last known location */
247 typedef struct _osm_location osm_location;
248 struct _osm_location {
251 osm_place *secondary;