New upstream version 0.0.0+svn4433
Bas Couwenberg
4 years ago
100 | 100 | <target name="download-ivy" unless="ivy.available" description="Downloads the ivy library from public repositories."> |
101 | 101 | <delete dir="${ivy.jar.dir}"/> |
102 | 102 | <mkdir dir="${ivy.jar.dir}" /> |
103 | <get src="http://repo1.maven.org/maven2/org/apache/ivy/ivy/${ivy.version}/ivy-${ivy.version}.jar" | |
103 | <get src="https://repo1.maven.org/maven2/org/apache/ivy/ivy/${ivy.version}/ivy-${ivy.version}.jar" | |
104 | 104 | dest="${ivy.jar.file}" usetimestamp="true"/> |
105 | 105 | </target> |
106 | 106 |
0 | == Background == | |
1 | ||
2 | The mkgmap program is distributed in Java archive format compiled for use under | |
3 | the Java Runtime Environment 8. You will need the Java SE Runtime Environment 8 | |
4 | installed on your system in order to run mkgmap. | |
5 | ||
6 | Garmin maps consist of a series of .img files, with each file containing the | |
7 | data for one tile of the map. Unless you intend to build a very small map, you | |
8 | will need to use the accompanying splitter program to split your map into | |
9 | smaller tiles. The individual tiles can be joined together to produce a single | |
10 | gmapsupp.img file which contains the whole map and can be copied into the | |
11 | /Garmin folder of an SD card for use by a GPS device. If you want to create more | |
12 | than one map for use on your GPS, the gmapsupp.img files can be renamed to be | |
13 | unique, for example gmapsupp1.img, gmapsupp2.img. | |
14 | ||
15 | A typical simple example using both splitter and mkgmap: | |
16 | ||
17 | : java.exe -Xmx2g -jar splitter.jar england-latest.o5m | |
18 | : java.exe -jar mkgmap.jar --gmapsupp -c template.args | |
19 | ||
20 | The first command splits the Open Street Map data into smaller files | |
21 | with each file containing the data for one tile of the map. It also | |
22 | produces a file named template.args that contains the names of all | |
23 | the generated files. | |
24 | ||
25 | The second command takes as input all the individual files listed | |
26 | in the template.args file generated by splitter, produces a .img | |
27 | file for each tile, then merges all the tiles together into a | |
28 | single gmapsupp.img file. | |
0 | 29 | |
1 | 30 | == Documentation == |
2 | 31 | The documentation that is currently available on this site is listed |
3 | 32 | below. |
4 | 33 | |
5 | 34 | [/doc/options '''Command line options'''] |
6 | The possible command line options to mkgmap. This list is also available | |
7 | using the command: | |
35 | The mkgmap command line options. This is also available using the command: | |
8 | 36 | mkgmap --help=options |
9 | 37 | |
10 | 38 | [/doc/pdf/style-manual.pdf '''Style Manual'''] [pdf] |
15 | 43 | This documents the language that is accepted by the TYP compiler that |
16 | 44 | is included within mkgmap. |
17 | 45 | |
46 | [/doc/options '''Logging'''] | |
47 | Instructions on how to control messages that are logged and to where | |
48 | they are written. | |
49 | ||
18 | 50 | For other documentation go to the Open Street Map wiki for documentation |
19 | 51 | [http://wiki.openstreetmap.org/wiki/Mkgmap here] |
0 | === Logging === | |
1 | ||
2 | You can configure logging by using the Java -Dlog.config=filename option. | |
3 | This option uses a logging configuration file that allows you to enable and | |
4 | disable specific logging messages. This is useful if you want to see | |
5 | certain types of message that are not logged by default or choose where the | |
6 | messages should be written. The configuration file contains details of the | |
7 | handler(s) used to write the messages, parameters used to format the | |
8 | messages and the severity of messages that should be logged at Java package | |
9 | or class level, plus a default value. An example file is: | |
10 | ||
11 | <pre> | |
12 | # The default level FINE, WARNING, INFO, SEVERE | |
13 | .level=SEVERE | |
14 | #handlers: java.util.logging.ConsoleHandler | |
15 | handlers: java.util.logging.FileHandler java.util.logging.ConsoleHandler | |
16 | # package or class name with .level appended and then the level | |
17 | uk.me.parabola.imgfmt.level=INFO | |
18 | uk.me.parabola.mkgmap.build.level=INFO | |
19 | uk.me.parabola.mkgmap.main.Main.level=INFO | |
20 | uk.me.parabola.mkgmap.main.MapMaker.level=INFO | |
21 | uk.me.parabola.mkgmap.general.RoadNetwork.level=INFO | |
22 | uk.me.parabola.mkgmap.general.MapLine.level=INFO | |
23 | uk.me.parabola.mkgmap.osmstyle.level=INFO | |
24 | uk.me.parabola.mkgmap.reader.osm.level=INFO | |
25 | uk.me.parabola.mkgmap.reader.osm.xml.level=INFO | |
26 | uk.me.parabola.mkgmap.reader.osm.RestrictionRelation.level=FINE | |
27 | uk.me.parabola.mkgmap.reader.osm.Restriction.level=FINE | |
28 | # For ConsoleHandler | |
29 | java.util.logging.ConsoleHandler.level=WARNING | |
30 | java.util.logging.ConsoleHandler.formatter=uk.me.parabola.log.UsefulFormatter | |
31 | # For FileHandler | |
32 | java.util.logging.FileHandler.level=FINE | |
33 | java.util.logging.FileHandler.encoding=UTF-8 | |
34 | java.util.logging.FileHandler.formatter=uk.me.parabola.log.UsefulFormatter | |
35 | java.util.logging.FileHandler.limit=20000000 | |
36 | java.util.logging.FileHandler.count=4 | |
37 | java.util.logging.FileHandler.pattern=mkgmap.log | |
38 | java.util.logging.FileHandler.append=false | |
39 | </pre> | |
40 | ||
41 | The above example enables certain informational messages and sends them to a | |
42 | log file, with warning and error messages being also sent to stdout. | |
43 | ||
44 | Further information can be found at | |
45 | https://docs.oracle.com/javase/8/docs/technotes/guides/logging/overview.html | |
46 |
0 | Note that option order is significant: An option only | |
1 | applies to subsequent input files. So if you are using splitter, you probably | |
2 | want to put most of your options before '-c template.args'. | |
3 | ||
4 | ||
5 | === General options === | |
6 | ||
7 | ;--help=topic | |
8 | : Print help on the given topic. If the topic is omitted then a | |
9 | list of all the help topics is printed instead. | |
0 | The command line is of the format: | |
1 | ||
2 | : java.exe [java-options] -jar mkgmap.jar [mkgmap-options] | |
3 | ||
4 | === Java options === | |
5 | ||
6 | Details of the Java options are available at docs.oracle.com. | |
7 | The most likely options you may need to use are: | |
8 | ||
9 | ;-Xmx<size>[g|G|m|M|k|K] | |
10 | : Use this option to set the maximum Java heap size in GB, MB, KB or | |
11 | bytes. Mkgmap allows the use of multiple CPU cores, and the amount of | |
12 | heap memory required increases proportionally with the number of CPU | |
13 | cores being used. The default value may not be sufficient to allow | |
14 | mkgmap to use all the available CPU cores, which will cause the run time | |
15 | to be longer than necessary. To allow mkgmap to run optimally, you may | |
16 | need to use this option to allow more memory to be allocated to the Java | |
17 | heap. Typically, mkgmap requires about 500MB per core, so an 8-core | |
18 | processor might need to specify -Xmx4g - note there is no space or | |
19 | equals sign in the option. | |
20 | ||
21 | ;-enableassertions | |
22 | : Causes an error to be thrown if an assertion written in the mkgmap | |
23 | code is evaluated as not true. This is useful in detecting bugs in the | |
24 | mkgmap code. | |
25 | ||
26 | ;-Dlog.config=filename | |
27 | : Specifies a logging configuration file that allows you to enable and | |
28 | disable specific logging messages. This is useful if you want to see | |
29 | certain types of message that are not logged by default or choose where | |
30 | the messages should be written. | |
31 | === Mkgmap options === | |
32 | ||
33 | The order of the options is significant in that options only apply | |
34 | to subsequent input files. If you are using splitter, you probably | |
35 | will need to put most of your options before '-c template.args' | |
36 | (this file is generated by splitter). | |
37 | ||
38 | === Information options === | |
39 | ||
40 | These options provide information and do not require any input files. | |
41 | ||
42 | ;--help[=help|options|links|copyright|logging] | |
43 | : Display help on the given topic. If the topic is omitted then | |
44 | general help information is displayed, the same as in help=help. | |
10 | 45 | |
11 | 46 | ;--version |
12 | : Output program version to stderr. | |
47 | : Write program version to stderr. | |
13 | 48 | |
14 | 49 | === File options === |
15 | 50 | |
51 | filename | |
16 | 52 | ;--input-file=filename |
17 | : Read input data from the give file. This option (or just a | |
18 | filename) may be given more than once. Make sure to set all | |
19 | wanted options before using this. | |
53 | : Read input data from the given file. This option (or just a | |
54 | filename) may be specified more than once. Make sure you set all | |
55 | wanted options before this. | |
20 | 56 | |
21 | 57 | ;--gmapsupp |
22 | 58 | : Create a gmapsupp.img file that can be uploaded to a Garmin or |
23 | 59 | placed in "/Garmin" in a microSD card (such as by mounting the |
24 | device in USB mass storage mode). It can be used on ready | |
25 | compiled img files, if the input files are not already compiled | |
60 | device in USB mass storage mode). It can be used on already | |
61 | compiled img files, or if the input files are not already compiled | |
26 | 62 | then they are compiled first and then the gmapsupp is created. |
27 | 63 | |
28 | 64 | ;--gmapi |
29 | : Create a directory in the "gmapi" format required by Mac applications. Can | |
65 | : Create a directory in the "gmapi" format required by Mac applications. Can | |
30 | 66 | also be used for Windows programs. |
31 | 67 | |
32 | 68 | ;-c filename |
41 | 77 | comments. Any command line option can be specified, however the |
42 | 78 | leading '--' must be omitted. The short option names with a single |
43 | 79 | '-' cannot be used, simply use the long name instead. |
44 | <p> | |
80 | ||
45 | 81 | ;--output-dir=directory |
46 | 82 | : Specify the directory in which all output files are written. It defaults |
47 | 83 | to the current working directory, i.e. the directory the command is |
48 | 84 | executed from. |
49 | <p> | |
85 | ||
50 | 86 | ;-n name |
51 | 87 | ;--mapname=name |
52 | 88 | : Set the name of the map. Garmin maps are identified by an 8 digit |
53 | 89 | number. The default is 63240001. It is best to use a different |
54 | 90 | name if you are going to be making a map for others to use so |
55 | 91 | that it is unique and does not clash with others. |
56 | <p> | |
92 | ||
57 | 93 | ;--description=text |
58 | 94 | : Set the descriptive text for the map. This may be displayed in |
59 | 95 | QLandkarte, MapSource or on a GPS, where it is normally shown |
60 | 96 | below the family name. Example: --description="Germany, Denmark" |
61 | Please note: if you use splitter.jar to build a template.args file | |
62 | and use -c template.args, then that file may contain a | |
63 | "description" that will override this option for each single | |
64 | tile. Make sure to set the description for the gmapsupp.img after | |
65 | "-c template.args". | |
66 | <p> | |
97 | Please note: if you use splitter to build a template.args file | |
98 | and pass it to mkgmap, then that file may contain a "description" | |
99 | that will override this option. To prevent splitter from overriding | |
100 | your description, place the --description option after "-c template.args". | |
101 | ||
67 | 102 | ;--country-name=name |
68 | 103 | : Set the map's country name. The default is "COUNTRY". |
69 | <p> | |
104 | ||
70 | 105 | ;--country-abbr=abbreviation |
71 | 106 | : Set the map's abbreviated country name. The default is "ABC". |
72 | <p> | |
107 | ||
73 | 108 | ;--region-name=name |
74 | 109 | : Set the map's region name. By default, the map has no region name. |
75 | <p> | |
110 | ||
76 | 111 | ;--region-abbr=abbreviation |
77 | 112 | : Set the map's abbreviated region name. By default, the map has |
78 | 113 | no abbreviated region name. |
79 | <p> | |
114 | ||
80 | 115 | === Label options === |
81 | 116 | |
82 | 117 | ;--code-page=number |
85 | 120 | want to use. |
86 | 121 | It is entirely dependent on the device firmware which code pages are |
87 | 122 | supported. |
88 | <p> | |
123 | ||
89 | 124 | ;--latin1 |
90 | 125 | : This is equivalent to --code-page=1252. |
91 | <p> | |
126 | ||
92 | 127 | ;--unicode |
93 | : This is equivalent to --code-page=65001. Note that some devices don't support | |
128 | : This is equivalent to --code-page=65001. Note that some devices don't support | |
94 | 129 | Unicode maps produced by mkgmap. |
95 | <p> | |
130 | ||
96 | 131 | ;--lower-case |
97 | 132 | : Allow labels to contain lower case letters. Note that many |
98 | 133 | Garmin devices are not able to display lower case letters at an angle. |
99 | <p> | |
134 | ||
100 | 135 | === Address search options === |
136 | ||
101 | 137 | ;--index |
102 | 138 | : Generate a global address search index. If the --gmapsupp option is |
103 | 139 | also given, then the index is generated within the resulting |
113 | 149 | |
114 | 150 | : The address fields are assigned by special mkgmap address |
115 | 151 | tags using the style file: |
116 | ||
152 | <pre> | |
117 | 153 | mkgmap:country |
118 | 154 | mkgmap:region |
119 | 155 | mkgmap:city |
122 | 158 | mkgmap:housenumber |
123 | 159 | mkgmap:phone |
124 | 160 | (mkgmap:is_in - used by location-autofill=is_in) |
125 | ||
161 | </pre> | |
126 | 162 | : If the index is created from previously compiled .img files, then the |
127 | 163 | same code page and sorting options (e.g. --code-page, --latin1) must |
128 | 164 | be used as were used to compile the individual map tiles. |
129 | 165 | |
130 | 166 | ;--split-name-index |
131 | : Index each part of a street name separately. | |
167 | : Index each part of a street name separately. | |
132 | 168 | For example, if the street is "Aleksandra Gryglewskiego" then you will be able to |
133 | 169 | search for it as both "Aleksandra" and "Gryglewskiego". It will also increase the |
134 | 170 | size of the index. Useful in countries where searching for the first word in name |
135 | is not the right thing to do. Words following an opening bracket '(' are ignored. | |
136 | : See also option road-name-config. | |
137 | <p> | |
171 | is not the right thing to do. Words following an opening bracket '(' are ignored. | |
172 | : See also option --road-name-config. | |
173 | ||
138 | 174 | ;--road-name-config=filename |
139 | 175 | : Provide the name of a file containing commonly used road name prefixes |
140 | 176 | and suffixes. |
141 | This option handles the problem that some countries have road names which | |
177 | This option handles the problem that some countries have road names which | |
142 | 178 | often start or end with very similar words, e.g. in France the first word |
143 | 179 | is very often 'Rue', often followed by a preposition like 'de la' or 'des'. |
144 | 180 | This leads to rather long road names like 'Rue de la Concorde' where only |
145 | 181 | the word 'Concorde' is really interesting. In the USA, you often have names |
146 | like 'West Main Street' where only the word 'Main' is important. | |
182 | like 'West Main Street' where only the word 'Main' is important. | |
147 | 183 | Garmin software has some tricks to handle this problem. It allows the use |
148 | of special characters in the road labels to mark the beginning and end of | |
149 | the important part. In combinarion with option split-name-index | |
184 | of special characters in the road labels to mark the beginning and end of | |
185 | the important part. In combination with option --split-name-index | |
150 | 186 | only the words in the important part are indexed. |
151 | 187 | <p> |
152 | :There are two effects of this option: | |
188 | :There are two main effects of this option: | |
153 | 189 | :: - On the PC, when zooming out, the name 'Rue de la Concorde' is only |
154 | 190 | rendered as 'Concorde'. |
155 | 191 | :: - The index for road names only contains the important part of the name. |
160 | 196 | <p> |
161 | 197 | :: Another effect is that the index is smaller. |
162 | 198 | : See comments in the sample roadNameConfig.txt for further details. |
163 | <p> | |
199 | ||
164 | 200 | ;--mdr7-excl=name[,name...] |
165 | 201 | : Specify words which should be omitted from the road index. |
166 | 202 | It was added before option road-name-config and is probably no longer needed. |
167 | : Example usage: --x-mdr7-excl="Road, Street, Straße, Weg" | |
168 | <p> | |
203 | : Example usage: --x-mdr7-excl="Road, Street, Weg" | |
204 | ||
169 | 205 | ;--mdr7-del=name[,name...] |
170 | 206 | : Use this option if your style adds strings to the labels of roads which you |
171 | 207 | want to see in the map but which should not appear in the result list |
172 | 208 | of a road name / address search. The list is used like this: |
173 | 209 | For each road label, mkgmap searches for the last blank. If one is found, it checks |
174 | if the word after it appears in the given list. If so, the word is removed | |
210 | whether the word after it appears in the given list. If so, the word is removed | |
175 | 211 | and the search is repeated. The remaining string is used to create the index. |
176 | 212 | : Example: Assume your style adds surface attributes like 'pav.' or 'unp.' to a road |
177 | 213 | label. You can use --mdr7-del="pav.,unp." to remove these suffixes from the index. |
178 | <p> | |
214 | ||
179 | 215 | ;--poi-excl-index=poi[-poi][,poi[-poi]...] |
180 | 216 | : By default, mkgmap indexes the following POI types with a non-empty label: |
181 | 217 | :: - 0x00 .. 0x0f (cities, sub type 0, type <= 0xf) |
183 | 219 | :: - 0x28xx (no category ?) |
184 | 220 | :: - 0x64xx .. 0x66xx (attractions) |
185 | 221 | : This option allows the exclusion of POI types from the index. |
186 | The excluded types are not indexed, but may still be searchable on a device | |
187 | as some devices seem to ignore most of the index, e.g. an Oregon 600 with | |
222 | The excluded types are not indexed, but may still be searchable on a device, | |
223 | as some devices seem to ignore most of the index, e.g. an Oregon 600 with | |
188 | 224 | firmware 5.00 only seems to use it for city search. |
189 | 225 | If your device finds a POI name like 'Planet' when you search for 'Net', |
190 | it doesn't use the index because the index created by mkgmap cannot help for | |
226 | it doesn't use the index because the index created by mkgmap cannot help for | |
191 | 227 | that search. |
192 | <p> | |
228 | <p> | |
193 | 229 | : So, this option may help when you care about the size of the index or the |
194 | 230 | memory that is needed to calculate it. |
195 | The option expects a comma separated list of types or type ranges. A range is | |
196 | given with from-type-to-type, e.g. 0x6400-0x6405. First and last type are both | |
231 | The option expects a comma separated list of types or type ranges. A range is | |
232 | given with from-type-to-type, e.g. 0x6400-0x6405. First and last type are both | |
197 | 233 | excluded. A range can span multiple types, e.g. 0x6400-0x661f. |
198 | 234 | : Examples for usage: |
199 | 235 | :: - Assume your style adds a POI with type 0x2800 for each addr:housenumber. |
200 | 236 | It is not useful to index those numbers, so you can use --poi-excl-index=0x2800 |
201 | 237 | to exclude this. |
202 | :: - For the mentioned Oregon you may use --poi-excl-index=0x2a00-0x661f | |
238 | :: - For the aforementioned Oregon you may use --poi-excl-index=0x2a00-0x661f | |
203 | 239 | to reduce the index size. |
204 | <p> | |
240 | ||
205 | 241 | ;--bounds=directory|zipfile |
206 | : Specify a directory or zip file containing the preprocessed bounds files. | |
242 | : Specify a directory or zip file containing the pre-processed bounds files. | |
207 | 243 | Bounds files in a zip file must be located in the zip file's root directory. |
208 | 244 | <p> |
209 | The preprocessed boundaries are used to add special tags to all elements | |
245 | The pre-processed boundaries are used to add special tags to all elements | |
210 | 246 | (points, lines and polygons) containing the elements location information. |
211 | 247 | The style file can be used to assign the address tags mkgmap:country, |
212 | 248 | mkgmap:region etc. using these values. |
213 | 249 | <p> |
214 | The following special tags are added: | |
250 | The following special tags are added: | |
215 | 251 | <pre> |
216 | mkgmap:admin_level2 : Name of the admin_level=2 boundary | |
252 | ::mkgmap:admin_level2 : Name of the admin_level=2 boundary | |
217 | 253 | mkgmap:admin_level3 : Name of the admin_level=3 boundary |
218 | 254 | .. |
219 | 255 | mkgmap:admin_level11 |
220 | 256 | mkgmap:postcode : the postal_code value |
221 | 257 | </pre> |
222 | Preprocessed bounds can be created with the following command: | |
258 | Pre-processed bounds can be created with the following command: | |
223 | 259 | <pre> |
224 | java -cp mkgmap.jar | |
260 | java -cp mkgmap.jar | |
225 | 261 | uk.me.parabola.mkgmap.reader.osm.boundary.BoundaryPreprocessor |
226 | 262 | <inputfile> <boundsdir> |
227 | 263 | </pre> |
228 | The input file must contain the boundaries that should be preprocessed. | |
264 | :The input file must contain the boundaries that should be pre-processed. | |
229 | 265 | It can have OSM, PBF or O5M file format. It is recommended that it |
230 | 266 | contains the boundary data only to avoid very high memory usage. |
231 | 267 | The boundsdir gives the directory where the processed files are stored. |
232 | 268 | This directory can be used as --bounds parameter with mkgmap. |
233 | <p> | |
269 | ||
234 | 270 | ;--location-autofill=[option1,[option2]] |
235 | 271 | : Controls how the address fields for country, region, city and zip info |
236 | are gathered automatically if the fields are not set by using the special | |
272 | are gathered automatically if the fields are not set by using the special | |
237 | 273 | mkgmap address tags (e.g. mkgmap:city - see option index). |
238 | 274 | Warning: automatic assignment of address fields is somehow a best guess. |
239 | 275 | :;is_in |
240 | :: The is_in tag is analyzed for country and region information. | |
276 | :: The is_in tag is analysed for country and region information. | |
241 | 277 | <p> |
242 | 278 | :;nearest |
243 | 279 | :: The city/hamlet points that are closest to the element are used |
249 | 285 | : Enables house number search for OSM input files. |
250 | 286 | All nodes and polygons having addr:housenumber set are matched |
251 | 287 | to streets. A match between a house number element and a street is created if |
252 | the street is located within a radius of 150m and the addr:street tag value of | |
253 | the house number element equals the mgkmap:street tag value of the street. | |
288 | the street is located within a radius of 150m and the addr:street tag value of | |
289 | the house number element equals the mgkmap:street tag value of the street. | |
254 | 290 | The mkgmap:street tag must be added to the street in the style file. |
255 | 291 | For optimal results, the tags mkgmap:city and mkgmap:postal_code should be |
256 | 292 | set for the housenumber element. If a street connects two or more cities |
257 | this allows to find all addresses along the road, even they have the same | |
258 | number. | |
293 | this allows all addresses along the road to be found, even when they have the | |
294 | same number. | |
259 | 295 | : Example for given street name: |
260 | 296 | :: Node - addr:street=Main Street addr:housenumber=2 |
261 | 297 | :: Way 1 - name=Main Street |
268 | 304 | If the street is not given with addr:housenumber, mkgmap uses heuristics |
269 | 305 | to find the best match. |
270 | 306 | <p> |
271 | Tells mkgmap to write NET data. If you specify this option, you do not need to | |
307 | Tells mkgmap to write NET data. If you specify this option, you do not need to | |
272 | 308 | specify --net and option -no-net is ignored. |
273 | 309 | |
274 | 310 | === Overview map options === |
311 | ||
275 | 312 | ;--overview-mapname=name |
276 | 313 | : If --tdbfile is enabled, this gives the name of the overview |
277 | 314 | .img and .tdb files. The default map name is osmmap. |
278 | <p> | |
315 | ||
279 | 316 | ;--overview-mapnumber=8 digit number |
280 | 317 | : If --tdbfile is enabled, this gives the internal 8 digit |
281 | 318 | number used in the overview map and tdb file. The default |
282 | 319 | number is 63240000. |
283 | <p> | |
320 | ||
284 | 321 | ;--overview-levels=level:resolution[,level:resolution...] |
285 | 322 | : Like levels, specifies additional levels that are to be written to the |
286 | 323 | overview map. Counting of the levels should continue. Up to 8 additional |
287 | 324 | levels may be specified, but the lowest usable resolution with MapSource |
288 | 325 | seems to be 11. The hard coded default is empty. |
289 | 326 | : See also option --overview-dem-dist. |
290 | <p> | |
327 | ||
291 | 328 | ;--remove-ovm-work-files |
292 | 329 | : If overview-levels is used, mkgmap creates one additional file |
293 | 330 | with the prefix ovm_ for each map (*.img) file. |
294 | 331 | These files are used to create the overview map. |
295 | 332 | With option --remove-ovm-work-files=true the files are removed |
296 | 333 | after the overview map was created. The default is to keep the files. |
297 | <p> | |
334 | ||
298 | 335 | === Style options === |
336 | ||
299 | 337 | ;--style-file=filename |
300 | 338 | : Specify an external file to obtain the style from. "file" can |
301 | 339 | be a directory containing files such as info, lines, options |
313 | 351 | <p> |
314 | 352 | The argument can also be a URL that specifies the location of a |
315 | 353 | style file. |
316 | <p> | |
354 | ||
317 | 355 | ;--style=name |
318 | 356 | : Specify a style name. Must be used if --style-file points to a |
319 | 357 | directory or zip file containing multiple styles. If --style-file |
320 | 358 | is not used, it selects one of the built-in styles. |
321 | <p> | |
359 | ||
322 | 360 | ;--style-option=tag[=value][;tag[=value]...] |
323 | 361 | : Provide a semicolon separated list of tags which can be used in the style. |
324 | 362 | The intended use is to make a single style more flexible, e.g. |
330 | 368 | Example: -- style-option=light;routing=car |
331 | 369 | will add the tags mkgmap:option:light=true and mkgmap:option:routing=car |
332 | 370 | to each element before style processing happens. |
333 | <p> | |
371 | ||
334 | 372 | ;--list-styles |
335 | 373 | : List the available styles. If this option is preceded by a style-file |
336 | 374 | option then it lists the styles available within that file. |
337 | <p> | |
375 | ||
338 | 376 | ;--check-styles |
339 | 377 | : Perform some checks on the available styles. If this option is |
340 | 378 | preceded by a style-file option then it checks the styles |
341 | 379 | available within that file. If it is also preceded by the style |
342 | 380 | option it will only check that style. |
343 | <p> | |
381 | ||
344 | 382 | ;--levels=level:resolution[,level:resolution...] |
345 | 383 | : Change the way that the levels on the map correspond to the zoom |
346 | 384 | levels in the device. See customisation help. The hard coded default is: |
347 | 385 | "0:24, 1:22, 2:20, 3:18, 4:16", although each style can have |
348 | 386 | its own default. The default style for example overwrites it with |
349 | 387 | "0:24, 1:22, 2:20, 3:18". Up to 8 levels may be specified. |
350 | <p> | |
388 | ||
351 | 389 | ;--name-tag-list=tag[,tag...] |
352 | 390 | : Specify the tag that will be used to supply the name. Useful for |
353 | 391 | language variations. You can supply a list of tags and the first one |
354 | 392 | found will be used. e.g. --name-tag-list=name:en,int_name,name |
355 | <p> | |
356 | ===Product description options=== | |
393 | ||
394 | === Product description options === | |
357 | 395 | |
358 | 396 | ;--family-id=integer |
359 | 397 | : This is an integer that identifies a family of products. |
360 | 398 | Range: [1..9999] |
361 | Mkgmap default: 6324 | |
362 | <p> | |
399 | Default: 6324 | |
400 | ||
363 | 401 | ;--family-name=name |
364 | 402 | : If you build several maps, this option describes the |
365 | 403 | family name of all of your maps. Garmin will display this |
366 | 404 | in the map selection screen. |
367 | 405 | <p> |
368 | 406 | Example: --family-name="OpenStreetmap mkgmap XL 2019" |
369 | <p> | |
407 | ||
370 | 408 | ;--product-id=integer |
371 | 409 | : This is an integer that identifies a product within a family. |
372 | 410 | It is often just 1, which is the default. |
373 | <p> | |
411 | ||
374 | 412 | ;--product-version=integer |
375 | 413 | : The version of the product. Default value is 100 which means version 1.00. |
376 | <p> | |
414 | ||
377 | 415 | ;--series-name=name |
378 | 416 | : This name will be displayed in MapSource in the map selection |
379 | 417 | drop-down. The default is "OSM map". |
380 | <p> | |
418 | ||
381 | 419 | ;--area-name=name |
382 | : Area name is displayed on Garmin units (or at least on eTrex) as the second | |
420 | : Area name is displayed on Garmin units (or at least on eTrex) as the second | |
383 | 421 | part of the mapname in the list of the individual maps. |
384 | <p> | |
422 | ||
385 | 423 | ;--copyright-message=text |
386 | 424 | : Specify a copyright message for files that do not contain one. |
387 | <p> | |
425 | ||
388 | 426 | ;--copyright-file=filename |
389 | 427 | : Specify copyright messages from a file. |
390 | Note that the first copyright message is not displayed on a device, but is | |
428 | Note that the first copyright message is not displayed on a device, but is | |
391 | 429 | shown in BaseCamp. The copyright file must include at least two lines and |
392 | 430 | be UTF-8 encoded. The following symbols will be substituted by mkgmap: |
393 | 431 | $MKGMAP_VERSION$, $JAVA_VERSION$, $YEAR$, $LONG_DATE$, $SHORT_DATE$ and $TIME$. |
394 | 432 | Time and date substitutions use the local date and time formats. |
395 | <p> | |
433 | ||
396 | 434 | ;--license-file=filename |
397 | 435 | : Specify a file which content will be added as license. |
398 | 436 | The license file must be UTF-8 encoded. |
400 | 438 | $MKGMAP_VERSION$, $JAVA_VERSION$, $YEAR$, $LONG_DATE$, $SHORT_DATE$ and $TIME$. |
401 | 439 | Time and date substitutions use the local date and time formats. |
402 | 440 | All entries of all maps will be merged in the overview map. |
403 | <p> | |
441 | ||
404 | 442 | === Optimization options === |
405 | 443 | |
406 | 444 | ;--reduce-point-density=NUM |
410 | 448 | This distance gets shifted with lower zoom levels. |
411 | 449 | Recommended setting is 4, this should lead to only small differences |
412 | 450 | (Default is 2.6, which should lead to invisible changes) |
413 | <p> | |
451 | ||
414 | 452 | ;--reduce-point-density-polygon=NUM |
415 | 453 | : Allows you to set the maximal allowed error distance for the DP algorithm |
416 | 454 | to be applied against polygons. Recommended setting is 8. |
417 | <p> | |
455 | ||
418 | 456 | ;--merge-lines |
419 | 457 | : Try to merge lines. This helps the simplify filter to straighten out |
420 | 458 | longer chunks at lower zoom levels. Decreases file size more. |
421 | 459 | Increases paint speed at low zoom levels. |
422 | 460 | Default is enabled, use --no-merge-lines to disable. |
423 | <p> | |
461 | ||
424 | 462 | ;--min-size-polygon=NUM |
425 | 463 | : Removes all polygons smaller than NUM from the map. |
426 | 464 | This reduces map size and speeds up redrawing of maps. |
427 | 465 | Recommended value is 8 to 15, default is 8. |
428 | 466 | : See also polygon-size-limits. |
429 | <p> | |
467 | ||
430 | 468 | ;--polygon-size-limits=resolution:value[,resolution:value...] |
431 | : Allows you to specify different min-size-polygon values for each resolution. | |
469 | : Allows you to specify different min-size-polygon values for each resolution. | |
432 | 470 | Sample: |
433 | --polygon-size-limits="24:12, 18:10, 16:8, 14:4, 12:2, 11:0" | |
434 | If a resolution is not given, mkgmap uses the value for the next higher | |
471 | :: --polygon-size-limits="24:12, 18:10, 16:8, 14:4, 12:2, 11:0" | |
472 | : If a resolution is not given, mkgmap uses the value for the next higher | |
435 | 473 | one. For the given sample, resolutions 19 to 24 will use value 12, |
436 | 474 | resolution 17 and 18 will use 10, and so on. |
437 | 475 | Value 0 means to not apply the size filter. |
438 | 476 | Note that in resolution 24 the filter is not used. |
439 | 477 | The following options are equivalent: |
440 | --min-size-polygon=12 | |
441 | --polygon-size-limits=24:12 | |
442 | --polygon-size-limits=24:0,23:12 | |
443 | --polygon-size-limits=24:0,23:12,22:12,21:12,16:12 | |
444 | <p> | |
478 | :: --min-size-polygon=12 | |
479 | :: --polygon-size-limits=24:12 | |
480 | :: --polygon-size-limits=24:0,23:12 | |
481 | :: --polygon-size-limits=24:0,23:12,22:12,21:12,16:12 | |
482 | ||
445 | 483 | === Hill Shading (DEM) options === |
446 | : Hill Shading is rendered by PC programs (MapSource or BaseCamp) or GPS devices | |
447 | when the map includes a Digital Elevation Model (DEM). Use the following options | |
448 | to add a DEM to the map and control its characteristics. DEM creation requires | |
449 | files containing height information for the area covered by the map, the so | |
450 | called hgt files, which typically cover 1 degree latitude * 1 degree longitude | |
451 | and are named by the coordinates of their bottom left corner (eg. N53E009). They | |
452 | contain height information in a grid of points. Typical hgt files contain either | |
453 | 1'' or 3'' data. 3'' files have 1201 * 1201 points, which gives | |
454 | 2 * 1201 * 1201 = 2.884.802 bytes. 1'' files have 3601 * 3601 points, which gives | |
455 | 2 * 3601 * 3601 = 25.934.402 bytes. Other files are supported as long as the | |
456 | formular sqrt(size/2) gives an integer value. | |
457 | <p> | |
484 | ||
485 | : Hill Shading is rendered by PC programs (MapSource or BaseCamp) or GPS devices | |
486 | when the map includes a Digital Elevation Model (DEM). Use the following options | |
487 | to add a DEM to the map and control its characteristics. DEM creation requires | |
488 | files containing height information for the area covered by the map, the so | |
489 | called hgt files, which typically cover 1 degree latitude * 1 degree longitude | |
490 | and are named by the coordinates of their bottom left corner (e.g. N53E009). They | |
491 | contain height information in a grid of points. Typical hgt files contain either | |
492 | 1'' or 3'' data. 3'' files have 1201 * 1201 points, which gives | |
493 | 2 * 1201 * 1201 = 2.884.802 bytes. 1'' files have 3601 * 3601 points, which gives | |
494 | 2 * 3601 * 3601 = 25.934.402 bytes. Other files are supported as long as the | |
495 | formula sqrt(size/2) gives an integer value. | |
496 | ||
458 | 497 | ;--dem=path[,path...] |
459 | 498 | : The option expects a comma separated list of paths to directories or zip |
460 | 499 | files containing *.hgt files. Directories are searched for *.hgt files |
461 | and also for *.hgt.zip and *.zip files | |
500 | and also for *.hgt.zip and *.zip files. | |
462 | 501 | : The list is searched in the given order, so if you want to use 1'' files |
463 | make sure that they are found first. There are different sources for *.hgt | |
464 | files, some have so called voids which are areas without data. Those should be | |
502 | make sure that they are found first. There are different sources for *.hgt | |
503 | files, some have so called voids which are areas without data. Those should be | |
465 | 504 | avoided. |
466 | <p> | |
505 | ||
467 | 506 | ;--dem-dists=number[,number...] |
468 | : If given, the option specifies the resolution(s) or zoom level for the DEM | |
469 | data. If not given, mkgmap tries to determine a reasonable value based on the | |
470 | resolution found in the *.hgt files. For desktop programs like MapSource or | |
471 | Basecamp you only need one zoom level, for GPS devices you need one for each | |
472 | resolution given with the --levels option. The actual values are given as | |
473 | distance between two DEM points and should be a multiple or submultiple of the | |
474 | distance between two points in the hgt file, that is 3314 for 1'' and 9942 for | |
475 | 3''. Higher distances mean lower resolution and thus fewer bytes in the map. | |
476 | Reasonable values for the highest resolution should not be much smaller than | |
507 | : If given, the option specifies the resolution(s) or zoom level for the DEM | |
508 | data. If not given, mkgmap tries to determine a reasonable value based on the | |
509 | resolution found in the *.hgt files. For desktop programs like MapSource or | |
510 | Basecamp you only need one zoom level, for GPS devices you need one for each | |
511 | resolution given with the --levels option. The actual values are given as | |
512 | distance between two DEM points and should be a multiple or submultiple of the | |
513 | distance between two points in the hgt file, that is 3314 for 1'' and 9942 for | |
514 | 3''. Higher distances mean lower resolution and thus fewer bytes in the map. | |
515 | Reasonable values for the highest resolution should not be much smaller than | |
477 | 516 | 50% hgt resolution, that is somewhere between 1648 and 5520 for 1'' hgt input |
478 | 517 | files (3312 is often used), and 5520 to 9942 for 3'' hgt input files. |
479 | 518 | : Example which should work with levels="0:24, 1:22, 2:20, 3:18": |
480 | 519 | : --dem-dists=3312,13248,26512,53024 |
481 | 520 | : This was found in a Garmin Demo map for transalpin data created 2009. |
482 | <p> | |
521 | ||
483 | 522 | ;--dem-interpolation=auto|bicubic|bilinear |
484 | : Use this option to specify the method that is used to interpolate data from | |
485 | hgt raster to the DEM raster. The value bicubic gives the highest precision | |
486 | but is slower, bilinear is faster but less precise, it tends to smooth the | |
487 | profile and thus also reduces DEM size compared to bicubic. The value auto | |
488 | means that bicubic is used where is seems appropriate according to hgt | |
523 | : Use this option to specify the method that is used to interpolate data from | |
524 | hgt raster to the DEM raster. The value bicubic gives the highest precision | |
525 | but is slower, bilinear is faster but less precise, it tends to smooth the | |
526 | profile and thus also reduces DEM size compared to bicubic. The value auto | |
527 | means that bicubic is used where is seems appropriate according to hgt | |
489 | 528 | resolution and dem-dist value, else bilinear is used. The default is auto. |
490 | <p> | |
529 | ||
491 | 530 | ;--dem-poly=filename |
492 | 531 | : If given, the filename should point to a *.poly file in osmosis polygon |
493 | 532 | file format. The polygon described in the file is used to determine the area |
494 | 533 | for which DEM data should be added to the map. If not given, the DEM data will |
495 | 534 | cover the full tile area. |
496 | <p> | |
535 | ||
497 | 536 | ;--overview-dem-dist=integer |
498 | 537 | : If given, the option specifies the resolution(s) for the DEM data in the |
499 | 538 | overview map. If not given or 0, mkgmap will not add DEM to the overview map. |
500 | 539 | Reasonable values depend on the size of the area and the lowest resolution |
501 | used for the single tiles, good compromises are somewhere between 55000 | |
540 | used for the single tiles, good compromises are somewhere between 55000 | |
502 | 541 | and 276160. |
503 | <p> | |
542 | ||
504 | 543 | === Miscellaneous options === |
505 | 544 | |
506 | 545 | ;--max-jobs[=integer] |
513 | 552 | amount used in processing the first tile. To optimise mkgmap to use all |
514 | 553 | available CPU cores, you may need to use the Java -Xmx option to increase |
515 | 554 | the amount of available heap storage. |
516 | <p> | |
555 | ||
517 | 556 | ;--keep-going |
518 | 557 | : Don't quit whole application if an exception occurs while |
519 | 558 | processing a map - continue to process the other maps. |
520 | <p> | |
559 | ||
521 | 560 | ;--block-size=integer |
522 | 561 | : Changes the block size that is used in the generated map. This |
523 | 562 | option is not usually needed, but sometimes an error message |
524 | 563 | will ask you to try a value for this option. |
525 | <p> | |
564 | ||
526 | 565 | ;--net |
527 | 566 | : Tells mkgmap to write NET data, which is needed for address search |
528 | 567 | and routing. Use this option if you want address search, but do |
529 | 568 | not need a map that supports routing or house number search. |
530 | <p> | |
569 | <p> | |
531 | 570 | ;--route |
532 | 571 | : Tells mkgmap to write NET and NOD data, which are needed in maps |
533 | 572 | that support routing. If you specify this option, you do not need |
534 | 573 | to specify --net and --no-net is ignored. |
535 | <p> | |
574 | ||
536 | 575 | ;--add-boundary-nodes-at-admin-boundaries=NUM |
537 | 576 | : This option controls how mkgmap calculates special routing nodes which |
538 | 577 | are needed by Garmin software to allow routing between different map tiles. |
544 | 583 | For the overlapping tiles, none of the entries in NOD3 match and thus |
545 | 584 | routing across tile border doesn't work when the route is not fully |
546 | 585 | covered by one of the tiles. |
547 | The option tells mkgmap to add special nodes whereever a road touches or | |
548 | crosses an administratve boundary. The NUM parameter specifies a filter | |
586 | The option tells mkgmap to add special nodes wherever a road touches or | |
587 | crosses an administrative boundary. The NUM parameter specifies a filter | |
549 | 588 | for the admin_level. Boundaries with a higher admin_level value are ignored. |
550 | 589 | The default value is 2 (country borders). Another reasonable value might |
551 | be 4. A value less or equal to 0 tells mkgmap to ignore intersections at | |
590 | be 4. A value less or equal to 0 tells mkgmap to ignore intersections at | |
552 | 591 | administrative boundaries. |
553 | <p> | |
592 | ||
554 | 593 | ;--drive-on=left|right|detect|detect,left|detect,right |
555 | 594 | : Explicitly specify which side of the road vehicles are |
556 | 595 | expected to drive on. |
562 | 601 | of drive-on-left roads with the rest. |
563 | 602 | Use the --bounds option to make sure that the detection |
564 | 603 | finds the correct country. |
565 | <p> | |
566 | 604 | |
567 | 605 | ;--check-roundabouts |
568 | 606 | : Check that roundabouts have the expected direction (clockwise |
570 | 608 | loops and have the wrong direction are reversed. Also checks |
571 | 609 | that the roundabouts do not fork or overlap other roundabouts |
572 | 610 | and that no more than one connecting highway joins at each node. |
573 | <p> | |
611 | ||
574 | 612 | ;--check-roundabout-flares |
575 | 613 | : Check that roundabout flare roads point in the correct |
576 | 614 | direction, are one-way and don't extend too far. |
577 | <p> | |
615 | ||
578 | 616 | ;--check-routing-island-len=INTEGER |
579 | 617 | : Routing islands are small road networks which are not connected to other |
580 | 618 | roads. A typical case is a footway that is not connected to the main road |
581 | network, or a small set of ways on the inner courtyard of a large building | |
619 | network, or a small set of ways on the inner courtyard of a large building. | |
582 | 620 | : These islands can cause problems if you try to calculate a route and the GPS |
583 | 621 | selects a point on the island as a start or end. It will fail to calculate the |
584 | 622 | route even if a major road is only a few steps away. If this option is |
593 | 631 | a different tile. |
594 | 632 | : See also option --add-boundary-nodes-at-admin-boundaries. |
595 | 633 | : This option seems to cause routing problems in BaseCamp. |
596 | <p> | |
634 | ||
597 | 635 | ;--max-flare-length-ratio=NUM |
598 | 636 | : When checking flare roads, ignore roads whose length is |
599 | 637 | greater than NUM (an integer) times the distance between the |
602 | 640 | number of legitimate roads that are flagged as flare road |
603 | 641 | problems. Default value is 0 (disabled) because it's not a |
604 | 642 | completely reliable heuristic. |
605 | <p> | |
643 | ||
606 | 644 | ;--ignore-turn-restrictions |
607 | 645 | : When reading OSM files, ignore any "restriction" relations. |
608 | <p> | |
646 | ||
609 | 647 | ;--ignore-osm-bounds |
610 | 648 | : When reading OSM files, ignore any "bounds" elements. |
611 | 649 | With this option selected generate-sea sometimes works better, |
612 | 650 | but routing across tiles will not work. |
613 | <p> | |
651 | ||
614 | 652 | ;--preserve-element-order |
615 | 653 | : Process the map elements (nodes, ways, relations) in the order |
616 | 654 | in which they appear in the OSM input. Without this option, |
617 | 655 | the order in which the elements are processed is not defined. |
618 | <p> | |
619 | Optional BITMASK (default value 3) allows you to specify which | |
620 | adjustments are to be made (where necessary): | |
621 | <p> | |
622 | :* 1 = increase angle between side road and outgoing main road | |
623 | :* 2 = increase angle between side road and incoming main road | |
624 | <p> | |
656 | ||
625 | 657 | ;--cycle-map |
626 | 658 | : Tells mkgmap that the map is for cyclists. This assumes that |
627 | 659 | different vehicles are different kinds of bicycles, e.g. a way |
628 | 660 | with mkgmap:car=yes and mkgmap:bicycle=no may be a road that is |
629 | 661 | good for racing bikes, but not for other cyclists. |
630 | This allows the optimisation of sharp angles at junctions of those roads. | |
662 | This allows the optimisation of sharp angles at junctions of those roads. | |
631 | 663 | Don't use with the default style as that is a general style! |
632 | <p> | |
664 | ||
633 | 665 | ;--report-similar-arcs |
634 | 666 | : Issue a warning when more than one arc connects two nodes and |
635 | 667 | the ways that the arcs are derived from contain identical |
636 | 668 | points. It doesn't make sense to use this option at the same |
637 | 669 | time as using the cycleway creating options. |
638 | <p> | |
670 | ||
639 | 671 | ;--report-dead-ends=LEVEL |
640 | 672 | : Set the dead end road warning level. The value of LEVEL (which |
641 | 673 | defaults to 1 if this option is not specified) determines |
642 | 674 | those roads to report: 0 = none, 1 = multiple one-way roads |
643 | 675 | that join together but go nowhere, 2 = individual one-way roads |
644 | 676 | that go nowhere. |
645 | <p> | |
677 | ||
646 | 678 | ;--add-pois-to-lines |
647 | 679 | : Generate POIs for lines. For each line (must not be closed) POIs are |
648 | 680 | created at several points of the line. Each POI is tagged with the |
656 | 688 | ;--add-pois-to-areas |
657 | 689 | : Generate a POI for each polygon and multipolygon. The POIs are created |
658 | 690 | after the relation style but before the other styles are applied. Each |
659 | POI is tagged with the same tags of | |
660 | the area/multipolygon. Additionally the tag mkgmap:area2poi=true is | |
691 | POI is tagged with the same tags of | |
692 | the area/multipolygon. Additionally the tag mkgmap:area2poi=true is | |
661 | 693 | set so that it is possible to use that information in the points style |
662 | file. Artifical polygons created by multipolyon processing are not used. | |
694 | file. Artificial polygons created by multipolyon processing are not used. | |
663 | 695 | The POIs are created at the following positions (first rule that applies): |
664 | 696 | :;polygons: |
665 | 697 | ::First rule that applies of |
666 | ::* the first node tagged with a tag defined by the pois-to-areas-placement option | |
698 | ::* the first node tagged with a tag defined by the --pois-to-areas-placement option | |
667 | 699 | ::* the centre point |
668 | :; multipolygons: | |
700 | :;multipolygons: | |
669 | 701 | ::First rule that applies of |
670 | 702 | ::* the node with role=label |
671 | 703 | ::* the centre point of the biggest area |
675 | 707 | tagged with the second tag-value pair is used and so on. If none of the tag-value pairs |
676 | 708 | matches or the taglist is empty, the centre of the polygon is used. |
677 | 709 | It is possible to define wildcards for tag values like entrance=*. |
678 | <p>Default: entrance=main;entrance=yes;building=entrance | |
679 | <p> | |
710 | <p> | |
711 | Default: entrance=main;entrance=yes;building=entrance | |
712 | ||
680 | 713 | ;--precomp-sea=directory|zipfile |
681 | 714 | : Defines the directory or a zip file that contains precompiled sea tiles. |
682 | Sea files in a zip file must be located in the zip file's root directory or in | |
683 | a sub directory sea. When this option is defined all natural=coastline tags | |
684 | from the input OSM tiles are removed and the precompiled data is used instead. | |
685 | This option can be combined with the generate-sea options multipolygon, polygons | |
686 | and land-tag. The coastlinefile option is ignored if precomp-sea is set. | |
687 | <p> | |
715 | Sea files in a zip file must be located in the zip file's root directory or in | |
716 | a sub directory sea. When this option is defined all natural=coastline tags | |
717 | from the input OSM tiles are removed and the precompiled data is used instead. | |
718 | This option can be combined with the generate-sea options multipolygon, polygons | |
719 | and land-tag. The coastlinefile option is ignored if precomp-sea is set. | |
720 | ||
688 | 721 | ;--coastlinefile=filename[,filename...] |
689 | 722 | : Defines a comma separated list of files that contain coastline |
690 | 723 | data. The coastline data from the input files is removed if |
691 | this option is set. Files must have OSM or PBF fileformat. | |
692 | <p> | |
724 | this option is set. Files must have OSM or PBF file format. | |
725 | ||
693 | 726 | ;--generate-sea[=ValueList] |
694 | 727 | : Generate sea polygons. ValueList is an optional comma |
695 | 728 | separated list of values: |
696 | <p> | |
729 | ||
697 | 730 | :;multipolygon |
698 | 731 | :: generate the sea using a multipolygon (the default behaviour so this really doesn't need to be specified). |
699 | 732 | |
724 | 757 | |
725 | 758 | :;fbgap=NUM |
726 | 759 | :: flood blocker gap in metre (default 40) |
727 | points that are closer to the sea polygon do not block | |
760 | points that are closer to the sea polygon do not block | |
761 | ||
728 | 762 | :;fbthres=NUM |
729 | 763 | :: at least so many highway points must be contained in |
730 | 764 | a sea polygon so that it may be removed by the flood |
731 | 765 | blocker (default 20) |
732 | 766 | |
733 | :; fbratio=NUM | |
767 | :;fbratio=NUM | |
734 | 768 | :: only sea polygons with a higher ratio |
735 | 769 | (highway points * 100000 / polygon size) are removed |
736 | 770 | (default 0.5) |
737 | 771 | |
738 | :; fbdebug | |
772 | :;fbdebug | |
739 | 773 | :: switches on the debugging of the flood blocker |
740 | 774 | generates GPX files for each polygon checked by |
741 | 775 | the flood blocker |
743 | 777 | ;--make-poi-index |
744 | 778 | : Generate a POI index in each map tile. Probably not used by modern devices, |
745 | 779 | but still supported. |
746 | <p> | |
780 | ||
747 | 781 | ;--nsis |
748 | 782 | : Write a .nsi file that can be used with the Nullsoft Scriptable Install System |
749 | 783 | (NSIS) to create a Windows Mapsource Installer. |
750 | <p> | |
784 | ||
751 | 785 | ;--make-opposite-cycleways |
752 | 786 | : Some one-way streets allow bicycle traffic in the reverse |
753 | 787 | direction and this option makes a way with the same points as |
754 | 788 | the original that allows bicycle traffic (in both directions). |
789 | ||
755 | 790 | ;--link-pois-to-ways |
756 | 791 | : This option may copy some specific attributes of a POI |
757 | 792 | to a small part of the way the POI is located on. This can be used |
767 | 802 | allowed vehicles are routed through it. |
768 | 803 | The tags mkgmap:road-speed and/or mkgmap:road-class are |
769 | 804 | applied to a small part of the way around the POI, typically |
770 | to the next junction or a length of ~25 m. The tags | |
805 | to the next junction or a length of ~25m. The tags | |
771 | 806 | are ignored for pedestrian-only ways. |
772 | <p> | |
807 | ||
773 | 808 | ;--process-destination |
774 | 809 | : Splits all motorway_link, trunk_link, primary_link, secondary_link, |
775 | and tertiary_link ways tagged with destination into two or three parts where | |
810 | and tertiary_link ways tagged with destination into two or three parts where | |
776 | 811 | the second part is additionally tagged with mkgmap:dest_hint=*. |
777 | 812 | The code checks for the tags destination, destination:lanes, |
778 | 813 | destination:street and some variants with :forward/:backward like |
784 | 819 | for that part so that the Garmin device tells the name of |
785 | 820 | this part as hint which destination to follow. |
786 | 821 | : See also --process-exits. |
787 | <p> | |
822 | ||
788 | 823 | ;--process-exits |
789 | 824 | : Usual Garmin devices do not tell the name of the exit on motorways |
790 | 825 | while routing with mkgmap created maps. This option splits each |
792 | 827 | tertiary_link way into three parts. |
793 | 828 | All parts are tagged with the original tags of the link. |
794 | 829 | Additionally the middle part is tagged with the following tags: |
795 | <pre> | |
796 | mkgmap:exit_hint=true | |
797 | mkgmap:exit_hint_ref=<ref tag value of the exit> | |
798 | mkgmap:exit_hint_name=<name tag value of the exit> | |
799 | mkgmap:exit_hint_exit_to=<exit_to tag value of the exit> | |
800 | </pre> | |
801 | Adding a rule checking the mkgmap:exit_hint=true makes it possible | |
830 | ||
831 | :: mkgmap:exit_hint=true | |
832 | :: mkgmap:exit_hint_ref=<ref tag value of the exit> | |
833 | :: mkgmap:exit_hint_name=<name tag value of the exit> | |
834 | :: mkgmap:exit_hint_exit_to=<exit_to tag value of the exit> | |
835 | ||
836 | : Adding a rule checking the mkgmap:exit_hint=true makes it possible | |
802 | 837 | to use any routable Garmin type (except 0x08 and 0x09) for the middle |
803 | 838 | part so that the Garmin device tells the name of this middle part as |
804 | 839 | hint where to leave the motorway/trunk. |
809 | 844 | TAG=VALUE or TAG=*. Blank lines and lines that start with |
810 | 845 | a # or ; are ignored. All tag/value pairs in the OSM input are |
811 | 846 | compared with these patterns and those that match are deleted. |
812 | <p> | |
847 | ||
813 | 848 | ;--ignore-fixme-values |
814 | : Ignore all tags for which the value matches the pattern "(?i)fix[ _]?+me". | |
815 | <p> | |
849 | : Ignore all tags for which the value matches the regular expression pattern "(?i)fix[ _]?+me". | |
850 | ||
816 | 851 | ;--tdbfile |
817 | 852 | : Write files that are essential to running with MapSource, a .tdb file and |
818 | 853 | an overview map. The options --nsis and --gmapi imply --tdbfile. |
819 | <p> | |
854 | ||
820 | 855 | ;--show-profiles=1 |
821 | 856 | : Sets a flag in tdb file. The meaning depends on the availability of DEM |
822 | 857 | data (see "Hill Shading (DEM) options"). |
823 | 858 | : Without DEM data the flag enables profile calculation in MapSource or |
824 | 859 | Basecamp based on information from contour lines. |
825 | 860 | : If DEM data is available the profile is calculated with that |
826 | information and the flag only changes the status line to show the height when | |
861 | information and the flag only changes the status line to show the height when | |
827 | 862 | you hover over an area with valid DEM data. |
828 | 863 | : The default is show-profiles=0. |
829 | <p> | |
864 | ||
830 | 865 | ;--transparent |
831 | 866 | : Make the map transparent, so that if two maps covering the same area are |
832 | 867 | loaded, you can see through this map to see details from the other map too. |
833 | 868 | Typically used for maps containing just contour lines. See --draw-priority |
834 | 869 | as well. |
835 | <p> | |
870 | ||
836 | 871 | ;--draw-priority=integer |
837 | 872 | : When two maps cover the same area and both are enabled in the device, this |
838 | 873 | option controls the order in which they are drawn in and therefore which map |
839 | 874 | is on top. Higher priorities are drawn "on top" of lower priorities. |
840 | 875 | The map drawn on top must be transparent for the one underneath to be seen. |
841 | 876 | The default value is 25. |
842 | <p> | |
877 | ||
843 | 878 | ;--custom |
844 | 879 | : Write a different TRE header. With this option, mkgmap writes the bytes |
845 | 880 | 0x170401 instead of the default 0x110301 at offset 43. Useful for marine maps. |
846 | <p> | |
881 | ||
847 | 882 | ;--hide-gmapsupp-on-pc |
848 | 883 | : Set a bit in the gmapsupp.img that tells PC software that the file is |
849 | 884 | already installed on the PC and therefore there is no need to read it |
850 | 885 | from the device. |
851 | <p> | |
886 | ||
852 | 887 | ;--poi-address |
853 | 888 | : Enable address / phone information to POIs. Address info is |
854 | 889 | read according to the "Karlsruhe" tagging schema. Automatic |
855 | 890 | filling of missing information could be enabled using the |
856 | 891 | "location-autofill" option. |
857 | 892 | Default is enabled, use --no-poi-address to disable. |
858 | <p> | |
893 | ||
859 | 894 | ;--verbose |
860 | 895 | : Makes some operations more verbose. Mostly used with --list-styles. |
861 | <p> | |
896 | ||
862 | 897 | ;--order-by-decreasing-area |
863 | 898 | : Puts area/polygons into the map in decreasing size order, so |
864 | 899 | that smaller features are rendered over larger ones |
865 | (assuming _drawOrder is equal). | |
900 | (assuming the draw order is equal). | |
866 | 901 | The tag mkgmap:drawLevel can be used to override the |
867 | 902 | natural area of a polygon, so forcing changes to the rendering order. |
868 | 903 | |
869 | 904 | === Deprecated and Obsolete Options === |
870 | <p> | |
905 | ||
871 | 906 | ;--drive-on-left |
872 | 907 | ;--drive-on-right |
873 | 908 | : Deprecated; use drive-on instead. |
874 | 909 | The options are translated to drive-on=left|right. |
875 | <p> | |
910 | ||
876 | 911 | ;--make-all-cycleways |
877 | : Deprecated; use --make-opposite-cycleways instead. Former meaning: | |
878 | <div class=preserve><nowiki> | |
912 | : Deprecated; use --make-opposite-cycleways instead. Former meaning: | |
879 | 913 | Turn on all of the options that make cycleways. |
880 | </nowiki></div> | |
881 | <p> | |
914 | ||
882 | 915 | ;--charset=name |
883 | 916 | : Obsolete; use --code-page instead. |
884 | <p> | |
917 | ||
885 | 918 | ;--map-features=filename |
886 | 919 | : Obsolete; use --style-file instead. |
887 | <p> | |
920 | ||
888 | 921 | ;--ignore-maxspeeds |
889 | 922 | : Obsolete; former usage: |
890 | 923 | When reading OSM files, ignore any "maxspeed" tags. |
891 | <p> | |
924 | ||
892 | 925 | ;--ignore-builtin-relations |
893 | 926 | : Obsolete; former usage: |
894 | 927 | When reading OSM files, skip the built-in processing of |
895 | 928 | relations. This speeds up the processing non-routable map |
896 | 929 | layers that do not contain multipolygons. This implies |
897 | 930 | --ignore-turn-restrictions. |
898 | <p> | |
931 | ||
899 | 932 | ;--road-name-pois[=GarminCode] |
900 | 933 | : Obsolete; former usage: |
901 | 934 | Generate a POI for each named road. By default, the POIs' |
904 | 937 | being able to search for roads. |
905 | 938 | 0x2f15: a blue dot in the middle of the road, and if you select, |
906 | 939 | or 'hover' over it, the street name appears. |
907 | <p> | |
940 | ||
908 | 941 | ;--make-cycleways |
909 | 942 | : Obsolete; former meaning: |
910 | <div class=preserve><nowiki> | |
911 | 943 | Some streets have a separate cycleway track/lane just for |
912 | 944 | bicycle traffic and this option makes a way with the same |
913 | 945 | points as the original that allows bicycle traffic. Also, |
914 | 946 | bicycle traffic is prohibited from using the original way |
915 | 947 | (unless that way's bicycle access has been defined). |
916 | </nowiki></div> | |
948 | ||
949 | ;--remove-short-arcs[=MinLength] | |
950 | : Now ignored, former usage: | |
951 | Merge nodes to remove short arcs that can cause routing | |
952 | problems. If MinLength is specified (in metres), arcs shorter | |
953 | than that length will be removed. If a length is not | |
954 | specified, only zero-length arcs will be removed. | |
955 | ||
956 | ;--adjust-turn-headings[=BITMASK] | |
957 | : Now ignored, former usage: | |
958 | Where possible, ensure that turns off to side roads change | |
959 | heading sufficiently so that the GPS believes that a turn is | |
960 | required rather than a fork. This also avoids spurious | |
961 | instructions to "keep right/left" when the road doesn't | |
962 | actually fork. | |
963 | ||
964 | : Optional BITMASK (default value 3) allows you to specify which | |
965 | adjustments are to be made (where necessary): | |
966 | ||
967 | :: 1 = increase angle between side road and outgoing main road | |
968 | :: 2 = increase angle between side road and incoming main road |
0 | 0 | |
1 | 1 | Help is available on the following topics: |
2 | ||
3 | --help | |
4 | General help. | |
2 | 5 | |
3 | 6 | --help=options |
4 | 7 | The command line options |
5 | 8 | |
6 | 9 | --help=links |
7 | Browser links to more information about mkgmap | |
8 | and Open Street Map. | |
10 | Browser links to more information about mkgmap and Open Street Map. | |
9 | 11 | |
10 | 12 | --help=copyright |
11 | Copyright information | |
13 | Copyright information. | |
14 | ||
15 | --help=logging | |
16 | Information on how to control logging. |
0 | === Logging === | |
1 | ||
2 | You can configure logging by using the Java -Dlog.config=filename option. | |
3 | This option uses a logging configuration file that allows you to enable and | |
4 | disable specific logging messages. This is useful if you want to see | |
5 | certain types of message that are not logged by default or choose where the | |
6 | messages should be written. The configuration file contains details of the | |
7 | handler(s) used to write the messages, parameters used to format the | |
8 | messages and the severity of messages that should be logged at Java package | |
9 | or class level, plus a default value. An example file is: | |
10 | ||
11 | # The default level FINE, WARNING, INFO, SEVERE | |
12 | .level=SEVERE | |
13 | #handlers: java.util.logging.ConsoleHandler | |
14 | handlers: java.util.logging.FileHandler java.util.logging.ConsoleHandler | |
15 | # package or class name with .level appended and then the level | |
16 | uk.me.parabola.imgfmt.level=INFO | |
17 | uk.me.parabola.mkgmap.build.level=INFO | |
18 | uk.me.parabola.mkgmap.main.Main.level=INFO | |
19 | uk.me.parabola.mkgmap.main.MapMaker.level=INFO | |
20 | uk.me.parabola.mkgmap.general.RoadNetwork.level=INFO | |
21 | uk.me.parabola.mkgmap.general.MapLine.level=INFO | |
22 | uk.me.parabola.mkgmap.osmstyle.level=INFO | |
23 | uk.me.parabola.mkgmap.reader.osm.level=INFO | |
24 | uk.me.parabola.mkgmap.reader.osm.xml.level=INFO | |
25 | uk.me.parabola.mkgmap.reader.osm.RestrictionRelation.level=FINE | |
26 | uk.me.parabola.mkgmap.reader.osm.Restriction.level=FINE | |
27 | # For ConsoleHandler | |
28 | java.util.logging.ConsoleHandler.level=WARNING | |
29 | java.util.logging.ConsoleHandler.formatter=uk.me.parabola.log.UsefulFormatter | |
30 | # For FileHandler | |
31 | java.util.logging.FileHandler.level=FINE | |
32 | java.util.logging.FileHandler.encoding=UTF-8 | |
33 | java.util.logging.FileHandler.formatter=uk.me.parabola.log.UsefulFormatter | |
34 | java.util.logging.FileHandler.limit=20000000 | |
35 | java.util.logging.FileHandler.count=4 | |
36 | java.util.logging.FileHandler.pattern=mkgmap.log | |
37 | java.util.logging.FileHandler.append=false | |
38 | ||
39 | The above example enables certain informational messages and sends them to a | |
40 | log file, with warning and error messages being also sent to stdout. | |
41 | ||
42 | Further information can be found at | |
43 | https://docs.oracle.com/javase/8/docs/technotes/guides/logging/overview.html | |
44 |
0 | Note that option order is significant: An option only applies to | |
1 | subsequent input files. (So if you are using splitter, you probably | |
2 | want to put most of your options before '-c template.args'.) | |
3 | ||
4 | General options: | |
5 | ||
6 | --help=topic | |
7 | Print help on the given topic. If the topic is omitted then a | |
8 | list of all the help topics is printed instead. | |
9 | ||
10 | --version | |
11 | Output program version to stderr. | |
0 | The command line is of the format: | |
1 | ||
2 | java.exe [java-options] -jar mkgmap.jar [mkgmap-options] | |
3 | ||
4 | === Java options === | |
5 | ||
6 | Details of the Java options are available at docs.oracle.com. The most likely | |
7 | options you may need to use are: | |
8 | ||
9 | -Xmx<size>[g|G|m|M|k|K] | |
10 | Use this option to set the maximum Java heap size in GB, MB, KB or bytes. | |
11 | Mkgmap allows the use of multiple CPU cores, and the amount of heap memory | |
12 | required increases proportionally with the number of CPU cores being used. | |
13 | The default value may not be sufficient to allow mkgmap to use all the | |
14 | available CPU cores, which will cause the run time to be longer than | |
15 | necessary. To allow mkgmap to run optimally, you may need to use this | |
16 | option to allow more memory to be allocated to the Java heap. Typically, | |
17 | mkgmap requires about 500MB per core, so an 8-core processor might need to | |
18 | specify -Xmx4g - note there is no space or equals sign in the option. | |
19 | ||
20 | -enableassertions | |
21 | Causes an error to be thrown if an assertion written in the mkgmap code is | |
22 | evaluated as not true. This is useful in detecting bugs in the mkgmap code. | |
23 | ||
24 | -Dlog.config=filename | |
25 | Specifies a logging configuration file that allows you to enable and | |
26 | disable specific logging messages. This is useful if you want to see | |
27 | certain types of message that are not logged by default or choose where the | |
28 | messages should be written. === Mkgmap options === | |
29 | ||
30 | The order of the options is significant in that options only apply to | |
31 | subsequent input files. If you are using splitter, you probably will need to | |
32 | put most of your options before '-c template.args' (this file is generated by | |
33 | splitter). | |
34 | ||
35 | === Information options === | |
36 | ||
37 | These options provide information and do not require any input files. | |
38 | ||
39 | --help[=help|options|links|copyright|logging] | |
40 | Display help on the given topic. If the topic is omitted then general help | |
41 | information is displayed, the same as in help=help. | |
42 | ||
43 | --version | |
44 | Write program version to stderr. | |
45 | ||
46 | === File options === | |
12 | 47 | |
13 | 48 | filename |
14 | 49 | --input-file=filename |
15 | Read input data from the give file. This option (or just a | |
16 | filename) may be given more than once. Make sure to set all | |
17 | wanted options before using this. | |
50 | Read input data from the given file. This option (or just a filename) may | |
51 | be specified more than once. Make sure you set all wanted options before | |
52 | this. | |
18 | 53 | |
19 | 54 | --gmapsupp |
20 | Create a gmapsupp.img file that can be uploaded to a Garmin or | |
21 | placed in "/Garmin" in a microSD card (such as by mounting the | |
22 | device in USB mass storage mode). It can be used on ready | |
23 | compiled img files, if the input files are not already compiled | |
24 | then they are compiled first and then the gmapsupp is created. | |
55 | Create a gmapsupp.img file that can be uploaded to a Garmin or placed in | |
56 | "/Garmin" in a microSD card (such as by mounting the device in USB mass | |
57 | storage mode). It can be used on already compiled img files, or if the | |
58 | input files are not already compiled then they are compiled first and then | |
59 | the gmapsupp is created. | |
25 | 60 | |
26 | 61 | --gmapi |
27 | Create a directory in the "gmapi" format required by Mac | |
28 | applications. Can also be used for Windows programs. | |
62 | Create a directory in the "gmapi" format required by Mac applications. Can | |
63 | also be used for Windows programs. | |
29 | 64 | |
30 | 65 | -c filename |
31 | 66 | --read-config=filename |
32 | Each line of the named file contains a command option in the form | |
33 | option=value or option:value. The options are included as arguments of | |
34 | the executed command as if they had been specified on the command line with | |
35 | one exception: a relative path given with option input-file is assumed to be | |
36 | relative to the location of the file. | |
37 | Lines beginning with a # character are ignored and can be used as | |
38 | comments. Any command line option can be specified, however the | |
39 | leading '--' must be omitted. The short option names with a single | |
40 | '-' cannot be used, simply use the long name instead. | |
67 | Each line of the named file contains a command option in the form | |
68 | option=value or option:value. The options are included as arguments of the | |
69 | executed command as if they had been specified on the command line with one | |
70 | exception: a relative path given with option input-file is assumed to be | |
71 | relative to the location of the file. | |
72 | ||
73 | Lines beginning with a # character are ignored and can be used as | |
74 | comments. Any command line option can be specified, however the leading | |
75 | '--' must be omitted. The short option names with a single '-' cannot be | |
76 | used, simply use the long name instead. | |
41 | 77 | |
42 | 78 | --output-dir=directory |
43 | Specify the directory in which all output files are written. It defaults | |
44 | to the current working directory, i.e. the directory the command is | |
45 | executed from. | |
79 | Specify the directory in which all output files are written. It defaults to | |
80 | the current working directory, i.e. the directory the command is executed | |
81 | from. | |
46 | 82 | |
47 | 83 | -n name |
48 | 84 | --mapname=name |
49 | Set the name of the map. Garmin maps are identified by an 8 digit | |
50 | number. The default is 63240001. It is best to use a different | |
51 | name if you are going to be making a map for others to use so | |
52 | that it is unique and does not clash with others. | |
85 | Set the name of the map. Garmin maps are identified by an 8 digit number. | |
86 | The default is 63240001. It is best to use a different name if you are | |
87 | going to be making a map for others to use so that it is unique and does | |
88 | not clash with others. | |
53 | 89 | |
54 | 90 | --description=text |
55 | Set the descriptive text for the map. This may be displayed in | |
56 | QLandkarte, MapSource or on a GPS, where it is normally shown | |
57 | below the family name. Example: --description="Germany, Denmark" | |
58 | Please note: if you use splitter.jar to build a template.args file | |
59 | and use -c template.args, then that file may contain a | |
60 | "description" that will override this option for each single | |
61 | tile. Make sure to set the description for the gmapsupp.img after | |
62 | "-c template.args". | |
91 | Set the descriptive text for the map. This may be displayed in QLandkarte, | |
92 | MapSource or on a GPS, where it is normally shown below the family name. | |
93 | Example: --description="Germany, Denmark" Please note: if you use splitter | |
94 | to build a template.args file and pass it to mkgmap, then that file may | |
95 | contain a "description" that will override this option. To prevent splitter | |
96 | from overriding your description, place the --description option after "-c | |
97 | template.args". | |
63 | 98 | |
64 | 99 | --country-name=name |
65 | Set the map's country name. The default is "COUNTRY". | |
100 | Set the map's country name. The default is "COUNTRY". | |
66 | 101 | |
67 | 102 | --country-abbr=abbreviation |
68 | Set the map's abbreviated country name. The default is "ABC". | |
103 | Set the map's abbreviated country name. The default is "ABC". | |
69 | 104 | |
70 | 105 | --region-name=name |
71 | Set the map's region name. By default, the map has no region name. | |
106 | Set the map's region name. By default, the map has no region name. | |
72 | 107 | |
73 | 108 | --region-abbr=abbreviation |
74 | Set the map's abbreviated region name. By default, the map has | |
75 | no abbreviated region name. | |
76 | ||
77 | Label options: | |
109 | Set the map's abbreviated region name. By default, the map has no | |
110 | abbreviated region name. | |
111 | ||
112 | === Label options === | |
78 | 113 | |
79 | 114 | --code-page=number |
80 | Specify which international character set is to be used. Only 8 bit | |
81 | character sets are supported so you have to specify which code page you | |
82 | want to use. | |
83 | ||
84 | It is entirely dependent on the device firmware which code pages are | |
85 | supported. | |
86 | ||
115 | Specify which international character set is to be used. Only 8 bit | |
116 | character sets are supported so you have to specify which code page you | |
117 | want to use. It is entirely dependent on the device firmware which code | |
118 | pages are supported. | |
119 | ||
87 | 120 | --latin1 |
88 | This is equivalent to --code-page=1252. | |
121 | This is equivalent to --code-page=1252. | |
89 | 122 | |
90 | 123 | --unicode |
91 | This is equivalent to --code-page=65001. Note that | |
92 | some devices don't support Unicode maps produced by mkgmap. | |
124 | This is equivalent to --code-page=65001. Note that some devices don't | |
125 | support Unicode maps produced by mkgmap. | |
93 | 126 | |
94 | 127 | --lower-case |
95 | Allow labels to contain lower case letters. Note that many Garmin | |
96 | devices are not able to display lower case letters at an angle. | |
97 | ||
98 | Address search options: | |
128 | Allow labels to contain lower case letters. Note that many Garmin devices | |
129 | are not able to display lower case letters at an angle. | |
130 | ||
131 | === Address search options === | |
132 | ||
99 | 133 | --index |
100 | Generate a global address search index. If the --gmapsupp option is | |
101 | also given, then the index is generated within the resulting | |
102 | gmapsupp.img file so that address search will work on a GPS | |
103 | device. | |
104 | ||
105 | If both the --gmapsupp and any of --tdbfile, --gmapi, or --nsis options | |
106 | are given alongside the --index option, then both indexes will be created. | |
107 | Note that this will require roughly twice as much memory. | |
108 | ||
109 | If the map is sent to the device by MapSource, it will enable | |
110 | find by name and address search on the GPS. | |
111 | ||
112 | The address fields are assigned by special mkgmap address | |
113 | tags using the style file: | |
114 | mkgmap:country | |
115 | mkgmap:region | |
116 | mkgmap:city | |
117 | mkgmap:postal_code | |
118 | mkgmap:street | |
119 | mkgmap:housenumber | |
120 | mkgmap:phone | |
121 | (mkgmap:is_in - used by location-autofill=is_in) | |
122 | ||
123 | If the index is created from previously compiled .img files, then the | |
124 | same code page and sorting options (e.g. --code-page, --latin1) must | |
125 | be used as were used to compile the individual map tiles. | |
134 | Generate a global address search index. If the --gmapsupp option is also | |
135 | given, then the index is generated within the resulting gmapsupp.img file | |
136 | so that address search will work on a GPS device. | |
137 | ||
138 | If both the --gmapsupp and any of --tdbfile, --gmapi, or --nsis options | |
139 | are given alongside the --index option, then both indexes will be created. | |
140 | Note that this will require roughly twice as much memory. | |
141 | ||
142 | If the map is sent to the device by MapSource, it will enable find by name | |
143 | and address search on the GPS. | |
144 | ||
145 | The address fields are assigned by special mkgmap address tags using the | |
146 | style file: | |
147 | mkgmap:country | |
148 | mkgmap:region | |
149 | mkgmap:city | |
150 | mkgmap:postal_code | |
151 | mkgmap:street | |
152 | mkgmap:housenumber | |
153 | mkgmap:phone | |
154 | (mkgmap:is_in - used by location-autofill=is_in) | |
155 | ||
156 | If the index is created from previously compiled .img files, then the same | |
157 | code page and sorting options (e.g. --code-page, --latin1) must be used as | |
158 | were used to compile the individual map tiles. | |
126 | 159 | |
127 | 160 | --split-name-index |
128 | Index each part of a street name separately. | |
129 | For example, if the street is "Aleksandra Gryglewskiego" then you will be able to | |
130 | search for it as both "Aleksandra" and "Gryglewskiego". It will also increase the | |
131 | size of the index. Useful in countries where searching for the first word in name | |
132 | is not the right thing to do. Words following an opening bracket '(' are ignored. | |
133 | See also option road-name-config. | |
161 | Index each part of a street name separately. For example, if the street is | |
162 | "Aleksandra Gryglewskiego" then you will be able to search for it as both | |
163 | "Aleksandra" and "Gryglewskiego". It will also increase the size of the | |
164 | index. Useful in countries where searching for the first word in name is | |
165 | not the right thing to do. Words following an opening bracket '(' are | |
166 | ignored. | |
167 | See also option --road-name-config. | |
134 | 168 | |
135 | 169 | --road-name-config=filename |
136 | Provide the name of a file containing commonly used road name prefixes | |
137 | and suffixes. | |
138 | This option handles the problem that some countries have road names which | |
139 | often start or end with very similar words, e.g. in France the first word | |
140 | is very often 'Rue', often followed by a preposition like 'de la' or 'des'. | |
141 | This leads to rather long road names like 'Rue de la Concorde' where only | |
142 | the word 'Concorde' is really interesting. In the USA, you often have names | |
143 | like 'West Main Street' where only the word 'Main' is important. | |
144 | Garmin software has some tricks to handle this problem. It allows the use | |
145 | of special characters in the road labels to mark the beginning and end of | |
146 | the important part. In combination with option split-name-index | |
147 | only the words in the important part are indexed. | |
148 | ||
149 | There are two effects of this option: | |
150 | - On the PC, when zooming out, the name 'Rue de la Concorde' is only | |
151 | rendered as 'Concorde'. | |
152 | - The index for road names only contains the important part of the name. | |
153 | You can search for road name Conc to find road names like 'Rue de la Concorde'. | |
154 | However, a search for 'Rue' will not list 'Rue de la Concorde' or | |
155 | 'Rue du Moulin'. It may list 'Rueben Brookins Road' if that is in the map. | |
156 | Only MapSource shows a corresponding hint. | |
157 | ||
158 | Another effect is that the index is smaller. | |
159 | See comments in the sample roadNameConfig.txt for further details. | |
160 | ||
170 | Provide the name of a file containing commonly used road name prefixes and | |
171 | suffixes. This option handles the problem that some countries have road | |
172 | names which often start or end with very similar words, e.g. in France the | |
173 | first word is very often 'Rue', often followed by a preposition like 'de | |
174 | la' or 'des'. This leads to rather long road names like 'Rue de la | |
175 | Concorde' where only the word 'Concorde' is really interesting. In the USA, | |
176 | you often have names like 'West Main Street' where only the word 'Main' is | |
177 | important. Garmin software has some tricks to handle this problem. It | |
178 | allows the use of special characters in the road labels to mark the | |
179 | beginning and end of the important part. In combination with option | |
180 | --split-name-index only the words in the important part are indexed. | |
181 | ||
182 | ||
183 | There are two main effects of this option: | |
184 | - On the PC, when zooming out, the name 'Rue de la Concorde' is only | |
185 | rendered as 'Concorde'. | |
186 | - The index for road names only contains the important part of the | |
187 | name. You can search for road name Conc to find road names like 'Rue de | |
188 | la Concorde'. However, a search for 'Rue' will not list 'Rue de la | |
189 | Concorde' or 'Rue du Moulin'. It may list 'Rueben Brookins Road' if | |
190 | that is in the map. Only MapSource shows a corresponding hint. | |
191 | ||
192 | ||
193 | Another effect is that the index is smaller. | |
194 | See comments in the sample roadNameConfig.txt for further details. | |
195 | ||
161 | 196 | --mdr7-excl=name[,name...] |
162 | Specify words which should omitted from the road index. | |
163 | It was added before option road-name-config and is probably no longer needed. | |
164 | Example usage: --x-mdr7-excl="Road, Street, Straße, Weg" | |
165 | ||
197 | Specify words which should be omitted from the road index. It was added | |
198 | before option road-name-config and is probably no longer needed. | |
199 | Example usage: --x-mdr7-excl="Road, Street, Weg" | |
200 | ||
166 | 201 | --mdr7-del=name[,name...] |
167 | Use this option if your style adds strings to the labels of roads which you | |
168 | want to see in the map but which should not appear in the result list | |
169 | of a road name / address search. The list is used like this: | |
170 | For each road label, mkgmap searches for the last blank. If one is found, it checks | |
171 | if the word after it appears in the given list. If so, the word is removed | |
172 | and the search is repeated. The remaining string is used to create the index. | |
173 | Example: Assume your style adds surface attributes like 'pav.' or 'unp.' to a road | |
174 | label. You can use --mdr7-del="pav.,unp." to remove these suffixes from the index. | |
175 | ||
202 | Use this option if your style adds strings to the labels of roads which you | |
203 | want to see in the map but which should not appear in the result list of a | |
204 | road name / address search. The list is used like this: For each road | |
205 | label, mkgmap searches for the last blank. If one is found, it checks | |
206 | whether the word after it appears in the given list. If so, the word is | |
207 | removed and the search is repeated. The remaining string is used to create | |
208 | the index. | |
209 | Example: Assume your style adds surface attributes like 'pav.' or 'unp.' to | |
210 | a road label. You can use --mdr7-del="pav.,unp." to remove these suffixes | |
211 | from the index. | |
212 | ||
176 | 213 | --poi-excl-index=poi[-poi][,poi[-poi]...] |
177 | By default, mkgmap indexes the following POI types with a non-empty label: | |
178 | - 0x00 .. 0x0f (cities, sub type 0, type <= 0xf) | |
179 | - 0x2axx..0x30xx (Food & Drink, Lodging, ...) | |
180 | - 0x28xx (no category ?) | |
181 | - 0x64xx .. 0x66xx (attractions) | |
182 | This option allows the exclusion of POI types from the index. | |
183 | The excluded types are not indexed but may still be searchable on a device, | |
184 | as some devices seem to ignore most of the index, e.g. an Oregon 600 with | |
185 | firmware 5.00 only seems to use it for city search. | |
186 | If your device finds a POI name like 'Planet' when you search for 'Net', | |
187 | it doesn't use the index because the index created by mkgmap cannot help for | |
188 | that search. | |
189 | So, this option may help when you care about the size of the index or the | |
190 | memory that is needed to calculate it. | |
191 | The option expects a comma separated list of types or type ranges. A range is | |
192 | given with from-type-to-type, e.g. 0x6400-0x6405. First and last type are both | |
193 | excluded. A range can span multiple types, e.g. 0x6400-0x661f. | |
194 | Examples for usage: | |
195 | - Assume your style adds a POI with type 0x2800 for each addr:housenumber. | |
196 | It is not useful to index those numbers, so you can use | |
197 | --poi-excl-index=0x2800 | |
198 | to exclude this. | |
199 | - For the mentioned Oregon you may use --poi-excl-index=0x2a00-0x661f | |
200 | to reduce the index size. | |
214 | By default, mkgmap indexes the following POI types with a non-empty label: | |
215 | - 0x00 .. 0x0f (cities, sub type 0, type <= 0xf) | |
216 | - 0x2axx..0x30xx (Food & Drink, Lodging, ...) | |
217 | - 0x28xx (no category ?) | |
218 | - 0x64xx .. 0x66xx (attractions) | |
219 | This option allows the exclusion of POI types from the index. The excluded | |
220 | types are not indexed, but may still be searchable on a device, as some | |
221 | devices seem to ignore most of the index, e.g. an Oregon 600 with firmware | |
222 | 5.00 only seems to use it for city search. If your device finds a POI name | |
223 | like 'Planet' when you search for 'Net', it doesn't use the index because | |
224 | the index created by mkgmap cannot help for that search. | |
225 | ||
226 | ||
227 | So, this option may help when you care about the size of the index or the | |
228 | memory that is needed to calculate it. The option expects a comma separated | |
229 | list of types or type ranges. A range is given with from-type-to-type, e.g. | |
230 | 0x6400-0x6405. First and last type are both excluded. A range can span | |
231 | multiple types, e.g. 0x6400-0x661f. | |
232 | Examples for usage: | |
233 | - Assume your style adds a POI with type 0x2800 for each | |
234 | addr:housenumber. It is not useful to index those numbers, so you can | |
235 | use --poi-excl-index=0x2800 to exclude this. | |
236 | - For the aforementioned Oregon you may use | |
237 | --poi-excl-index=0x2a00-0x661f to reduce the index size. | |
201 | 238 | |
202 | 239 | --bounds=directory|zipfile |
203 | Specify a directory or zip file containing the preprocessed bounds files. | |
204 | Bounds files in a zip file must be located in the zip file's root directory. | |
205 | ||
206 | The preprocessed boundaries are used to add special tags to all elements | |
207 | (points, lines and polygons) containing the elements location information. | |
208 | The style file can be used to assign the address tags mkgmap:country, | |
209 | mkgmap:region etc. using these values. | |
210 | ||
211 | The following special tags are added: | |
212 | mkgmap:admin_level2 : Name of the admin_level=2 boundary | |
213 | mkgmap:admin_level3 : Name of the admin_level=3 boundary | |
214 | .. | |
215 | mkgmap:admin_level11 | |
216 | mkgmap:postcode : the postal_code value | |
217 | ||
218 | Preprocessed bounds can be created with the following command: | |
219 | java -cp mkgmap.jar | |
220 | uk.me.parabola.mkgmap.reader.osm.boundary.BoundaryPreprocessor | |
221 | <inputfile> <boundsdir> | |
222 | ||
223 | The input file must contain the boundaries that should be preprocessed. | |
224 | It can have OSM, PBF or O5M file format. It is recommended that it | |
225 | contains the boundary data only to avoid very high memory usage. | |
226 | The boundsdir gives the directory where the processed files are stored. | |
227 | This directory can be used as --bounds parameter with mkgmap. | |
240 | Specify a directory or zip file containing the pre-processed bounds files. | |
241 | Bounds files in a zip file must be located in the zip file's root | |
242 | directory. | |
243 | ||
244 | The pre-processed boundaries are used to add special tags to all elements | |
245 | (points, lines and polygons) containing the elements location information. | |
246 | The style file can be used to assign the address tags mkgmap:country, | |
247 | mkgmap:region etc. using these values. | |
248 | ||
249 | The following special tags are added: | |
250 | ::mkgmap:admin_level2 : Name of the admin_level=2 boundary | |
251 | mkgmap:admin_level3 : Name of the admin_level=3 boundary | |
252 | .. | |
253 | mkgmap:admin_level11 | |
254 | mkgmap:postcode : the postal_code value | |
255 | Pre-processed bounds can be created with the following command: | |
256 | java -cp mkgmap.jar | |
257 | uk.me.parabola.mkgmap.reader.osm.boundary.BoundaryPreprocessor | |
258 | <inputfile> <boundsdir> | |
228 | 259 | |
260 | The input file must contain the boundaries that should be pre-processed. It | |
261 | can have OSM, PBF or O5M file format. It is recommended that it contains | |
262 | the boundary data only to avoid very high memory usage. The boundsdir gives | |
263 | the directory where the processed files are stored. This directory can be | |
264 | used as --bounds parameter with mkgmap. | |
265 | ||
229 | 266 | --location-autofill=[option1,[option2]] |
230 | Controls how the address fields for country, region, city and zip info | |
231 | are gathered automatically if the fields are not set by using the special | |
232 | mkgmap address tags (e.g. mkgmap:city - see option index). | |
233 | Warning: automatic assignment of address fields is somehow a best guess. | |
234 | ||
235 | is_in The is_in tag is analyzed for country and region information. | |
236 | ||
237 | nearest The city/hamlet points that are closest to the element are used | |
238 | to assign the missing address fields. Beware that cities located | |
239 | in the same tile are used only. So the results close to a tile | |
240 | border have less quality. | |
267 | Controls how the address fields for country, region, city and zip info are | |
268 | gathered automatically if the fields are not set by using the special | |
269 | mkgmap address tags (e.g. mkgmap:city - see option index). Warning: | |
270 | automatic assignment of address fields is somehow a best guess. | |
271 | is_in | |
272 | The is_in tag is analysed for country and region information. | |
273 | ||
274 | ||
275 | nearest | |
276 | The city/hamlet points that are closest to the element are used to | |
277 | assign the missing address fields. Beware that cities located in the | |
278 | same tile are used only. So the results close to a tile border have | |
279 | less quality. | |
241 | 280 | |
242 | 281 | --housenumbers |
243 | Enables house number search for OSM input files. | |
244 | All nodes and polygons having addr:housenumber set are matched | |
245 | to streets. A match between a house number element and a street is created if | |
246 | the street is located within a radius of 150m and the addr:street tag value of | |
247 | the house number element equals the mgkmap:street tag value of the street. | |
248 | The mkgmap:street tag must be added to the street in the style file. | |
249 | For optimal results, the tags mkgmap:city and mkgmap:postal_code should be | |
250 | set for the housenumber element. If a street connects two or more cities | |
251 | this allows to find all addresses along the road, even they have the same | |
252 | number. | |
253 | Example for given street name: | |
254 | Node - addr:street=Main Street addr:housenumber=2 | |
255 | Way 1 - name=Main Street | |
256 | Way 2 - name=Main Street, mkgmap:street=Main Street | |
257 | Way 3 - mkgmap:street=Mainstreet | |
258 | Way 4 - name=Main Street [A504] | |
259 | The node matches to Way 2. It has mkgmap:street set with a value equal to | |
260 | the addr:street tag value of the house number node. | |
261 | If the street is not given with addr:housenumber, mkgmap uses heuristics | |
262 | to find the best match. | |
263 | Tells mkgmap to write NET data. If you specify this option, you do not need | |
264 | to specify --net and option -no-net is ignored. | |
265 | ||
266 | Overview map options: | |
282 | Enables house number search for OSM input files. All nodes and polygons | |
283 | having addr:housenumber set are matched to streets. A match between a house | |
284 | number element and a street is created if the street is located within a | |
285 | radius of 150m and the addr:street tag value of the house number element | |
286 | equals the mgkmap:street tag value of the street. The mkgmap:street tag | |
287 | must be added to the street in the style file. For optimal results, the | |
288 | tags mkgmap:city and mkgmap:postal_code should be set for the housenumber | |
289 | element. If a street connects two or more cities this allows all addresses | |
290 | along the road to be found, even when they have the same number. | |
291 | Example for given street name: | |
292 | Node - addr:street=Main Street addr:housenumber=2 | |
293 | Way 1 - name=Main Street | |
294 | Way 2 - name=Main Street, mkgmap:street=Main Street | |
295 | Way 3 - mkgmap:street=Mainstreet | |
296 | Way 4 - name=Main Street [A504] | |
297 | The node matches to Way 2. It has mkgmap:street set with a value equal to | |
298 | the addr:street tag value of the house number node. | |
299 | ||
300 | If the street is not given with addr:housenumber, mkgmap uses heuristics | |
301 | to find the best match. | |
302 | ||
303 | Tells mkgmap to write NET data. If you specify this option, you do not | |
304 | need to specify --net and option -no-net is ignored. | |
305 | ||
306 | === Overview map options === | |
307 | ||
267 | 308 | --overview-mapname=name |
268 | If --tdbfile is enabled, this gives the name of the overview | |
269 | .img and .tdb files. The default map name is osmmap. | |
309 | If --tdbfile is enabled, this gives the name of the overview .img and .tdb | |
310 | files. The default map name is osmmap. | |
270 | 311 | |
271 | 312 | --overview-mapnumber=8 digit number |
272 | If --tdbfile is enabled, this gives the internal 8 digit | |
273 | number used in the overview map and tdb file. The default | |
274 | number is 63240000. | |
313 | If --tdbfile is enabled, this gives the internal 8 digit number used in the | |
314 | overview map and tdb file. The default number is 63240000. | |
275 | 315 | |
276 | 316 | --overview-levels=level:resolution[,level:resolution...] |
277 | Like levels, specifies additional levels that are to be written to the | |
278 | overview map. Counting of the levels should continue. Up to 8 additional | |
279 | levels may be specified, but the lowest usable resolution with MapSource | |
280 | seems to be 11. The hard coded default is empty. | |
281 | See also option --overview-dem-dist. | |
317 | Like levels, specifies additional levels that are to be written to the | |
318 | overview map. Counting of the levels should continue. Up to 8 additional | |
319 | levels may be specified, but the lowest usable resolution with MapSource | |
320 | seems to be 11. The hard coded default is empty. | |
321 | See also option --overview-dem-dist. | |
282 | 322 | |
283 | 323 | --remove-ovm-work-files |
284 | If overview-levels is used, mkgmap creates one additional file | |
285 | with the prefix ovm_ for each map (*.img) file. | |
286 | These files are used to create the overview map. | |
287 | With option --remove-ovm-work-files=true the files are removed | |
288 | after the overview map was created. The default is to keep the files. | |
289 | ||
290 | Style options: | |
324 | If overview-levels is used, mkgmap creates one additional file with the | |
325 | prefix ovm_ for each map (*.img) file. These files are used to create the | |
326 | overview map. With option --remove-ovm-work-files=true the files are | |
327 | removed after the overview map was created. The default is to keep the | |
328 | files. | |
329 | ||
330 | === Style options === | |
331 | ||
291 | 332 | --style-file=filename |
292 | Specify an external file to obtain the style from. "file" can | |
293 | be a directory containing files such as info, lines, options | |
294 | (see resources/styles/default for an example). The directory | |
295 | path must be absolute or relative to the current working | |
296 | directory when mkgmap is invoked. | |
297 | ||
298 | The file can be a zip file containing the files instead of a | |
299 | directory. | |
300 | ||
301 | The files can be at the top level or contained in a folder within | |
302 | the zip file. If the zip file contains more than one top level | |
303 | folder then each folder is the name of a style that can be selected | |
304 | with the --style option. | |
305 | ||
306 | The argument can also be a URL that specifies the location of a | |
307 | style file. | |
333 | Specify an external file to obtain the style from. "file" can be a | |
334 | directory containing files such as info, lines, options (see | |
335 | resources/styles/default for an example). The directory path must be | |
336 | absolute or relative to the current working directory when mkgmap is | |
337 | invoked. | |
338 | ||
339 | The file can be a zip file containing the files instead of a directory. | |
340 | ||
341 | The files can be at the top level or contained in a folder within the zip | |
342 | file. If the zip file contains more than one top level folder then each | |
343 | folder is the name of a style that can be selected with the --style option. | |
344 | ||
345 | The argument can also be a URL that specifies the location of a style | |
346 | file. | |
308 | 347 | |
309 | 348 | --style=name |
310 | Specify a style name. Must be used if --style-file points to a | |
311 | directory or zip file containing multiple styles. If --style-file | |
312 | is not used, it selects one of the built-in styles. | |
349 | Specify a style name. Must be used if --style-file points to a directory or | |
350 | zip file containing multiple styles. If --style-file is not used, it | |
351 | selects one of the built-in styles. | |
313 | 352 | |
314 | 353 | --style-option=tag[=value][;tag[=value]...] |
315 | Provide a semicolon separated list of tags which can be used in the style. | |
316 | The intended use is to make a single style more flexible, e.g. | |
317 | you may want to use a slightly different set of rules for a map of | |
318 | a whole continent. The tags given will be prefixed with "mkgmap:option:". | |
319 | If no value is provided the default "true" is used. | |
320 | This option allows to use rules like | |
321 | mkgmap:option:light=true & landuse=farmland {remove landuse} | |
322 | Example: -- style-option=light;routing=car | |
323 | will add the tags mkgmap:option:light=true and mkgmap:option:routing=car | |
324 | to each element before style processing happens. | |
354 | Provide a semicolon separated list of tags which can be used in the style. | |
355 | The intended use is to make a single style more flexible, e.g. you may want | |
356 | to use a slightly different set of rules for a map of a whole continent. | |
357 | The tags given will be prefixed with "mkgmap:option:". If no value is | |
358 | provided the default "true" is used. This option allows to use rules like | |
359 | mkgmap:option:light=true & landuse=farmland {remove landuse} Example: -- | |
360 | style-option=light;routing=car will add the tags mkgmap:option:light=true | |
361 | and mkgmap:option:routing=car to each element before style processing | |
362 | happens. | |
325 | 363 | |
326 | 364 | --list-styles |
327 | List the available styles. If this option is preceded by a style-file | |
328 | option then it lists the styles available within that file. | |
365 | List the available styles. If this option is preceded by a style-file | |
366 | option then it lists the styles available within that file. | |
329 | 367 | |
330 | 368 | --check-styles |
331 | Perform some checks on the available styles. If this option is | |
332 | preceded by a style-file option then it checks the styles | |
333 | available within that file. If it is also preceded by the style | |
334 | option it will only check that style. | |
369 | Perform some checks on the available styles. If this option is preceded by | |
370 | a style-file option then it checks the styles available within that file. | |
371 | If it is also preceded by the style option it will only check that style. | |
335 | 372 | |
336 | 373 | --levels=level:resolution[,level:resolution...] |
337 | Change the way that the levels on the map correspond to the zoom | |
338 | levels in the device. See customisation help. The hard coded default is: | |
339 | "0:24, 1:22, 2:20, 3:18, 4:16", although each style can have | |
340 | its own default. The default style for example overwrites it with | |
341 | "0:24, 1:22, 2:20, 3:18". Up to 8 levels may be specified. | |
374 | Change the way that the levels on the map correspond to the zoom levels in | |
375 | the device. See customisation help. The hard coded default is: "0:24, 1:22, | |
376 | 2:20, 3:18, 4:16", although each style can have its own default. The | |
377 | default style for example overwrites it with "0:24, 1:22, 2:20, 3:18". Up | |
378 | to 8 levels may be specified. | |
342 | 379 | |
343 | 380 | --name-tag-list=tag[,tag...] |
344 | Specify the tag that will be used to supply the name. Useful for | |
345 | language variations. You can supply a list of tags and the first one | |
346 | found will be used. e.g. --name-tag-list=name:en,int_name,name | |
347 | ||
348 | Product description options: | |
381 | Specify the tag that will be used to supply the name. Useful for language | |
382 | variations. You can supply a list of tags and the first one found will be | |
383 | used. e.g. --name-tag-list=name:en,int_name,name | |
384 | ||
385 | === Product description options === | |
349 | 386 | |
350 | 387 | --family-id=integer |
351 | This is an integer that identifies a family of products. | |
352 | Range: [1..9999] | |
353 | Mkgmap default: 6324 | |
388 | This is an integer that identifies a family of products. Range: [1..9999] | |
389 | Default: 6324 | |
354 | 390 | |
355 | 391 | --family-name=name |
356 | If you build several maps, this option describes the | |
357 | family name of all of your maps. Garmin will display this | |
358 | in the map selection screen. | |
359 | Example: --family-name="OpenStreetmap mkgmap XL 2019" | |
392 | If you build several maps, this option describes the family name of all of | |
393 | your maps. Garmin will display this in the map selection screen. | |
394 | ||
395 | Example: --family-name="OpenStreetmap mkgmap XL 2019" | |
360 | 396 | |
361 | 397 | --product-id=integer |
362 | This is an integer that identifies a product within a family. | |
363 | It is often just 1, which is the default. | |
398 | This is an integer that identifies a product within a family. It is often | |
399 | just 1, which is the default. | |
364 | 400 | |
365 | 401 | --product-version=integer |
366 | The version of the product. Default value is 100 which means version 1.00. | |
402 | The version of the product. Default value is 100 which means version 1.00. | |
367 | 403 | |
368 | 404 | --series-name=name |
369 | This name will be displayed in MapSource in the map selection | |
370 | drop-down. The default is "OSM map". | |
405 | This name will be displayed in MapSource in the map selection drop-down. | |
406 | The default is "OSM map". | |
371 | 407 | |
372 | 408 | --area-name=name |
373 | Area name is displayed on Garmin units (or at least on eTrex) as the second | |
374 | part of the mapname in the list of the individual maps. | |
409 | Area name is displayed on Garmin units (or at least on eTrex) as the second | |
410 | part of the mapname in the list of the individual maps. | |
375 | 411 | |
376 | 412 | --copyright-message=text |
377 | Specify a copyright message for files that do not contain one. | |
413 | Specify a copyright message for files that do not contain one. | |
378 | 414 | |
379 | 415 | --copyright-file=filename |
380 | Specify copyright messages from a file. | |
381 | Note that the first copyright message is not displayed on a device, but is | |
382 | shown in BaseCamp. The copyright file must include at least two lines and | |
383 | be UTF-8 encoded. The following symbols will be substituted by mkgmap: | |
384 | $MKGMAP_VERSION$, $JAVA_VERSION$, $YEAR$, $LONG_DATE$, $SHORT_DATE$ and $TIME$. | |
385 | Time and date substitutions use the local date and time formats. | |
416 | Specify copyright messages from a file. Note that the first copyright | |
417 | message is not displayed on a device, but is shown in BaseCamp. The | |
418 | copyright file must include at least two lines and be UTF-8 encoded. The | |
419 | following symbols will be substituted by mkgmap: $MKGMAP_VERSION$, | |
420 | $JAVA_VERSION$, $YEAR$, $LONG_DATE$, $SHORT_DATE$ and $TIME$. Time and date | |
421 | substitutions use the local date and time formats. | |
386 | 422 | |
387 | 423 | --license-file=filename |
388 | Specify a file which content will be added as license. | |
389 | The license file must be UTF-8 encoded. | |
390 | The following symbols will be substituted by mkgmap: | |
391 | $MKGMAP_VERSION$, $JAVA_VERSION$, $YEAR$, $LONG_DATE$, $SHORT_DATE$ and $TIME$. | |
392 | Time and date substitutions use the local date and time formats. | |
393 | All entries of all maps will be merged in the overview map. | |
394 | ||
395 | Optimization options: | |
424 | Specify a file which content will be added as license. The license file | |
425 | must be UTF-8 encoded. The following symbols will be substituted by mkgmap: | |
426 | $MKGMAP_VERSION$, $JAVA_VERSION$, $YEAR$, $LONG_DATE$, $SHORT_DATE$ and | |
427 | $TIME$. Time and date substitutions use the local date and time formats. | |
428 | All entries of all maps will be merged in the overview map. | |
429 | ||
430 | === Optimization options === | |
396 | 431 | |
397 | 432 | --reduce-point-density=NUM |
398 | Simplifies the ways with the Douglas Peucker algorithm. | |
399 | NUM is the maximal allowed error distance, by which the resulting | |
400 | way may differ from the original one. | |
401 | This distance gets shifted with lower zoom levels. | |
402 | Recommended setting is 4, this should lead to only small differences | |
403 | (Default is 2.6, which should lead to invisible changes) | |
433 | Simplifies the ways with the Douglas Peucker algorithm. NUM is the maximal | |
434 | allowed error distance, by which the resulting way may differ from the | |
435 | original one. This distance gets shifted with lower zoom levels. | |
436 | Recommended setting is 4, this should lead to only small differences | |
437 | (Default is 2.6, which should lead to invisible changes) | |
404 | 438 | |
405 | 439 | --reduce-point-density-polygon=NUM |
406 | Allows you to set the maximal allowed error distance for the DP algorithm | |
407 | to be applied against polygons. Recommended setting is 8. | |
440 | Allows you to set the maximal allowed error distance for the DP algorithm | |
441 | to be applied against polygons. Recommended setting is 8. | |
408 | 442 | |
409 | 443 | --merge-lines |
410 | Try to merge lines. This helps the simplify filter to straighten out | |
411 | longer chunks at lower zoom levels. Decreases file size more. | |
412 | Increases paint speed at low zoom levels. | |
413 | Default is enabled, use --no-merge-lines to disable. | |
414 | ||
444 | Try to merge lines. This helps the simplify filter to straighten out longer | |
445 | chunks at lower zoom levels. Decreases file size more. Increases paint | |
446 | speed at low zoom levels. Default is enabled, use --no-merge-lines to | |
447 | disable. | |
448 | ||
415 | 449 | --min-size-polygon=NUM |
416 | Removes all polygons smaller than NUM from the map. | |
417 | This reduces map size and speeds up redrawing of maps. | |
418 | Recommended value is 8 to 15, default is 8. | |
419 | See also polygon-size-limits. | |
450 | Removes all polygons smaller than NUM from the map. This reduces map size | |
451 | and speeds up redrawing of maps. Recommended value is 8 to 15, default is | |
452 | 8. | |
453 | See also polygon-size-limits. | |
420 | 454 | |
421 | 455 | --polygon-size-limits=resolution:value[,resolution:value...] |
422 | Allows you to specify different min-size-polygon values for each resolution. | |
423 | Sample: | |
424 | --polygon-size-limits="24:12, 18:10, 16:8, 14:4, 12:2, 11:0" | |
425 | If a resolution is not given, mkgmap uses the value for the next higher | |
426 | one. For the given sample, resolutions 19 to 24 will use value 12, | |
427 | resolution 17 and 18 will use 10, and so on. | |
428 | Value 0 means to not apply the size filter. | |
429 | Note that in resolution 24 the filter is not used. | |
430 | The following options are equivalent: | |
431 | --min-size-polygon=12 | |
432 | --polygon-size-limits=24:12 | |
433 | --polygon-size-limits=24:0,23:12 | |
434 | --polygon-size-limits=24:0,23:12,22:12,21:12,16:12 | |
435 | ||
436 | Hill Shading (DEM) options: | |
437 | Hill Shading is rendered by PC programs (MapSource or BaseCamp) or GPS devices | |
438 | when the map includes a Digital Elevation Model (DEM). Use the following options | |
439 | to add a DEM to the map and control its characteristics. DEM creation requires | |
440 | files containing height information for the area covered by the map, the so | |
441 | called hgt files, which typically cover 1 degree latitude * 1 degree longitude | |
442 | and are named by the coordinates of their bottom left corner (eg. N53E009). They | |
443 | contain height information in a grid of points. Typical hgt files contain either | |
444 | 1'' or 3'' data. 3'' files have 1201 * 1201 points, which gives | |
445 | 2 * 1201 * 1201 = 2.884.802 bytes. 1'' files have 3601 * 3601 points, which gives | |
446 | 2 * 3601 * 3601 = 25.934.402 bytes. Other files are supported as long as the | |
447 | formular sqrt(size/2) gives an integer value. | |
456 | Allows you to specify different min-size-polygon values for each | |
457 | resolution. Sample: | |
458 | --polygon-size-limits="24:12, 18:10, 16:8, 14:4, 12:2, 11:0" | |
459 | If a resolution is not given, mkgmap uses the value for the next higher | |
460 | one. For the given sample, resolutions 19 to 24 will use value 12, | |
461 | resolution 17 and 18 will use 10, and so on. Value 0 means to not apply the | |
462 | size filter. Note that in resolution 24 the filter is not used. The | |
463 | following options are equivalent: | |
464 | --min-size-polygon=12 | |
465 | --polygon-size-limits=24:12 | |
466 | --polygon-size-limits=24:0,23:12 | |
467 | --polygon-size-limits=24:0,23:12,22:12,21:12,16:12 | |
468 | ||
469 | === Hill Shading (DEM) options === | |
470 | ||
471 | Hill Shading is rendered by PC programs (MapSource or BaseCamp) or GPS | |
472 | devices when the map includes a Digital Elevation Model (DEM). Use the | |
473 | following options to add a DEM to the map and control its characteristics. | |
474 | DEM creation requires files containing height information for the area | |
475 | covered by the map, the so called hgt files, which typically cover 1 degree | |
476 | latitude * 1 degree longitude and are named by the coordinates of their | |
477 | bottom left corner (e.g. N53E009). They contain height information in a | |
478 | grid of points. Typical hgt files contain either 1'' or 3'' data. 3'' files | |
479 | have 1201 * 1201 points, which gives 2 * 1201 * 1201 = 2.884.802 bytes. 1'' | |
480 | files have 3601 * 3601 points, which gives 2 * 3601 * 3601 = 25.934.402 | |
481 | bytes. Other files are supported as long as the formula sqrt(size/2) gives | |
482 | an integer value. | |
448 | 483 | |
449 | 484 | --dem=path[,path...] |
450 | The option expects a comma separated list of paths to directories or zip | |
451 | files containing *.hgt files. Directories are searched for *.hgt files and | |
452 | also for *.hgt.zip and *.zip files. | |
453 | The list is searched in the given order, so if you want to use 1'' files | |
454 | make sure that they are found first. There are different sources for *.hgt | |
455 | files, some have so called voids which are areas without data. | |
456 | Those should be avoided. | |
457 | ||
485 | The option expects a comma separated list of paths to directories or zip | |
486 | files containing *.hgt files. Directories are searched for *.hgt files and | |
487 | also for *.hgt.zip and *.zip files. | |
488 | The list is searched in the given order, so if you want to use 1'' files | |
489 | make sure that they are found first. There are different sources for *.hgt | |
490 | files, some have so called voids which are areas without data. Those should | |
491 | be avoided. | |
492 | ||
458 | 493 | --dem-dists=number[,number...] |
459 | If given, the option specifies the resolution(s) or zoom level for the DEM | |
460 | data. If not given, mkgmap tries to determine a reasonable value based on | |
461 | the resolution found in the *.hgt files. For desktop programs like MapSource or | |
462 | Basecamp you only need one zoom level, for GPS devices you need one for each | |
463 | resolution given with the --levels option. The actual values are given as | |
464 | distance between two DEM points and should be a multiple or submultiple of | |
465 | the distance between two points in the hgt file, that is 3314 for 1'' and 9942 | |
466 | for 3''. Higher distances mean lower resolution and thus fewer bytes in the | |
467 | map. Reasonable values for the highest resolution should not be much smaller | |
468 | than 50% hgt resolution, that is somewhere between 1648 and 5520 for 1'' hgt | |
469 | input files (3312 is often used), and 5520 to 9942 for 3'' hgt input files. | |
470 | Example which should work with levels="0:24, 1:22, 2:20, 3:18": | |
471 | --dem-dists=3312,13248,26512,53024 | |
472 | This was found in a Garmin Demo map for transalpin data created 2009. | |
494 | If given, the option specifies the resolution(s) or zoom level for the DEM | |
495 | data. If not given, mkgmap tries to determine a reasonable value based on | |
496 | the resolution found in the *.hgt files. For desktop programs like | |
497 | MapSource or Basecamp you only need one zoom level, for GPS devices you | |
498 | need one for each resolution given with the --levels option. The actual | |
499 | values are given as distance between two DEM points and should be a | |
500 | multiple or submultiple of the distance between two points in the hgt file, | |
501 | that is 3314 for 1'' and 9942 for 3''. Higher distances mean lower | |
502 | resolution and thus fewer bytes in the map. Reasonable values for the | |
503 | highest resolution should not be much smaller than 50% hgt resolution, that | |
504 | is somewhere between 1648 and 5520 for 1'' hgt input files (3312 is often | |
505 | used), and 5520 to 9942 for 3'' hgt input files. | |
506 | Example which should work with levels="0:24, 1:22, 2:20, 3:18": | |
507 | --dem-dists=3312,13248,26512,53024 | |
508 | This was found in a Garmin Demo map for transalpin data created 2009. | |
473 | 509 | |
474 | 510 | --dem-interpolation=auto|bicubic|bilinear |
475 | Use this option to specify the method that is used to interpolate | |
476 | data from hgt raster to the DEM raster. The value bicubic gives the | |
477 | highest precision but is slower, bilinear is faster but less precise, | |
478 | it tends to smooth the profile and thus also reduces DEM size compared to | |
479 | bicubic. The value auto means that bicubic is used where is seems | |
480 | appropriate according to hgt resolution and dem-dist value, else bilinear | |
481 | is used. If not given, the default is auto. | |
511 | Use this option to specify the method that is used to interpolate data from | |
512 | hgt raster to the DEM raster. The value bicubic gives the highest precision | |
513 | but is slower, bilinear is faster but less precise, it tends to smooth the | |
514 | profile and thus also reduces DEM size compared to bicubic. The value auto | |
515 | means that bicubic is used where is seems appropriate according to hgt | |
516 | resolution and dem-dist value, else bilinear is used. The default is auto. | |
482 | 517 | |
483 | 518 | --dem-poly=filename |
484 | If given, the filename should point to a *.poly file in osmosis polygon | |
485 | file format. The polygon described in the file is used to determine the area | |
486 | for which DEM data should be added to the map. If not given, the DEM data | |
487 | will cover the full tile area. | |
488 | ||
519 | If given, the filename should point to a *.poly file in osmosis polygon | |
520 | file format. The polygon described in the file is used to determine the | |
521 | area for which DEM data should be added to the map. If not given, the DEM | |
522 | data will cover the full tile area. | |
523 | ||
489 | 524 | --overview-dem-dist=integer |
490 | If given, the option specifies the resolution(s) for the DEM data in the | |
491 | overview map. If not given or 0, mkgmap will not add DEM to the | |
492 | overview map. Reasonable values depend on the size of the area and the | |
493 | lowest resolution used for the single tiles, good compromises are | |
494 | somewhere between 55000 and 276160. | |
495 | ||
496 | Miscellaneous options: | |
525 | If given, the option specifies the resolution(s) for the DEM data in the | |
526 | overview map. If not given or 0, mkgmap will not add DEM to the overview | |
527 | map. Reasonable values depend on the size of the area and the lowest | |
528 | resolution used for the single tiles, good compromises are somewhere | |
529 | between 55000 and 276160. | |
530 | ||
531 | === Miscellaneous options === | |
497 | 532 | |
498 | 533 | --max-jobs[=integer] |
499 | Specify the number of threads to be used for concurrent processing. | |
500 | Increasing max-jobs will reduce the execution time, providing sufficient | |
501 | memory is available and the value is not greater than the number of cores | |
502 | in the CPU. If no value is specified, the limit is set to the number of CPU | |
503 | cores. The default is for the limit to be automatically set to a reasonable | |
504 | value based on the amount of memory allocated to the Java runtime and the | |
505 | amount used in processing the first tile. To optimise mkgmap to use all | |
506 | available CPU cores, you may need to use the Java -Xmx option to increase | |
507 | the amount of available heap storage. | |
534 | Specify the number of threads to be used for concurrent processing. | |
535 | Increasing max-jobs will reduce the execution time, providing sufficient | |
536 | memory is available and the value is not greater than the number of cores | |
537 | in the CPU. If no value is specified, the limit is set to the number of CPU | |
538 | cores. The default is for the limit to be automatically set to a reasonable | |
539 | value based on the amount of memory allocated to the Java runtime and the | |
540 | amount used in processing the first tile. To optimise mkgmap to use all | |
541 | available CPU cores, you may need to use the Java -Xmx option to increase | |
542 | the amount of available heap storage. | |
508 | 543 | |
509 | 544 | --keep-going |
510 | Don't quit whole application if an exception occurs while | |
511 | processing a map - continue to process the other maps. | |
545 | Don't quit whole application if an exception occurs while processing a map | |
546 | - continue to process the other maps. | |
512 | 547 | |
513 | 548 | --block-size=integer |
514 | Changes the block size that is used in the generated map. This | |
515 | option is not usually needed, but sometimes an error message | |
516 | will ask you to try a value for this option. | |
549 | Changes the block size that is used in the generated map. This option is | |
550 | not usually needed, but sometimes an error message will ask you to try a | |
551 | value for this option. | |
517 | 552 | |
518 | 553 | --net |
519 | Tells mkgmap to write NET data, which is needed for address search | |
520 | and routing. Use this option if you want address search, but do | |
521 | not need a map that supports routing or house number search. | |
522 | ||
554 | Tells mkgmap to write NET data, which is needed for address search and | |
555 | routing. Use this option if you want address search, but do not need a map | |
556 | that supports routing or house number search. | |
557 | ||
558 | ||
523 | 559 | --route |
524 | Tells mkgmap to write NET and NOD data, which are needed in maps | |
525 | that support routing. If you specify this option, you do not need | |
526 | to specify --net and option -no-net is ignored. | |
560 | Tells mkgmap to write NET and NOD data, which are needed in maps that | |
561 | support routing. If you specify this option, you do not need to specify | |
562 | --net and --no-net is ignored. | |
563 | ||
564 | --add-boundary-nodes-at-admin-boundaries=NUM | |
565 | This option controls how mkgmap calculates special routing nodes which are | |
566 | needed by Garmin software to allow routing between different map tiles. | |
567 | These nodes are written to section 3 and 4 in the NOD file. When a road | |
568 | crosses the tile boundary (bbox), the road is split at this point and such | |
569 | a special node is written. This allows routing between one set of tiles | |
570 | produced by splitter.jar. However, if you create a map from different sets | |
571 | of tiles, those tiles are likely to overlap. For the overlapping tiles, | |
572 | none of the entries in NOD3 match and thus routing across tile border | |
573 | doesn't work when the route is not fully covered by one of the tiles. The | |
574 | option tells mkgmap to add special nodes wherever a road touches or crosses | |
575 | an administrative boundary. The NUM parameter specifies a filter for the | |
576 | admin_level. Boundaries with a higher admin_level value are ignored. The | |
577 | default value is 2 (country borders). Another reasonable value might be 4. | |
578 | A value less or equal to 0 tells mkgmap to ignore intersections at | |
579 | administrative boundaries. | |
527 | 580 | |
528 | 581 | --drive-on=left|right|detect|detect,left|detect,right |
529 | Explicitly specify which side of the road vehicles are | |
530 | expected to drive on. | |
531 | If the first option is detect, the program tries | |
532 | to find out the proper flag. If that detection | |
533 | fails, the second value is used (or right if none is given). | |
534 | With OSM data as input, the detection tries to find out | |
535 | the country each road is in and compares the number | |
536 | of drive-on-left roads with the rest. | |
537 | Use the --bounds option to make sure that the detection | |
538 | finds the correct country. | |
539 | ||
540 | --add-boundary-nodes-at-admin-boundaries=NUM | |
541 | This option controls how mkgmap calculates special routing nodes which | |
542 | are needed by Garmin software to allow routing between different map tiles. | |
543 | These nodes are written to section 3 and 4 in the NOD file. | |
544 | When a road crosses the tile boundary (bbox), the road is split at this | |
545 | point and such a special node is written. This allows routing between | |
546 | one set of tiles produced by splitter.jar. However, if you create a map | |
547 | from different sets of tiles, those tiles are likely to overlap. | |
548 | For the overlapping tiles, none of the entries in NOD3 match and thus | |
549 | routing across tile border doesn't work when the route is not fully | |
550 | covered by one of the tiles. | |
551 | The option tells mkgmap to add special nodes whereever a road touches or | |
552 | crosses an administratve boundary. The NUM parameter specifies a filter | |
553 | for the admin_level. Boundaries with a higher admin_level value are ignored. | |
554 | The default value is 2 (country borders). Another reasonable value might | |
555 | be 4. A value less or equal to 0 tells mkgmap to ignore intersections at | |
556 | administrative boundaries. | |
557 | ||
582 | Explicitly specify which side of the road vehicles are expected to drive | |
583 | on. If the first option is detect, the program tries to find out the proper | |
584 | flag. If that detection fails, the second value is used (or right if none | |
585 | is given). With OSM data as input, the detection tries to find out the | |
586 | country each road is in and compares the number of drive-on-left roads with | |
587 | the rest. Use the --bounds option to make sure that the detection finds the | |
588 | correct country. | |
589 | ||
558 | 590 | --check-roundabouts |
559 | Check that roundabouts have the expected direction (clockwise | |
560 | when vehicles drive on the left). Roundabouts that are complete | |
561 | loops and have the wrong direction are reversed. Also checks | |
562 | that the roundabouts do not fork or overlap other roundabouts | |
563 | and that no more than one connecting highway joins at each node. | |
591 | Check that roundabouts have the expected direction (clockwise when vehicles | |
592 | drive on the left). Roundabouts that are complete loops and have the wrong | |
593 | direction are reversed. Also checks that the roundabouts do not fork or | |
594 | overlap other roundabouts and that no more than one connecting highway | |
595 | joins at each node. | |
564 | 596 | |
565 | 597 | --check-roundabout-flares |
566 | Check that roundabout flare roads point in the correct direction, | |
567 | are one-way and don't extend too far. | |
598 | Check that roundabout flare roads point in the correct direction, are | |
599 | one-way and don't extend too far. | |
568 | 600 | |
569 | 601 | --check-routing-island-len=INTEGER |
570 | Routing islands are small road networks which are not connected to other | |
571 | roads. A typical case is a footway that is not connected to the main | |
572 | road network, or a small set of ways on the inner courtyard of a large | |
573 | building | |
574 | These islands can cause problems if you try to calculate a route and the GPS | |
575 | selects a point on the island as a start or end. It will fail to calculate | |
576 | the route even if a major road is only a few steps away. If this option is | |
577 | specified, then mkgmap will detect these islands. If the value is set to | |
578 | zero, mkgmap will simply report the islands (you will need to set | |
579 | uk.me.parabola.imgfmt.app.net.RoadNetwork.level=INFO to activate logging of | |
580 | the message). If the value is greater than zero, mkgmap will mark islands | |
581 | with a total length less than the specified value in metres as not routable. | |
582 | Reasonable values are 500 or higher. | |
583 | The default is for the check to not take place. | |
584 | If any of the roads forming the island touches a tile boundary or | |
585 | a country border the island is ignored, as it may be connected to other | |
586 | roads in a different tile. | |
587 | See also option --add-boundary-nodes-at-admin-boundaries. | |
588 | This option seems to cause routing problems in BaseCamp. | |
602 | Routing islands are small road networks which are not connected to other | |
603 | roads. A typical case is a footway that is not connected to the main road | |
604 | network, or a small set of ways on the inner courtyard of a large building. | |
605 | These islands can cause problems if you try to calculate a route and the | |
606 | GPS selects a point on the island as a start or end. It will fail to | |
607 | calculate the route even if a major road is only a few steps away. If this | |
608 | option is specified, then mkgmap will detect these islands. If the value is | |
609 | set to zero, mkgmap will simply report the islands (you will need to set | |
610 | uk.me.parabola.imgfmt.app.net.RoadNetwork.level=INFO to activate logging of | |
611 | the message). If the value is greater than zero, mkgmap will mark islands | |
612 | with a total length less than the specified value in metres as not | |
613 | routable. Reasonable values are 500 or higher. The default is for the check | |
614 | to not take place. If any of the roads forming the island touches a tile | |
615 | boundary or a country border the island is ignored, as it may be connected | |
616 | to other roads in a different tile. | |
617 | See also option --add-boundary-nodes-at-admin-boundaries. | |
618 | This option seems to cause routing problems in BaseCamp. | |
589 | 619 | |
590 | 620 | --max-flare-length-ratio=NUM |
591 | When checking flare roads, ignore roads whose length is | |
592 | greater than NUM (an integer) times the distance between the | |
593 | nodes on the roundabout that the flare roads connect to. Using | |
594 | this option with a value of at least 5 will cut down the | |
595 | number of legitimate roads that are flagged as flare road | |
596 | problems. Default value is 0 (disabled) because it's not a | |
597 | completely reliable heuristic. | |
621 | When checking flare roads, ignore roads whose length is greater than NUM | |
622 | (an integer) times the distance between the nodes on the roundabout that | |
623 | the flare roads connect to. Using this option with a value of at least 5 | |
624 | will cut down the number of legitimate roads that are flagged as flare road | |
625 | problems. Default value is 0 (disabled) because it's not a completely | |
626 | reliable heuristic. | |
598 | 627 | |
599 | 628 | --ignore-turn-restrictions |
600 | When reading OSM files, ignore any "restriction" relations. | |
629 | When reading OSM files, ignore any "restriction" relations. | |
601 | 630 | |
602 | 631 | --ignore-osm-bounds |
603 | When reading OSM files, ignore any "bounds" elements. | |
604 | With this option selected generate-sea sometimes works better, | |
605 | but routing across tiles will not work. | |
632 | When reading OSM files, ignore any "bounds" elements. With this option | |
633 | selected generate-sea sometimes works better, but routing across tiles will | |
634 | not work. | |
606 | 635 | |
607 | 636 | --preserve-element-order |
608 | Process the map elements (nodes, ways, relations) in the order | |
609 | in which they appear in the OSM input. Without this option, | |
610 | the order in which the elements are processed is not defined. | |
611 | ||
612 | --remove-short-arcs[=MinLength] | |
613 | Now ignored, former usage: | |
614 | Merge nodes to remove short arcs that can cause routing | |
615 | problems. If MinLength is specified (in metres), arcs shorter | |
616 | than that length will be removed. If a length is not | |
617 | specified, only zero-length arcs will be removed. | |
618 | ||
619 | --adjust-turn-headings[=BITMASK] | |
620 | Now ignored, former usage: | |
621 | Where possible, ensure that turns off to side roads change | |
622 | heading sufficiently so that the GPS believes that a turn is | |
623 | required rather than a fork. This also avoids spurious | |
624 | instructions to "keep right/left" when the road doesn't | |
625 | actually fork. | |
626 | ||
627 | Optional BITMASK (default value 3) allows you to specify which | |
628 | adjustments are to be made (where necessary): | |
629 | ||
630 | 1 = increase angle between side road and outgoing main road | |
631 | 2 = increase angle between side road and incoming main road | |
637 | Process the map elements (nodes, ways, relations) in the order in which | |
638 | they appear in the OSM input. Without this option, the order in which the | |
639 | elements are processed is not defined. | |
632 | 640 | |
633 | 641 | --cycle-map |
634 | Tells mkgmap that the map is for cyclists. This assumes that | |
635 | different vehicles are different kinds of bicycles, e.g. a way | |
636 | with mkgmap:car=yes and mkgmap:bicycle=no may be a road that is | |
637 | good for racing bikes, but not for other cyclists. | |
638 | This allows the optimisation of sharp angles at junctions of those roads. | |
639 | Don't use with the default style as that is a general style! | |
640 | ||
642 | Tells mkgmap that the map is for cyclists. This assumes that different | |
643 | vehicles are different kinds of bicycles, e.g. a way with mkgmap:car=yes | |
644 | and mkgmap:bicycle=no may be a road that is good for racing bikes, but not | |
645 | for other cyclists. This allows the optimisation of sharp angles at | |
646 | junctions of those roads. Don't use with the default style as that is a | |
647 | general style! | |
648 | ||
641 | 649 | --report-similar-arcs |
642 | Issue a warning when more than one arc connects two nodes and | |
643 | the ways that the arcs are derived from contain identical | |
644 | points. It doesn't make sense to use this option at the same | |
645 | time as using the cycleway creating options. | |
650 | Issue a warning when more than one arc connects two nodes and the ways that | |
651 | the arcs are derived from contain identical points. It doesn't make sense | |
652 | to use this option at the same time as using the cycleway creating options. | |
646 | 653 | |
647 | 654 | --report-dead-ends=LEVEL |
648 | Set the dead end road warning level. The value of LEVEL (which | |
649 | defaults to 1 if this option is not specified) determines | |
650 | those roads to report: 0 = none, 1 = multiple one-way roads | |
651 | that join together but go nowhere, 2 = individual one-way roads | |
652 | that go nowhere. | |
655 | Set the dead end road warning level. The value of LEVEL (which defaults to | |
656 | 1 if this option is not specified) determines those roads to report: 0 = | |
657 | none, 1 = multiple one-way roads that join together but go nowhere, 2 = | |
658 | individual one-way roads that go nowhere. | |
653 | 659 | |
654 | 660 | --add-pois-to-lines |
655 | Generate POIs for lines. For each line (must not be closed) POIs are | |
656 | created at several points of the line. Each POI is tagged with the | |
657 | same tags like the line and additional tags added by mkgmap: | |
658 | mkgmap:line2poi=true and tag mkgmap:line2poitype having | |
659 | the following values: | |
660 | * start - The first point of the line | |
661 | * end - The last point of the line | |
662 | * inner - Each point of the line except the first and the last | |
663 | * mid - The middle point | |
664 | ||
661 | Generate POIs for lines. For each line (must not be closed) POIs are | |
662 | created at several points of the line. Each POI is tagged with the same | |
663 | tags like the line and additional tags added by mkgmap: | |
664 | mkgmap:line2poi=true and tag mkgmap:line2poitype having the following | |
665 | values: | |
666 | * start - The first point of the line | |
667 | * end - The last point of the line | |
668 | * inner - Each point of the line except the first and the last | |
669 | * mid - The middle point | |
665 | 670 | --add-pois-to-areas |
666 | Generate a POI for each polygon and multipolygon. The POIs are created | |
667 | after the relation style but before the other styles are applied. Each | |
668 | POI is tagged with the same tags of | |
669 | the area/multipolygon. Additionally the tag mkgmap:area2poi=true is | |
670 | set so that it is possible to use that information in the points style | |
671 | file. Artifical polygons created by multipolyon processing are not used. | |
672 | The POIs are created at the following positions (first rule that applies): | |
673 | polygons: | |
674 | * the first node tagged with a tag defined by the pois-to-areas-placement | |
675 | option | |
676 | * the centre point | |
677 | multipolygons: | |
678 | * the node with role=label | |
679 | * the centre point of the biggest area | |
680 | ||
671 | Generate a POI for each polygon and multipolygon. The POIs are created | |
672 | after the relation style but before the other styles are applied. Each POI | |
673 | is tagged with the same tags of the area/multipolygon. Additionally the tag | |
674 | mkgmap:area2poi=true is set so that it is possible to use that information | |
675 | in the points style file. Artificial polygons created by multipolyon | |
676 | processing are not used. The POIs are created at the following positions | |
677 | (first rule that applies): | |
678 | polygons: | |
679 | First rule that applies of | |
680 | * the first node tagged with a tag defined by the | |
681 | --pois-to-areas-placement option | |
682 | * the centre point | |
683 | multipolygons: | |
684 | First rule that applies of | |
685 | * the node with role=label | |
686 | * the centre point of the biggest area | |
681 | 687 | --pois-to-areas-placement=tag=value[;tag=value...] |
682 | A POI is placed at the first node of the polygon tagged with the first tag/value | |
683 | pair. If none of the nodes are tagged with the first tag-value pair the first node | |
684 | tagged with the second tag-value pair is used and so on. If none of the tag-value pairs | |
685 | matches or the taglist is empty, the centre of the polygon is used. | |
686 | It is possible to define wildcards for tag values like entrance=*. | |
687 | Default: entrance=main;entrance=yes;building=entrance | |
688 | A POI is placed at the first node of the polygon tagged with the first | |
689 | tag/value pair. If none of the nodes are tagged with the first tag-value | |
690 | pair the first node tagged with the second tag-value pair is used and so | |
691 | on. If none of the tag-value pairs matches or the taglist is empty, the | |
692 | centre of the polygon is used. It is possible to define wildcards for tag | |
693 | values like entrance=*. | |
694 | ||
695 | Default: entrance=main;entrance=yes;building=entrance | |
688 | 696 | |
689 | 697 | --precomp-sea=directory|zipfile |
690 | Defines the directory or a zip file that contains precompiled sea tiles. | |
691 | Sea files in a zip file must be located in the zip file's root directory or in | |
692 | a sub directory sea. When this option is defined all natural=coastline tags | |
693 | from the input OSM tiles are removed and the precompiled data is used instead. | |
694 | This option can be combined with the generate-sea options multipolygon, polygons | |
695 | and land-tag. The coastlinefile option is ignored if precomp-sea is set. | |
698 | Defines the directory or a zip file that contains precompiled sea tiles. | |
699 | Sea files in a zip file must be located in the zip file's root directory or | |
700 | in a sub directory sea. When this option is defined all natural=coastline | |
701 | tags from the input OSM tiles are removed and the precompiled data is used | |
702 | instead. This option can be combined with the generate-sea options | |
703 | multipolygon, polygons and land-tag. The coastlinefile option is ignored if | |
704 | precomp-sea is set. | |
696 | 705 | |
697 | 706 | --coastlinefile=filename[,filename...] |
698 | Defines a comma separated list of files that contain coastline | |
699 | data. The coastline data from the input files is removed if | |
700 | this option is set. Files must have OSM or PBF fileformat. | |
707 | Defines a comma separated list of files that contain coastline data. The | |
708 | coastline data from the input files is removed if this option is set. Files | |
709 | must have OSM or PBF file format. | |
701 | 710 | |
702 | 711 | --generate-sea[=ValueList] |
703 | Generate sea polygons. ValueList is an optional comma | |
704 | separated list of values: | |
705 | ||
706 | multipolygon | |
707 | generate the sea using a multipolygon (the default | |
708 | behaviour so this really doesn't need to be specified). | |
709 | ||
710 | polygons | no-mp | |
711 | don't generate the sea using a multipolygon - instead, | |
712 | generate a background sea polygon plus individual land | |
713 | polygons with tag natural=land. This requires a | |
714 | suitable land polygon type to be defined in the style | |
715 | file (suggested type is 0x010100) and the polygon must | |
716 | be defined in the TYP file as having a higher drawing | |
717 | level than the sea polygon type. | |
718 | ||
719 | no-sea-sectors | |
720 | disable the generation of "sea sectors" when the | |
721 | coastline fails to reach the tile's boundary. | |
722 | ||
723 | extend-sea-sectors | |
724 | same as no-sea-sectors. Additional adds a point so | |
725 | coastline reaches the nearest tile boundary. | |
726 | ||
727 | land-tag=TAG=VAL | |
728 | tag to use for land polygons (default natural=land). | |
729 | ||
730 | close-gaps=NUM | |
731 | close gaps in coastline that are less than this | |
732 | distance (metres) | |
733 | ||
734 | floodblocker | |
735 | enable the flood blocker that prevents a flooding of | |
736 | land by checking if the sea polygons contain streets | |
737 | (works only with multipolygon processing) | |
738 | ||
739 | fbgap=NUM | |
740 | flood blocker gap in metre (default 40) | |
741 | points that are closer to the sea polygon do not block | |
742 | ||
743 | fbthres=NUM | |
744 | at least so many highway points must be contained in | |
745 | a sea polygon so that it may be removed by the flood | |
746 | blocker (default 20) | |
747 | ||
748 | fbratio=NUM | |
749 | only sea polygons with a higher ratio | |
750 | (highway points * 100000 / polygon size) are removed | |
751 | (default 0.5) | |
752 | ||
753 | fbdebug | |
754 | switches on the debugging of the flood blocker | |
755 | generates GPX files for each polygon checked by | |
756 | the flood blocker | |
712 | Generate sea polygons. ValueList is an optional comma separated list of | |
713 | values: | |
714 | ||
715 | multipolygon | |
716 | generate the sea using a multipolygon (the default behaviour so this | |
717 | really doesn't need to be specified). | |
718 | ||
719 | polygons | no-mp | |
720 | don't generate the sea using a multipolygon - instead, generate a | |
721 | background sea polygon plus individual land polygons with tag | |
722 | natural=land. This requires a suitable land polygon type to be defined | |
723 | in the style file (suggested type is 0x010100) and the polygon must be | |
724 | defined in the TYP file as having a higher drawing level than the sea | |
725 | polygon type. | |
726 | ||
727 | no-sea-sectors | |
728 | disable the generation of "sea sectors" when the coastline fails to | |
729 | reach the tile's boundary. | |
730 | extend-sea-sectors | |
731 | same as no-sea-sectors. Additional adds a point so coastline reaches | |
732 | the nearest tile boundary. | |
733 | ||
734 | land-tag=TAG=VAL | |
735 | tag to use for land polygons (default natural=land). | |
736 | close-gaps=NUM | |
737 | close gaps in coastline that are less than this distance (metres) | |
738 | ||
739 | floodblocker | |
740 | enable the flood blocker that prevents a flooding of land by checking | |
741 | if the sea polygons contain streets (works only with multipolygon | |
742 | processing) | |
743 | ||
744 | fbgap=NUM | |
745 | flood blocker gap in metre (default 40) points that are closer to the | |
746 | sea polygon do not block | |
747 | ||
748 | fbthres=NUM | |
749 | at least so many highway points must be contained in a sea polygon so | |
750 | that it may be removed by the flood blocker (default 20) | |
751 | ||
752 | fbratio=NUM | |
753 | only sea polygons with a higher ratio (highway points * 100000 / | |
754 | polygon size) are removed (default 0.5) | |
755 | ||
756 | fbdebug | |
757 | switches on the debugging of the flood blocker generates GPX files for | |
758 | each polygon checked by the flood blocker | |
757 | 759 | |
758 | 760 | --make-poi-index |
759 | Generate a POI index in each map tile. Probably not used by modern devices, | |
760 | but still supported. | |
761 | Generate a POI index in each map tile. Probably not used by modern devices, | |
762 | but still supported. | |
761 | 763 | |
762 | 764 | --nsis |
763 | Write a .nsi file that can be used with the Nullsoft Scriptable Install System | |
764 | (NSIS) to create a Windows Mapsource Installer. | |
765 | Write a .nsi file that can be used with the Nullsoft Scriptable Install | |
766 | System (NSIS) to create a Windows Mapsource Installer. | |
765 | 767 | |
766 | 768 | --make-opposite-cycleways |
767 | Some one-way streets allow bicycle traffic in the reverse | |
768 | direction and this option makes a way with the same points as | |
769 | the original that allows bicycle traffic (in both directions). | |
769 | Some one-way streets allow bicycle traffic in the reverse direction and | |
770 | this option makes a way with the same points as the original that allows | |
771 | bicycle traffic (in both directions). | |
770 | 772 | |
771 | 773 | --link-pois-to-ways |
772 | This option may copy some specific attributes of a POI | |
773 | to a small part of the way the POI is located on. This can be used | |
774 | to let barriers block a way or to lower the calculated speed | |
775 | around traffic signals. | |
776 | POIs with the tags highway=* (e.g. highway=traffic_signals) | |
777 | or barrier=* (e.g. barrier=cycle_barrier) are supported. | |
778 | The style developer must add at least one of the access tags | |
779 | (mkgmap:foot, mkgmap:car etc.), mkgmap:road-speed and/or | |
780 | mkgmap:road-class to the POI. | |
781 | The access tags are ignored if they have no effect for the way, | |
782 | else a route restriction is added at the POI so that only | |
783 | allowed vehicles are routed through it. | |
784 | The tags mkgmap:road-speed and/or mkgmap:road-class are | |
785 | applied to a small part of the way around the POI, typically | |
786 | to the next junction or a length of ~25 m. The tags | |
787 | are ignored for pedestrian-only ways. | |
774 | This option may copy some specific attributes of a POI to a small part of | |
775 | the way the POI is located on. This can be used to let barriers block a way | |
776 | or to lower the calculated speed around traffic signals. POIs with the tags | |
777 | highway=* (e.g. highway=traffic_signals) or barrier=* (e.g. | |
778 | barrier=cycle_barrier) are supported. The style developer must add at least | |
779 | one of the access tags (mkgmap:foot, mkgmap:car etc.), mkgmap:road-speed | |
780 | and/or mkgmap:road-class to the POI. The access tags are ignored if they | |
781 | have no effect for the way, else a route restriction is added at the POI so | |
782 | that only allowed vehicles are routed through it. The tags | |
783 | mkgmap:road-speed and/or mkgmap:road-class are applied to a small part of | |
784 | the way around the POI, typically to the next junction or a length of ~25m. | |
785 | The tags are ignored for pedestrian-only ways. | |
788 | 786 | |
789 | 787 | --process-destination |
790 | Splits all motorway_link, trunk_link, primary_link, secondary_link, | |
791 | and tertiary_link ways tagged with destination into two or three parts where | |
792 | the second part is additionally tagged with mkgmap:dest_hint=*. | |
793 | The code checks for the tags destination, destination:lanes, | |
794 | destination:street and some variants with :forward/:backward like | |
795 | destination:forward or destination:lanes:backward. If a value for | |
796 | destination is found, the special tag mkgmap:dest_hint is set to | |
797 | it and the way is split. This happens before the style rules are processed. | |
798 | This allows to use any routable Garmin type (except 0x08 and 0x09) | |
799 | for that part so that the Garmin device tells the name of | |
800 | this part as hint which destination to follow. | |
801 | See also --process-exits. | |
802 | ||
788 | Splits all motorway_link, trunk_link, primary_link, secondary_link, and | |
789 | tertiary_link ways tagged with destination into two or three parts where | |
790 | the second part is additionally tagged with mkgmap:dest_hint=*. The code | |
791 | checks for the tags destination, destination:lanes, destination:street and | |
792 | some variants with :forward/:backward like destination:forward or | |
793 | destination:lanes:backward. If a value for destination is found, the | |
794 | special tag mkgmap:dest_hint is set to it and the way is split. This | |
795 | happens before the style rules are processed. This allows to use any | |
796 | routable Garmin type (except 0x08 and 0x09) for that part so that the | |
797 | Garmin device tells the name of this part as hint which destination to | |
798 | follow. | |
799 | See also --process-exits. | |
800 | ||
803 | 801 | --process-exits |
804 | Usual Garmin devices do not tell the name of the exit on motorways | |
805 | while routing with mkgmap created maps. This option splits each | |
806 | motorway_link, trunk_link, primary_link, secondary_link, and tertiary_link | |
807 | way into three parts. | |
808 | All parts are tagged with the original tags of the link. | |
809 | Additionally the middle part is tagged with the following tags: | |
810 | mkgmap:exit_hint=true | |
811 | mkgmap:exit_hint_ref=<ref tag value of the exit> | |
812 | mkgmap:exit_hint_name=<name tag value of the exit> | |
813 | mkgmap:exit_hint_exit_to=<exit_to tag value of the exit> | |
814 | Adding a rule checking the mkgmap:exit_hint=true makes it possible | |
815 | to use any routable Garmin type (except 0x08 and 0x09) for the middle | |
816 | part so that the Garmin device tells the name of this middle part as | |
817 | hint where to leave the major road. | |
818 | The first part must have type 0x08 or 0x09 so that Garmin uses the hint. | |
819 | ||
802 | Usual Garmin devices do not tell the name of the exit on motorways while | |
803 | routing with mkgmap created maps. This option splits each motorway_link, | |
804 | trunk_link, primary_link, secondary_link, and tertiary_link way into three | |
805 | parts. All parts are tagged with the original tags of the link. | |
806 | Additionally the middle part is tagged with the following tags: | |
807 | ||
808 | mkgmap:exit_hint=true | |
809 | mkgmap:exit_hint_ref=<ref tag value of the exit> | |
810 | mkgmap:exit_hint_name=<name tag value of the exit> | |
811 | mkgmap:exit_hint_exit_to=<exit_to tag value of the exit> | |
812 | ||
813 | Adding a rule checking the mkgmap:exit_hint=true makes it possible to use | |
814 | any routable Garmin type (except 0x08 and 0x09) for the middle part so that | |
815 | the Garmin device tells the name of this middle part as hint where to leave | |
816 | the motorway/trunk. The first part must have type 0x08 or 0x09 so that | |
817 | Garmin uses the hint. | |
818 | ||
820 | 819 | --delete-tags-file=filename |
821 | Names a file that should contain one or more lines of the form | |
822 | TAG=VALUE or TAG=*. Blank lines and lines that start with | |
823 | a # or ; are ignored. All tag/value pairs in the OSM input are | |
824 | compared with these patterns and those that match are deleted. | |
825 | ||
820 | Names a file that should contain one or more lines of the form TAG=VALUE or | |
821 | TAG=*. Blank lines and lines that start with a # or ; are ignored. All | |
822 | tag/value pairs in the OSM input are compared with these patterns and those | |
823 | that match are deleted. | |
824 | ||
826 | 825 | --ignore-fixme-values |
827 | Ignore all tags for which the value matches the pattern "(?i)fix[ _]?+me". | |
826 | Ignore all tags for which the value matches the regular expression pattern | |
827 | "(?i)fix[ _]?+me". | |
828 | 828 | |
829 | 829 | --tdbfile |
830 | Write files that are essential to running with MapSource, a .tdb file and | |
831 | an overview map. The options --nsis and --gmapi imply --tdbfile. | |
830 | Write files that are essential to running with MapSource, a .tdb file and | |
831 | an overview map. The options --nsis and --gmapi imply --tdbfile. | |
832 | 832 | |
833 | 833 | --show-profiles=1 |
834 | Sets a flag in tdb file. The meaning depends on the availability of DEM | |
835 | data (see "Hill Shading (DEM) options"). | |
836 | Without DEM data the flag enables profile calculation in MapSource or | |
837 | Basecamp based on information from contour lines. | |
838 | If DEM data is available the profile is calculated with that information and | |
839 | the flag only changes the status line to show the height when you hover over | |
840 | an area with valid DEM data. | |
841 | The default is show-profiles=0. | |
834 | Sets a flag in tdb file. The meaning depends on the availability of DEM | |
835 | data (see "Hill Shading (DEM) options"). | |
836 | Without DEM data the flag enables profile calculation in MapSource or | |
837 | Basecamp based on information from contour lines. | |
838 | If DEM data is available the profile is calculated with that information | |
839 | and the flag only changes the status line to show the height when you hover | |
840 | over an area with valid DEM data. | |
841 | The default is show-profiles=0. | |
842 | 842 | |
843 | 843 | --transparent |
844 | Make the map transparent, so that if two maps covering the same area are | |
845 | loaded, you can see through this map to see details from the other map too. | |
846 | Typically used for maps containing just contour lines. See --draw-priority | |
847 | as well. | |
844 | Make the map transparent, so that if two maps covering the same area are | |
845 | loaded, you can see through this map to see details from the other map too. | |
846 | Typically used for maps containing just contour lines. See --draw-priority | |
847 | as well. | |
848 | 848 | |
849 | 849 | --draw-priority=integer |
850 | When two maps cover the same area and both are enabled in the device, this | |
851 | option controls the order in which they are drawn in and therefore which map | |
852 | is on top. Higher priorities are drawn "on top" of lower priorities. | |
853 | The map drawn on top must be transparent for the one underneath to be seen. | |
854 | The default value is 25. | |
850 | When two maps cover the same area and both are enabled in the device, this | |
851 | option controls the order in which they are drawn in and therefore which | |
852 | map is on top. Higher priorities are drawn "on top" of lower priorities. | |
853 | The map drawn on top must be transparent for the one underneath to be seen. | |
854 | The default value is 25. | |
855 | 855 | |
856 | 856 | --custom |
857 | Write a different TRE header. With this option, mkgmap writes the bytes | |
858 | 0x170401 instead of the default 0x110301 at offset 43. Useful for marine | |
859 | maps. | |
860 | ||
857 | Write a different TRE header. With this option, mkgmap writes the bytes | |
858 | 0x170401 instead of the default 0x110301 at offset 43. Useful for marine | |
859 | maps. | |
860 | ||
861 | 861 | --hide-gmapsupp-on-pc |
862 | Set a bit in the gmapsupp.img that tells PC software that the file is | |
863 | already installed on the PC and therefore there is no need to read it | |
864 | from the device. | |
862 | Set a bit in the gmapsupp.img that tells PC software that the file is | |
863 | already installed on the PC and therefore there is no need to read it from | |
864 | the device. | |
865 | 865 | |
866 | 866 | --poi-address |
867 | Enable address / phone information to POIs. Address info is | |
868 | read according to the "Karlsruhe" tagging schema. Automatic | |
869 | filling of missing information could be enabled using the | |
870 | "location-autofill" option. | |
871 | Default is enabled, use --no-poi-address to disable. | |
867 | Enable address / phone information to POIs. Address info is read according | |
868 | to the "Karlsruhe" tagging schema. Automatic filling of missing information | |
869 | could be enabled using the "location-autofill" option. Default is enabled, | |
870 | use --no-poi-address to disable. | |
872 | 871 | |
873 | 872 | --verbose |
874 | Makes some operations more verbose. Mostly used with --list-styles. | |
873 | Makes some operations more verbose. Mostly used with --list-styles. | |
875 | 874 | |
876 | 875 | --order-by-decreasing-area |
877 | Puts polygons/areas into the map in decreasing size order, so that | |
878 | smaller features are rendered over larger ones (assuming _drawOrder | |
879 | is equal). The tag mkgmap:drawLevel can be used to override the | |
880 | natural area of a polygon, so forcing changes to the rendering order. | |
881 | ||
882 | Deprecated and Obsolete Options | |
876 | Puts area/polygons into the map in decreasing size order, so that smaller | |
877 | features are rendered over larger ones (assuming the draw order is equal). | |
878 | The tag mkgmap:drawLevel can be used to override the natural area of a | |
879 | polygon, so forcing changes to the rendering order. | |
880 | ||
881 | === Deprecated and Obsolete Options === | |
883 | 882 | |
884 | 883 | --drive-on-left |
885 | 884 | --drive-on-right |
886 | Deprecated; use drive-on instead. | |
887 | The options are translated to drive-on=left|right. | |
885 | Deprecated; use drive-on instead. The options are translated to | |
886 | drive-on=left|right. | |
888 | 887 | |
889 | 888 | --make-all-cycleways |
890 | Deprecated, use --make-opposite-cycleways instead. Former meaning: | |
891 | Turn on all of the options that make cycleways. | |
889 | Deprecated; use --make-opposite-cycleways instead. Former meaning: Turn on | |
890 | all of the options that make cycleways. | |
892 | 891 | |
893 | 892 | --charset=name |
894 | Obsolete; use --code-page instead. | |
895 | option. | |
893 | Obsolete; use --code-page instead. | |
896 | 894 | |
897 | 895 | --map-features=filename |
898 | Obsolete; use --style-file instead. | |
896 | Obsolete; use --style-file instead. | |
899 | 897 | |
900 | 898 | --ignore-maxspeeds |
901 | Obsolete; former usage: | |
902 | When reading OSM files, ignore any "maxspeed" tags. | |
899 | Obsolete; former usage: When reading OSM files, ignore any "maxspeed" tags. | |
903 | 900 | |
904 | 901 | --ignore-builtin-relations |
905 | Obsolete; former usage: | |
906 | When reading OSM files, skip the built-in processing of | |
907 | relations. This speeds up the processing non-routable map | |
908 | layers that do not contain multipolygons. This implies | |
909 | --ignore-turn-restrictions. | |
902 | Obsolete; former usage: When reading OSM files, skip the built-in | |
903 | processing of relations. This speeds up the processing non-routable map | |
904 | layers that do not contain multipolygons. This implies | |
905 | --ignore-turn-restrictions. | |
910 | 906 | |
911 | 907 | --road-name-pois[=GarminCode] |
912 | Obsolete; former usage: | |
913 | Generate a POI for each named road. By default, the POIs' | |
914 | Garmin type code is 0x640a. If desired, a different type code | |
915 | can be specified with this option. This is a workaround for not | |
916 | being able to search for roads. | |
917 | 0x2f15: a blue dot in the middle of the road, and if you select, | |
918 | or 'hover' over it, the street name appears. | |
908 | Obsolete; former usage: Generate a POI for each named road. By default, the | |
909 | POIs' Garmin type code is 0x640a. If desired, a different type code can be | |
910 | specified with this option. This is a workaround for not being able to | |
911 | search for roads. 0x2f15: a blue dot in the middle of the road, and if you | |
912 | select, or 'hover' over it, the street name appears. | |
919 | 913 | |
920 | 914 | --make-cycleways |
921 | Obsolete; former meaning: | |
922 | Some streets have a separate cycleway track/lane just for | |
923 | bicycle traffic and this option makes a way with the same | |
924 | points as the original that allows bicycle traffic. Also, | |
925 | bicycle traffic is prohibited from using the original way | |
926 | (unless that way's bicycle access has been defined). | |
927 | ||
928 | ||
915 | Obsolete; former meaning: Some streets have a separate cycleway track/lane | |
916 | just for bicycle traffic and this option makes a way with the same points | |
917 | as the original that allows bicycle traffic. Also, bicycle traffic is | |
918 | prohibited from using the original way (unless that way's bicycle access | |
919 | has been defined). | |
920 | ||
921 | --remove-short-arcs[=MinLength] | |
922 | Now ignored, former usage: Merge nodes to remove short arcs that can cause | |
923 | routing problems. If MinLength is specified (in metres), arcs shorter than | |
924 | that length will be removed. If a length is not specified, only zero-length | |
925 | arcs will be removed. | |
926 | ||
927 | --adjust-turn-headings[=BITMASK] | |
928 | Now ignored, former usage: Where possible, ensure that turns off to side | |
929 | roads change heading sufficiently so that the GPS believes that a turn is | |
930 | required rather than a fork. This also avoids spurious instructions to | |
931 | "keep right/left" when the road doesn't actually fork. | |
932 | ||
933 | Optional BITMASK (default value 3) allows you to specify which adjustments | |
934 | are to be made (where necessary): | |
935 | ||
936 | 1 = increase angle between side road and outgoing main road | |
937 | 2 = increase angle between side road and incoming main road |
0 | svn.version: 4398 | |
1 | build.timestamp: 2019-12-18T08:25:16+0000 | |
0 | svn.version: 4433 | |
1 | build.timestamp: 2020-01-30T14:36:48+0000 |
229 | 229 | natural=coastline [0x15 resolution 12] |
230 | 230 | power=line [0x29 resolution 21] |
231 | 231 | |
232 | # following really should be removed, but see: http://www.mkgmap.org.uk/pipermail/mkgmap-dev/2016q3/025104.html | |
233 | railway=abandoned [0x0a road_class=0 road_speed=1 resolution 22] | |
234 | 232 | railway=platform [0x16 road_class=0 road_speed=0 resolution 23] |
235 | 233 | # Railway lines, note that many devices display type 0x14 only at resolution 24 |
236 | 234 | (railway=rail | railway=tram | railway=disused | railway=subway | railway=narrow_gauge | railway=light_rail | railway=preserved) & !(tunnel=yes) |
0 | ||
1 | [_id] | |
2 | ProductCode=1 | |
3 | CodePage=65001 | |
4 | [End] | |
5 | [_comments] | |
6 | ;https://github.com/Jorisbo/Mkgmap-Mapnik-Style-Garmin | |
7 | ;Jorisbo@hotmail.com | |
0 | ; TYP file to give mapnik rendering | |
1 | ; -*- coding: UTF-8 -*- NB: first 3 bytes/char in file is UTF-8 encoded ByteOrderMark (BOM) | |
8 | 2 | ; |
9 | 3 | ;This program is free software; you can redistribute it and/or modify |
10 | 4 | ;it under the terms of the GNU General Public License version 3 or |
15 | 9 | ;MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
16 | 10 | ;General Public License for more details. |
17 | 11 | ; |
18 | ;Auto generated: 20191209 18:13 | |
19 | ;From master: MKG | |
20 | ;As subset: mkgmap | |
21 | ;Based on mkgmap default style version: r4389 | |
12 | ;Author: Jorisbo@hotmail.com | |
22 | 13 | ; |
14 | ;Based on mkgmap default style version: r4293...4288 | |
15 | ; | |
16 | [_id] | |
17 | ;ProductCode=1 set from --product-id | |
18 | ;FID=8094 set from --family-id | |
19 | ;CodePage=65001 set from --code-page | |
23 | 20 | [End] |
21 | ; | |
24 | 22 | [_drawOrder] |
25 | 23 | Type=0x04b,1 |
24 | Type=0x03d,1 | |
26 | 25 | Type=0x002,2 |
27 | 26 | Type=0x003,2 |
28 | 27 | Type=0x007,2 |
44 | 43 | Type=0x025,2 |
45 | 44 | Type=0x026,2 |
46 | 45 | Type=0x03b,2 |
47 | Type=0x03d,2 | |
48 | 46 | Type=0x046,2 |
49 | 47 | Type=0x047,2 |
50 | 48 | Type=0x048,2 |
76 | 74 | Type=0x06c,8 |
77 | 75 | Type=0x004,9 |
78 | 76 | [End] |
77 | ; | |
79 | 78 | [_polygon] |
80 | 79 | type=0x02 |
81 | 80 | ;GRMN_TYPE: Urban Areas/SMALL_CITY/Small urban area, less than 200 000 inhabitants/Non NT |
81 | String=Suburb | |
82 | 82 | String1=0x01,Résidentiel |
83 | 83 | String2=0x02,Wohngebiet |
84 | String3=0x04,Residential | |
85 | 84 | String4=0x03,Bebouwing |
86 | 85 | String7=0x15,Obszar mieszkalny |
87 | 86 | String8=0x10,Residencial |
95 | 94 | [_polygon] |
96 | 95 | type=0x03 |
97 | 96 | ;GRMN_TYPE: Urban Areas/TOWN/Urban area, less than 50 000 inhabitants/Non NT |
97 | String=Village | |
98 | 98 | String1=0x01,Résidentiel |
99 | 99 | String2=0x02,Wohngebiet |
100 | String3=0x04,Residential | |
101 | 100 | String4=0x03,Bebouwing |
102 | 101 | String7=0x15,Obszar mieszkalny |
103 | 102 | String8=0x10,Residencial |
111 | 110 | [_polygon] |
112 | 111 | type=0x04 |
113 | 112 | ;GRMN_TYPE: Large Manmade Areas/MILITARY_BASE/Military base area/Non NT |
113 | String=Military Base | |
114 | 114 | String1=0x01,Domaine militaire |
115 | 115 | String2=0x02,Militärisches Sperrgebiet |
116 | String3=0x04,Military | |
117 | 116 | String4=0x03,Militair domein |
118 | 117 | String7=0x15,Teren wojskowy |
119 | 118 | String8=0x10,Militar |
161 | 160 | [_polygon] |
162 | 161 | type=0x05 |
163 | 162 | ;GRMN_TYPE: Large Manmade Areas/PARKING_LOT/Parking lot area/Non NT |
163 | String=Parking Lot | |
164 | 164 | String1=0x01,Parking |
165 | 165 | String2=0x02,Parkplatz |
166 | String3=0x04,Parking | |
166 | String3=0x04,Car Park | |
167 | 167 | String4=0x03,Parkeerterrein |
168 | 168 | String7=0x15,Parking |
169 | 169 | String8=0x10,Estacionamento |
177 | 177 | [_polygon] |
178 | 178 | type=0x06 |
179 | 179 | ;GRMN_TYPE: Large Manmade Areas/PARKING_GARAGE/Parking garage area/Non NT |
180 | String=Parking Garage | |
180 | 181 | String1=0x01,Garages |
181 | 182 | String2=0x02,Garagen |
182 | String3=0x04,Garages | |
183 | String3=0x04,Parking | |
183 | 184 | String4=0x03,Garages |
184 | 185 | String7=0x15,Garaże |
185 | 186 | String8=0x10,Garagem |
193 | 194 | [_polygon] |
194 | 195 | type=0x07 |
195 | 196 | ;GRMN_TYPE: Large Manmade Areas/AIRPORT/Airport area/Non NT |
197 | String=Airport | |
196 | 198 | String1=0x01,Aéroport |
197 | 199 | String2=0x02,Flughafen |
198 | String3=0x04,Airport | |
199 | 200 | String4=0x03,Vliegveld |
200 | 201 | String7=0x15,Lotnisko |
201 | 202 | String8=0x10,Aeroporto |
209 | 210 | [_polygon] |
210 | 211 | type=0x08 |
211 | 212 | ;GRMN_TYPE: Large Manmade Areas/SHOPPING_AREA/Shopping area/Non NT |
213 | String=Shopping Center | |
212 | 214 | String1=0x01,Zone commerciale |
213 | 215 | String2=0x02,Gewerbegebiet |
214 | String3=0x04,Commercial area | |
215 | 216 | String4=0x03,Commercieel gebied |
216 | 217 | String7=0x15,Obszar handlowy |
217 | 218 | String8=0x10,Área comercial |
225 | 226 | [_polygon] |
226 | 227 | type=0x09 |
227 | 228 | ;GRMN_TYPE: Large Manmade Areas/MARINA/Marina area/Non NT |
229 | String=Marina | |
228 | 230 | String1=0x01,Piscine |
229 | 231 | String2=0x02,Schwimmbad |
230 | String3=0x04,Swimmingpool | |
232 | String3=0x04,Water Park | |
231 | 233 | String4=0x03,Zwembad |
232 | 234 | String7=0x15,Basen |
233 | 235 | String8=0x10,Piscina |
241 | 243 | [_polygon] |
242 | 244 | type=0x0a |
243 | 245 | ;GRMN_TYPE: Large Manmade Areas/COLLEGE/College or university area/Non NT |
246 | String=University/College | |
244 | 247 | String1=0x01,École |
245 | 248 | String2=0x02,Schule |
246 | 249 | String3=0x04,Education |
257 | 260 | [_polygon] |
258 | 261 | type=0x0b |
259 | 262 | ;GRMN_TYPE: Large Manmade Areas/HOSPITAL/Hospital area/Non NT |
263 | String=Hospital | |
260 | 264 | String1=0x01,Hôpital |
261 | 265 | String2=0x02,Krankenhaus |
262 | String3=0x04,Hospital | |
263 | 266 | String4=0x03,Ziekenhuis |
264 | 267 | String7=0x15,Szpital |
265 | 268 | String8=0x10,Hospital |
273 | 276 | [_polygon] |
274 | 277 | type=0x0c |
275 | 278 | ;GRMN_TYPE: Large Manmade Areas/INDUSTRIAL_COMPLEX/Industrial complex area/Non NT |
279 | String=Industrial Complex | |
276 | 280 | String1=0x01,Zone industrielle |
277 | 281 | String2=0x02,Industriegebiet |
278 | 282 | String3=0x04,Industrial area |
289 | 293 | [_polygon] |
290 | 294 | type=0x0e |
291 | 295 | ;GRMN_TYPE: Large Manmade Areas/AIRPORT_RUNWAYS/Airport runway area/Non NT |
296 | String=Aircraft Road | |
292 | 297 | String1=0x01,Aérodrome |
293 | 298 | String2=0x02,Flugfeld |
294 | String3=0x04,Aeroway | |
299 | String3=0x04,Runway | |
295 | 300 | String4=0x03,Landingsbaan |
296 | 301 | String7=0x15,Pas startowy |
297 | 302 | String8=0x10,Aeródromo |
305 | 310 | [_polygon] |
306 | 311 | type=0x0f |
307 | 312 | ;GRMN_TYPE: // |
313 | String=Commercial Area | |
308 | 314 | String1=0x01,Zone commerciale |
309 | 315 | String2=0x02,Gewerbegebiet |
310 | String3=0x04,Commercial area | |
311 | 316 | String4=0x03,Commercieel gebied |
312 | 317 | String7=0x15,Obszar handlowy |
313 | 318 | String8=0x10,Área comercial |
321 | 326 | [_polygon] |
322 | 327 | type=0x10 |
323 | 328 | ;GRMN_TYPE: // |
329 | String=Residential | |
324 | 330 | String1=0x01,Résidentiel |
325 | 331 | String2=0x02,Wohngebiet |
326 | String3=0x04,Residential | |
327 | 332 | String4=0x03,Bebouwing |
328 | 333 | String7=0x15,Obszar mieszkalny |
329 | 334 | String8=0x10,Residencial |
337 | 342 | [_polygon] |
338 | 343 | type=0x11 |
339 | 344 | ;GRMN_TYPE: // |
345 | String=Danger Area | |
340 | 346 | String1=0x01,Domaine militair |
341 | 347 | String2=0x02,Militärisches Sperrgebiet |
342 | String3=0x04,Military dangerzone | |
343 | 348 | String4=0x03,Miltaire gevarenzone |
344 | 349 | ExtendedLabels=Y |
345 | 350 | FontStyle=NoLabel (invisible) |
384 | 389 | [_polygon] |
385 | 390 | type=0x12 |
386 | 391 | ;GRMN_TYPE: // |
392 | String=Retail | |
387 | 393 | String1=0x01,Aire |
388 | 394 | String2=0x02,Raststätte |
389 | String3=0x04,Service | |
390 | 395 | String4=0x03,Snelweg rustplaats |
391 | 396 | ExtendedLabels=Y |
392 | 397 | FontStyle=NoLabel (invisible) |
397 | 402 | [_polygon] |
398 | 403 | type=0x13 |
399 | 404 | ;GRMN_TYPE: Large Manmade Areas/GENERIC_MANMADE/Other or generic manmade area, such as a building/Non NT |
405 | String=Building | |
400 | 406 | String1=0x01,Bâtiment |
401 | 407 | String2=0x02,Gebäude |
402 | String3=0x04,Building | |
403 | 408 | String4=0x03,Gebouw |
404 | 409 | String7=0x15,Budynek |
405 | 410 | String8=0x10,Edifício |
413 | 418 | [_polygon] |
414 | 419 | type=0x15 |
415 | 420 | ;GRMN_TYPE: Park Areas/NATIONAL_PARK/National park/Non NT |
421 | String=Village Green | |
416 | 422 | String1=0x01,Espace vert |
417 | 423 | String2=0x02,Grün |
418 | String3=0x04,Village green | |
419 | 424 | String4=0x03,Stadsgroen |
420 | 425 | ExtendedLabels=Y |
421 | 426 | FontStyle=NoLabel (invisible) |
426 | 431 | [_polygon] |
427 | 432 | type=0x16 |
428 | 433 | ;GRMN_TYPE: Park Areas/NATIONAL_PARK_OTHER/Small or misc sized national park/Non NT |
434 | String=Nature Reserve | |
429 | 435 | String1=0x01,Espace vert |
430 | 436 | String2=0x02,Grün |
431 | String3=0x04,Green area | |
432 | 437 | String4=0x03,Groen |
433 | 438 | String7=0x15,Zieleń |
434 | 439 | String8=0x10,Área verde |
442 | 447 | [_polygon] |
443 | 448 | type=0x17 |
444 | 449 | ;GRMN_TYPE: Park Areas/URBAN_PARK/Small urban park, typically only a few square blocks in size/Non NT |
450 | String=City Park/Playground | |
445 | 451 | String1=0x01,Parc |
446 | 452 | String2=0x02,Park |
447 | String3=0x04,Park | |
448 | 453 | String4=0x03,Park |
449 | 454 | String7=0x15,Park |
450 | 455 | String8=0x10,Parque |
458 | 463 | [_polygon] |
459 | 464 | type=0x18 |
460 | 465 | ;GRMN_TYPE: Large Manmade Areas/GOLF_COURSE/Golf course area/Non NT |
466 | String=Golf Course | |
461 | 467 | String1=0x01,Golf |
462 | 468 | String2=0x02,Golfplatz |
463 | String3=0x04,Golf course | |
464 | 469 | String4=0x03,Golfbaan |
465 | 470 | String7=0x15,Pole golfowe |
466 | 471 | String8=0x10,Campo de Golfe |
474 | 479 | [_polygon] |
475 | 480 | type=0x19 |
476 | 481 | ;GRMN_TYPE: Large Manmade Areas/SPORTS_COMPLEX/Sports arena or stadium/Non NT |
482 | String=Sports Complex | |
477 | 483 | String1=0x01,Terrain de sport |
478 | 484 | String2=0x02,Sportplatz |
479 | 485 | String3=0x04,Sports pitch |
490 | 496 | [_polygon] |
491 | 497 | type=0x1a |
492 | 498 | ;GRMN_TYPE: Large Manmade Areas/CEMETARY/Cemetary/Non NT |
499 | String=Cemetery | |
493 | 500 | String1=0x01,Cimetière |
494 | 501 | String2=0x02,Friedhof |
495 | String3=0x04,Cemetry | |
496 | 502 | String4=0x03,Begraafplaats |
497 | 503 | String7=0x15,Cmentarz |
498 | 504 | String8=0x10,Cemitério |
540 | 546 | [_polygon] |
541 | 547 | type=0x1c |
542 | 548 | ;GRMN_TYPE: // |
549 | String=Meadow | |
543 | 550 | String2=0x02,Wiese |
544 | String3=0x04,Meadow | |
545 | 551 | String4=0x03,Weide |
546 | 552 | ExtendedLabels=Y |
547 | 553 | FontStyle=NoLabel (invisible) |
552 | 558 | [_polygon] |
553 | 559 | type=0x1d |
554 | 560 | ;GRMN_TYPE: // |
561 | String=Common | |
555 | 562 | String1=0x01,Parc |
556 | 563 | String2=0x02,Park |
557 | String3=0x04,Park | |
558 | 564 | String4=0x03,Park |
559 | 565 | String7=0x15,Park |
560 | 566 | String8=0x10,Parque |
568 | 574 | [_polygon] |
569 | 575 | type=0x20 |
570 | 576 | ;GRMN_TYPE: Park Areas/STATE_PARK_OTHER/Small or misc sized state park/Non NT |
577 | String=Garden | |
571 | 578 | String1=0x01,Jardin |
572 | 579 | String2=0x02,Garten |
573 | String3=0x04,Garden | |
574 | 580 | String4=0x03,Tuin |
575 | 581 | ExtendedLabels=Y |
576 | 582 | FontStyle=NoLabel (invisible) |
615 | 621 | [_polygon] |
616 | 622 | type=0x21 |
617 | 623 | ;GRMN_TYPE: // |
618 | String3=0x04,Tourism | |
624 | String=Tourism | |
619 | 625 | String4=0x03,Toeristische attractie |
620 | 626 | ExtendedLabels=Y |
621 | 627 | FontStyle=NoLabel (invisible) |
626 | 632 | [_polygon] |
627 | 633 | type=0x22 |
628 | 634 | ;GRMN_TYPE: // |
635 | String=Historic | |
629 | 636 | String1=0x01,Patrimoine historique |
630 | 637 | String2=0x02,Historisches Gebiet / Gebäude |
631 | String3=0x04,Historic area/building | |
632 | 638 | String4=0x03,Historisch gebied/gebouw |
633 | 639 | String7=0x15,Historyczny teren / budynek |
634 | 640 | String8=0x10,Edifício histórico |
642 | 648 | [_polygon] |
643 | 649 | type=0x23 |
644 | 650 | ;GRMN_TYPE: // |
651 | String=Amenity | |
645 | 652 | String1=0x01,Bâtiment |
646 | 653 | String2=0x02,Gebäude |
647 | String3=0x04,Building | |
648 | 654 | String4=0x03,Gebouw |
649 | 655 | String7=0x15,Budynek |
650 | 656 | String8=0x10,Edifício |
658 | 664 | [_polygon] |
659 | 665 | type=0x24 |
660 | 666 | ;GRMN_TYPE: // |
667 | String=Man-made | |
661 | 668 | String2=0x02,Konstruktion |
662 | String3=0x04,Construction | |
663 | 669 | String4=0x03,Constructie |
664 | 670 | ExtendedLabels=Y |
665 | 671 | FontStyle=NoLabel (invisible) |
670 | 676 | [_polygon] |
671 | 677 | type=0x25 |
672 | 678 | ;GRMN_TYPE: // |
673 | String1=0x01,Zone piétonne | |
674 | String2=0x02,Fußgängerzone | |
675 | String3=0x04,Pedestrians | |
676 | String4=0x03,Voetgangersgebied | |
677 | String7=0x15,Pieszy | |
678 | String8=0x10,Pedestre | |
679 | String9=0x05,Area pedonale | |
679 | ;See also 0x6b for pedestrian area | |
680 | String=Square | |
681 | String1=0x01,Place | |
682 | String1=0x02,Platz | |
683 | String1=0x03,Markt | |
684 | String1=0x05,Piazza | |
685 | String1=0x08,Plaza | |
680 | 686 | ExtendedLabels=Y |
681 | 687 | FontStyle=NoLabel (invisible) |
682 | 688 | CustomColor=No |
686 | 692 | [_polygon] |
687 | 693 | type=0x26 |
688 | 694 | ;GRMN_TYPE: // |
695 | String=Farm / Yard | |
689 | 696 | String1=0x01,Ferme |
690 | 697 | String2=0x02,Bauernhof |
691 | String3=0x04,Farm | |
692 | 698 | String4=0x03,Boerenbedrijf |
693 | 699 | ExtendedLabels=Y |
694 | 700 | FontStyle=NoLabel (invisible) |
699 | 705 | [_polygon] |
700 | 706 | type=0x32 |
701 | 707 | ;GRMN_TYPE: Water Areas/SEA/Sea/Non NT |
708 | String=Sea | |
702 | 709 | String1=0x01,Mer |
703 | 710 | String2=0x02,Meer |
704 | String3=0x04,Sea | |
705 | 711 | String4=0x03,Zee |
706 | 712 | String7=0x15,Morze |
707 | 713 | String8=0x10,Mar |
716 | 722 | [_polygon] |
717 | 723 | type=0x3b |
718 | 724 | ;GRMN_TYPE: // |
725 | String=Waterway | |
719 | 726 | String1=0x01,Eau |
720 | 727 | String2=0x02,Wasser |
721 | String3=0x04,Water | |
722 | 728 | String4=0x03,Water |
723 | 729 | String7=0x15,Woda |
724 | 730 | String8=0x10,Água |
733 | 739 | [_polygon] |
734 | 740 | type=0x3c |
735 | 741 | ;GRMN_TYPE: Water Areas/LAKE_100MI/Lake less than 250 sq mi but greater or equal to 100 sq mi in area/Non NT |
742 | String=Lake | |
736 | 743 | String1=0x01,Eau |
737 | 744 | String2=0x02,Wasser |
738 | String3=0x04,Water | |
739 | 745 | String4=0x03,Water |
740 | 746 | String7=0x15,Woda |
741 | 747 | String8=0x10,Água |
750 | 756 | [_polygon] |
751 | 757 | type=0x3d |
752 | 758 | ;GRMN_TYPE: Water Areas/LAKE_30MI, LARGE_LAKE/Large lake, typically between 30 and 500 sq mi in area/Non NT |
759 | String=Bay | |
753 | 760 | String1=0x01,Baie |
754 | 761 | String2=0x02,Bucht |
755 | String3=0x04,Bay | |
756 | 762 | String4=0x03,Baai |
757 | 763 | String7=0x15,Zatoka |
758 | 764 | String8=0x10,Baia |
760 | 766 | ExtendedLabels=Y |
761 | 767 | FontStyle=NoLabel (invisible) |
762 | 768 | CustomColor=No |
763 | Xpm="0 0 1 0" | |
764 | "1 c #F2EFE9" | |
769 | Xpm="32 32 2 1" | |
770 | ". c none" | |
771 | "1 c #FFFFFF" | |
772 | "................................" | |
773 | "................................" | |
774 | "................................" | |
775 | "................................" | |
776 | "................................" | |
777 | "................................" | |
778 | "................................" | |
779 | "................................" | |
780 | "................................" | |
781 | "................................" | |
782 | "................................" | |
783 | "................................" | |
784 | "................................" | |
785 | "................................" | |
786 | "................................" | |
787 | "................................" | |
788 | "................................" | |
789 | "................................" | |
790 | "................................" | |
791 | "................................" | |
792 | "................................" | |
793 | "................................" | |
794 | "................................" | |
795 | "................................" | |
796 | "................................" | |
797 | "................................" | |
798 | "................................" | |
799 | "................................" | |
800 | "................................" | |
801 | "................................" | |
802 | "................................" | |
803 | "................................" | |
804 | ; "12345678901234567890123456789012" | |
765 | 805 | [end] |
766 | 806 | [_polygon] |
767 | 807 | type=0x3f |
768 | 808 | ;GRMN_TYPE: Water Areas/LAKE, LAKE_5MI/Medium sized lake, typically between 5 and 30 sq mi in area/Non NT |
809 | String=Reservoir/Basin | |
769 | 810 | String1=0x01,Eau |
770 | 811 | String2=0x02,Wasser |
771 | String3=0x04,Water | |
772 | 812 | String4=0x03,Water |
773 | 813 | String7=0x15,Woda |
774 | 814 | String8=0x10,Água |
782 | 822 | [_polygon] |
783 | 823 | type=0x41 |
784 | 824 | ;GRMN_TYPE: Water Areas/LAKE_LT_1MI, SMALL_LAKE/Small lake, typically less than 5 sq mi in area/Non NT |
825 | String=Small Lake | |
785 | 826 | String1=0x01,Eau |
786 | 827 | String2=0x02,Wasser |
787 | String3=0x04,Water | |
788 | 828 | String4=0x03,Water |
789 | 829 | String7=0x15,Woda |
790 | 830 | String8=0x10,Água |
799 | 839 | [_polygon] |
800 | 840 | type=0x46 |
801 | 841 | ;GRMN_TYPE: Water Areas/LARGE_RIVER/Major river, typically at least 700 ft in width/Non NT |
842 | String=River | |
802 | 843 | String1=0x01,Eau |
803 | 844 | String2=0x02,Wasser |
804 | String3=0x04,Water | |
805 | 845 | String4=0x03,Water |
806 | 846 | String7=0x15,Woda |
807 | 847 | String8=0x10,Água |
815 | 855 | [_polygon] |
816 | 856 | type=0x47 |
817 | 857 | ;GRMN_TYPE: Water Areas/RIVER_GT_700FT/Major river greater or equal to 700 ft in width/Non NT |
858 | String=Waterfall | |
818 | 859 | String1=0x01,Eau |
819 | 860 | String2=0x02,Wasser |
820 | String3=0x04,Water | |
821 | 861 | String4=0x03,Water |
822 | 862 | String7=0x15,Woda |
823 | 863 | String8=0x10,Água |
832 | 872 | [_polygon] |
833 | 873 | type=0x48 |
834 | 874 | ;GRMN_TYPE: Water Areas/RIVER_100FT, SMALL_RIVER/Minor river, typically less than 700 ft in width/Non NT |
875 | String=Canal | |
835 | 876 | String1=0x01,Eau |
836 | 877 | String2=0x02,Wasser |
837 | String3=0x04,Water | |
838 | 878 | String4=0x03,Water |
839 | 879 | String7=0x15,Woda |
840 | 880 | String8=0x10,Água |
849 | 889 | [_polygon] |
850 | 890 | type=0x4b |
851 | 891 | ;GRMN_TYPE: Map Bounds/DATA_BOUNDS/Bounds of map after creation/Non NT |
892 | String=Area of Map Coverage | |
852 | 893 | String1=0x01,Sol |
853 | 894 | String2=0x02,Hintergrund |
854 | String3=0x04,Non mapped area | |
855 | 895 | String4=0x03,Achtergrond |
856 | 896 | String7=0x15,Obszar niezmapowany |
857 | 897 | String8=0x10,Área não mapeada |
866 | 906 | [_polygon] |
867 | 907 | type=0x4c |
868 | 908 | ;GRMN_TYPE: Water Areas/INTERMITTENT_LAKE/An intermittent or dry lake/Non NT |
909 | String=Intermittent Water | |
869 | 910 | String1=0x01,Eau |
870 | 911 | String2=0x02,Wasser |
871 | String3=0x04,Water | |
872 | 912 | String4=0x03,Water |
873 | 913 | String7=0x15,Woda |
874 | 914 | String8=0x10,Água |
883 | 923 | [_polygon] |
884 | 924 | type=0x4d |
885 | 925 | ;GRMN_TYPE: Surface Cover Areas/GLACIER/Large area of compacted snow and ice/Non NT |
926 | String=Glacier | |
886 | 927 | String1=0x01,Glacier |
887 | 928 | String2=0x02,Gletscher |
888 | String3=0x04,Glacier | |
889 | 929 | String4=0x03,Gletsjer |
890 | 930 | String7=0x15,Lodowiec |
891 | 931 | String8=0x10,Geleira |
900 | 940 | [_polygon] |
901 | 941 | type=0x4e |
902 | 942 | ;GRMN_TYPE: Surface Cover Areas/ORCHARD/Orchard or plantation area/Non NT |
943 | String=Orchard | |
903 | 944 | String1=0x01,Agriculture |
904 | 945 | String2=0x02,Ackerland |
905 | 946 | String3=0x04,Farmland |
916 | 957 | [_polygon] |
917 | 958 | type=0x4f |
918 | 959 | ;GRMN_TYPE: Surface Cover Areas/SCRUB/Scrub brush area/Non NT |
960 | String=Scrub | |
919 | 961 | String1=0x01,Broussailles |
920 | 962 | String2=0x02,Gebüsch |
921 | String3=0x04,Scrub | |
922 | 963 | String4=0x03,Kreupelbos |
923 | 964 | String7=0x15,Zarośla |
924 | 965 | String8=0x10,Arbusto |
966 | 1007 | [_polygon] |
967 | 1008 | type=0x50 |
968 | 1009 | ;GRMN_TYPE: Surface Cover Areas/WOODS/Wooded or forested area/Non NT |
1010 | String=Woods | |
969 | 1011 | String1=0x01,Forêt |
970 | 1012 | String2=0x02,Wald |
971 | String3=0x04,Forest | |
972 | 1013 | String4=0x03,Bos |
973 | 1014 | String7=0x15,Las |
974 | 1015 | String8=0x10,Floresta |
1016 | 1057 | [_polygon] |
1017 | 1058 | type=0x51 |
1018 | 1059 | ;GRMN_TYPE: Surface Cover Areas/WETLAND/Wetland or swamp area/Non NT |
1060 | String=Wetland | |
1019 | 1061 | String1=0x01,Marais |
1020 | 1062 | String2=0x02,Sumpf |
1021 | 1063 | String3=0x04,Marsh |
1066 | 1108 | [_polygon] |
1067 | 1109 | type=0x52 |
1068 | 1110 | ;GRMN_TYPE: Surface Cover Areas/TUNDRA/Area of nearly always freezing soil/Non NT |
1069 | String3=0x04,Tundra | |
1111 | String=Tundra | |
1070 | 1112 | String4=0x03,Toendra |
1071 | 1113 | ExtendedLabels=Y |
1072 | 1114 | FontStyle=NoLabel (invisible) |
1077 | 1119 | [_polygon] |
1078 | 1120 | type=0x53 |
1079 | 1121 | ;GRMN_TYPE: Surface Cover Areas/FLAT/Sand, tidal, mud, etc. flat area/Non NT |
1122 | String=Tidal Sand/Mud Flats | |
1080 | 1123 | String1=0x01,Terre |
1081 | 1124 | String2=0x02,Land |
1082 | String3=0x04,Land | |
1083 | 1125 | String4=0x03,Land |
1084 | 1126 | String7=0x15,Land |
1085 | 1127 | String8=0x10,Terra |
1093 | 1135 | [_polygon] |
1094 | 1136 | type=0x6a |
1095 | 1137 | ;GRMN_TYPE: // |
1138 | ; not used by default style | |
1139 | String=Station | |
1096 | 1140 | String1=0x01,Gare |
1097 | 1141 | String2=0x02,Bahnhof |
1098 | String3=0x04,Station | |
1099 | 1142 | String4=0x03,Station |
1100 | 1143 | String7=0x15,Stacja |
1101 | 1144 | String8=0x10,Estação |
1109 | 1152 | [_polygon] |
1110 | 1153 | type=0x6b |
1111 | 1154 | ;GRMN_TYPE: // |
1155 | ; not used by default style | |
1156 | String=Pedestrian Zone | |
1112 | 1157 | String1=0x01,Zone piétonne |
1113 | 1158 | String2=0x02,Fußgängerzone |
1114 | String3=0x04,Pedestrians | |
1115 | 1159 | String4=0x03,Voetgangersgebied |
1116 | 1160 | String7=0x15,Pieszy |
1117 | 1161 | String8=0x10,Pedestre |
1125 | 1169 | [_polygon] |
1126 | 1170 | type=0x6c |
1127 | 1171 | ;GRMN_TYPE: // |
1172 | ; not used by default style | |
1173 | String=Platform | |
1128 | 1174 | String1=0x01,Quai |
1129 | 1175 | String2=0x02,Bahnsteig |
1130 | String3=0x04,Platform | |
1131 | 1176 | String4=0x03,Perron |
1132 | 1177 | String7=0x15,Platform |
1133 | 1178 | String8=0x10,Plataforma |
1138 | 1183 | Xpm="0 0 1 0" |
1139 | 1184 | "1 c #BBBBBB" |
1140 | 1185 | [end] |
1186 | ; | |
1141 | 1187 | [_line] |
1142 | 1188 | type=0x01 |
1143 | 1189 | ;GRMN_TYPE: Roads/INTERSTATE, MAJOR_HWY/Primary, divided, limited-access highway, akin to an interstate in the US/Non NT, NT |
1147 | 1193 | Xpm="0 0 2 0" |
1148 | 1194 | "1 c #E892A2" |
1149 | 1195 | "2 c #FF008B" |
1196 | String=Motorway | |
1150 | 1197 | String1=0x01,Autoroute |
1151 | 1198 | String2=0x02,Autobahn |
1152 | String3=0x04,Motorway | |
1153 | 1199 | String4=0x03,Snelweg |
1154 | 1200 | String7=0x15,Autostrada |
1155 | 1201 | String8=0x10,Autoestrada |
1167 | 1213 | Xpm="0 0 2 0" |
1168 | 1214 | "1 c #F9B29C" |
1169 | 1215 | "2 c #D87559" |
1216 | String=Trunk Road | |
1170 | 1217 | String1=0x01,Voie rapide |
1171 | 1218 | String2=0x02,Schnellstraße |
1172 | String3=0x04,Trunk | |
1173 | 1219 | String4=0x03,Autoweg |
1174 | 1220 | String7=0x15,Droga szybkiego ruchu |
1175 | 1221 | String8=0x10,Via expressa |
1187 | 1233 | Xpm="0 0 2 0" |
1188 | 1234 | "1 c #FCD6A4" |
1189 | 1235 | "2 c #C5A363" |
1236 | String=Primary Road | |
1190 | 1237 | String1=0x01,Route primaire |
1191 | 1238 | String2=0x02,Bundesstraße |
1192 | String3=0x04,Primary | |
1193 | 1239 | String4=0x03,Primair |
1194 | 1240 | String7=0x15,Droga krajowa |
1195 | 1241 | String8=0x10,Via primária |
1207 | 1253 | Xpm="0 0 2 0" |
1208 | 1254 | "1 c #F7FABF" |
1209 | 1255 | "2 c #BBC279" |
1256 | String=Secondary Road | |
1210 | 1257 | String1=0x01,Route secondaire |
1211 | 1258 | String2=0x02,Bundesstraße |
1212 | String3=0x04,Secondary | |
1213 | 1259 | String4=0x03,Secundair |
1214 | 1260 | String7=0x15,Droga wojewódzka |
1215 | 1261 | String8=0x10,Via secundária |
1227 | 1273 | Xpm="0 0 2 0" |
1228 | 1274 | "1 c #FFFFFF" |
1229 | 1275 | "2 c #C5C5C5" |
1276 | String=Tertiary Road | |
1230 | 1277 | String1=0x01,Route tertiaire |
1231 | 1278 | String2=0x02,Straße |
1232 | String3=0x04,Tertiary | |
1233 | 1279 | String4=0x03,Tertiair |
1234 | 1280 | String7=0x15,Droga powiatowa |
1235 | 1281 | String8=0x10,Via terciária |
1247 | 1293 | Xpm="0 0 2 0" |
1248 | 1294 | "1 c #FFFFFF" |
1249 | 1295 | "2 c #C5C5C5" |
1296 | String=Residential/Minor/Unclassified | |
1250 | 1297 | String1=0x01,Rue |
1251 | 1298 | String2=0x02,Straße |
1252 | String3=0x04,Residential | |
1253 | 1299 | String4=0x03,Weg |
1254 | 1300 | String7=0x15,Droga |
1255 | 1301 | String8=0x10,Residencial |
1267 | 1313 | Xpm="0 0 2 0" |
1268 | 1314 | "1 c #FFFFFF" |
1269 | 1315 | "2 c #C5C5C5" |
1316 | String=Alley | |
1270 | 1317 | String1=0x01,Rue |
1271 | 1318 | String2=0x02,Straße |
1272 | String3=0x04,Street | |
1273 | 1319 | String4=0x03,Straat |
1274 | 1320 | String7=0x15,Ulica |
1275 | 1321 | String8=0x10,Rua |
1288 | 1334 | Xpm="0 0 2 0" |
1289 | 1335 | "1 c #F7FABF" |
1290 | 1336 | "2 c #BBC279" |
1337 | String=Link Road | |
1291 | 1338 | String1=0x01,Voie d’accès |
1292 | 1339 | String2=0x02,Bundesstraße (Verbindung) |
1293 | String3=0x04,Secondary (Link) | |
1294 | 1340 | String4=0x03,Secundair (Verbinding) |
1295 | 1341 | String7=0x15,Droga wojewódzka (łącznik) |
1296 | 1342 | String8=0x10,Ligação de via secundária |
1308 | 1354 | Xpm="0 0 2 0" |
1309 | 1355 | "1 c #F9B29C" |
1310 | 1356 | "2 c #D87559" |
1357 | String=Motorway Link | |
1311 | 1358 | String1=0x01,Voie d’accès |
1312 | 1359 | String2=0x02,Schnellstraße (verbindung) |
1313 | String3=0x04,Trunk (Link) | |
1314 | 1360 | String4=0x03,Autoweg (Verbinding) |
1315 | 1361 | String7=0x15,Droga szybkiego ruchu (łącznik) |
1316 | 1362 | String8=0x10,Ligação de via expressa |
1329 | 1375 | "!!!!! !! !!!!! !! !!!!! !! " |
1330 | 1376 | "!!!!! !! !!!!! !! !!!!! !! " |
1331 | 1377 | ;12345678901234567890123456789012 |
1378 | String=Unpaved Road | |
1332 | 1379 | String1=0x01,Sans revêtement |
1333 | 1380 | String2=0x02,Unbefestigt |
1334 | 1381 | String3=0x04,Track (Grade unknown) |
1349 | 1396 | Xpm="0 0 2 0" |
1350 | 1397 | "1 c #F9B29C" |
1351 | 1398 | "2 c #D87559" |
1399 | String=Naming Link | |
1352 | 1400 | String1=0x01,Voie d’accès |
1353 | 1401 | String2=0x02,Schnellstraße (verbindung) |
1354 | String3=0x04,Trunk (Link) | |
1355 | 1402 | String4=0x03,Autoweg (Verbinding) |
1356 | 1403 | String7=0x15,Droga szybkiego ruchu (łącznik) |
1357 | 1404 | String8=0x10,Ligação de via expressa |
1369 | 1416 | Xpm="0 0 2 0" |
1370 | 1417 | "1 c #FFFFFF" |
1371 | 1418 | "2 c #C5C5C5" |
1419 | String=Roundabout | |
1372 | 1420 | String1=0x01,Rond point |
1373 | 1421 | String2=0x02,Kreisverkehr |
1374 | String3=0x04,Roundabout | |
1375 | 1422 | String4=0x03,Rotonde |
1376 | 1423 | String7=0x15,Rondo |
1377 | 1424 | String8=0x10,Rotatória |
1390 | 1437 | " !!!! !!!! !!!! !!!! " |
1391 | 1438 | " !!!! !!!! !!!! !!!! " |
1392 | 1439 | ;12345678901234567890123456789012 |
1440 | String=Cycleway | |
1393 | 1441 | String1=0x01,Piste cyclable |
1394 | 1442 | String2=0x02,Radweg |
1395 | String3=0x04,Cycleway | |
1396 | 1443 | String4=0x03,Fietspad |
1397 | 1444 | String7=0x15,Ścieżka rowerowa |
1398 | 1445 | String8=0x10,Ciclovia |
1413 | 1460 | "!!!!!!!!########!!!!!!!!########" |
1414 | 1461 | "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" |
1415 | 1462 | ;12345678901234567890123456789012 |
1463 | String=Railroad | |
1416 | 1464 | String1=0x01,Voie ferrée |
1417 | 1465 | String2=0x02,Gleis |
1418 | 1466 | String3=0x04,Railway |
1433 | 1481 | " c none" |
1434 | 1482 | " " |
1435 | 1483 | ;12345678901234567890123456789012 |
1484 | String=Coastline | |
1436 | 1485 | String1=0x01,Littoral |
1437 | 1486 | String2=0x02,Küstelinien |
1438 | String3=0x04,Coastline | |
1439 | 1487 | String4=0x03,Kustlijn |
1440 | 1488 | String7=0x15,Wybrzeże |
1441 | 1489 | String8=0x10,Litoral / Costal |
1454 | 1502 | " c none" |
1455 | 1503 | " !!!!! !!!!! !!!!! !!!!! " |
1456 | 1504 | ;12345678901234567890123456789012 |
1505 | String=Trail | |
1457 | 1506 | String1=0x01,Sentier |
1458 | 1507 | String2=0x02,Fußweg |
1459 | 1508 | String3=0x04,Path |
1472 | 1521 | LineWidth=1 |
1473 | 1522 | Xpm="0 0 1 0" |
1474 | 1523 | "1 c #AAAAAA" |
1475 | String3=0x04,Barrier | |
1524 | String=Barrier | |
1476 | 1525 | String4=0x03,Barrière |
1477 | 1526 | ExtendedLabels=Y |
1478 | 1527 | FontStyle=NoLabel (invisible) |
1485 | 1534 | LineWidth=2 |
1486 | 1535 | Xpm="0 0 1 0" |
1487 | 1536 | "1 c #AAD3DF" |
1537 | String=Stream | |
1488 | 1538 | String1=0x01,Ruisseau |
1489 | 1539 | String2=0x02,Bach |
1490 | String3=0x04,Stream | |
1491 | 1540 | String4=0x03,Beek |
1492 | 1541 | String7=0x15,Strumień |
1493 | 1542 | String8=0x10,Córrego |
1506 | 1555 | " c none" |
1507 | 1556 | " !!!! !!!! !!!! !!!! " |
1508 | 1557 | ;12345678901234567890123456789012 |
1558 | String=Car Ferry | |
1509 | 1559 | String1=0x01,Ferry |
1510 | 1560 | String2=0x02,Fähre |
1511 | String3=0x04,Ferry | |
1512 | 1561 | String4=0x03,Ferry |
1513 | 1562 | String7=0x15,Prom |
1514 | 1563 | String8=0x10,Balsa |
1527 | 1576 | " c none" |
1528 | 1577 | " !!!! !!!! !!!! !!!! " |
1529 | 1578 | ;12345678901234567890123456789012 |
1579 | String=Pedestrian Ferry | |
1530 | 1580 | String1=0x01,Ferry |
1531 | 1581 | String2=0x02,Fähre |
1532 | String3=0x04,Ferry | |
1533 | 1582 | String4=0x03,Ferry |
1534 | 1583 | String7=0x15,Prom |
1535 | 1584 | String8=0x10,Balsa |
1556 | 1605 | " " |
1557 | 1606 | " " |
1558 | 1607 | ;12345678901234567890123456789012 |
1608 | String=St/Prv Border | |
1559 | 1609 | String1=0x01,Limite communale |
1560 | 1610 | String2=0x02,Grenze |
1561 | 1611 | String3=0x04,Boundary |
1584 | 1634 | " " |
1585 | 1635 | " " |
1586 | 1636 | ;12345678901234567890123456789012 |
1637 | String=Country Border | |
1587 | 1638 | String1=0x01,Limite départementale |
1588 | 1639 | String2=0x02,Landesgrenze |
1589 | 1640 | String3=0x04,State Boundary |
1613 | 1664 | "!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#" |
1614 | 1665 | "#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!#!" |
1615 | 1666 | ;12345678901234567890123456789012 |
1667 | String=Intl Border | |
1616 | 1668 | String1=0x01,Frontière nationale |
1617 | 1669 | String2=0x02,Staatsgrenze |
1618 | 1670 | String3=0x04,National boundary |
1632 | 1684 | LineWidth=7 |
1633 | 1685 | Xpm="0 0 1 0" |
1634 | 1686 | "1 c #AAD3DF" |
1687 | String=River | |
1635 | 1688 | String1=0x01,Rivière, Canal |
1636 | 1689 | String2=0x02,Fluß, Kanal |
1637 | 1690 | String3=0x04,River, Canal |
1653 | 1706 | " c none" |
1654 | 1707 | "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" |
1655 | 1708 | ;12345678901234567890123456789012 |
1709 | String=Contour Line | |
1656 | 1710 | String1=0x01,Courbe de niveau (20 m) |
1657 | 1711 | String2=0x02,Höhenlinie (20 m) |
1658 | 1712 | String3=0x04,Contour (20 m) |
1671 | 1725 | LineWidth=1 |
1672 | 1726 | Xpm="0 0 1 0" |
1673 | 1727 | "1 c #D3A87C" |
1728 | String=Contour Line | |
1674 | 1729 | String1=0x01,Courbe de niveau (100 m) |
1675 | 1730 | String2=0x02,Höhenlinie(100 m) |
1676 | 1731 | String3=0x04,Contour (100 m) |
1690 | 1745 | LineWidth=1 |
1691 | 1746 | Xpm="0 0 1 0" |
1692 | 1747 | "1 c #CC9966" |
1748 | String=Contour Line | |
1693 | 1749 | String1=0x01,Courbe de niveau (500 m) |
1694 | 1750 | String2=0x02,Höhenlinie (500 m) |
1695 | 1751 | String3=0x04,Contour (500 m) |
1713 | 1769 | " !!!!! !!!!! !!!!! !!!!! " |
1714 | 1770 | " !!!!! !!!!! !!!!! !!!!! " |
1715 | 1771 | ;12345678901234567890123456789012 |
1772 | String=Intermittent Stream | |
1716 | 1773 | String1=0x01,Ruisseau intermittent |
1717 | 1774 | String2=0x02,Wasserlauf (periodisch) |
1718 | String3=0x04,Stream (Intermittent) | |
1719 | 1775 | String4=0x03,Beek (Periodiek) |
1720 | 1776 | String7=0x15,Strumień |
1721 | 1777 | String8=0x10,Córrego intermitente |
1732 | 1788 | LineWidth=12 |
1733 | 1789 | Xpm="0 0 1 0" |
1734 | 1790 | "1 c #BBBBCC" |
1791 | String=Runway | |
1735 | 1792 | String1=0x01,Piste d’aviation |
1736 | 1793 | String2=0x02,Startbahn |
1737 | String3=0x04,Runway | |
1738 | 1794 | String4=0x03,Landingsbaan |
1739 | 1795 | String7=0x15,Pas startowy |
1740 | 1796 | String8=0x10,Pista |
1756 | 1812 | " ! ! ! ! " |
1757 | 1813 | " ! ! ! ! " |
1758 | 1814 | ;12345678901234567890123456789012 |
1815 | String=Pipeline | |
1759 | 1816 | String1=0x01,Pipeline |
1760 | 1817 | String2=0x02,Rohr |
1761 | String3=0x04,Pipe | |
1762 | 1818 | String4=0x03,Pijpleiding |
1763 | 1819 | String7=0x15,Rurociąg |
1764 | 1820 | String8=0x10,Tubulação |
1775 | 1831 | Xpm="0 0 2 0" |
1776 | 1832 | "1 c #737373" |
1777 | 1833 | "2 c #FFFFFF" |
1834 | String=Powerline | |
1778 | 1835 | String1=0x01,Ligne électrique |
1779 | 1836 | String2=0x02,Hochspannungskabel |
1780 | String3=0x04,Power cable | |
1781 | 1837 | String4=0x03,Hoogspanningskabel |
1782 | 1838 | String7=0x15,Kabel wysokiego napięcia |
1783 | 1839 | String8=0x10,Cabo de força |
1793 | 1849 | LineWidth=7 |
1794 | 1850 | Xpm="0 0 1 0" |
1795 | 1851 | "1 c #FFC0CB" |
1852 | String=Raceway | |
1796 | 1853 | String1=0x01,Circuit |
1797 | 1854 | String2=0x02,Rennstrecke |
1798 | String3=0x04,Raceway | |
1799 | 1855 | String4=0x03,Circuit |
1800 | 1856 | String7=0x15,Tor wyścigowy |
1801 | 1857 | String8=0x10,Pista de corrida |
1813 | 1869 | Xpm="0 0 2 0" |
1814 | 1870 | "1 c #F9B29C" |
1815 | 1871 | "2 c #D87559" |
1872 | String=Roundabout | |
1816 | 1873 | String1=0x01,Voie d’accès |
1817 | 1874 | String2=0x02,Schnellstraße (verbindung) |
1818 | String3=0x04,Trunk (Link) | |
1819 | 1875 | String4=0x03,Autoweg (Verbinding) |
1820 | 1876 | String7=0x15,Droga szybkiego ruchu (łącznik) |
1821 | 1877 | String8=0x10,Ligação de via expressa |
1833 | 1889 | Xpm="0 0 2 0" |
1834 | 1890 | "1 c #FCD6A4" |
1835 | 1891 | "2 c #C5A363" |
1892 | String=Roundabout | |
1836 | 1893 | String1=0x01,Voie d’accès |
1837 | 1894 | String2=0x02,Bundesstraße (Verbindung) |
1838 | String3=0x04,Primary (Link) | |
1839 | 1895 | String4=0x03,Primair (Verbinding) |
1840 | 1896 | String7=0x15,Droga krajowa (łącznik) |
1841 | 1897 | String8=0x10,Ligação de via primária |
1853 | 1909 | Xpm="0 0 2 0" |
1854 | 1910 | "1 c #F7FABF" |
1855 | 1911 | "2 c #BBC279" |
1912 | String=Roundabout | |
1856 | 1913 | String1=0x01,Voie d’accès |
1857 | 1914 | String2=0x02,Bundesstraße (Verbindung) |
1858 | String3=0x04,Secondary (Link) | |
1859 | 1915 | String4=0x03,Secundair (Verbinding) |
1860 | 1916 | String7=0x15,Droga wojewódzka (łącznik) |
1861 | 1917 | String8=0x10,Ligação de via secundária |
1873 | 1929 | Xpm="0 0 2 0" |
1874 | 1930 | "1 c #FFFFFF" |
1875 | 1931 | "2 c #C5C5C5" |
1932 | String=Roundabout | |
1876 | 1933 | String1=0x01,Route tertiaire |
1877 | 1934 | String2=0x02,Straße |
1878 | String3=0x04,Tertiary | |
1879 | 1935 | String4=0x03,Tertiair |
1880 | 1936 | String7=0x15,Droga powiatowa |
1881 | 1937 | String8=0x10,Via terciária |
1887 | 1943 | [_line] |
1888 | 1944 | type=0x10a02 |
1889 | 1945 | ;GRMN_TYPE: Water Features/INTERMITTENT_STREAM(NT)/Intermittent or dry stream, creek, or ditch/NT |
1946 | ; not used by default style | |
1890 | 1947 | UseOrientation=Y |
1891 | 1948 | Xpm="32 6 2 1" |
1892 | 1949 | "! c #AAD3DF" |
1898 | 1955 | " !! !! !! !! !! !! !! !! " |
1899 | 1956 | " !! !! !! !! !! !! !! !! " |
1900 | 1957 | ;12345678901234567890123456789012 |
1958 | String=River, Wadi (Intermittent) | |
1901 | 1959 | String1=0x01,Cours d’eau (intermittent) |
1902 | 1960 | String2=0x02,Fluß (Periodisch) |
1903 | String3=0x04,River, Wadi (Intermittent) | |
1904 | 1961 | String4=0x03,Rivier (Periodiek) |
1905 | 1962 | String7=0x15,Rzeka |
1906 | 1963 | String8=0x10,Rio intermitente |
1912 | 1969 | [_line] |
1913 | 1970 | type=0x10a06 |
1914 | 1971 | ;GRMN_TYPE: // |
1972 | ; not used by default style | |
1915 | 1973 | UseOrientation=N |
1916 | 1974 | LineWidth=4 |
1917 | 1975 | BorderWidth=1 |
1918 | 1976 | Xpm="0 0 2 0" |
1919 | 1977 | "1 c #BBBBBB" |
1920 | 1978 | "2 c #949494" |
1979 | String=Platform | |
1921 | 1980 | String1=0x01,Quai |
1922 | 1981 | String2=0x02,Plattform |
1923 | String3=0x04,Platform | |
1924 | 1982 | String4=0x03,Perron |
1925 | 1983 | String7=0x15,Peron |
1926 | 1984 | String8=0x10,Plataforma |
1932 | 1990 | [_line] |
1933 | 1991 | type=0x10c06 |
1934 | 1992 | ;GRMN_TYPE: // |
1993 | ; not used by default style | |
1935 | 1994 | UseOrientation=Y |
1936 | 1995 | Xpm="32 7 2 1" |
1937 | 1996 | "! c #99CCCC" |
1944 | 2003 | "!!####!!!!####!!!!####!!!!####!!" |
1945 | 2004 | "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" |
1946 | 2005 | ;12345678901234567890123456789012 |
2006 | String=Road (Construction) | |
1947 | 2007 | String1=0x01,Route (en travaux) |
1948 | 2008 | String2=0x02,Weg (Im bau) |
1949 | String3=0x04,Road (Construction) | |
1950 | 2009 | String4=0x03,Weg (In aanleg) |
1951 | 2010 | String7=0x15,Droga (w budowie) |
1952 | 2011 | String8=0x10,Rodovia em construção |
1955 | 2014 | FontStyle=NoLabel (invisible) |
1956 | 2015 | CustomColor=No |
1957 | 2016 | [end] |
2017 | ; | |
1958 | 2018 | [_point] |
1959 | 2019 | type=0x001 |
1960 | 2020 | subtype=0x00 |
1961 | 2021 | ;GRMN_TYPE: Political Entities/CITY_10M/Large city with >10 million inhabitants/Non NT |
2022 | String=City (>1m) | |
1962 | 2023 | String1=0x01,Capitale |
1963 | 2024 | String2=0x02,Hauptstadt |
1964 | String3=0x04,Capital | |
1965 | 2025 | String4=0x03,Hoofdstad |
1966 | 2026 | String7=0x15,Stolica |
1967 | 2027 | String8=0x10,Capital |
1990 | 2050 | type=0x002 |
1991 | 2051 | subtype=0x00 |
1992 | 2052 | ;GRMN_TYPE: Political Entities/CITY_5M, LARGE_CITY/Large city center, typically 1M+ inhabitants/Non NT |
2053 | String=City (>800k) | |
1993 | 2054 | String1=0x01,Capitale |
1994 | 2055 | String2=0x02,Hauptstadt |
1995 | String3=0x04,Capital | |
1996 | 2056 | String4=0x03,Hoofdstad |
1997 | 2057 | String7=0x15,Stolica |
1998 | 2058 | String8=0x10,Capital |
2021 | 2081 | type=0x003 |
2022 | 2082 | subtype=0x00 |
2023 | 2083 | ;GRMN_TYPE: Political Entities/CITY_2M/Large city with a range of (2, 5] million inhabitants/Non NT |
2084 | String=City (>400k) | |
2024 | 2085 | String1=0x01,Ville (>200k) |
2025 | 2086 | String2=0x02,Stadt (200t) |
2026 | String3=0x04,City (>200k) | |
2027 | 2087 | String4=0x03,Stad (>200k) |
2028 | 2088 | String7=0x15,Miasto (>200 tys.) |
2029 | 2089 | String8=0x10,Cidade (>200k) |
2050 | 2110 | type=0x004 |
2051 | 2111 | subtype=0x00 |
2052 | 2112 | ;GRMN_TYPE: Political Entities/CITY_1M/Large city with a range of (1, 2] million inhabitants/Non NT |
2113 | String=City (>300k) | |
2053 | 2114 | String1=0x01,Ville (>200k) |
2054 | 2115 | String2=0x02,Stadt (200t) |
2055 | String3=0x04,City (>200k) | |
2056 | 2116 | String4=0x03,Stad (>200k) |
2057 | 2117 | String7=0x15,Miasto (>200 tys.) |
2058 | 2118 | String8=0x10,Cidade (>200k) |
2079 | 2139 | type=0x005 |
2080 | 2140 | subtype=0x00 |
2081 | 2141 | ;GRMN_TYPE: Political Entities/CITY_500K/City with the range of (0.5, 1] million inhabitants/Non NT |
2142 | String=City (>200k) | |
2082 | 2143 | String1=0x01,Ville (>200k) |
2083 | 2144 | String2=0x02,Stadt (200t) |
2084 | String3=0x04,City (>200k) | |
2085 | 2145 | String4=0x03,Stad (>200k) |
2086 | 2146 | String7=0x15,Miasto (>200 tys.) |
2087 | 2147 | String8=0x10,Cidade (>200k) |
2108 | 2168 | type=0x006 |
2109 | 2169 | subtype=0x00 |
2110 | 2170 | ;GRMN_TYPE: Political Entities/CITY_200K/City with the range of (200, 500] thousand inhabitants/Non NT |
2171 | String=Small City / Large Town | |
2111 | 2172 | String1=0x01,Ville (>50k) |
2112 | 2173 | String2=0x02,Stadt (50t) |
2113 | String3=0x04,City (>50k) | |
2114 | 2174 | String4=0x03,Woonplaats (>50k) |
2115 | 2175 | String7=0x15,Miasto (>50 tys.) |
2116 | 2176 | String8=0x10,Cidade (>50k) |
2137 | 2197 | type=0x007 |
2138 | 2198 | subtype=0x00 |
2139 | 2199 | ;GRMN_TYPE: Political Entities/CITY_100K/City with the range of (100, 200] thousand inhabitants/Non NT |
2200 | String=Small City / Medium Town | |
2140 | 2201 | String1=0x01,Ville (>10k) |
2141 | 2202 | String2=0x02,Stadt (10t) |
2142 | String3=0x04,City (>10k) | |
2143 | 2203 | String4=0x03,Woonplaats (>10k) |
2144 | 2204 | String7=0x15,Miasto (>10 tys.) |
2145 | 2205 | String8=0x10,Cidade (>10k) |
2158 | 2218 | type=0x008 |
2159 | 2219 | subtype=0x00 |
2160 | 2220 | ;GRMN_TYPE: Political Entities/CITY_50K, MEDIUM_CITY/Medium city center, typically 50K-1M inhabitants/Non NT |
2221 | String=Small City / Town | |
2161 | 2222 | String1=0x01,Village (>5k) |
2162 | 2223 | String2=0x02,Dorf (>5t) |
2163 | String3=0x04,Village (>5k) | |
2164 | 2224 | String4=0x03,Dorp (>5k) |
2165 | 2225 | String7=0x15,Wieś (>5 tys.) |
2166 | 2226 | String8=0x10,Povoado (>5k) |
2179 | 2239 | type=0x009 |
2180 | 2240 | subtype=0x00 |
2181 | 2241 | ;GRMN_TYPE: Political Entities/CITY_20K/City with the range of (20, 50] thousand inhabitants/Non NT |
2242 | String=Small Town / Village | |
2182 | 2243 | String1=0x01,Village (>5k) |
2183 | 2244 | String2=0x02,Dorf (>5t) |
2184 | String3=0x04,Village (>5k) | |
2185 | 2245 | String4=0x03,Dorp (>5k) |
2186 | 2246 | String7=0x15,Wieś (>5 tys.) |
2187 | 2247 | String8=0x10,Povoado (>5k) |
2200 | 2260 | type=0x00a |
2201 | 2261 | subtype=0x00 |
2202 | 2262 | ;GRMN_TYPE: Political Entities/CITY_10K/City with the range of (10, 20] thousand inhabitants/Non NT |
2263 | String=Small Town / Suburb | |
2203 | 2264 | String1=0x01,Hameau |
2204 | 2265 | String2=0x02,Ort, Weiler |
2205 | String3=0x04,Hamlet | |
2206 | 2266 | String4=0x03,Gehucht |
2207 | 2267 | String7=0x15,Wioska |
2208 | 2268 | String8=0x10,Lugarejo |
2221 | 2281 | type=0x00b |
2222 | 2282 | subtype=0x00 |
2223 | 2283 | ;GRMN_TYPE: Political Entities/CITY_5K/City with the range of (5, 10] thousand inhabitants/Non NT |
2284 | String=Hamlet | |
2224 | 2285 | String1=0x01,Nom |
2225 | 2286 | String2=0x02,Name |
2226 | String3=0x04,Name | |
2227 | 2287 | String4=0x03,Naam |
2228 | 2288 | String7=0x15,Nazwa |
2229 | 2289 | String8=0x10,Nome |
2242 | 2302 | type=0x021 |
2243 | 2303 | subtype=0x00 |
2244 | 2304 | ;GRMN_TYPE: // |
2305 | String=Exit | |
2245 | 2306 | String1=0x01,Sortie |
2246 | 2307 | String2=0x02,Ausfahrt |
2247 | String3=0x04,Ext | |
2248 | 2308 | String4=0x03,Afrit |
2249 | 2309 | String7=0x15,Zjazd |
2250 | 2310 | String8=0x10,Saída |
2266 | 2326 | type=0x021 |
2267 | 2327 | subtype=0x0f |
2268 | 2328 | ;GRMN_TYPE: // |
2329 | String=Services | |
2269 | 2330 | String1=0x01,Sortie |
2270 | 2331 | String2=0x02,Ausfahrt |
2271 | String3=0x04,Ext | |
2272 | 2332 | String4=0x03,Afrit |
2273 | 2333 | String7=0x15,Zjazd |
2274 | 2334 | String8=0x10,Saída |
2290 | 2350 | type=0x02a |
2291 | 2351 | subtype=0x00 |
2292 | 2352 | ;GRMN_TYPE: Business - Food and Drink/RESTAURANT/General restaurant of unknown genre/Non NT |
2353 | String=Restaurant | |
2293 | 2354 | String1=0x01,Restaurant |
2294 | 2355 | String2=0x02,Restaurant |
2295 | String3=0x04,Restaurant | |
2296 | 2356 | String4=0x03,Restaurant |
2297 | 2357 | String7=0x15,Restauracja |
2298 | 2358 | String8=0x10,Restaurante |
2326 | 2386 | type=0x02a |
2327 | 2387 | subtype=0x01 |
2328 | 2388 | ;GRMN_TYPE: Business - Food and Drink/RESTAURANT_AMERICAN/American cuisine/Non NT |
2389 | String=Restaurant (American/Burger) | |
2329 | 2390 | String1=0x01,Restaurant (Américain) |
2330 | 2391 | String2=0x02,Restaurant |
2331 | String3=0x04,Restaurant (American) | |
2332 | 2392 | String4=0x03,Restaurant (Amerikaans) |
2333 | 2393 | String7=0x15,Restauracja (Amerykańska) |
2334 | 2394 | String8=0x10,Restaurante americano |
2362 | 2422 | type=0x02a |
2363 | 2423 | subtype=0x02 |
2364 | 2424 | ;GRMN_TYPE: Business - Food and Drink/RESTAURANT_ASIAN/Asian cuisine/Non NT |
2425 | String=Restaurant (Asian) | |
2365 | 2426 | String1=0x01,Restaurant (Asiatique) |
2366 | 2427 | String2=0x02,Restaurant (Asiatisch) |
2367 | String3=0x04,Restaurant (Asia) | |
2368 | 2428 | String4=0x03,Restaurant (Aziatisch) |
2369 | 2429 | String7=0x15,Restauracja (Azjatycka) |
2370 | 2430 | String8=0x10,Restaurante asiático |
2398 | 2458 | type=0x02a |
2399 | 2459 | subtype=0x03 |
2400 | 2460 | ;GRMN_TYPE: Business - Food and Drink/RESTAURANT_BARBECUE/Barbecue cuisine/Non NT |
2461 | String=Restaurant (BBQ/Kebab) | |
2401 | 2462 | String1=0x01,Restaurant (Grill) |
2402 | 2463 | String2=0x02,Restaurant |
2403 | String3=0x04,Restaurant (BBQ) | |
2404 | 2464 | String4=0x03,Restaurant (BBQ) |
2405 | 2465 | String7=0x15,Restauracja (Grill) |
2406 | 2466 | String8=0x10,Churrascaria |
2434 | 2494 | type=0x02a |
2435 | 2495 | subtype=0x04 |
2436 | 2496 | ;GRMN_TYPE: Business - Food and Drink/RESTAURANT_CHINESE/Chinese cuisine/Non NT |
2497 | String=Restaurant (Chinese/Vietnamese) | |
2437 | 2498 | String1=0x01,Restaurant (Chinois) |
2438 | 2499 | String2=0x02,Restaurant (Chinesisch) |
2439 | String3=0x04,Restaurant (Chinese) | |
2440 | 2500 | String4=0x03,Restaurant (Chinees) |
2441 | 2501 | String7=0x15,Restauracja (Chińska) |
2442 | 2502 | String8=0x10,Restaurante chinês |
2470 | 2530 | type=0x02a |
2471 | 2531 | subtype=0x05 |
2472 | 2532 | ;GRMN_TYPE: Business - Food and Drink/RESTAURANT_DELI/Deli or sandwich shop/Non NT |
2533 | String=Deli/Bakery | |
2473 | 2534 | String1=0x01,Restaurant (Grec) |
2474 | 2535 | String2=0x02,Restaurant (Griechisch) |
2475 | String3=0x04,Restaurant (Greek) | |
2476 | 2536 | String4=0x03,Restaurant (Delicatesse) |
2477 | 2537 | String7=0x15,Restauracja (Grecka) |
2478 | 2538 | String8=0x10,Restaurante grego |
2506 | 2566 | type=0x02a |
2507 | 2567 | subtype=0x06 |
2508 | 2568 | ;GRMN_TYPE: Business - Food and Drink/RESTAURANT_INTRNTNL/International cuisine/Non NT |
2569 | String=Restaurant (International) | |
2509 | 2570 | String1=0x01,Restaurant (International) |
2510 | 2571 | String2=0x02,Restaurant |
2511 | String3=0x04,Restaurant (International) | |
2512 | 2572 | String4=0x03,Restaurant (Internationaal) |
2513 | 2573 | String7=0x15,Restauracja (Międzynarodowa) |
2514 | 2574 | String8=0x10,Restaurante Internacional |
2542 | 2602 | type=0x02a |
2543 | 2603 | subtype=0x07 |
2544 | 2604 | ;GRMN_TYPE: Business - Food and Drink/RESTAURANT_FAST_FOOD/Fast food establishment, i.e. McDonalds/Non NT |
2605 | String=Fast Food | |
2545 | 2606 | String1=0x01,Restauration rapide |
2546 | 2607 | String2=0x02,Restaurant (Fastfood) |
2547 | String3=0x04,Restaurant (Fastfood) | |
2548 | 2608 | String4=0x03,Restaurant (Fastfood) |
2549 | 2609 | String7=0x15,Restauracja (Fastfood) |
2550 | 2610 | String8=0x10,Lanchonete |
2571 | 2631 | type=0x02a |
2572 | 2632 | subtype=0x08 |
2573 | 2633 | ;GRMN_TYPE: Business - Food and Drink/RESTAURANT_ITALIAN/Italian cuisine/Non NT |
2634 | String=Restaurant (Italian) | |
2574 | 2635 | String1=0x01,Restaurant (Italien) |
2575 | 2636 | String2=0x02,Restaurant (Italienisch) |
2576 | String3=0x04,Restaurant (Italian) | |
2577 | 2637 | String4=0x03,Restaurant (Italiaans) |
2578 | 2638 | String7=0x15,Restauracja (Włoska) |
2579 | 2639 | String8=0x10,Restaurante italiano |
2607 | 2667 | type=0x02a |
2608 | 2668 | subtype=0x09 |
2609 | 2669 | ;GRMN_TYPE: Business - Food and Drink/RESTAURANT_MEXICAN/Mexican cuisine/Non NT |
2610 | String1=0x01,Restaurant (Mexicain) | |
2670 | String=Restaurant (Mexican/Spanish) | |
2671 | String1=0x01,Restaurant (Mexicain/P) | |
2611 | 2672 | String2=0x02,Restaurant (Mexikanisch) |
2612 | String3=0x04,Restaurant (Mexican) | |
2613 | 2673 | String4=0x03,Restaurant (Mexicaans) |
2614 | 2674 | String7=0x15,Restauracja (Meksykańska) |
2615 | 2675 | String8=0x10,Restaurante mexicano |
2643 | 2703 | type=0x02a |
2644 | 2704 | subtype=0x0a |
2645 | 2705 | ;GRMN_TYPE: Business - Food and Drink/RESTAURANT_PIZZA/Pizzeria/Non NT |
2706 | String=Pizzeria | |
2646 | 2707 | String1=0x01,Pizzeria |
2647 | 2708 | String2=0x02,Restaurant (Pizza) |
2648 | String3=0x04,Restaurant (Pizza) | |
2649 | 2709 | String4=0x03,Restaurant (Pizza) |
2650 | 2710 | String7=0x15,Restauracja (Pizza) |
2651 | 2711 | String8=0x10,Pizzaria |
2679 | 2739 | type=0x02a |
2680 | 2740 | subtype=0x0b |
2681 | 2741 | ;GRMN_TYPE: Business - Food and Drink/RESTAURANT_SEAFOOD/Seafood restaurant/Non NT |
2742 | String=Restaurant (Seafood) | |
2682 | 2743 | String1=0x01,Restaurant (Poissons/Fruits de mer) |
2683 | 2744 | String2=0x02,Restaurant (Fisch) |
2684 | String3=0x04,Restaurant (Fisch) | |
2685 | 2745 | String4=0x03,Restaurant (Vis) |
2686 | 2746 | String7=0x15,Restauracja (Ryby) |
2687 | 2747 | String8=0x10,Restaurante Frutos do Mar |
2715 | 2775 | type=0x02a |
2716 | 2776 | subtype=0x0c |
2717 | 2777 | ;GRMN_TYPE: Business - Food and Drink/RESTAURANT_STEAK/Grill and steak brew pub restaurant/Non NT |
2778 | String=Restaurant (Steak/Grill) | |
2718 | 2779 | String1=0x01,Restaurant (Steak) |
2719 | 2780 | String2=0x02,Restaurant (Steak) |
2720 | String3=0x04,Restaurant (Steak) | |
2721 | 2781 | String4=0x03,Restaurant (Steak) |
2722 | 2782 | String7=0x15,Restauracja (Steki) |
2723 | 2783 | String8=0x10,Restaurante de carnes |
2751 | 2811 | type=0x02a |
2752 | 2812 | subtype=0x0d |
2753 | 2813 | ;GRMN_TYPE: Business - Food and Drink/RESTAURANT_DONUTS/Donut shop/Non NT |
2814 | String=Restaurant (Bagel/Donut) | |
2754 | 2815 | String1=0x01,Restaurant (Beignets) |
2755 | 2816 | String2=0x02,Restaurant (Bagel) |
2756 | String3=0x04,Restaurant (Donuts) | |
2757 | 2817 | String4=0x03,Restaurant (Donuts) |
2758 | 2818 | String7=0x15,Restauracja (Pączki) |
2759 | 2819 | String8=0x10,Doceria |
2783 | 2843 | type=0x02a |
2784 | 2844 | subtype=0x0e |
2785 | 2845 | ;GRMN_TYPE: Business - Food and Drink/RESTAURANT_CAFES/Cafe or coffee shop/Non NT |
2846 | String=Cafe/Diner | |
2786 | 2847 | String1=0x01,Café |
2787 | 2848 | String2=0x02,Cafe |
2788 | String3=0x04,Cafe | |
2789 | 2849 | String4=0x03,Cafe |
2790 | 2850 | String7=0x15,Kawiarnia |
2791 | 2851 | String8=0x10,Café |
2815 | 2875 | type=0x02a |
2816 | 2876 | subtype=0x0f |
2817 | 2877 | ;GRMN_TYPE: Business - Food and Drink/RESTAURANT_FRENCH/French cuisine/Non NT |
2878 | String=Restaurant (French) | |
2818 | 2879 | String1=0x01,Restaurant (Français) |
2819 | 2880 | String2=0x02,Restaurant |
2820 | String3=0x04,Restaurant (French) | |
2821 | 2881 | String4=0x03,Restaurant (Frans) |
2822 | 2882 | String7=0x15,Restauracja (Francuska) |
2823 | 2883 | String8=0x10,Restaurante francês |
2851 | 2911 | type=0x02a |
2852 | 2912 | subtype=0x10 |
2853 | 2913 | ;GRMN_TYPE: Business - Food and Drink/RESTAURANT_GERMAN/German cuisine/Non NT |
2914 | String=Restaurant (German) | |
2854 | 2915 | String1=0x01,Restaurant (Allemand) |
2855 | 2916 | String2=0x02,Restaurant (Deutsch) |
2856 | String3=0x04,Restaurant (German) | |
2857 | 2917 | String4=0x03,Restaurant (Duits) |
2858 | 2918 | String7=0x15,Restauracja (Niemiecka) |
2859 | 2919 | String8=0x10,Restaurante alemão |
2887 | 2947 | type=0x02a |
2888 | 2948 | subtype=0x11 |
2889 | 2949 | ;GRMN_TYPE: Business - Food and Drink/RESTAURANT_BRITISH/British cuisine/Non NT |
2950 | String=Restaurant (British/Fish & Chips) | |
2890 | 2951 | String1=0x01,Restaurant (Anglais) |
2891 | 2952 | String2=0x02,Restaurant |
2892 | String3=0x04,Restaurant (British) | |
2893 | 2953 | String4=0x03,Restaurant (Brits) |
2894 | 2954 | String7=0x15,Restauracja (Angielska) |
2895 | 2955 | String8=0x10,Restaurante inglês |
2923 | 2983 | type=0x02a |
2924 | 2984 | subtype=0x12 |
2925 | 2985 | ;GRMN_TYPE: // |
2986 | String=Restaurant (Speciality/Regional) | |
2926 | 2987 | String1=0x01,Restaurant (Spécialités) |
2927 | 2988 | String2=0x02,Restaurant |
2928 | String3=0x04,Restaurant (Special) | |
2929 | 2989 | String4=0x03,Restaurant (Speciaal) |
2930 | 2990 | String7=0x15,Restauracja (Specjalna) |
2931 | 2991 | String8=0x10,Restaurante especial |
2959 | 3019 | type=0x02a |
2960 | 3020 | subtype=0x13 |
2961 | 3021 | ;GRMN_TYPE: // |
3022 | String=Restaurant (Other) | |
2962 | 3023 | String1=0x01,Restaurant (Végétarien) |
2963 | 3024 | String2=0x02,Restaurant (Vegetarisch) |
2964 | String3=0x04,Restaurant (Vegetarian) | |
2965 | 3025 | String4=0x03,Restaurant (Vegetarisch) |
2966 | 3026 | String7=0x15,Restauracja (Wegetariańska) |
2967 | 3027 | String8=0x10,Restaurante vegetariano |
2995 | 3055 | type=0x02a |
2996 | 3056 | subtype=0x14 |
2997 | 3057 | ;GRMN_TYPE: // |
3058 | ; not used by default style | |
2998 | 3059 | String1=0x01,Restaurant (Régional) |
2999 | 3060 | String2=0x02,Restaurant |
3000 | 3061 | String3=0x04,Restaurant (Regional) |
3031 | 3092 | type=0x02b |
3032 | 3093 | subtype=0x01 |
3033 | 3094 | ;GRMN_TYPE: Business - Lodging/HOTEL/Hotel/Non NT |
3095 | String=Hotel/Motel | |
3034 | 3096 | String1=0x01,Hôtel |
3035 | 3097 | String2=0x02,Hotel |
3036 | String3=0x04,Hotel | |
3037 | 3098 | String4=0x03,Hotel |
3038 | 3099 | String7=0x15,Hotel |
3039 | 3100 | String8=0x10,Hotel |
3061 | 3122 | type=0x02b |
3062 | 3123 | subtype=0x02 |
3063 | 3124 | ;GRMN_TYPE: Business - Lodging/BED_AND_BREAKFAST/Bed and breakfast inn/Non NT |
3125 | String=Bed & Breakfast/Guesthouse | |
3064 | 3126 | String1=0x01,Chambre d'hôtes |
3065 | 3127 | String2=0x02,Pension |
3066 | String3=0x04,Guesthouse | |
3067 | 3128 | String4=0x03,Bed en breakfast |
3068 | 3129 | String7=0x15,Pensjonat |
3069 | 3130 | String8=0x10,Pensão |
3098 | 3159 | type=0x02b |
3099 | 3160 | subtype=0x05 |
3100 | 3161 | ;GRMN_TYPE: // |
3162 | String=Camp/Caravan site | |
3101 | 3163 | String1=0x01,Camping |
3102 | 3164 | String2=0x02,Campingplatz |
3103 | String3=0x04,Campsite | |
3104 | 3165 | String4=0x03,Camping |
3105 | 3166 | String7=0x15,Kemping |
3106 | 3167 | String8=0x10,Camping |
3131 | 3192 | type=0x02b |
3132 | 3193 | subtype=0x06 |
3133 | 3194 | ;GRMN_TYPE: // |
3195 | String=Shelter | |
3134 | 3196 | String1=0x01,Abri |
3135 | 3197 | String2=0x02,Schutzhütte |
3136 | String3=0x04,Shelter | |
3137 | 3198 | String4=0x03,Schuilplek |
3138 | 3199 | String7=0x15,Schronienie |
3139 | 3200 | String8=0x10,Cabana |
3166 | 3227 | type=0x02b |
3167 | 3228 | subtype=0x07 |
3168 | 3229 | ;GRMN_TYPE: // |
3230 | String=Wilderness Hut | |
3169 | 3231 | String1=0x01,Refuge |
3170 | 3232 | String2=0x02,Bergschutzhütte |
3171 | String3=0x04,Shelter | |
3172 | 3233 | String4=0x03,Bergschuilhut |
3173 | 3234 | String7=0x15,Schronisko |
3174 | 3235 | String8=0x10,Cabana |
3200 | 3261 | type=0x02c |
3201 | 3262 | subtype=0x01 |
3202 | 3263 | ;GRMN_TYPE: Business - Attractions/THEME_PARK/Amusement or theme park, i.e. Disneyland/Non NT |
3264 | String=Amusement/Theme Park | |
3203 | 3265 | String1=0x01,Parc d'attractions |
3204 | 3266 | String2=0x02,Freizeitpark |
3205 | String3=0x04,Themepark | |
3206 | 3267 | String4=0x03,Attractiepark |
3207 | 3268 | String7=0x15,Park rozrywki |
3208 | 3269 | String8=0x10,Parque temático / diversão |
3221 | 3282 | type=0x02c |
3222 | 3283 | subtype=0x02 |
3223 | 3284 | ;GRMN_TYPE: Business - Attractions/MUSEUM/Museum or historical society/Non NT |
3285 | String=Museum/Historical | |
3224 | 3286 | String1=0x01,Musée |
3225 | 3287 | String2=0x02,Museum |
3226 | String3=0x04,Museum | |
3227 | 3288 | String4=0x03,Museum |
3228 | 3289 | String7=0x15,Muzeum |
3229 | 3290 | String8=0x10,Museu |
3254 | 3315 | type=0x02c |
3255 | 3316 | subtype=0x03 |
3256 | 3317 | ;GRMN_TYPE: Business - Attractions/LIBRARY/Library/Non NT |
3318 | String=Library | |
3257 | 3319 | String1=0x01,Bibliothèque |
3258 | 3320 | String2=0x02,Bibliothek |
3259 | String3=0x04,Library | |
3260 | 3321 | String4=0x03,Bibliotheek |
3261 | 3322 | String7=0x15,Biblioteka |
3262 | 3323 | String8=0x10,Biblioteca |
3286 | 3347 | type=0x02c |
3287 | 3348 | subtype=0x04 |
3288 | 3349 | ;GRMN_TYPE: Business - Attractions/LANDMARK/Landmark/Non NT |
3350 | String=Landmark/Arts/Attraction/Viewpoint | |
3289 | 3351 | String1=0x01,Point de vue, œuvre d'art, attraction |
3290 | 3352 | String2=0x02,Aussichtspunkt, Kunstwerk, Attraktion |
3291 | String3=0x04,Artwork,Attraction, Viewpoint | |
3292 | 3353 | String4=0x03,Bezienswaardigheid |
3293 | 3354 | String7=0x15,Sztuka, Atrakcja, Punkt widokowy |
3294 | 3355 | String8=0x10,Atração |
3323 | 3384 | type=0x02c |
3324 | 3385 | subtype=0x05 |
3325 | 3386 | ;GRMN_TYPE: Business - Attractions/SCHOOL/School/Non NT |
3387 | String=Education | |
3326 | 3388 | String1=0x01,École |
3327 | 3389 | String2=0x02,Schule |
3328 | String3=0x04,Education | |
3329 | 3390 | String4=0x03,Educatie |
3330 | 3391 | String7=0x15,Edukacja |
3331 | 3392 | String8=0x10,Escola |
3344 | 3405 | type=0x02c |
3345 | 3406 | subtype=0x06 |
3346 | 3407 | ;GRMN_TYPE: Business - Attractions/GARDEN, PARK/Garden, park/Non NT |
3408 | String=Park/Garden/Playground | |
3347 | 3409 | String1=0x01,Aire de jeu |
3348 | 3410 | String2=0x02,Spielplatz |
3349 | String3=0x04,Playground | |
3350 | 3411 | String4=0x03,Speelplaats |
3351 | 3412 | String7=0x15,Plac zabaw |
3352 | 3413 | String8=0x10,Parque infantil |
3380 | 3441 | type=0x02c |
3381 | 3442 | subtype=0x07 |
3382 | 3443 | ;GRMN_TYPE: Business - Attractions/ZOO/Zoo/Non NT |
3444 | String=Zoo/Aquarium | |
3383 | 3445 | String1=0x01,Zoo |
3384 | 3446 | String2=0x02,Zoo |
3385 | String3=0x04,Zoo | |
3386 | 3447 | String4=0x03,Dierentuin |
3387 | 3448 | String7=0x15,Zoo |
3388 | 3449 | String8=0x10,Zoológico |
3401 | 3462 | type=0x02c |
3402 | 3463 | subtype=0x08 |
3403 | 3464 | ;GRMN_TYPE: Business - Attractions/ARENA/Arena or track/Non NT |
3465 | String=Arena/Track | |
3404 | 3466 | String1=0x01,Sport |
3405 | 3467 | String2=0x02,Sport |
3406 | String3=0x04,Sport | |
3407 | 3468 | String4=0x03,Sport |
3408 | 3469 | String7=0x15,Sport |
3409 | 3470 | String8=0x10,Esporte |
3422 | 3483 | type=0x02c |
3423 | 3484 | subtype=0x09 |
3424 | 3485 | ;GRMN_TYPE: Business - Attractions/HALL/Auditorium or hall/Non NT |
3486 | String=Hall/Auditorium | |
3425 | 3487 | String1=0x01,Auditorium |
3426 | 3488 | String2=0x02,Konferenzzentrum |
3427 | String3=0x04,Conference | |
3428 | 3489 | String4=0x03,Conferentiecentrum |
3429 | 3490 | String7=0x15,Centrum konferencyjne |
3430 | 3491 | String8=0x10,Conferência |
3442 | 3503 | type=0x02c |
3443 | 3504 | subtype=0x0a |
3444 | 3505 | ;GRMN_TYPE: Business - Attractions/WINERY/Winery/Non NT |
3506 | String=Winery | |
3445 | 3507 | String1=0x01,Cave à vin |
3446 | 3508 | String2=0x02,Weinkeller |
3447 | String3=0x04,Winery | |
3448 | 3509 | String4=0x03,Wijnmaker |
3449 | 3510 | String7=0x15,Winiarnia |
3450 | 3511 | String8=0x10,Adega |
3462 | 3523 | type=0x02c |
3463 | 3524 | subtype=0x0b |
3464 | 3525 | ;GRMN_TYPE: Business - Attractions/PLACE_OF_WORSHIP/Religious place of worship/Non NT |
3526 | String=Place of Worship | |
3465 | 3527 | String1=0x01,Lieu de culte |
3466 | 3528 | String2=0x02,Religiöses Gebäude |
3467 | String3=0x04,Religious building | |
3468 | 3529 | String4=0x03,Gebedshuis |
3469 | 3530 | String7=0x15,Budynek religijny |
3470 | 3531 | String8=0x10,Edifício religioso |
3497 | 3558 | type=0x02c |
3498 | 3559 | subtype=0x0c |
3499 | 3560 | ;GRMN_TYPE: // |
3561 | String=Hot Spring / Volcano | |
3500 | 3562 | String1=0x01,Volcan |
3501 | 3563 | String2=0x02,Vulkan |
3502 | String3=0x04,Vulcano | |
3503 | 3564 | String4=0x03,Vulkaan |
3504 | 3565 | String7=0x15,Wulkan |
3505 | 3566 | String8=0x10,Vulcão |
3527 | 3588 | type=0x02c |
3528 | 3589 | subtype=0x0d |
3529 | 3590 | ;GRMN_TYPE: Business - Attractions/POW_MOSQUE/Religious place of worship/Non NT |
3591 | String=Tourist attraction | |
3530 | 3592 | String1=0x01,Attraction touristique |
3531 | 3593 | String2=0x02,Touristenattraktion |
3532 | String3=0x04,Tourist attraction | |
3533 | 3594 | String4=0x03,Touristische attractie |
3534 | 3595 | String7=0x15,Atrakcja turystyczna |
3535 | 3596 | String8=0x10,Atração turística |
3552 | 3613 | type=0x02d |
3553 | 3614 | subtype=0x01 |
3554 | 3615 | ;GRMN_TYPE: Business - Entertainment/LIVE_THEATER/Live theater/Non NT |
3616 | String=Live Theatre | |
3555 | 3617 | String1=0x01,Théâtre |
3556 | 3618 | String2=0x02,Theater |
3557 | String3=0x04,Theatre | |
3558 | 3619 | String4=0x03,Theater |
3559 | 3620 | String7=0x15,Teatr |
3560 | 3621 | String8=0x10,Teatro |
3585 | 3646 | type=0x02d |
3586 | 3647 | subtype=0x02 |
3587 | 3648 | ;GRMN_TYPE: Business - Entertainment/BAR/Bar or club/Non NT |
3649 | String=Bar/Nightclub | |
3588 | 3650 | String1=0x01,Bar |
3589 | 3651 | String2=0x02,Bar |
3590 | String3=0x04,Bar | |
3652 | String3=0x04,Pub | |
3591 | 3653 | String4=0x03,Bar |
3592 | 3654 | String7=0x15,Bar |
3593 | 3655 | String8=0x10,Bar |
3616 | 3678 | type=0x02d |
3617 | 3679 | subtype=0x03 |
3618 | 3680 | ;GRMN_TYPE: Business - Entertainment/MOVIE_THEATER/Movie theater or cinema/Non NT |
3681 | String=Movie Theatre | |
3619 | 3682 | String1=0x01,Cinéma |
3620 | 3683 | String2=0x02,Kino |
3621 | 3684 | String3=0x04,Cinema |
3649 | 3712 | type=0x02d |
3650 | 3713 | subtype=0x04 |
3651 | 3714 | ;GRMN_TYPE: Business - Entertainment/CASINO/Casino/Non NT |
3715 | String=Casino | |
3652 | 3716 | String1=0x01,Casino |
3653 | 3717 | String2=0x02,Casino |
3654 | String3=0x04,Casino | |
3655 | 3718 | String4=0x03,Casino |
3656 | 3719 | String7=0x15,Kasyno |
3657 | 3720 | String8=0x10,Cassino |
3684 | 3747 | type=0x02d |
3685 | 3748 | subtype=0x05 |
3686 | 3749 | ;GRMN_TYPE: Business - Entertainment/GOLF_COURSE/Golf course/Non NT |
3750 | String=Golf Course | |
3687 | 3751 | String1=0x01,Golf |
3688 | 3752 | String2=0x02,Golfplatz |
3689 | String3=0x04,Golf course | |
3690 | 3753 | String4=0x03,Golfbaan |
3691 | 3754 | String7=0x15,Golf |
3692 | 3755 | String8=0x10,Campo de golfe |
3722 | 3785 | type=0x02d |
3723 | 3786 | subtype=0x06 |
3724 | 3787 | ;GRMN_TYPE: Business - Entertainment/SKI_CENTER/Ski area or resort/Non NT |
3788 | String=Skiing Center/Resort | |
3725 | 3789 | String1=0x01,Ski |
3726 | 3790 | String2=0x02,Ski |
3727 | String3=0x04,Ski | |
3728 | 3791 | String4=0x03,Ski |
3729 | 3792 | String7=0x15,Narty |
3730 | 3793 | String8=0x10,Esqui |
3755 | 3818 | type=0x02d |
3756 | 3819 | subtype=0x07 |
3757 | 3820 | ;GRMN_TYPE: Business - Entertainment/BOWLING/Bowling alley/Non NT |
3821 | String=Bowling Center | |
3758 | 3822 | String1=0x01,Bowling |
3759 | 3823 | String2=0x02,Bowling |
3760 | String3=0x04,Bowling alley | |
3824 | String3=0x04,Bowling Alley | |
3761 | 3825 | String4=0x03,Bowlingbaan |
3762 | 3826 | String7=0x15,Kręgle |
3763 | 3827 | String8=0x10,Boliche |
3791 | 3855 | type=0x02d |
3792 | 3856 | subtype=0x08 |
3793 | 3857 | ;GRMN_TYPE: Business - Entertainment/ICE_SKATING/Ice skating rink/Non NT |
3858 | String=Ice Skating | |
3794 | 3859 | String1=0x01,Patinoire |
3795 | 3860 | String2=0x02,Eisbahn |
3796 | String3=0x04,Ice skating | |
3797 | 3861 | String4=0x03,Schaatsbaan |
3798 | 3862 | String7=0x15,Lodowisko |
3799 | 3863 | String8=0x10,Patinação no gelo |
3824 | 3888 | type=0x02d |
3825 | 3889 | subtype=0x09 |
3826 | 3890 | ;GRMN_TYPE: Business - Entertainment/SWIMMING_POOL/Swimming pool/Non NT |
3891 | String=Swimming Pool | |
3827 | 3892 | String1=0x01,Piscine |
3828 | 3893 | String2=0x02,Schwimmbad |
3829 | String3=0x04,Swimmingpool | |
3830 | 3894 | String4=0x03,Zwembad |
3831 | 3895 | String7=0x15,Basen |
3832 | 3896 | String8=0x10,Piscina |
3857 | 3921 | type=0x02d |
3858 | 3922 | subtype=0x0a |
3859 | 3923 | ;GRMN_TYPE: Business - Entertainment/FITNESS_CENTER/Fitness center or gym/Non NT |
3924 | String=Sports Fitnes Center | |
3860 | 3925 | String1=0x01,Centre sportif |
3861 | 3926 | String2=0x02,Sportzentrum |
3862 | String3=0x04,Sports centre | |
3863 | 3927 | String4=0x03,Sportcentrum |
3864 | 3928 | String7=0x15,Centrum sportowe |
3865 | 3929 | String8=0x10,Centro esportivo |
3878 | 3942 | type=0x02d |
3879 | 3943 | subtype=0x0b |
3880 | 3944 | ;GRMN_TYPE: Business - Entertainment/SPORT_AIRPORT/Sport or R-C airport/Non NT |
3945 | String=Public Sport Airport | |
3881 | 3946 | String1=0x01,Aéroport |
3882 | 3947 | String2=0x02,Flughafen |
3883 | String3=0x04,Airport | |
3884 | 3948 | String4=0x03,Luchthaven |
3885 | 3949 | String7=0x15,Lotnisko |
3886 | 3950 | String8=0x10,Aeroporto |
3914 | 3978 | type=0x02e |
3915 | 3979 | subtype=0x01 |
3916 | 3980 | ;GRMN_TYPE: Business - Shopping/DEPARTMENT_STORE/Department store/Non NT |
3981 | String=Department Store | |
3917 | 3982 | String1=0x01,Hypermarché |
3918 | 3983 | String2=0x02,Kaufhaus |
3919 | String3=0x04,Mall | |
3920 | 3984 | String4=0x03,Warenhuis |
3921 | 3985 | String7=0x15,Centrum handlowe |
3922 | 3986 | String8=0x10,Shopping Center |
3950 | 4014 | type=0x02e |
3951 | 4015 | subtype=0x02 |
3952 | 4016 | ;GRMN_TYPE: Business - Shopping/GROCERY_STORE/Grocery store/Non NT |
4017 | String=Grocery Store | |
3953 | 4018 | String1=0x01,Boulangerie |
3954 | 4019 | String2=0x02,Bäckerei |
3955 | String3=0x04,Backery | |
3956 | 4020 | String4=0x03,Bakker |
3957 | 4021 | String7=0x15,Piekarnia |
3958 | 4022 | String8=0x10,Padaria |
3977 | 4041 | type=0x02e |
3978 | 4042 | subtype=0x03 |
3979 | 4043 | ;GRMN_TYPE: Business - Shopping/GENERAL_STORE/General store/Non NT |
4044 | String=General Merchandise | |
3980 | 4045 | String1=0x01,Supermarché |
3981 | 4046 | String2=0x02,Supermarkt |
3982 | String3=0x04,Generic store | |
3983 | 4047 | String4=0x03,Algemeen |
3984 | 4048 | String7=0x15,Supermarket |
3985 | 4049 | String8=0x10,Loja |
4007 | 4071 | type=0x02e |
4008 | 4072 | subtype=0x04 |
4009 | 4073 | ;GRMN_TYPE: Business - Shopping/SHOPPING_CENTER/Shopping center or mall/Non NT |
4074 | String=Shopping Center | |
4010 | 4075 | String1=0x01,Centre commercial |
4011 | 4076 | String2=0x02,Einkaufszentrum |
4012 | String3=0x04,Shopping center | |
4013 | 4077 | String4=0x03,Winkelcentrum |
4014 | 4078 | String7=0x15,Centrum handlowe |
4015 | 4079 | String8=0x10,Shopping Center |
4043 | 4107 | type=0x02e |
4044 | 4108 | subtype=0x05 |
4045 | 4109 | ;GRMN_TYPE: Business - Shopping/PHARMACY/Pharmacy/Non NT |
4110 | String=Pharmacy/Chemist | |
4046 | 4111 | String1=0x01,Pharmacie |
4047 | 4112 | String2=0x02,Apotheke |
4048 | String3=0x04,Pharmacy | |
4049 | 4113 | String4=0x03,Apotheek |
4050 | 4114 | String7=0x15,Apteka |
4051 | 4115 | String8=0x10,Farmácia |
4076 | 4140 | type=0x02e |
4077 | 4141 | subtype=0x06 |
4078 | 4142 | ;GRMN_TYPE: Business - Shopping/CONVENIENCE_STORE/Convenience store/Non NT |
4143 | String=Convenience with Auto Fuel | |
4079 | 4144 | String1=0x01,Station-service |
4080 | 4145 | String2=0x02,Tankstellenshop |
4081 | String3=0x04,Gasstation shop | |
4082 | 4146 | String4=0x03,Tankstation shop |
4083 | 4147 | String7=0x15,Sklep na stacji paliw |
4084 | 4148 | String8=0x10,Loja de conveniência |
4100 | 4164 | type=0x02e |
4101 | 4165 | subtype=0x07 |
4102 | 4166 | ;GRMN_TYPE: Business - Shopping/CLOTHING_RETAIL/Clothing store/Non NT |
4167 | String=Apparel | |
4103 | 4168 | String1=0x01,Magasin de vêtements |
4104 | 4169 | String2=0x02,Bekleidungsgeschäft |
4105 | String3=0x04,Clothing store | |
4170 | String3=0x04,Clothes Shop | |
4106 | 4171 | String4=0x03,Kleding |
4107 | 4172 | String7=0x15,Sklep odzieżowy |
4108 | 4173 | String8=0x10,Loja de roupas |
4130 | 4195 | type=0x02e |
4131 | 4196 | subtype=0x08 |
4132 | 4197 | ;GRMN_TYPE: Business - Shopping/HOME_AND_GARDEN_STORE/House and garden store/Non NT |
4198 | String=House & Garden | |
4133 | 4199 | String1=0x01,Jardinerie |
4134 | 4200 | String2=0x02,Gartencentrum |
4135 | String3=0x04,Garden center | |
4201 | String3=0x04,Garden Center | |
4136 | 4202 | String4=0x03,Huis- en tuin |
4137 | 4203 | String7=0x15,Centrum ogrodnicze |
4138 | 4204 | String8=0x10,Loja de jardinagem |
4164 | 4230 | type=0x02e |
4165 | 4231 | subtype=0x09 |
4166 | 4232 | ;GRMN_TYPE: Business - Shopping/HOME_FURNISHINGS_STORE/Furniture store/Non NT |
4233 | String=Home Furnishings | |
4167 | 4234 | String1=0x01,Magasin d’ameublement |
4168 | 4235 | String2=0x02,Möbelgeschäft |
4169 | 4236 | String3=0x04,Furniture |
4193 | 4260 | type=0x02e |
4194 | 4261 | subtype=0x0a |
4195 | 4262 | ;GRMN_TYPE: Business - Shopping/SPECIALTY_RETAIL/Specialty store/Non NT |
4263 | String=Speciality Retail / Organic | |
4196 | 4264 | String1=0x01,Magasin |
4197 | 4265 | String2=0x02,Geschäft |
4198 | String3=0x04,Shop | |
4199 | 4266 | String4=0x03,Winkel |
4200 | 4267 | String7=0x15,Sklep |
4201 | 4268 | String8=0x10,Loja |
4217 | 4284 | type=0x02e |
4218 | 4285 | subtype=0x0b |
4219 | 4286 | ;GRMN_TYPE: Business - Shopping/SOFTWARE_RETAIL/Computer software store/Non NT |
4287 | String=Computer/Software | |
4220 | 4288 | String1=0x01,Magasin d’électronique |
4221 | 4289 | String2=0x02,Computerhandel |
4222 | String3=0x04,Electronics | |
4223 | 4290 | String4=0x03,Elektronica |
4224 | 4291 | String7=0x15,Elektronika |
4225 | 4292 | String8=0x10,Loja de eletrônicos |
4250 | 4317 | type=0x02e |
4251 | 4318 | subtype=0x0c |
4252 | 4319 | ;GRMN_TYPE: // |
4320 | String=Shop | |
4253 | 4321 | String1=0x01,Magasin |
4254 | 4322 | String2=0x02,Geschäft |
4255 | String3=0x04,Shop | |
4256 | 4323 | String4=0x03,Winkel |
4257 | 4324 | String7=0x15,Sklep |
4258 | 4325 | String8=0x10,Loja |
4274 | 4341 | type=0x02f |
4275 | 4342 | subtype=0x01 |
4276 | 4343 | ;GRMN_TYPE: Business - Services/GAS_STATION/Gas, fuel station/Non NT |
4344 | String=Auto-Fuel Station | |
4277 | 4345 | String1=0x01,Station-essence |
4278 | 4346 | String2=0x02,Tankstelle |
4279 | String3=0x04,Gas station | |
4280 | 4347 | String4=0x03,Tankstation |
4281 | 4348 | String7=0x15,Stacja paliw |
4282 | 4349 | String8=0x10,Posto de combustível |
4309 | 4376 | type=0x02f |
4310 | 4377 | subtype=0x02 |
4311 | 4378 | ;GRMN_TYPE: Business - Services/AUTO_RENTAL/Car rental location/Non NT |
4379 | String=Car rental | |
4312 | 4380 | String1=0x01,Location de voitures |
4313 | 4381 | String2=0x02,Autoverleih |
4314 | String3=0x04,Car rental | |
4315 | 4382 | String4=0x03,Autoverhuur |
4316 | 4383 | String7=0x15,Wypożyczalnia samochodów |
4317 | 4384 | String8=0x10,Aluguel de carro |
4342 | 4409 | type=0x02f |
4343 | 4410 | subtype=0x03 |
4344 | 4411 | ;GRMN_TYPE: Business - Services/AUTO_REPAIR/Car repair, mechanic/Non NT |
4412 | String=Car Repairs | |
4345 | 4413 | String1=0x01,Réparation automobile |
4346 | 4414 | String2=0x02,Autowerkstatt |
4347 | String3=0x04,Garage | |
4348 | 4415 | String4=0x03,Autogarage |
4349 | 4416 | String7=0x15,Garaż |
4350 | 4417 | String8=0x10,Garagem |
4375 | 4442 | type=0x02f |
4376 | 4443 | subtype=0x04 |
4377 | 4444 | ;GRMN_TYPE: Business - Services/AIRPORT/Airport/Non NT |
4445 | String=Airport | |
4378 | 4446 | String1=0x01,Aéroport |
4379 | 4447 | String2=0x02,Flughafen |
4380 | String3=0x04,Airport | |
4381 | 4448 | String4=0x03,Luchthaven |
4382 | 4449 | String7=0x15,Lotnisko |
4383 | 4450 | String8=0x10,Aeroporto |
4411 | 4478 | type=0x02f |
4412 | 4479 | subtype=0x05 |
4413 | 4480 | ;GRMN_TYPE: Business - Services/POST_OFFICE/Post office/Non NT |
4481 | String=Post Office | |
4414 | 4482 | String1=0x01,Poste |
4415 | 4483 | String2=0x02,Postamt |
4416 | String3=0x04,Postoffice | |
4417 | 4484 | String4=0x03,Postkantoor |
4418 | 4485 | String7=0x15,Poczta |
4419 | 4486 | String8=0x10,Correio |
4440 | 4507 | type=0x02f |
4441 | 4508 | subtype=0x06 |
4442 | 4509 | ;GRMN_TYPE: Business - Services/BANK/Bank/Non NT |
4510 | String=Bank/ATM | |
4443 | 4511 | String1=0x01,Banque |
4444 | 4512 | String2=0x02,Bank |
4445 | String3=0x04,Bank | |
4446 | 4513 | String4=0x03,Bank |
4447 | 4514 | String7=0x15,Bank |
4448 | 4515 | String8=0x10,Banco |
4471 | 4538 | type=0x02f |
4472 | 4539 | subtype=0x07 |
4473 | 4540 | ;GRMN_TYPE: Business - Services/DEALER/Dealer of manufactured goods/Non NT |
4541 | String=Car/Parts Dealer | |
4474 | 4542 | String1=0x01,Concessionnaire automobile |
4475 | 4543 | String2=0x02,Autohändler |
4476 | String3=0x04,Car dealer | |
4477 | 4544 | String4=0x03,Autodealer |
4478 | 4545 | String7=0x15,Sprzedaż samochodów |
4479 | 4546 | String8=0x10,Revenda de carros |
4501 | 4568 | type=0x02f |
4502 | 4569 | subtype=0x08 |
4503 | 4570 | ;GRMN_TYPE: Business - Services/GND_TRANSPORT/Ground transportation status, i.e. a bus station/Non NT |
4571 | String=Ground Transportation | |
4504 | 4572 | String1=0x01,Gare routière |
4505 | 4573 | String2=0x02,Busbahnhof |
4506 | String3=0x04,Busstation | |
4574 | String3=0x04,Bus/Railway/Ferry Station | |
4507 | 4575 | String4=0x03,Busstation |
4508 | 4576 | String7=0x15,Przystanek autobusowy |
4509 | 4577 | String8=0x10,Estação de ônibus |
4538 | 4606 | type=0x02f |
4539 | 4607 | subtype=0x09 |
4540 | 4608 | ;GRMN_TYPE: Business - Services/MARINA/Marina/Non NT |
4609 | String=Marina/Repairs & Storage | |
4541 | 4610 | String1=0x01,Magasin accastillage et bateaux |
4542 | 4611 | String2=0x02,Bootsgeschäft |
4543 | String3=0x04,Yacht shop | |
4612 | String3=0x04,Boat Chandler | |
4544 | 4613 | String4=0x03,Botenwinkel |
4545 | 4614 | String7=0x15,Sklep żeglarski |
4546 | 4615 | String8=0x10,Loja de iates |
4562 | 4631 | type=0x02f |
4563 | 4632 | subtype=0x0a |
4564 | 4633 | ;GRMN_TYPE: Business - Services/WRECKER_SERVICE/Wrecker service/Non NT |
4634 | String=Wrecker Service | |
4565 | 4635 | String1=0x01,Dépanneuse |
4566 | 4636 | String2=0x02,Schleppdienst |
4567 | String3=0x04,Wrecker service | |
4637 | String3=0x04,Scrap Yard | |
4568 | 4638 | String4=0x03,Sleepdienst |
4569 | 4639 | String7=0x15,Holowanie |
4570 | 4640 | String8=0x10,Guincho |
4586 | 4656 | type=0x02f |
4587 | 4657 | subtype=0x0b |
4588 | 4658 | ;GRMN_TYPE: Business - Services/PARKING/Parking/Non NT |
4659 | String=Parking | |
4589 | 4660 | String1=0x01,Parking |
4590 | 4661 | String2=0x02,Parking |
4591 | String3=0x04,Parking | |
4592 | 4662 | String4=0x03,Parkeerplaats |
4593 | 4663 | String7=0x15,Parking |
4594 | 4664 | String8=0x10,Estacionamento |
4619 | 4689 | type=0x02f |
4620 | 4690 | subtype=0x0c |
4621 | 4691 | ;GRMN_TYPE: Business - Services/REST_AREA_TOURIST_INFO/Rest area, Tourist information/Non NT |
4692 | String=Rest Area / Tourist Info | |
4622 | 4693 | String1=0x01,WC |
4623 | 4694 | String2=0x02,WC |
4624 | String3=0x04,WC | |
4695 | String3=0x04,Toilets | |
4625 | 4696 | String4=0x03,Toilet |
4626 | 4697 | String7=0x15,Toaleta |
4627 | 4698 | String8=0x10,Banheiro |
4652 | 4723 | type=0x02f |
4653 | 4724 | subtype=0x0d |
4654 | 4725 | ;GRMN_TYPE: Business - Services/AUTO_CLUB/Automobile club/Non NT |
4726 | String=Automobile Club | |
4655 | 4727 | String1=0x01,Club automobile |
4656 | 4728 | String2=0x02,Automobilclub |
4657 | String3=0x04,Automobile club | |
4658 | 4729 | String4=0x03,Auto club |
4659 | 4730 | String7=0x15,Klub samochodowy |
4660 | 4731 | String8=0x10,Clube automobilístico |
4672 | 4743 | type=0x02f |
4673 | 4744 | subtype=0x0e |
4674 | 4745 | ;GRMN_TYPE: Business - Services/CAR_WASH/Car wash/Non NT |
4746 | String=Car Wash | |
4675 | 4747 | String1=0x01,Lavage-auto |
4676 | 4748 | String2=0x02,Autowaschanlage |
4677 | String3=0x04,Carwash | |
4678 | 4749 | String4=0x03,Autowasstraat |
4679 | 4750 | String7=0x15,Myjnia |
4680 | 4751 | String8=0x10,Lava jato |
4705 | 4776 | type=0x02f |
4706 | 4777 | subtype=0x10 |
4707 | 4778 | ;GRMN_TYPE: Business - Services/SERVICES_PERSONAL/Personal services/Non NT |
4779 | String=Personal Service | |
4708 | 4780 | String1=0x01,Coiffeur |
4709 | 4781 | String2=0x02,Friseur |
4710 | 4782 | String3=0x04,Hairdresser |
4738 | 4810 | type=0x02f |
4739 | 4811 | subtype=0x12 |
4740 | 4812 | ;GRMN_TYPE: Business - Services/COMMUNICATION_SERVICES/Communication services/Non NT |
4813 | String=Communications | |
4741 | 4814 | String1=0x01,Wifi |
4742 | 4815 | String2=0x02,Wifi |
4743 | String3=0x04,Wifi | |
4744 | 4816 | String4=0x03,Wifi |
4745 | 4817 | String7=0x15,Wifi |
4746 | 4818 | String8=0x10,Wifi |
4768 | 4840 | type=0x02f |
4769 | 4841 | subtype=0x13 |
4770 | 4842 | ;GRMN_TYPE: Business - Services/REPAIR_SERVICE/Repair service/Non NT |
4843 | String=Repair Service | |
4771 | 4844 | String1=0x01,Vélo |
4772 | 4845 | String2=0x02,Rad |
4773 | 4846 | String3=0x04,Bicycle |
4799 | 4872 | type=0x02f |
4800 | 4873 | subtype=0x14 |
4801 | 4874 | ;GRMN_TYPE: Business - Services/SOCIAL_SERVICES/Social services/Non NT |
4875 | String=Social Service | |
4802 | 4876 | String1=0x01,Services sociaux |
4803 | 4877 | String2=0x02,Soziale Einrichtung |
4804 | String3=0x04,Social | |
4805 | 4878 | String4=0x03,Sociale instelling |
4806 | 4879 | String7=0x15,Social |
4807 | 4880 | String8=0x10,Social |
4835 | 4908 | type=0x02f |
4836 | 4909 | subtype=0x15 |
4837 | 4910 | ;GRMN_TYPE: Business - Services/UTILITY/Utility (gas, electric, water) services/Non NT |
4911 | String=Utility | |
4838 | 4912 | String1=0x01,Déchetterie |
4839 | 4913 | String2=0x02,Recycling |
4840 | String3=0x04,Recycling | |
4914 | String3=0x04,Postbox / Recycling | |
4841 | 4915 | String4=0x03,Glasbak |
4842 | 4916 | String7=0x15,Recykling |
4843 | 4917 | String8=0x10,Reciclagem |
4871 | 4945 | type=0x02f |
4872 | 4946 | subtype=0x16 |
4873 | 4947 | ;GRMN_TYPE: Business - Services/TRUCK_STOP/Truck stop/Non NT |
4948 | String=Truck Stop | |
4874 | 4949 | String1=0x01,Station-essence |
4875 | 4950 | String2=0x02,Tankstelle |
4876 | String3=0x04,Gas station | |
4877 | 4951 | String4=0x03,Tankstation |
4878 | 4952 | String7=0x15,Stacja paliw |
4879 | 4953 | String8=0x10,Posto de combustível |
4906 | 4980 | type=0x02f |
4907 | 4981 | subtype=0x17 |
4908 | 4982 | ;GRMN_TYPE: Business - Services/TRANSIT_SERVICES/Mass transit services/Non NT |
4983 | String=Transit Service | |
4909 | 4984 | String1=0x01,Arrêt de bus |
4910 | 4985 | String2=0x02,Haltestelle |
4911 | String3=0x04,Busstop | |
4986 | String3=0x04,Bus/Tram Stop / Taxi Rank | |
4912 | 4987 | String4=0x03,Bushalte |
4913 | 4988 | String7=0x15,Przystanek |
4914 | 4989 | String8=0x10,Parada de ônibus |
4937 | 5012 | type=0x030 |
4938 | 5013 | subtype=0x01 |
4939 | 5014 | ;GRMN_TYPE: Business - Emergency and Government/POLICE_STATION/Police station/Non NT |
5015 | String=Police Station | |
4940 | 5016 | String1=0x01,Police |
4941 | 5017 | String2=0x02,Polizei |
4942 | String3=0x04,Police | |
4943 | 5018 | String4=0x03,Politiekantoor |
4944 | 5019 | String7=0x15,Policja |
4945 | 5020 | String8=0x10,Polícia |
4972 | 5047 | type=0x030 |
4973 | 5048 | subtype=0x02 |
4974 | 5049 | ;GRMN_TYPE: Business - Emergency and Government/HOSPITAL/Hospital/Non NT |
5050 | String=Hospital | |
4975 | 5051 | String1=0x01,Hôpital |
4976 | 5052 | String2=0x02,Krankenhaus |
4977 | String3=0x04,Hospital | |
4978 | 5053 | String4=0x03,Ziekenhuis |
4979 | 5054 | String7=0x15,Szpital |
4980 | 5055 | String8=0x10,Hospital |
5006 | 5081 | type=0x030 |
5007 | 5082 | subtype=0x03 |
5008 | 5083 | ;GRMN_TYPE: Business - Emergency and Government/CITY_HALL/City hall/Non NT |
5084 | String=City Hall | |
5009 | 5085 | String1=0x01,Mairie |
5010 | 5086 | String2=0x02,Rathaus |
5011 | String3=0x04,Townhall | |
5012 | 5087 | String4=0x03,Stadhuis |
5013 | 5088 | String7=0x15,Ratusz |
5014 | 5089 | String8=0x10,Prefeitura |
5040 | 5115 | type=0x030 |
5041 | 5116 | subtype=0x04 |
5042 | 5117 | ;GRMN_TYPE: Business - Emergency and Government/COURTHOUSE/Courthouse/Non NT |
5118 | String=Court House | |
5043 | 5119 | String1=0x01,Tribunal |
5044 | 5120 | String2=0x02,Gericht |
5045 | String3=0x04,Courthouse | |
5046 | 5121 | String4=0x03,Gerechtsgebouw |
5047 | 5122 | String7=0x15,Sąd |
5048 | 5123 | String8=0x10,Tribunal |
5075 | 5150 | type=0x030 |
5076 | 5151 | subtype=0x05 |
5077 | 5152 | ;GRMN_TYPE: Business - Emergency and Government/COMMUNITY_CENTER/Community center/Non NT |
5153 | String=Community Center | |
5078 | 5154 | String1=0x01,Associations culturelles |
5079 | 5155 | String2=0x02,Gemeindezentrum |
5080 | String3=0x04,Community centre | |
5081 | 5156 | String4=0x03,Gemeenschapscentrum |
5082 | 5157 | String7=0x15,Ośrodek kultury |
5083 | 5158 | String8=0x10,Centro comunitário |
5110 | 5185 | type=0x030 |
5111 | 5186 | subtype=0x06 |
5112 | 5187 | ;GRMN_TYPE: Business - Emergency and Government/BORDER_CROSSING/Border crossing/Non NT |
5188 | String=Border Control | |
5113 | 5189 | String1=0x01,Douane |
5114 | 5190 | String2=0x02,Zoll |
5115 | String3=0x04,Bordercontrol | |
5116 | 5191 | String4=0x03,Douane |
5117 | 5192 | String7=0x15,Kontrola graniczna |
5118 | 5193 | String8=0x10,Alfândega |
5130 | 5205 | type=0x030 |
5131 | 5206 | subtype=0x07 |
5132 | 5207 | ;GRMN_TYPE: Business - Emergency and Government/GOV_OFFICE/Government Office/Non NT |
5208 | String=Government Office | |
5133 | 5209 | String1=0x01,Prison |
5134 | 5210 | String2=0x02,Gefängnis |
5135 | String3=0x04,Prison | |
5211 | String3=0x04,Prison / Public Building | |
5136 | 5212 | String4=0x03,Gevangenis |
5137 | 5213 | String7=0x15,Więzienie |
5138 | 5214 | String8=0x10,Prisão |
5164 | 5240 | type=0x030 |
5165 | 5241 | subtype=0x08 |
5166 | 5242 | ;GRMN_TYPE: Business - Emergency and Government/FIRE_DEPT/Fire department/Non NT |
5243 | String=Fire Station | |
5167 | 5244 | String1=0x01,Pompiers |
5168 | 5245 | String2=0x02,Feuerwehr |
5169 | String3=0x04,Firestation | |
5170 | 5246 | String4=0x03,Brandweer |
5171 | 5247 | String7=0x15,Straż pożarna |
5172 | 5248 | String8=0x10,Bombeiros |
5201 | 5277 | type=0x032 |
5202 | 5278 | subtype=0x00 |
5203 | 5279 | ;GRMN_TYPE: // |
5280 | String=Barrier | |
5204 | 5281 | String1=0x01,Barrière |
5205 | 5282 | String2=0x02,Poller |
5206 | String3=0x04,Bollard | |
5207 | 5283 | String4=0x03,Paaltje |
5208 | 5284 | String7=0x15,Słupek |
5209 | 5285 | String8=0x10,Barreira |
5225 | 5301 | type=0x043 |
5226 | 5302 | subtype=0x00 |
5227 | 5303 | ;GRMN_TYPE: // |
5304 | String=Marina | |
5228 | 5305 | String1=0x01,Marina |
5229 | 5306 | String2=0x02,Bootshafen |
5230 | String3=0x04,Marina | |
5231 | 5307 | String4=0x03,Jachthaven |
5232 | 5308 | String7=0x15,Przystań |
5233 | 5309 | String8=0x10,Marina |
5246 | 5322 | type=0x043 |
5247 | 5323 | subtype=0x01 |
5248 | 5324 | ;GRMN_TYPE: // |
5325 | ; not used by default style | |
5249 | 5326 | String1=0x01,Gare |
5250 | 5327 | String2=0x02,Bahnhof |
5251 | 5328 | String3=0x04,Trainstation |
5273 | 5350 | type=0x043 |
5274 | 5351 | subtype=0x02 |
5275 | 5352 | ;GRMN_TYPE: // |
5353 | ; not used by default style | |
5276 | 5354 | String1=0x01,Tramway |
5277 | 5355 | String2=0x02,Straßenbahn |
5278 | 5356 | String3=0x04,Tram / Metro |
5297 | 5375 | type=0x043 |
5298 | 5376 | subtype=0x03 |
5299 | 5377 | ;GRMN_TYPE: // |
5378 | ; not used by default style | |
5300 | 5379 | String1=0x01,Terminal Ferry |
5301 | 5380 | String2=0x02,Fährhafen |
5302 | 5381 | String3=0x04,Ferry terminal |
5332 | 5411 | type=0x04a |
5333 | 5412 | subtype=0x00 |
5334 | 5413 | ;GRMN_TYPE: Misc. Points of Interest/PICNIC_AREA/Picnic area/Non NT, NT |
5414 | String=Picnic Area | |
5335 | 5415 | String1=0x01,Pique-nique |
5336 | 5416 | String2=0x02,Picknick |
5337 | String3=0x04,Picnic area | |
5338 | 5417 | String4=0x03,Picknick plaats |
5339 | 5418 | String7=0x15,Miejsce piknikowe |
5340 | 5419 | String8=0x10,Piquenique |
5361 | 5440 | type=0x04c |
5362 | 5441 | subtype=0x00 |
5363 | 5442 | ;GRMN_TYPE: Misc. Points of Interest/INFORMATION/Information/Non NT, NT |
5443 | String=Tourist information | |
5364 | 5444 | String1=0x01,Office du Tourisme |
5365 | 5445 | String2=0x02,Touristeninformation |
5366 | String3=0x04,Tourist information | |
5367 | 5446 | String4=0x03,Touristen informatie |
5368 | 5447 | String7=0x15,Informacja turystyczna |
5369 | 5448 | String8=0x10,Informações turísticas |
5393 | 5472 | type=0x04e |
5394 | 5473 | subtype=0x00 |
5395 | 5474 | ;GRMN_TYPE: Misc. Points of Interest/RESTROOMS/Restrooms/Non NT, NT |
5475 | ; not used by default style | |
5396 | 5476 | String1=0x01,WC |
5397 | 5477 | String2=0x02,WC |
5398 | 5478 | String3=0x04,WC |
5426 | 5506 | type=0x050 |
5427 | 5507 | subtype=0x00 |
5428 | 5508 | ;GRMN_TYPE: Misc. Points of Interest/DRINKING_WATER/Drinking water/Non NT, NT |
5509 | String=Drinking Water | |
5429 | 5510 | String1=0x01,Eau potable |
5430 | 5511 | String2=0x02,Trinkwasser |
5431 | String3=0x04,Drinking water | |
5432 | 5512 | String4=0x03,Drinkwater |
5433 | 5513 | String7=0x15,Woda pitna |
5434 | 5514 | String8=0x10,Bebedouro |
5461 | 5541 | type=0x059 |
5462 | 5542 | subtype=0x04 |
5463 | 5543 | ;GRMN_TYPE: // |
5544 | String=Helipad | |
5464 | 5545 | String1=0x01,Héliport |
5465 | 5546 | String2=0x02,Hubschrauberlandeplatz |
5466 | String3=0x04,Heli | |
5467 | 5547 | String4=0x03,Helihaven |
5468 | 5548 | String7=0x15,Lądowisko helikopterowe |
5469 | 5549 | String8=0x10,Heliponto |
5497 | 5577 | type=0x064 |
5498 | 5578 | subtype=0x03 |
5499 | 5579 | ;GRMN_TYPE: Geographical Named Points of Interest/CEMETERY/Cemetery/Non NT, NT |
5580 | String=Cemetery | |
5500 | 5581 | String1=0x01,Cimetière |
5501 | 5582 | String2=0x02,Friedhof |
5502 | String3=0x04,Cemetry | |
5503 | 5583 | String4=0x03,Begraafplaats |
5504 | 5584 | String7=0x15,Cmentarz |
5505 | 5585 | String8=0x10,Cemitério |
5518 | 5598 | type=0x064 |
5519 | 5599 | subtype=0x0b |
5520 | 5600 | ;GRMN_TYPE: Geographical Named Points of Interest/MILITARY/Military point of interest/Non NT, NT |
5601 | String=Military | |
5521 | 5602 | String1=0x01,Militaire |
5522 | 5603 | String2=0x02,Militär |
5523 | String3=0x04,Military | |
5524 | 5604 | String4=0x03,Militair |
5525 | 5605 | String7=0x15,Wojsko |
5526 | 5606 | String8=0x10,Militar |
5539 | 5619 | type=0x064 |
5540 | 5620 | subtype=0x11 |
5541 | 5621 | ;GRMN_TYPE: Geographical Named Points of Interest/TOWER/Tower/Non NT, NT |
5622 | String=Tower | |
5542 | 5623 | String1=0x01,Tour/Pylône |
5543 | 5624 | String2=0x02,Turm |
5544 | String3=0x04,Tower | |
5545 | 5625 | String4=0x03,Toren |
5546 | 5626 | String7=0x15,Wieża |
5547 | 5627 | String8=0x10,Torre |
5573 | 5653 | type=0x065 |
5574 | 5654 | subtype=0x05 |
5575 | 5655 | ;GRMN_TYPE: Geographical Named Points of Interest - Water Related/CANAL/Canal/Non NT, NT |
5656 | String=Canal / Lock | |
5576 | 5657 | String1=0x01,Barrage |
5577 | 5658 | String2=0x02,Wehr |
5578 | String3=0x04,Weir | |
5579 | 5659 | String4=0x03,Stuw |
5580 | 5660 | String7=0x15,Tama |
5581 | 5661 | String8=0x10,Açude |
5602 | 5682 | type=0x065 |
5603 | 5683 | subtype=0x08 |
5604 | 5684 | ;GRMN_TYPE: Geographical Named Points of Interest - Water Related/WATERFALL/Waterfall/Non NT, NT |
5685 | String=Waterfall | |
5605 | 5686 | String1=0x01,Chute d'eau |
5606 | 5687 | String2=0x02,Wasserfall |
5607 | String3=0x04,Waterfall | |
5608 | 5688 | String4=0x03,Waterval |
5609 | 5689 | String7=0x15,Wodospad |
5610 | 5690 | String8=0x10,Cachoeira |
5636 | 5716 | type=0x065 |
5637 | 5717 | subtype=0x0a |
5638 | 5718 | ;GRMN_TYPE: Geographical Named Points of Interest - Water Related/GLACIER/Glacier/Non NT, NT |
5719 | String=Glacier | |
5639 | 5720 | String1=0x01,Glacier |
5640 | 5721 | String2=0x02,Gletscher |
5641 | String3=0x04,Gletcher | |
5642 | 5722 | String4=0x03,Gletsjer |
5643 | 5723 | String7=0x15,Lodowiec |
5644 | 5724 | String8=0x10,Geleira |
5656 | 5736 | type=0x065 |
5657 | 5737 | subtype=0x0c |
5658 | 5738 | ;GRMN_TYPE: // |
5739 | String=Island | |
5659 | 5740 | String1=0x01,Île |
5660 | 5741 | String2=0x02,Insel |
5661 | String3=0x04,Island | |
5662 | 5742 | String4=0x03,Eiland |
5663 | 5743 | String7=0x15,Wyspa |
5664 | 5744 | String8=0x10,Ilha |
5677 | 5757 | type=0x065 |
5678 | 5758 | subtype=0x0f |
5679 | 5759 | ;GRMN_TYPE: Geographical Named Points of Interest - Water Related/RESERVOIR/Reservoir/Non NT, NT |
5760 | String=Reserviour | |
5680 | 5761 | String1=0x01,Eau |
5681 | 5762 | String2=0x02,Wasser |
5682 | String3=0x04,Water | |
5683 | 5763 | String4=0x03,Water |
5684 | 5764 | String7=0x15,Woda |
5685 | 5765 | String8=0x10,Água |
5698 | 5778 | type=0x065 |
5699 | 5779 | subtype=0x11 |
5700 | 5780 | ;GRMN_TYPE: Geographical Named Points of Interest - Water Related/SPRING/Spring/Non NT, NT |
5781 | String=Spring | |
5701 | 5782 | String1=0x01,Source |
5702 | 5783 | String2=0x02,Quelle |
5703 | String3=0x04,Well | |
5704 | 5784 | String4=0x03,Waterbron |
5705 | 5785 | String7=0x15,Źródło |
5706 | 5786 | String8=0x10,Poço |
5727 | 5807 | type=0x065 |
5728 | 5808 | subtype=0x12 |
5729 | 5809 | ;GRMN_TYPE: Geographical Named Points of Interest - Water Related/STREAM/Stream/Non NT, NT |
5810 | String=Stream | |
5811 | String1=0x01,Eau | |
5812 | String2=0x02,Wasser | |
5813 | String4=0x03,Water | |
5814 | String7=0x15,Woda | |
5815 | String8=0x10,Água | |
5816 | String9=0x05,Acqua | |
5817 | ExtendedLabels=Y | |
5818 | FontStyle=SmallFont | |
5819 | CustomColor=Day | |
5820 | DaycustomColor:#4D80B3 | |
5821 | DayXpm="1 1 2 1" Colormode=16 | |
5822 | "! c #009500" | |
5823 | " c none" | |
5824 | " " | |
5825 | ;1 | |
5826 | [end] | |
5827 | [_point] | |
5828 | type=0x065 | |
5829 | subtype=0x13 | |
5830 | ;GRMN_TYPE: Geographical Named Points of Interest - Water Related/SWAMP/Swamp/Non NT, NT | |
5831 | String=Swamp | |
5832 | String1=0x01,Marais | |
5833 | String2=0x02,Sumpf | |
5834 | String4=0x03,Moeras | |
5835 | String7=0x15,Bagno | |
5836 | String8=0x10,Pântano | |
5837 | String9=0x05,Palude | |
5838 | ExtendedLabels=Y | |
5839 | FontStyle=SmallFont | |
5840 | CustomColor=Day | |
5841 | DaycustomColor:#4D80B3 | |
5842 | DayXpm="1 1 2 1" Colormode=16 | |
5843 | "! c #009500" | |
5844 | " c none" | |
5845 | " " | |
5846 | ;1 | |
5847 | [end] | |
5848 | [_point] | |
5849 | type=0x066 | |
5850 | subtype=0x01 | |
5851 | ;GRMN_TYPE: Geographical Named Points of Interest - Land Related/ARCH/Arch/Non NT, NT | |
5852 | String=Arch | |
5853 | String1=0x01,Grotte | |
5854 | String2=0x02,Höhle | |
5855 | String3=0x04,Cave | |
5856 | String4=0x03,Grot | |
5857 | String7=0x15,Jaskinia | |
5858 | String8=0x10,Caverna | |
5859 | String9=0x05,Grotta | |
5860 | ExtendedLabels=Y | |
5861 | FontStyle=NoLabel (invisible) | |
5862 | CustomColor=No | |
5863 | DayXpm="11 6 2 1" Colormode=16 | |
5864 | "! c #000000" | |
5865 | " c none" | |
5866 | " !!!!! " | |
5867 | " ! ! " | |
5868 | " ! !!! ! " | |
5869 | "! !!!!! !" | |
5870 | "! !!!!!!! !" | |
5871 | "! !!!!!!! !" | |
5872 | ;12345678901 | |
5873 | [end] | |
5874 | [_point] | |
5875 | type=0x066 | |
5876 | subtype=0x03 | |
5877 | ;GRMN_TYPE: Geographical Named Points of Interest - Land Related/BASIN/Basin/Non NT, NT | |
5878 | String=Basin | |
5730 | 5879 | String1=0x01,Eau |
5731 | 5880 | String2=0x02,Wasser |
5732 | 5881 | String3=0x04,Water |
5745 | 5894 | ;1 |
5746 | 5895 | [end] |
5747 | 5896 | [_point] |
5748 | type=0x065 | |
5749 | subtype=0x13 | |
5750 | ;GRMN_TYPE: Geographical Named Points of Interest - Water Related/SWAMP/Swamp/Non NT, NT | |
5751 | String1=0x01,Marais | |
5752 | String2=0x02,Sumpf | |
5753 | String3=0x04,Swamp | |
5754 | String4=0x03,Moeras | |
5755 | String7=0x15,Bagno | |
5756 | String8=0x10,Pântano | |
5757 | String9=0x05,Palude | |
5758 | ExtendedLabels=Y | |
5759 | FontStyle=SmallFont | |
5760 | CustomColor=Day | |
5761 | DaycustomColor:#4D80B3 | |
5762 | DayXpm="1 1 2 1" Colormode=16 | |
5763 | "! c #009500" | |
5764 | " c none" | |
5765 | " " | |
5766 | ;1 | |
5767 | [end] | |
5768 | [_point] | |
5769 | type=0x066 | |
5770 | subtype=0x01 | |
5771 | ;GRMN_TYPE: Geographical Named Points of Interest - Land Related/ARCH/Arch/Non NT, NT | |
5772 | String1=0x01,Grotte | |
5773 | String2=0x02,Höhle | |
5774 | String3=0x04,Cave | |
5775 | String4=0x03,Grot | |
5776 | String7=0x15,Jaskinia | |
5777 | String8=0x10,Caverna | |
5778 | String9=0x05,Grotta | |
5779 | ExtendedLabels=Y | |
5780 | FontStyle=NoLabel (invisible) | |
5781 | CustomColor=No | |
5782 | DayXpm="11 6 2 1" Colormode=16 | |
5783 | "! c #000000" | |
5784 | " c none" | |
5785 | " !!!!! " | |
5786 | " ! ! " | |
5787 | " ! !!! ! " | |
5788 | "! !!!!! !" | |
5789 | "! !!!!!!! !" | |
5790 | "! !!!!!!! !" | |
5791 | ;12345678901 | |
5792 | [end] | |
5793 | [_point] | |
5794 | type=0x066 | |
5795 | subtype=0x03 | |
5796 | ;GRMN_TYPE: Geographical Named Points of Interest - Land Related/BASIN/Basin/Non NT, NT | |
5797 | String1=0x01,Eau | |
5798 | String2=0x02,Wasser | |
5799 | String3=0x04,Water | |
5800 | String4=0x03,Water | |
5801 | String7=0x15,Woda | |
5802 | String8=0x10,Água | |
5803 | String9=0x05,Acqua | |
5804 | ExtendedLabels=Y | |
5805 | FontStyle=SmallFont | |
5806 | CustomColor=Day | |
5807 | DaycustomColor:#4D80B3 | |
5808 | DayXpm="1 1 2 1" Colormode=16 | |
5809 | "! c #009500" | |
5810 | " c none" | |
5811 | " " | |
5812 | ;1 | |
5813 | [end] | |
5814 | [_point] | |
5815 | 5897 | type=0x066 |
5816 | 5898 | subtype=0x04 |
5817 | 5899 | ;GRMN_TYPE: Geographical Named Points of Interest - Land Related/BEACH/Beach/Non NT, NT |
5900 | String=Beach | |
5818 | 5901 | String1=0x01,Plage |
5819 | 5902 | String2=0x02,Strand |
5820 | String3=0x04,Beach | |
5821 | 5903 | String4=0x03,Strand |
5822 | 5904 | String7=0x15,Plaża |
5823 | 5905 | String8=0x10,Praia |
5836 | 5918 | type=0x066 |
5837 | 5919 | subtype=0x06 |
5838 | 5920 | ;GRMN_TYPE: Geographical Named Points of Interest - Land Related/CAPE/Cape/Non NT, NT |
5921 | String=Cape | |
5839 | 5922 | String1=0x01,Cap |
5840 | 5923 | String2=0x02,Kap |
5841 | String3=0x04,Cape | |
5842 | 5924 | String4=0x03,Kaap |
5843 | 5925 | String7=0x15,Przylądek |
5844 | 5926 | String8=0x10,Cabo |
5856 | 5938 | type=0x066 |
5857 | 5939 | subtype=0x07 |
5858 | 5940 | ;GRMN_TYPE: Geographical Named Points of Interest - Land Related/CLIFF/Cliff/Non NT, NT |
5941 | String=Cliff | |
5859 | 5942 | String1=0x01,Falaise |
5860 | 5943 | String2=0x02,Klippe |
5861 | String3=0x04,Cliff | |
5862 | 5944 | String4=0x03,Klif |
5863 | 5945 | String7=0x15,Klif |
5864 | 5946 | String8=0x10,Penhasco |
5876 | 5958 | type=0x066 |
5877 | 5959 | subtype=0x12 |
5878 | 5960 | ;GRMN_TYPE: Geographical Named Points of Interest - Land Related/RESERVE/Reserve/Non NT, NT |
5961 | String=Nature Reserve | |
5879 | 5962 | String1=0x01,Réserve naturelle |
5880 | 5963 | String2=0x02,Naturschutzgebiet |
5881 | String3=0x04,Nature reserve | |
5882 | 5964 | String4=0x03,Natuurgebied |
5883 | 5965 | String7=0x15,Rezerwat przyrody |
5884 | 5966 | String8=0x10,Reserva natural |
5897 | 5979 | type=0x066 |
5898 | 5980 | subtype=0x14 |
5899 | 5981 | ;GRMN_TYPE: Geographical Named Points of Interest - Land Related/ROCK/Rock/Non NT, NT |
5982 | String=Rock | |
5900 | 5983 | String1=0x01,Roche |
5901 | 5984 | String2=0x02,Felsen |
5902 | String3=0x04,Rock | |
5903 | 5985 | String4=0x03,Rotsen |
5904 | 5986 | String7=0x15,Skała |
5905 | 5987 | String8=0x10,Rochedo |
5918 | 6000 | type=0x066 |
5919 | 6001 | subtype=0x16 |
5920 | 6002 | ;GRMN_TYPE: Geographical Named Points of Interest - Land Related/SUMMIT/Summit, top of a hill or mountain/Non NT, NT |
6003 | String=Summit | |
5921 | 6004 | String1=0x01,Sommet |
5922 | 6005 | String2=0x02,Gipfel |
5923 | String3=0x04,Summit | |
5924 | 6006 | String4=0x03,Bergtop |
5925 | 6007 | String7=0x15,Szczyt |
5926 | 6008 | String8=0x10,Pico |
5948 | 6030 | type=0x066 |
5949 | 6031 | subtype=0x18 |
5950 | 6032 | ;GRMN_TYPE: Geographical Named Points of Interest - Land Related/WOODS/Wooded area/Non NT, NT |
6033 | String=Woods | |
5951 | 6034 | String1=0x01,Forêt |
5952 | 6035 | String2=0x02,Wald |
5953 | String3=0x04,Woods | |
5954 | 6036 | String4=0x03,Bos |
5955 | 6037 | String7=0x15,Drzewa |
5956 | 6038 | String8=0x10,Mata / Bosque |
16 | 16 | import java.io.IOException; |
17 | 17 | import java.io.InputStream; |
18 | 18 | import java.io.InputStreamReader; |
19 | import java.nio.charset.StandardCharsets; | |
19 | 20 | import java.util.Arrays; |
20 | 21 | import java.util.Locale; |
21 | 22 | |
38 | 39 | private boolean forceUppercase; |
39 | 40 | |
40 | 41 | public TableTransliterator(String targetCharset) { |
41 | if (targetCharset.equals("latin1") || targetCharset.equals("cp1252")) | |
42 | if ("latin1".equals(targetCharset) || "cp1252".equals(targetCharset)) | |
42 | 43 | useLatin = true; |
43 | 44 | else |
44 | 45 | useLatin = false; |
114 | 115 | } |
115 | 116 | |
116 | 117 | private void readCharFile(String name, String[] newRow) { |
117 | InputStream is = getClass().getResourceAsStream(name); | |
118 | if (is == null) | |
119 | return; | |
120 | ||
121 | try { | |
122 | BufferedReader br = new BufferedReader(new InputStreamReader(is, "utf-8")); | |
118 | try (InputStream is = getClass().getResourceAsStream(name)) { | |
119 | if (is == null) | |
120 | return; | |
121 | BufferedReader br = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8)); | |
123 | 122 | |
124 | 123 | String line; |
125 | 124 | while ((line = br.readLine()) != null) { |
139 | 138 | |
140 | 139 | // The first field must look like 'U+RRXX', we extract the XX part |
141 | 140 | int index = Integer.parseInt(upoint.substring(4), 16); |
142 | if (newRow[index].equals("?")) { | |
141 | if ("?".equals(newRow[index])) { | |
143 | 142 | if (forceUppercase) |
144 | 143 | newRow[index] = translation.toUpperCase(Locale.ENGLISH); |
145 | 144 | else |
16 | 16 | package uk.me.parabola.imgfmt.app.labelenc; |
17 | 17 | |
18 | 18 | import java.io.ByteArrayOutputStream; |
19 | import java.nio.charset.Charset; | |
19 | import java.nio.charset.StandardCharsets; | |
20 | 20 | |
21 | 21 | /** |
22 | 22 | * Decoder for labels in utf-8, note that I am not actually sure that any |
27 | 27 | public class Utf8Decoder implements CharacterDecoder { |
28 | 28 | private final ByteArrayOutputStream out = new ByteArrayOutputStream(); |
29 | 29 | private boolean needreset; |
30 | ||
31 | private final Charset charset = Charset.forName("utf-8"); | |
32 | 30 | |
33 | 31 | /** |
34 | 32 | * Add a byte to this decoder. This will be saved until a complete |
60 | 58 | */ |
61 | 59 | public DecodedText getText() { |
62 | 60 | byte[] ba = out.toByteArray(); |
63 | return new DecodedText(ba, charset); | |
61 | return new DecodedText(ba, StandardCharsets.UTF_8); | |
64 | 62 | } |
65 | 63 | |
66 | 64 | /** |
15 | 15 | */ |
16 | 16 | package uk.me.parabola.imgfmt.app.labelenc; |
17 | 17 | |
18 | import java.io.UnsupportedEncodingException; | |
19 | 18 | import java.util.Locale; |
19 | import java.nio.charset.StandardCharsets; | |
20 | 20 | |
21 | 21 | /** |
22 | 22 | * Encoder for labels in utf-8. |
36 | 36 | uctext = text; |
37 | 37 | |
38 | 38 | EncodedText et; |
39 | try { | |
40 | byte[] buf = uctext.getBytes("utf-8"); | |
41 | byte[] res = new byte[buf.length + 1]; | |
42 | System.arraycopy(buf, 0, res, 0, buf.length); | |
43 | res[buf.length] = 0; | |
44 | et = new EncodedText(res, res.length, uctext.toCharArray()); | |
45 | } catch (UnsupportedEncodingException e) { | |
46 | // As utf-8 must be supported, this can't happen | |
47 | byte[] buf = uctext.getBytes(); | |
48 | et = new EncodedText(buf, buf.length, uctext.toCharArray()); | |
49 | } | |
39 | byte[] buf = uctext.getBytes(StandardCharsets.UTF_8); | |
40 | byte[] res = new byte[buf.length + 1]; | |
41 | System.arraycopy(buf, 0, res, 0, buf.length); | |
42 | res[buf.length] = 0; | |
43 | et = new EncodedText(res, res.length, uctext.toCharArray()); | |
50 | 44 | return et; |
51 | 45 | } |
52 | 46 | } |
18 | 18 | import java.nio.charset.Charset; |
19 | 19 | import java.nio.charset.CharsetEncoder; |
20 | 20 | import java.nio.charset.CodingErrorAction; |
21 | import java.nio.charset.StandardCharsets; | |
21 | 22 | import java.text.CollationKey; |
22 | 23 | import java.text.Collator; |
23 | 24 | import java.util.ArrayList; |
545 | 546 | Charset charset; |
546 | 547 | switch (codepage) { |
547 | 548 | case 0: |
548 | charset = Charset.forName("ascii"); | |
549 | charset = StandardCharsets.US_ASCII; | |
549 | 550 | break; |
550 | 551 | case 65001: |
551 | charset = Charset.forName("UTF-8"); | |
552 | charset = StandardCharsets.UTF_8; | |
552 | 553 | break; |
553 | 554 | case 932: |
554 | 555 | // Java uses "ms932" for code page 932 |
120 | 120 | // If we succeeded then note offsets for indexes |
121 | 121 | strToType.put(off, type); |
122 | 122 | typeToStr.put(type, off); |
123 | ||
123 | writer.put1u(0); | |
124 | 124 | } catch (CharacterCodingException ignore) { |
125 | //ignore.printStackTrace(); | |
125 | 126 | String name = encoder.charset().name(); |
126 | throw new TypLabelException(name); | |
127 | log.warn("Cannot represent icon String", label, "in CodePage", name); | |
128 | //throw new TypLabelException(name); | |
127 | 129 | } |
128 | writer.put1u(0); | |
129 | 130 | } |
130 | 131 | } |
131 | 132 | Utils.closeFile(writer); |
16 | 16 | import java.util.List; |
17 | 17 | |
18 | 18 | import uk.me.parabola.imgfmt.app.srt.Sort; |
19 | import uk.me.parabola.log.Logger; | |
19 | 20 | |
20 | 21 | /** |
21 | 22 | * Holds all the data for a typ file. |
23 | 24 | * @author Steve Ratcliffe |
24 | 25 | */ |
25 | 26 | public class TypData { |
27 | private static final Logger log = Logger.getLogger(TypData.class); | |
28 | ||
26 | 29 | private final ShapeStacking stacking = new ShapeStacking(); |
27 | 30 | private final TypParam param = new TypParam(); |
28 | 31 | private final List<TypPolygon> polygons = new ArrayList<TypPolygon>(); |
50 | 53 | if (origCodepage != 0) { |
51 | 54 | if (origCodepage != sort.getCodepage()) { |
52 | 55 | // This is just a warning, not a definite problem |
53 | System.out.println("WARNING: SortCode in TYP txt file different from" + | |
54 | " command line setting"); | |
56 | // and is to be expected if have general UTF-8 TYP.txt | |
57 | log.warn("CodePage in TYP txt file:", sort.getCodepage(), "different from --code-page:", origCodepage); | |
55 | 58 | } |
56 | 59 | } |
60 | return; // want to use the command line one | |
57 | 61 | } |
58 | 62 | this.sort = sort; |
59 | 63 | encoder = sort.getCharset().newEncoder(); |
19 | 19 | import java.util.List; |
20 | 20 | |
21 | 21 | import uk.me.parabola.imgfmt.app.ImgFileWriter; |
22 | import uk.me.parabola.log.Logger; | |
22 | 23 | |
23 | 24 | /** |
24 | 25 | * Base routines and data used by points, lines and polygons. |
29 | 30 | * @author Steve Ratcliffe |
30 | 31 | */ |
31 | 32 | public abstract class TypElement implements Comparable<TypElement> { |
33 | private static final Logger log = Logger.getLogger(TypElement.class); | |
34 | ||
32 | 35 | private int type; |
33 | 36 | private int subType; |
34 | 37 | |
123 | 126 | protected ByteBuffer makeLabelBlock(CharsetEncoder encoder) { |
124 | 127 | ByteBuffer out = ByteBuffer.allocate(256 * labels.size()); |
125 | 128 | for (TypLabel tl : labels) { |
126 | out.put((byte) tl.getLang()); | |
127 | 129 | CharBuffer cb = CharBuffer.wrap(tl.getText()); |
128 | 130 | try { |
129 | 131 | ByteBuffer buffer = encoder.encode(cb); |
132 | out.put((byte) tl.getLang()); | |
130 | 133 | out.put(buffer); |
134 | out.put((byte) 0); | |
131 | 135 | } catch (CharacterCodingException ignore) { |
136 | //ignore.printStackTrace(); | |
132 | 137 | String name = encoder.charset().name(); |
133 | 138 | //System.out.println("cs " + name); |
134 | throw new TypLabelException(name); | |
139 | log.warn("Cannot represent String", tl.getText(), "for language", tl.getLang(), "in CodePage", name); | |
140 | //throw new TypLabelException(name); | |
135 | 141 | } |
136 | out.put((byte) 0); | |
137 | 142 | } |
138 | 143 | |
139 | 144 | return out; |
17 | 17 | |
18 | 18 | import java.io.BufferedReader; |
19 | 19 | import java.io.File; |
20 | import java.io.FileReader; | |
20 | import java.io.FileInputStream; | |
21 | import java.io.InputStreamReader; | |
21 | 22 | import java.io.IOException; |
22 | 23 | import java.io.Reader; |
23 | 24 | import java.util.Collection; |
75 | 76 | return; |
76 | 77 | } |
77 | 78 | |
78 | try (Reader r = new FileReader(filename)) { | |
79 | try (Reader r = new InputStreamReader(new FileInputStream(filename)/*NB: DefaultCharset*/)) { | |
79 | 80 | readOptionFile(r, filename); |
80 | 81 | } |
81 | 82 | |
82 | 83 | } |
83 | 84 | |
84 | 85 | public void readOptionFile(Reader r, String filename) { |
85 | BufferedReader br = new BufferedReader(r); | |
86 | BufferedReader br; | |
87 | if (r instanceof BufferedReader) | |
88 | br = (BufferedReader)r; | |
89 | else | |
90 | br = new BufferedReader(r); | |
86 | 91 | TokenScanner ts = new TokenScanner(filename, br); |
87 | 92 | ts.setExtraWordChars("-"); |
93 | if (r instanceof InputStreamReader) | |
94 | ts.setCharset(((InputStreamReader)r).getEncoding()); | |
88 | 95 | |
89 | 96 | File file = new File(filename); |
90 | 97 | String parent = file.getParent(); |
18 | 18 | import java.io.InputStream; |
19 | 19 | import java.io.InputStreamReader; |
20 | 20 | import java.io.PrintStream; |
21 | import java.nio.charset.StandardCharsets; | |
21 | 22 | import java.lang.management.ManagementFactory; |
22 | 23 | import java.lang.management.MemoryPoolMXBean; |
23 | 24 | import java.lang.management.MemoryType; |
200 | 201 | * Grab the options help file and print it. |
201 | 202 | * @param err The output print stream to write to. |
202 | 203 | * @param lang A language hint. The help will be displayed in this |
203 | * language if it has been translated. | |
204 | * language if it has been translated. | |
204 | 205 | * @param file The help file to display. |
205 | 206 | */ |
206 | 207 | private static void printHelp(PrintStream err, String lang, String file) { |
207 | 208 | String path = "/help/" + lang + '/' + file; |
208 | InputStream stream = Main.class.getResourceAsStream(path); | |
209 | if (stream == null) { | |
210 | err.println("Could not find the help topic: " + file + ", sorry"); | |
211 | return; | |
212 | } | |
213 | ||
214 | BufferedReader r = new BufferedReader(new InputStreamReader(stream)); | |
215 | try { | |
209 | try (InputStream stream = Main.class.getResourceAsStream(path)) { | |
210 | if (stream == null) { | |
211 | err.println("Could not find the help topic: " + file + ", sorry"); | |
212 | return; | |
213 | } | |
214 | ||
215 | BufferedReader r = new BufferedReader(new InputStreamReader(stream, StandardCharsets.UTF_8)); | |
216 | 216 | String line; |
217 | 217 | while ((line = r.readLine()) != null) |
218 | 218 | err.println(line); |
223 | 223 | |
224 | 224 | private static Set<String> getValidOptions(PrintStream err) { |
225 | 225 | String path = "/help/en/options"; |
226 | InputStream stream = Main.class.getResourceAsStream(path); | |
227 | if (stream == null) | |
228 | return null; | |
229 | ||
230 | Set<String> result = new HashSet<>(); | |
231 | try { | |
232 | BufferedReader r = new BufferedReader(new InputStreamReader(stream, "utf-8")); | |
226 | try (InputStream stream = Main.class.getResourceAsStream(path)) { | |
227 | if (stream == null) | |
228 | return null; | |
229 | ||
230 | Set<String> result = new HashSet<>(); | |
231 | BufferedReader r = new BufferedReader(new InputStreamReader(stream, StandardCharsets.UTF_8)); | |
233 | 232 | |
234 | 233 | Pattern p = Pattern.compile("^--?([a-zA-Z0-9-]*).*$"); |
235 | 234 | String line; |
240 | 239 | result.add(opt); |
241 | 240 | } |
242 | 241 | } |
242 | return result; | |
243 | ||
243 | 244 | } catch (IOException e) { |
244 | err.println("Could not read valid optoins"); | |
245 | err.println("Could not read valid options"); | |
245 | 246 | return null; |
246 | 247 | } |
247 | ||
248 | return result; | |
249 | 248 | } |
250 | 249 | |
251 | 250 | public void startOptions() { |
14 | 14 | |
15 | 15 | import java.io.BufferedReader; |
16 | 16 | import java.io.FileNotFoundException; |
17 | import java.io.FileReader; | |
17 | import java.io.FileInputStream; | |
18 | import java.io.InputStreamReader; | |
19 | import java.nio.charset.StandardCharsets; | |
18 | 20 | import java.io.FileWriter; |
19 | 21 | import java.io.IOException; |
20 | 22 | import java.io.InputStream; |
220 | 222 | * file all in one. |
221 | 223 | */ |
222 | 224 | public static void runSimpleTest(String filename) { |
223 | try { | |
224 | FileReader reader = new FileReader(filename); | |
225 | BufferedReader br = new BufferedReader(reader); | |
225 | // 14Jan20 Changed from using DefaultCharset to UTF-8 | |
226 | try (BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(filename), StandardCharsets.UTF_8))) { | |
226 | 227 | List<Way> ways = readSimpleTestFile(br); |
227 | 228 | |
228 | 229 | List<String> givenList = readGivenResults(); |
345 | 346 | // ignore blank lines. |
346 | 347 | }*/ |
347 | 348 | } |
348 | br.close(); | |
349 | 349 | |
350 | 350 | return ways; |
351 | 351 | } |
16 | 16 | import java.io.FileInputStream; |
17 | 17 | import java.io.FileNotFoundException; |
18 | 18 | import java.io.IOException; |
19 | import java.io.InputStream; | |
20 | 19 | import java.io.InputStreamReader; |
21 | 20 | import java.io.Reader; |
22 | 21 | import java.io.UnsupportedEncodingException; |
23 | import java.nio.CharBuffer; | |
22 | import java.nio.ByteBuffer; | |
24 | 23 | import java.nio.channels.FileChannel; |
25 | 24 | import java.nio.charset.CharacterCodingException; |
26 | 25 | import java.nio.charset.Charset; |
27 | import java.nio.charset.CharsetEncoder; | |
26 | import java.nio.charset.CharsetDecoder; | |
28 | 27 | import java.nio.charset.StandardCharsets; |
29 | 28 | import java.nio.file.StandardOpenOption; |
30 | 29 | |
31 | 30 | import uk.me.parabola.imgfmt.ExitException; |
32 | 31 | import uk.me.parabola.imgfmt.MapFailedException; |
33 | import uk.me.parabola.imgfmt.Utils; | |
34 | 32 | import uk.me.parabola.imgfmt.app.srt.Sort; |
35 | 33 | import uk.me.parabola.imgfmt.app.typ.TYPFile; |
36 | 34 | import uk.me.parabola.imgfmt.app.typ.TypData; |
84 | 82 | param.setFamilyId(family); |
85 | 83 | if (product != -1) |
86 | 84 | param.setProductId(product); |
87 | if (cp != -1 && param.getCodePage() == 0) | |
85 | if (cp != -1) | |
88 | 86 | param.setCodePage(cp); |
89 | 87 | |
90 | 88 | File outFile = new File(filename); |
122 | 120 | * @throws FileNotFoundException If the file doesn't exist. |
123 | 121 | * @throws SyntaxException All user correctable problems in the input file. |
124 | 122 | */ |
125 | private TypData compile(String filename, String charset, Sort sort) | |
123 | private static TypData compile(String filename, String charset, Sort sort) | |
126 | 124 | throws FileNotFoundException, SyntaxException |
127 | 125 | { |
128 | 126 | TypTextReader tr = new TypTextReader(); |
130 | 128 | TypData data = tr.getData(); |
131 | 129 | |
132 | 130 | data.setSort(sort); |
133 | try { | |
134 | Reader r = new BufferedReader(new InputStreamReader(new FileInputStream(filename), charset)); | |
135 | try { | |
136 | tr.read(filename, r); | |
137 | } finally { | |
138 | Utils.closeFile(r); | |
139 | } | |
131 | try (Reader r = new BufferedReader(new InputStreamReader(new FileInputStream(filename), charset))) { | |
132 | tr.read(filename, r, charset); | |
140 | 133 | } catch (UnsupportedEncodingException e) { |
141 | 134 | // Not likely to happen as we should have already used this character set! |
142 | 135 | throw new MapFailedException("Unsupported character set", e); |
136 | } catch (IOException e) { | |
137 | throw new ExitException("Unable to read/close file " + filename); | |
143 | 138 | } |
144 | 139 | |
145 | 140 | return tr.getData(); |
148 | 143 | /** |
149 | 144 | * Write the type file out from the compiled form to the given name. |
150 | 145 | */ |
151 | private void writeTyp(TypData data, File file) throws IOException { | |
146 | private static void writeTyp(TypData data, File file) throws IOException { | |
152 | 147 | try (FileChannel channel = FileChannel.open(file.toPath(), |
153 | 148 | StandardOpenOption.CREATE, StandardOpenOption.WRITE, StandardOpenOption.READ)) |
154 | 149 | { |
203 | 198 | |
204 | 199 | |
205 | 200 | class CharsetProbe { |
206 | private String codePage; | |
207 | private CharsetEncoder encoder; | |
208 | ||
209 | public CharsetProbe() { | |
210 | setCodePage("latin1"); | |
211 | } | |
212 | ||
213 | private void setCodePage(String codePage) { | |
214 | if ("cp65001".equalsIgnoreCase(codePage)) { | |
215 | this.codePage = "utf-8"; | |
216 | this.encoder = StandardCharsets.UTF_8.newEncoder(); | |
217 | } else { | |
218 | this.codePage = codePage; | |
219 | this.encoder = Charset.forName(codePage).newEncoder(); | |
220 | } | |
221 | } | |
201 | // TODO: this should could be moved to somewhere like util and used on other text files | |
202 | // except looking for Codepage is particular to Typ files | |
203 | // and want to have ability to return default environment decoder | |
204 | // (ie inputStream without 2nd parameter) | |
222 | 205 | |
223 | 206 | private String probeCharset(String file) { |
224 | String readingCharset = "utf-8"; | |
225 | ||
226 | try { | |
227 | tryCharset(file, readingCharset); | |
228 | return readingCharset; | |
229 | } catch (TypLabelException e) { | |
230 | try { | |
231 | readingCharset = e.getCharsetName(); | |
232 | tryCharset(file, readingCharset); | |
233 | } catch (Exception e1) { | |
234 | return "utf-8"; | |
235 | } | |
236 | } | |
237 | ||
238 | return readingCharset; | |
239 | } | |
240 | ||
241 | private void tryCharset(String file, String readingCharset) { | |
242 | ||
243 | try (InputStream is = new FileInputStream(file); BufferedReader br = new BufferedReader(new InputStreamReader(is, readingCharset))) { | |
244 | ||
207 | ||
208 | final String BOM_UTF_8 = "\u00EF\u00BB\u00BF"; | |
209 | final String BOM_UTF_16LE = "\u00FF\u00FE"; | |
210 | final String BOM_UTF_16BE = "\u00FE\u00FF"; | |
211 | final String BOM_UTF_32LE = "\u00FF\u00FE\u0000\u0000"; | |
212 | final String BOM_UTF_32BE = "\u0000\u0000\u00FE\u00FF"; | |
213 | ||
214 | final Charset byteCharNoMap = StandardCharsets.ISO_8859_1; // byteVal == charVal | |
215 | final CharsetDecoder utf8Decoder = StandardCharsets.UTF_8.newDecoder(); | |
216 | ||
217 | String charset = null; | |
218 | boolean validUTF8 = true; | |
219 | try (BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), byteCharNoMap))) { | |
245 | 220 | String line; |
246 | while ((line = br.readLine()) != null) { | |
221 | int lineNo = 0; | |
222 | do { | |
223 | line = br.readLine(); | |
224 | if (line == null) | |
225 | break; | |
226 | ++lineNo; | |
247 | 227 | if (line.isEmpty()) |
248 | 228 | continue; |
249 | ||
250 | // This is a giveaway the file is in utf-something, so ignore anything else | |
251 | if (line.charAt(0) == 0xfeff) | |
252 | return; | |
253 | ||
254 | if (line.startsWith("CodePage=")) { | |
255 | String[] split = line.split("="); | |
256 | try { | |
257 | if (split.length > 1) | |
258 | setCodePage("cp" + Integer.decode(split[1].trim())); | |
259 | } catch (NumberFormatException e) { | |
260 | setCodePage("cp1252"); | |
229 | if (lineNo <= 2) { // only check the first few lines for these | |
230 | if (line.contains(BOM_UTF_8)) | |
231 | charset = "UTF-8"; | |
232 | else if (line.contains(BOM_UTF_32LE)) // must test _32 before _16 | |
233 | charset = "UTF-32LE"; | |
234 | else if (line.contains(BOM_UTF_32BE)) | |
235 | charset = "UTF-32BE"; | |
236 | else if (line.contains(BOM_UTF_16LE)) | |
237 | charset = "UTF-16LE"; | |
238 | else if (line.contains(BOM_UTF_16BE)) | |
239 | charset = "UTF-16BE"; | |
240 | if (charset != null) | |
241 | break; | |
242 | ||
243 | int strInx = line.indexOf("-*- coding:"); // be lax about start/end | |
244 | if (strInx >= 0) { | |
245 | charset = line.substring(strInx+11).trim(); | |
246 | strInx = charset.indexOf(' '); | |
247 | if (strInx >= 0) | |
248 | charset = charset.substring(0, strInx); | |
249 | break; | |
261 | 250 | } |
262 | 251 | } |
263 | 252 | |
264 | if (line.startsWith("String")) { | |
265 | CharBuffer cb = CharBuffer.wrap(line); | |
266 | if (encoder != null) | |
267 | encoder.encode(cb); | |
253 | // special for TypFile; to be compatible with possible old usage | |
254 | if (line.startsWith("CodePage=")) { | |
255 | charset = line.substring(9).trim(); | |
256 | try { | |
257 | int codePage = Integer.decode(charset); | |
258 | if (codePage == 65001) | |
259 | charset = "UTF-8"; | |
260 | else | |
261 | charset = "cp" + codePage; | |
262 | } catch (NumberFormatException e) { | |
263 | } | |
264 | break; | |
268 | 265 | } |
269 | } | |
270 | } catch (UnsupportedEncodingException | CharacterCodingException e) { | |
271 | throw new TypLabelException(codePage); | |
272 | ||
266 | ||
267 | if (validUTF8) { // test the line for being valid UTF-8 | |
268 | ByteBuffer asBytes = byteCharNoMap.encode(line); | |
269 | try { // arbitrary sequences of bytes > 127 tend not to be UTF8 | |
270 | /*CharBuffer asChars =*/ utf8Decoder.decode(asBytes); | |
271 | } catch (CharacterCodingException e) { | |
272 | validUTF8 = false; | |
273 | // don't stop as might still get coding directive | |
274 | } | |
275 | } | |
276 | } while (true); | |
273 | 277 | } catch (FileNotFoundException e) { |
274 | 278 | throw new ExitException("File not found " + file); |
275 | ||
276 | 279 | } catch (IOException e) { |
277 | throw new ExitException("Could not read file " + file); | |
280 | throw new ExitException("Unable to read file " + file); | |
278 | 281 | } |
282 | return charset != null ? charset : (validUTF8 ? "UTF-8" : "cp1252"); | |
279 | 283 | } |
280 | 284 | } |
281 | 285 | } |
22 | 22 | import java.io.InputStreamReader; |
23 | 23 | import java.io.Reader; |
24 | 24 | import java.io.UnsupportedEncodingException; |
25 | import java.nio.charset.StandardCharsets; | |
25 | 26 | import java.util.ArrayList; |
26 | 27 | import java.util.List; |
27 | 28 | |
53 | 54 | * @return An open file reader for the file. |
54 | 55 | */ |
55 | 56 | public Reader open(String filename) throws FileNotFoundException { |
56 | File file = new File(dir, filename); | |
57 | ||
58 | Reader r = null; | |
59 | try { | |
60 | r = new InputStreamReader(new FileInputStream(file), "UTF-8"); | |
61 | } catch (UnsupportedEncodingException uee) { | |
62 | System.out.println("DirectoryFileLoader: Encoding UTF-8 not supported"); | |
63 | r = new InputStreamReader(new FileInputStream(file)); | |
64 | } | |
65 | ||
66 | return new BufferedReader(r); | |
57 | return new BufferedReader(new InputStreamReader(new FileInputStream(new File(dir, filename)), StandardCharsets.UTF_8)); | |
67 | 58 | } |
68 | 59 | |
69 | 60 | /** |
22 | 22 | import java.io.InputStreamReader; |
23 | 23 | import java.io.Reader; |
24 | 24 | import java.io.UnsupportedEncodingException; |
25 | import java.nio.charset.StandardCharsets; | |
25 | 26 | import java.net.JarURLConnection; |
26 | 27 | import java.net.MalformedURLException; |
27 | 28 | import java.net.URL; |
130 | 131 | } catch (IOException e) { |
131 | 132 | throw new FileNotFoundException("Could not open " + filename); |
132 | 133 | } |
133 | Reader reader = null; | |
134 | try { | |
135 | reader = new InputStreamReader(stream, "UTF-8"); | |
136 | } catch (UnsupportedEncodingException e) { | |
137 | System.out.println("JarFileLoader: Encoding UTF-8 not supported"); | |
138 | reader = new InputStreamReader(stream); | |
139 | } | |
134 | Reader reader = new InputStreamReader(stream, StandardCharsets.UTF_8); | |
140 | 135 | return new BufferedReader(reader); |
141 | 136 | } |
142 | 137 |
15 | 15 | import java.io.FileInputStream; |
16 | 16 | import java.io.InputStreamReader; |
17 | 17 | import java.io.Reader; |
18 | import java.nio.charset.StandardCharsets; | |
18 | 19 | import java.util.ArrayList; |
19 | 20 | import java.util.Arrays; |
20 | 21 | import java.util.Collections; |
75 | 76 | private boolean readConfig(String cfgFile) { |
76 | 77 | if (cfgFile == null) |
77 | 78 | return false; |
78 | try (InputStreamReader reader = new InputStreamReader(new FileInputStream(cfgFile), "utf-8")) { | |
79 | try (InputStreamReader reader = new InputStreamReader(new FileInputStream(cfgFile), StandardCharsets.UTF_8)) { | |
79 | 80 | readOptionFile(reader, cfgFile); |
80 | 81 | return true; |
81 | 82 | } catch (Exception e) { |
66 | 66 | private final RuleSet rules; |
67 | 67 | private RuleSet finalizeRules; |
68 | 68 | private final boolean performChecks; |
69 | private final boolean forRoutableMap; | |
69 | 70 | private final Map<Integer, List<Integer>> overlays; |
70 | 71 | |
71 | 72 | private final Deque<Op[]> ifStack = new LinkedList<>(); |
76 | 77 | private final ExpressionArranger arranger = new ExpressionArranger(); |
77 | 78 | |
78 | 79 | public RuleFileReader(FeatureKind kind, LevelInfo[] levels, RuleSet rules, boolean performChecks, |
80 | Map<Integer, List<Integer>> overlays) { | |
81 | this(kind, levels, rules, performChecks, false, overlays); | |
82 | } | |
83 | ||
84 | public RuleFileReader(FeatureKind kind, LevelInfo[] levels, RuleSet rules, boolean performChecks, boolean forRoutableMap, | |
79 | 85 | Map<Integer, List<Integer>> overlays) { |
80 | 86 | this.kind = kind; |
81 | 87 | this.rules = rules; |
82 | 88 | this.performChecks = performChecks; |
89 | this.forRoutableMap = forRoutableMap; | |
83 | 90 | this.overlays = overlays; |
84 | 91 | typeReader = new TypeReader(kind, levels); |
85 | 92 | } |
135 | 142 | |
136 | 143 | List<GType> types = new ArrayList<>(); |
137 | 144 | while (scanner.checkToken("[")) { |
138 | GType type = typeReader.readType(scanner, performChecks, overlays); | |
145 | GType type = typeReader.readType(scanner, performChecks, forRoutableMap, overlays); | |
139 | 146 | types.add(type); |
140 | 147 | scanner.skipSpace(); |
141 | 148 | } |
23 | 23 | import java.io.OutputStreamWriter; |
24 | 24 | import java.io.Reader; |
25 | 25 | import java.io.Writer; |
26 | import java.nio.charset.StandardCharsets; | |
26 | 27 | import java.util.ArrayList; |
27 | 28 | import java.util.Arrays; |
28 | 29 | import java.util.Collection; |
148 | 149 | // read overlays before the style rules to be able to ignore overlaid "wrong" types. |
149 | 150 | readOverlays(); |
150 | 151 | |
151 | readRules(props.getProperty("levels")); | |
152 | readRules(props.getProperty("levels"), props.containsKey("route")); | |
152 | 153 | |
153 | 154 | ListIterator<StyleImpl> listIterator = baseStyles.listIterator(baseStyles.size()); |
154 | 155 | while (listIterator.hasPrevious()) |
222 | 223 | // There are a lot of tags that are used within mkgmap that |
223 | 224 | try (InputStream is = this.getClass().getResourceAsStream("/styles/builtin-tag-list");) { |
224 | 225 | if (is != null) { |
225 | BufferedReader br = new BufferedReader(new InputStreamReader(is)); | |
226 | BufferedReader br = new BufferedReader(new InputStreamReader(is, StandardCharsets.UTF_8)); | |
226 | 227 | // System.out.println("Got built in list"); |
227 | 228 | String line; |
228 | 229 | while ((line = br.readLine()) != null) { |
240 | 241 | return set; |
241 | 242 | } |
242 | 243 | |
243 | private void readRules(String l) { | |
244 | if (l == null) | |
245 | l = generalOptions.get("levels"); | |
244 | private void readRules(String levelsFromProps, boolean routable) { | |
245 | String l = generalOptions.get("levels"); | |
246 | 246 | if (l == null) |
247 | 247 | l = LevelInfo.DEFAULT_LEVELS; |
248 | 248 | LevelInfo[] levels = LevelInfo.createFromString(l); |
287 | 287 | try { |
288 | 288 | RuleFileReader reader = new RuleFileReader(FeatureKind.POLYLINE, levels, lines, performChecks, getOverlaidTypeMap()); |
289 | 289 | reader.load(fileLoader, "lines"); |
290 | if (routable && levelsFromProps != null && !levelsFromProps.equals(l)) { | |
291 | LevelInfo[] pl = LevelInfo.createFromString(levelsFromProps); | |
292 | if (levels[levels.length - 1].getBits() > pl[pl.length - 1].getBits()) { | |
293 | RuleFileReader checker = new RuleFileReader(FeatureKind.POLYLINE, pl, new RuleSet(), false, | |
294 | routable, getOverlaidTypeMap()); | |
295 | checker.load(fileLoader, "lines"); | |
296 | } | |
297 | } | |
290 | 298 | } catch (FileNotFoundException e) { |
291 | 299 | log.debug("no lines file"); |
292 | 300 | } |
510 | 518 | name = "default"; |
511 | 519 | |
512 | 520 | if (name == null){ |
513 | StyleFileLoader loader = null; | |
514 | try { | |
515 | loader = StyleFileLoader.createStyleLoader(loc, null); | |
521 | try (StyleFileLoader loader = StyleFileLoader.createStyleLoader(loc, null)) { | |
516 | 522 | int numEntries = loader.list().length; |
517 | 523 | if (numEntries > 1) |
518 | 524 | throw new ExitException("Style file " + loc + " contains multiple styles, use option --style to select one."); |
519 | 525 | } catch (FileNotFoundException e) { |
520 | 526 | throw new ExitException("Could not open style file " + loc); |
521 | } finally { | |
522 | Utils.closeFile(loader); | |
523 | 527 | } |
524 | 528 | } |
525 | 529 |
29 | 29 | } |
30 | 30 | |
31 | 31 | public GType readType(TokenScanner ts){ |
32 | return readType(ts, false, null); | |
32 | return readType(ts, false, false, null); | |
33 | 33 | } |
34 | 34 | |
35 | public GType readType(TokenScanner ts, boolean performChecks, Map<Integer, List<Integer>> overlays) { | |
35 | public GType readType(TokenScanner ts, boolean performChecks, boolean forRoutableMap, Map<Integer, List<Integer>> overlays) { | |
36 | 36 | // We should have a '[' to start with |
37 | 37 | Token t = ts.nextToken(); |
38 | 38 | if (t == null || t.getType() == TokType.EOF) |
51 | 51 | |
52 | 52 | |
53 | 53 | GType gt = new GType(kind, type); |
54 | if (GType.checkType(gt.getFeatureKind(), gt.getType()) == false){ | |
54 | if (!GType.checkType(gt.getFeatureKind(), gt.getType())) { | |
55 | 55 | if (!performChecks && (kind != FeatureKind.POLYLINE || overlays == null || overlays.get(gt.getType()) == null)) |
56 | 56 | throw new SyntaxException("invalid type " + type + " for " + kind + " in style file " + ts.getFileName() + ", line " + ts.getLinenumber()); |
57 | 57 | } |
91 | 91 | } |
92 | 92 | } |
93 | 93 | |
94 | gt.fixLevels(levels); | |
94 | 95 | int maxResLevel0 = toResolution(0); |
95 | 96 | if (gt.getMaxResolution() > maxResLevel0 && gt.getMinResolution() > maxResLevel0) { |
96 | String msg = "Cannot use type " + gt + " with level 0 at resolution " + maxResLevel0 | |
97 | + " in style file " + ts.getFileName() + ", line " + ts.getLinenumber(); | |
97 | String msg = "Type " + GType.formatType(gt.getType()) + " min-res:" + gt.getMinResolution() + " will not be written with level 0 at resolution " + maxResLevel0 | |
98 | + " in style file " + ts.getFileName() + ", line " + ts.getLinenumber(); | |
98 | 99 | if (performChecks) { |
99 | 100 | log.error(msg); |
100 | } else { | |
101 | throw new SyntaxException(msg); | |
102 | } | |
103 | } | |
104 | gt.fixLevels(levels); | |
101 | } else if (kind == FeatureKind.POLYLINE && gt.isRoad() && forRoutableMap) { | |
102 | log.error(msg , "-> routing may not work"); | |
103 | } | |
104 | } | |
105 | 105 | if ("lines".equals(ts.getFileName())){ |
106 | 106 | if(gt.getRoadClass() < 0 || gt.getRoadClass() > 4) |
107 | 107 | log.error("road class value", gt.getRoadClass(), "not in the range 0-4 in style file lines, line " + ts.getLinenumber()); |
1373 | 1373 | modifiedPoints.remove(modifiedPoints.size() - 1); |
1374 | 1374 | c1 = modifiedPoints.get(modifiedPoints.size() - 1); // might be part of spike |
1375 | 1375 | } else { |
1376 | if (modifiedPoints.isEmpty()) { | |
1377 | modifiedPoints.add(c1); | |
1378 | } | |
1376 | 1379 | continue; |
1377 | 1380 | } |
1378 | 1381 | } |
12 | 12 | package uk.me.parabola.mkgmap.reader.hgt; |
13 | 13 | |
14 | 14 | import java.io.BufferedReader; |
15 | import java.io.FileReader; | |
15 | import java.io.FileInputStream; | |
16 | import java.io.InputStreamReader; | |
16 | 17 | import java.io.IOException; |
17 | 18 | import java.io.InputStream; |
18 | 19 | import java.io.RandomAccessFile; |
87 | 88 | */ |
88 | 89 | private static BitSet compileHGTList(String filename) throws IOException { |
89 | 90 | final Pattern hgtPattern = Pattern.compile("([sSnN])(\\d{2})([eEwW])(\\d{3}).*"); |
90 | try (BufferedReader br = new BufferedReader(new FileReader(filename))) { | |
91 | // maybe should be changed from using DefaultCharset to UTF-8 | |
92 | try (BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(filename)/*NB: DefaultCharset*/))) { | |
91 | 93 | BitSet bs = new BitSet(180*360); |
92 | 94 | String strLine; |
93 | 95 | while ((strLine = br.readLine()) != null) { |
18 | 18 | import java.io.BufferedReader; |
19 | 19 | import java.io.File; |
20 | 20 | import java.io.FileNotFoundException; |
21 | import java.io.FileReader; | |
21 | import java.io.InputStreamReader; | |
22 | import java.io.FileInputStream; | |
22 | 23 | import java.io.IOException; |
23 | 24 | import java.io.InputStream; |
24 | 25 | import java.nio.charset.StandardCharsets; |
144 | 145 | |
145 | 146 | @Override |
146 | 147 | public void load(String name, boolean addBackground) throws FileNotFoundException { |
147 | InputStream is = Utils.openFile(name); | |
148 | parse(is, name); | |
148 | try (InputStream is = Utils.openFile(name)) { | |
149 | parse(is, name); | |
150 | } catch (IOException e) { | |
151 | // exception thrown from implicit call to close() on resource variable 'is' | |
152 | } | |
153 | ||
149 | 154 | elementSaver.finishLoading(); |
150 | 155 | |
151 | 156 | osmReadingHooks.end(); |
288 | 293 | |
289 | 294 | private static Map<String, Set<String>> readDeleteTagsFile(String fileName) { |
290 | 295 | Map<String, Set<String>> deletedTags = new HashMap<>(); |
291 | try (BufferedReader br = new BufferedReader(new FileReader(fileName))) { | |
296 | ||
297 | // 14Jan20 Changed from using DefaultCharset to UTF-8 | |
298 | try (BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(fileName), StandardCharsets.UTF_8))) { | |
292 | 299 | String line; |
293 | while((line = br.readLine()) != null) { | |
300 | while ((line = br.readLine()) != null) { | |
294 | 301 | line = line.trim(); |
295 | if(line.length() > 0 && !line.startsWith("#") && !line.startsWith(";")) { | |
302 | if (line.isEmpty()) | |
303 | continue; | |
304 | if (line.charAt(0) == '\uFEFF') { // BOM | |
305 | line = line.substring(1); | |
306 | if (line.isEmpty()) | |
307 | continue; | |
308 | } | |
309 | if (!line.startsWith("#") && !line.startsWith(";")) { | |
296 | 310 | String[] parts = line.split("="); |
297 | 311 | if (parts.length == 2) { |
298 | 312 | parts[0] = parts[0].trim(); |
19 | 19 | import java.io.FileNotFoundException; |
20 | 20 | import java.io.IOException; |
21 | 21 | import java.io.InputStreamReader; |
22 | import java.io.Reader; | |
23 | import java.io.UnsupportedEncodingException; | |
24 | 22 | import java.nio.ByteBuffer; |
25 | 23 | import java.nio.CharBuffer; |
26 | 24 | import java.nio.charset.CharacterCodingException; |
27 | 25 | import java.nio.charset.Charset; |
28 | 26 | import java.nio.charset.CharsetDecoder; |
29 | 27 | import java.nio.charset.CodingErrorAction; |
28 | import java.nio.charset.StandardCharsets; | |
30 | 29 | import java.util.ArrayList; |
31 | 30 | import java.util.HashMap; |
32 | 31 | import java.util.LinkedHashMap; |
75 | 74 | public class PolishMapDataSource extends MapperBasedMapDataSource implements LoadableMapDataSource { |
76 | 75 | private static final Logger log = Logger.getLogger(PolishMapDataSource.class); |
77 | 76 | |
78 | private static final String READING_CHARSET = "iso-8859-1"; | |
77 | private static final Charset READING_CHARSET = StandardCharsets.ISO_8859_1; | |
79 | 78 | |
80 | 79 | private static final int S_IMG_ID = 1; |
81 | 80 | private static final int S_POINT = 2; |
126 | 125 | |
127 | 126 | @Override |
128 | 127 | public void load(String name, boolean addBackground) throws FileNotFoundException { |
129 | Reader reader; | |
130 | try { | |
131 | reader = new InputStreamReader(Utils.openFile(name), READING_CHARSET); | |
132 | } catch (UnsupportedEncodingException e) { | |
133 | // Java is required to support iso-8859-1 so this is unlikely | |
134 | throw new FormatException("Unrecognised charset " + READING_CHARSET); | |
135 | } | |
136 | ||
137 | 128 | // If no code page is given then we read labels in utf-8 |
138 | dec = Charset.forName("utf-8").newDecoder(); | |
129 | dec = StandardCharsets.UTF_8.newDecoder(); | |
139 | 130 | dec.onUnmappableCharacter(CodingErrorAction.REPLACE); |
140 | 131 | |
141 | ||
142 | try (BufferedReader in = new BufferedReader(reader)){ | |
132 | try (BufferedReader in = new BufferedReader(new InputStreamReader(Utils.openFile(name), READING_CHARSET))) { | |
143 | 133 | String line; |
144 | 134 | while ((line = in.readLine()) != null) { |
145 | 135 | ++lineNo; |
153 | 143 | else |
154 | 144 | processLine(line); |
155 | 145 | } |
156 | ||
157 | // Add all restrictions to the map after reading the full map. | |
158 | // The reason being, the restrictions section appear in the beginning of the map. | |
159 | // All the nodes will only be read later on. | |
160 | // Required to pass the road helper instance as it contains all node data. | |
161 | restrictionHelper.processAndAddRestrictions(roadHelper, mapper); | |
162 | 146 | } catch (IOException e) { |
163 | 147 | throw new FormatException("Reading file failed", e); |
164 | 148 | } |
149 | ||
150 | // Add all restrictions to the map after reading the full map. | |
151 | // The reason being, the restrictions section appear in the beginning of the map. | |
152 | // All the nodes will only be read later on. | |
153 | // Required to pass the road helper instance as it contains all node data. | |
154 | restrictionHelper.processAndAddRestrictions(roadHelper, mapper); | |
165 | 155 | |
166 | 156 | if (addBackground && !havePolygon4B) |
167 | 157 | addBackground(); |
550 | 540 | } |
551 | 541 | if (close && points.get(0) != points.get(points.size() - 1)) { |
552 | 542 | // not closed, close it |
553 | points.add(points.get(0)); | |
543 | if (points.get(0).highPrecEquals(points.get(points.size() - 1))) { | |
544 | points.set(points.size() - 1, points.get(0)); | |
545 | } else { | |
546 | points.add(points.get(0)); | |
547 | } | |
554 | 548 | } |
555 | 549 | log.debug(points.size() + " points from " + value); |
556 | 550 | return points; |
707 | 701 | */ |
708 | 702 | private String recode(String value) { |
709 | 703 | if (dec != null) { |
704 | // Get the bytes that were actually in the file. | |
705 | byte[] bytes = value.getBytes(READING_CHARSET); | |
706 | ByteBuffer buf = ByteBuffer.wrap(bytes); | |
707 | ||
710 | 708 | try { |
711 | // Get the bytes that were actually in the file. | |
712 | byte[] bytes = value.getBytes(READING_CHARSET); | |
713 | ByteBuffer buf = ByteBuffer.wrap(bytes); | |
714 | ||
715 | 709 | // Decode from bytes with the correct code page. |
716 | 710 | CharBuffer out = dec.decode(buf); |
717 | 711 | return out.toString(); |
718 | } catch (UnsupportedEncodingException e) { | |
719 | // Java requires this support, so unlikely to happen | |
720 | log.warn("no support for " + READING_CHARSET); | |
721 | 712 | } catch (CharacterCodingException e) { |
722 | 713 | log.error("error decoding label", e); |
723 | 714 | } |
27 | 27 | */ |
28 | 28 | public class TokenScanner { |
29 | 29 | private static final int NO_PUSHBACK = 0; |
30 | private String charset = "utf-8"; | |
30 | 31 | |
31 | 32 | // Reading state |
32 | 33 | private final Reader reader; |
50 | 51 | else |
51 | 52 | this.reader = new BufferedReader(reader); |
52 | 53 | fileName = filename; |
54 | } | |
55 | ||
56 | public void setCharset(String charset) { | |
57 | this.charset = charset; | |
53 | 58 | } |
54 | 59 | |
55 | 60 | /** |
235 | 240 | try { |
236 | 241 | c = reader.read(); |
237 | 242 | if (c == 0xfffd) |
238 | throw new SyntaxException(this, "Bad character in input, file probably not in utf-8"); | |
243 | throw new SyntaxException(this, "Bad character in input, file probably not in " + charset); | |
239 | 244 | } catch (IOException e) { |
240 | 245 | isEOF = true; |
241 | 246 | c = -1; |
21 | 21 | import java.nio.CharBuffer; |
22 | 22 | import java.nio.charset.CharacterCodingException; |
23 | 23 | import java.nio.charset.CharsetEncoder; |
24 | import java.nio.charset.StandardCharsets; | |
24 | 25 | import java.nio.file.Files; |
25 | 26 | import java.nio.file.Paths; |
26 | 27 | import java.util.ArrayList; |
101 | 102 | private Map<Integer, Integer> maxTert; |
102 | 103 | private List<CodePosition> expansions; |
103 | 104 | |
104 | public SrtTextReader(Reader r) throws IOException { | |
105 | public SrtTextReader(Reader r) { | |
105 | 106 | this("stream", r); |
106 | 107 | } |
107 | 108 | |
108 | 109 | private SrtTextReader(String filename) throws IOException { |
109 | this(filename, new InputStreamReader(new FileInputStream(filename), "utf-8")); | |
110 | } | |
111 | ||
112 | private SrtTextReader(String filename, Reader r) throws IOException { | |
110 | this(filename, new InputStreamReader(new FileInputStream(filename), StandardCharsets.UTF_8)); | |
111 | } | |
112 | ||
113 | private SrtTextReader(String filename, Reader r) { | |
113 | 114 | maxSec = new HashMap<>(); |
114 | 115 | maxTert = new HashMap<>(); |
115 | 116 | expansions = new ArrayList<>(); |
124 | 125 | */ |
125 | 126 | public static Sort sortForCodepage(int codepage) { |
126 | 127 | String name = "sort/cp" + codepage + ".txt"; |
127 | InputStream is = Sort.class.getClassLoader().getResourceAsStream(name); | |
128 | if (is == null) { | |
129 | if (codepage == 1252) | |
130 | throw new ExitException("No sort description for code-page 1252 available"); | |
131 | ||
132 | Sort defaultSort = SrtTextReader.sortForCodepage(1252); | |
133 | defaultSort.setCodepage(codepage); | |
134 | defaultSort.setDescription("Default sort"); | |
135 | return defaultSort; | |
136 | } | |
137 | ||
138 | try { | |
139 | InputStreamReader r = new InputStreamReader(is, "utf-8"); | |
128 | try (InputStream is = Sort.class.getClassLoader().getResourceAsStream(name)) { | |
129 | if (is == null) { | |
130 | if (codepage == 1252) | |
131 | throw new ExitException("No sort description for code-page 1252 available"); | |
132 | ||
133 | Sort defaultSort = SrtTextReader.sortForCodepage(1252); | |
134 | defaultSort.setCodepage(codepage); | |
135 | defaultSort.setDescription("Default sort"); | |
136 | return defaultSort; | |
137 | } | |
138 | ||
139 | InputStreamReader r = new InputStreamReader(is, StandardCharsets.UTF_8); | |
140 | 140 | SrtTextReader sr = new SrtTextReader(r); |
141 | 141 | return sr.getSort(); |
142 | 142 | } catch (IOException e) { |
143 | return SrtTextReader.sortForCodepage(codepage); | |
143 | throw new ExitException("Exception " + e + " getting sortForCodepage " + codepage); | |
144 | 144 | } |
145 | 145 | } |
146 | 146 | |
310 | 310 | Code code = new Code(scanner, val).read(); |
311 | 311 | |
312 | 312 | String s = scanner.nextValue(); |
313 | if (!s.equals("to")) | |
313 | if (!"to".equals(s)) | |
314 | 314 | throw new SyntaxException(scanner, "Expected the word 'to' in expand command"); |
315 | 315 | |
316 | 316 | int secondary = 0; |
41 | 41 | } else if (name.equalsIgnoreCase("ProductCode")) { |
42 | 42 | data.setProductId(ival); |
43 | 43 | } else if (name.equalsIgnoreCase("CodePage")) { |
44 | data.setSort(SrtTextReader.sortForCodepage(ival)); | |
44 | if (data.getSort() == null) // ignore if --code-page | |
45 | data.setSort(SrtTextReader.sortForCodepage(ival)); | |
45 | 46 | } else { |
46 | 47 | throw new SyntaxException(scanner, "Unrecognised keyword in id section: " + name); |
47 | 48 | } |
31 | 31 | // As the file is read in, the information is saved into this data structure. |
32 | 32 | private final TypData data = new TypData(); |
33 | 33 | |
34 | public void read(String filename, Reader r) { | |
34 | public void read(String filename, Reader r, String charset) { | |
35 | 35 | TokenScanner scanner = new TokenScanner(filename, r); |
36 | 36 | scanner.setCommentChar(null); // the '#' comment character is not appropriate for this file |
37 | scanner.setCharset(charset); | |
37 | 38 | |
38 | 39 | ProcessSection currentSection = null; |
39 | 40 |
94 | 94 | case "RGN": |
95 | 95 | count++; |
96 | 96 | System.out.println("RGN size " + size); |
97 | assertThat("RGN size", size, new RangeMatcher(2710)); | |
97 | assertThat("RGN size", size, new RangeMatcher(2741,3)); | |
98 | 98 | break; |
99 | 99 | case "TRE": |
100 | 100 | count++; |
89 | 89 | case "RGN": |
90 | 90 | count++; |
91 | 91 | System.out.println("RGN size " + size); |
92 | assertThat("RGN size", size, new RangeMatcher(2727)); | |
92 | assertThat("RGN size", size, new RangeMatcher(2764,3)); | |
93 | 93 | break; |
94 | 94 | case "TRE": |
95 | 95 | count++; |
19 | 19 | import java.io.RandomAccessFile; |
20 | 20 | import java.io.Reader; |
21 | 21 | import java.io.StringReader; |
22 | import java.nio.charset.Charset; | |
22 | 23 | import java.nio.channels.FileChannel; |
23 | 24 | import java.util.List; |
24 | 25 | |
268 | 269 | public void testFromFile() throws IOException, InterruptedException { |
269 | 270 | Reader r = new BufferedReader(new FileReader("test/resources/typ/test.txt")); |
270 | 271 | tr = new TypTextReader(); |
271 | tr.read("test.typ", r); | |
272 | tr.read("test.typ", r, Charset.defaultCharset().name()); | |
272 | 273 | |
273 | 274 | TestUtils.registerFile("ts__test.typ"); |
274 | 275 | RandomAccessFile raf = new RandomAccessFile("ts__test.typ", "rw"); |
311 | 312 | Reader r = new StringReader(in); |
312 | 313 | |
313 | 314 | TypTextReader tr = new TypTextReader(); |
314 | tr.read("string", r); | |
315 | tr.read("string", r, "N/A"); | |
315 | 316 | if (tr.getData().getSort() == null) |
316 | 317 | tr.getData().setSort(SrtTextReader.sortForCodepage(1252)); |
317 | 318 | return tr; |