Codebase list osmium-tool / 652ba07
New upstream version 1.13.2 Bas Couwenberg 2 years ago
113 changed file(s) with 10439 addition(s) and 226 deletion(s). Raw diff Collapse all Expand all
0 ---
1 name: Report problems with the software
2 about: You found a (possible) bug in osmium-tool
3 title: ''
4 labels: ''
5 assignees: ''
6
7 ---
8
9 ## What version of osmium-tool are you using?
10
11 <!-- Paste output of `osmium --version` here. Please use the [latest
12 release](https://github.com/osmcode/osmium-tool/releases) or master if at all
13 possible. -->
14
15
16 ## What operating system version are you using?
17
18 <!-- Also what Linux distribution if applicable, OS version? Possibly which
19 compiler version. -->
20
21
22 ## Tell us something about your system
23
24 <!-- How much RAM do you have, how many CPUs, bare metal or cloud setup? -->
25
26
27 ## What did you do exactly?
28
29 <!-- Please provide the command(s) you used including all options etc. Include
30 links to input files. -->
31
32
33 ## What did you expect to happen?
34
35 <!-- Describe in detail what you expected the above would do. -->
36
37
38 ## What did happen instead?
39
40 <!-- Please describe what happened and why you think this is wrong. Please include
41 (or link to, if it is too verbose) the log output (Use `--verbose`). -->
42
43
44 ## What did you do to try analyzing the problem?
45
46 <!-- Describe what steps you already did to try analyzing the problem before
47 reporting. -->
48
0 contact_links:
1 - name: help.osm.org
2 url: https://help.openstreetmap.org/
3 about: Ask questions and get support from the community.
1212 liblz4-1 \
1313 liblz4-dev \
1414 pandoc
15 if [ "$CC" = clang-6.0 ]; then sudo apt-get install -yq --no-install-suggests --no-install-recommends clang-6.0; fi
16 if [ "$CC" = clang-8 ]; then sudo apt-get install -yq --no-install-suggests --no-install-recommends clang-8; fi
1517 shell: bash
1618 - name: Install from git
1719 run: |
22 on: [ push, pull_request ]
33
44 jobs:
5 ubuntu16-clang6-dev:
6 runs-on: ubuntu-16.04
7 env:
8 CC: clang-6.0
9 CXX: clang++-6.0
10 BUILD_TYPE: Dev
11 steps:
12 - uses: actions/checkout@v2
13 - uses: ./.github/actions/install-ubuntu
14 - uses: ./.github/actions/build
15 - uses: ./.github/actions/ctest
16
17 ubuntu16-clang8-dev:
18 runs-on: ubuntu-16.04
19 env:
20 CC: clang-8
21 CXX: clang++-8
22 BUILD_TYPE: Dev
23 steps:
24 - uses: actions/checkout@v2
25 - uses: ./.github/actions/install-ubuntu
26 - uses: ./.github/actions/build
27 - uses: ./.github/actions/ctest
28
29 ubuntu16-clang9-dev:
30 runs-on: ubuntu-16.04
31 env:
32 CC: clang-9
33 CXX: clang++-9
34 BUILD_TYPE: Dev
35 steps:
36 - uses: actions/checkout@v2
37 - uses: ./.github/actions/install-ubuntu
38 - uses: ./.github/actions/build
39 - uses: ./.github/actions/ctest
40
415 ubuntu18-clang9-dev:
426 runs-on: ubuntu-18.04
437 env:
8347 CC: clang-10
8448 CXX: clang++-10
8549 BUILD_TYPE: Release
86 steps:
87 - uses: actions/checkout@v2
88 - uses: ./.github/actions/install-ubuntu
89 - uses: ./.github/actions/build
90 - uses: ./.github/actions/ctest
91
92 ubuntu16-gcc5-dev:
93 runs-on: ubuntu-16.04
94 env:
95 CC: gcc-5
96 CXX: g++-5
97 BUILD_TYPE: Dev
9850 steps:
9951 - uses: actions/checkout@v2
10052 - uses: ./.github/actions/install-ubuntu
1010 ### Changed
1111
1212 ### Fixed
13
14
15 ## [1.13.2] - 2021-10-05
16
17 ### Added
18
19 - New `osmium removeid` command to remove all objects with the specified IDs
20 from an OSM file. (This is, in a way, the opposite of the `osmium getid`
21 command.)
22 - New `osmium-output-headers(5)` man page with details about the settings
23 supported by the `--output-header` command line option.
24 - New `-g header.boxes` output option to `osmium fileinfo` to get the
25 bounding box(es) set in the header.
26 - New option `--attributes` for the export command to specified attributes
27 that should show up in the output files. (This needed a config file before.)
28 - New option `--buffer-data` for `osmium cat` command to buffer all read data
29 in memory before writing it out again. Can be used for benchmarking.
30
31 ### Changed
32
33 - The `osmium merge` command now checks that the input files are ordered
34 correctly and warns or stops if this is not the case.
35 - Improved messages about files read in verbose mode for `osmium cat`.
36
37 ### Fixed
38
39 - Fixed relation member recursion in tags-filter so that objects referenced
40 from matching relations are also in the output.
41 - Fix point-in-polygon-check in extract command. More nodes directly on the
42 boundary should now be inside the polygon. This fixes a problem with extracts
43 on the antimeridian.
44 - When an output file name for the extract command contains multiple dots (.),
45 the file type could not always be deduced correctly. This improves detection
46 for .json and .poly files.
47 - Do not show progress when any of the inputs is stdin. Because we don't know
48 how large the input file is we can't display a reliable progress indicator.
49 - Allow `none` index type on `osmium export`.
1350
1451
1552 ## [1.13.1] - 2021-02-01
607644 - Minor updates to documentation and build system
608645
609646
610 [unreleased]: https://github.com/osmcode/osmium-tool/compare/v1.13.1...HEAD
647 [unreleased]: https://github.com/osmcode/osmium-tool/compare/v1.13.2...HEAD
648 [1.13.2]: https://github.com/osmcode/osmium-tool/compare/v1.13.1...v1.13.2
611649 [1.13.1]: https://github.com/osmcode/osmium-tool/compare/v1.13.0...v1.13.1
612650 [1.13.0]: https://github.com/osmcode/osmium-tool/compare/v1.12.1...v1.13.0
613651 [1.12.1]: https://github.com/osmcode/osmium-tool/compare/v1.12.0...v1.12.1
2525
2626 set(OSMIUM_VERSION_MAJOR 1)
2727 set(OSMIUM_VERSION_MINOR 13)
28 set(OSMIUM_VERSION_PATCH 1)
28 set(OSMIUM_VERSION_PATCH 2)
2929
3030 set(OSMIUM_VERSION ${OSMIUM_VERSION_MAJOR}.${OSMIUM_VERSION_MINOR}.${OSMIUM_VERSION_PATCH})
3131
3434 set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
3535
3636 option(WITH_LZ4 "Build with lz4 support for PBF files" ON)
37
38 option(BUILD_TESTING "Build the tests" ON)
3739
3840
3941 #-----------------------------------------------------------------------------
237239 merge
238240 merge-changes
239241 query-locations-index
242 removeid
240243 renumber
241244 show
242245 sort
261264 extract/extract.cpp
262265 extract/extract_polygon.cpp
263266 extract/geojson_file_parser.cpp
267 extract/geometry_util.cpp
264268 extract/osm_file_parser.cpp
265269 extract/poly_file_parser.cpp
266270 extract/strategy_complete_ways.cpp
284288 #
285289 #-----------------------------------------------------------------------------
286290
287 enable_testing()
288 add_subdirectory(test)
291 if(BUILD_TESTING)
292 enable_testing()
293 add_subdirectory(test)
294 endif()
289295
290296 #-----------------------------------------------------------------------------
291297 #
1515 share/man/man1/osmium-merge-changes.1
1616 share/man/man1/osmium-merge.1
1717 share/man/man1/osmium-query-locations-index.1
18 share/man/man1/osmium-removeid.1
1819 share/man/man1/osmium-renumber.1
1920 share/man/man1/osmium-show.1
2021 share/man/man1/osmium-sort.1
2425 share/man/man1/osmium.1
2526 share/man/man5/osmium-file-formats.5
2627 share/man/man5/osmium-index-types.5
28 share/man/man5/osmium-output-headers.5
2729 bin/osmium
2830 )
2931
6262 add_man_page(1 osmium-merge)
6363 add_man_page(1 osmium-merge-changes)
6464 add_man_page(1 osmium-query-locations-index)
65 add_man_page(1 osmium-removeid)
6566 add_man_page(1 osmium-renumber)
6667 add_man_page(1 osmium-show)
6768 add_man_page(1 osmium-sort)
7071 add_man_page(1 osmium-time-filter)
7172 add_man_page(5 osmium-file-formats)
7273 add_man_page(5 osmium-index-types)
74 add_man_page(5 osmium-output-headers)
7375
7476 add_custom_target(man ALL DEPENDS ${ALL_MAN_PAGES})
7577 else()
2525 **\--keep-untagged-nodes/-n** option is used in which case it will be a lot
2626 bigger).
2727
28 Note that the OSM files generated by this command use a non-standard format
29 extension.
28 Note that the OSM files generated by this command use a format extension. Most
29 programs reading OSM files will not understand this extension and should ignore
30 the extra data.
3031
3132 The **osmium add-locations-to-ways** command has to keep an index of the node
3233 locations in memory or in a temporary file on disk while doing its work. There
4445 and negative IDs are set separately with the **\--index-type/-i** and
4546 **\--index-type-neg** options, respectively.
4647
47 This commands reads its input file(s) only once and writes its output file
48 in one go so it can be streamed, ie. it can read from STDIN and write to
49 STDOUT.
48 This commands reads its input file(s) only once and writes its output file in
49 one go so it can be streamed, ie. it can read from STDIN and write to STDOUT.
50 The input file must be sorted in the usual order: first nodes, then ways, then
51 relations, objects of each type ordered by id. If there are multiple input
52 files, they will be read in the order specified on the command line. They
53 must together have the correct order, so, for instance, the first one can have
54 all the sorted nodes, the second all the sorted ways, etc. If this is not
55 the case use **osmium merge** on the inputs first.
5056
5157
5258 # OPTIONS
110116
111117 # SEE ALSO
112118
113 * **osmium**(1), **osmium-file-formats**(5), **osmium-index-types**(5)
119 * **osmium**(1), **osmium-file-formats**(5), **osmium-index-types**(5),
120 **osmium-output-headers**(5)
114121 * [Osmium website](https://osmcode.org/osmium-tool/)
115122
113113
114114 # SEE ALSO
115115
116 * **osmium**(1), **osmium-file-formats**(5), **osmium-merge-changes**(1), **osmium-derive-changes**(1)
116 * **osmium**(1), **osmium-merge-changes**(1), **osmium-derive-changes**(1),
117 **osmium-file-formats**(5), **osmium-output-headers**(5)
117118 * [Osmium website](https://osmcode.org/osmium-tool/)
118119
3535 -t, \--object-type=TYPE
3636 : Read only objects of given type (*node*, *way*, *relation*, *changeset*).
3737 By default all types are read. This option can be given multiple times.
38
39 \--buffer-data
40 : Read all input files into memory and only then write out all the data.
41 This will need a lot of memory and is usually slower than a normal copy.
42 Used for timing the reading and writing phase separately.
3843
3944 @MAN_COMMON_OPTIONS@
4045 @MAN_PROGRESS_OPTIONS@
8287
8388 # SEE ALSO
8489
85 * **osmium**(1), **osmium-file-formats**(5), **osmium-merge**(1)
90 * **osmium**(1), **osmium-file-formats**(5), **osmium-merge**(1),
91 **osmium-output-headers**(5)
8692 * [Osmium website](https://osmcode.org/osmium-tool/)
8793
9595
9696 # SEE ALSO
9797
98 * **osmium**(1), **osmium-file-formats**(5)
98 * **osmium**(1), **osmium-file-formats**(5), **osmium-output-headers**(5)
9999 * [Osmium website](https://osmcode.org/osmium-tool/)
100100
9494
9595 # SEE ALSO
9696
97 * **osmium**(1), **osmium-file-formats**(5), **osmium-apply-changes**(1), **osmium-diff**(1)
97 * **osmium**(1), **osmium-file-formats**(5), **osmium-output-headers**(5),
98 **osmium-apply-changes**(1), **osmium-diff**(1)
9899 * [Osmium website](https://osmcode.org/osmium-tool/)
99100
7474 geometries (points, linestrings, and (multi)polygons) are written to the
7575 output, but you can restrict the types using this option. TYPES is a
7676 comma-separated list of the types ("point", "linestring", and "polygon").
77
78 -a, \--attributes=ATTRS
79 : In addition to tags, also export attributes specified in this comma-separated
80 list. By default, none are exported. See the **ATTRIBUTES** section below
81 for the known attributes list and an explanation.
7782
7883 -i, \--index-type=TYPE
7984 : Set the index type. For details see the **osmium-index-types**(5) man
259264 prefixed by the `@` sign) or any string, in which case the string will be used
260265 as the attribute name.
261266
267 Another option is to specify attributes list in a comma-separated string
268 for the **\--attributes/-a** command-line option. This way you cannot
269 control column names, but also you won't have to create a config file.
270
262271 Depending on your choice of values for the `attributes` objects, attributes
263272 can have the same name as tag keys. If this is the case, the conflicting tag
264273 is silently dropped. So if there is a tag "@id=foo" and you have set `id` to
390390
391391 # SEE ALSO
392392
393 * **osmium**(1), **osmium-file-formats**(5), **osmium-getid**(1), **osmium-merge**(1)
393 * **osmium**(1), **osmium-file-formats**(5), **osmium-output-headers**(5),
394 **osmium-getid**(1), **osmium-merge**(1)
394395 * [Osmium website](https://osmcode.org/osmium-tool/)
395396
9595 file.format - STRING: XML|PBF
9696 file.compression - STRING: none|bzip2|gzip
9797 file.size - INTEGER (always 0 when reading from STDIN)
98 header.boxes - STRING (could be multiline)
9899 header.with_history - BOOL (yes|no)
99100 header.option.generator - STRING
100101 header.option.version - STRING
139139
140140 # SEE ALSO
141141
142 * **osmium**(1), **osmium-getparents**(1), **osmium-file-formats**(5)
142 * **osmium**(1), **osmium-getparents**(1), **osmium-removeid**(1),
143 **osmium-file-formats**(5), **osmium-output-headers**(5)
143144 * [Osmium website](https://osmcode.org/osmium-tool/)
144145
122122
123123 # SEE ALSO
124124
125 * **osmium**(1), **osmium-getid**(1), **osmium-file-formats**(5)
125 * **osmium**(1), **osmium-getid**(1), **osmium-file-formats**(5), **osmium-output-headers**(5)
126126 * [Osmium website](https://osmcode.org/osmium-tool/)
127127
7272
7373 # SEE ALSO
7474
75 * **osmium**(1), **osmium-file-formats**(5), **osmium-merge**(1)
75 * **osmium**(1), **osmium-file-formats**(5), **osmium-output-headers**(5), **osmium-merge**(1)
7676 * [Osmium website](https://osmcode.org/osmium-tool/)
7777
3434 in one go so it can be streamed, ie. it can read from STDIN and write to
3535 STDOUT.
3636
37 # OPTIONS
38
39 -H, \--with-history
40 : Do not warn when there are multiple versions of the same object in the
41 input files.
3742
3843 @MAN_COMMON_OPTIONS@
3944 @MAN_PROGRESS_OPTIONS@
4045 @MAN_INPUT_OPTIONS@
4146 @MAN_OUTPUT_OPTIONS@
47
4248
4349 # DIAGNOSTICS
4450
6975
7076 # SEE ALSO
7177
72 * **osmium**(1), **osmium-file-formats**(5), **osmium-merge-changes**(1)
78 * **osmium**(1), **osmium-file-formats**(5), **osmium-output-headers**(5), **osmium-merge-changes**(1)
7379 * [Osmium website](https://osmcode.org/osmium-tool/)
7480
0
1 # NAME
2
3 osmium-output-headers - Header options that can be set on output files
4
5 # DESCRIPTION
6
7 Most osmium commands that write OSM files can set values in the file header
8 of the OSM file using the **\--output-header** option.
9
10 The format generally is **\--output-header=OPTION=VALUE**. For some commands
11 you can use the special format **\--output-header=OPTION!** (ie. an exclamation
12 mark after the *OPTION* and no value set) to set the value to the same as in
13 the input file. See the individual command man pages for where this is allowed.
14
15 # HEADER OPTIONS
16
17 `generator`
18 : Set the "generator program" value. Default is "osmium/VERSION". Can also
19 be set using the **\--generator** option. (XML and PBF files only.)
20
21 `xml_josm_upload`
22 : Value of the upload attribute on the osm XML element (true or false) for
23 use in JOSM. (XML files only.)
24
25 `osmosis_replication_timestamp`
26 : Timestamp used in replication (PBF files only).
27
28 `osmosis_replication_sequence_number`
29 : Sequence number used in replication (PBF files only).
30
31 `osmosis_replication_base_url`
32 : Base URL for change files used in replication (PBF files only).
33
34 `sorting`
35 : Set the **Sort.Type_then_ID** property in the PBF header if set to
36 **Type_then_ID**. Other values are currently not suppored. (PBF files only).
37 Note that this only sets the header option, it does not actually sort the
38 file! Use **osmium sort** for that.
39
40
41 # EXAMPLES
42
43 Copy the file in.osm.pbf to out.osm.pbf setting the generator to **myscript**:
44
45 osmium cat --output-header=generator=myscript -o out.osm.pbf in.osm.pbf
46
47 # SEE ALSO
48
49 * **osmium**(1)
50 * [Osmium website](https://osmcode.org/osmium-tool/)
51 * [Replication headers](https://wiki.openstreetmap.org/wiki/PBF_Format)
52
2828
2929 # OPTIONS
3030
31 --dump
31 \--dump
3232 : Dump all node locations to an OSM file. Use the **\--output/-o** and
3333 **\--output-format/-f** options to set the file format to be used.
3434 Default is STDOUT and the OPL format, respectively.
7070
7171 # SEE ALSO
7272
73 * **osmium**(1), **osmium-create-locations-index**(1), **osmium-file-formats**(5)
73 * **osmium**(1), **osmium-create-locations-index**(1), **osmium-file-formats**(5), **osmium-output-headers**(5)
7474 * [Osmium website](https://osmcode.org/osmium-tool/)
7575 * [osm2pgsql](https://wiki.openstreetmap.org/wiki/Osm2pgsql)
7676
0
1 # NAME
2
3 osmium-removeid - remove objects from OSM file by ID
4
5
6 # SYNOPSIS
7
8 **osmium removeid** \[*OPTIONS*\] *OSM-FILE* *ID*...\
9 **osmium removeid** \[*OPTIONS*\] *OSM-FILE* -i *ID-FILE*\
10 **osmium removeid** \[*OPTIONS*\] *OSM-FILE* -I *ID-OSM-FILE*
11
12
13 # DESCRIPTION
14
15 Copy input file to output removing objects with the specified IDs.
16
17 IDs can be given on the command line (first case in synopsis), or read from
18 text files with one ID per line (second case in synopsis), or read from
19 OSM files (third cases in synopsis). A mixture of these cases is also allowed.
20
21 Objects will be written out in the order they are found in the *OSM-FILE*.
22 The input file is only read once, reading from *STDIN* is possible by using
23 the special file name '-'.
24
25 On the command line or in the ID file, the IDs have the form: *TYPE-LETTER*
26 *NUMBER*. The type letter is 'n' for nodes, 'w' for ways, and 'r' for
27 relations. If there is no type letter, 'n' for nodes is assumed (or whatever
28 the **\--default-type** option says). So "n13 w22 17 r21" will match the nodes
29 13 and 17, the way 22 and the relation 21.
30
31 The order in which the IDs appear does not matter. Identical IDs can appear
32 multiple times on the command line or in the ID file(s).
33
34 On the command line, the list of IDs can be in separate arguments or in a
35 single argument separated by spaces, tabs, commas (,), semicolons (;), forward
36 slashes (/) or pipe characters (|).
37
38 In an ID file (option **\--id-file/-i**) each line must start with an ID in
39 the format described above. Leading space characters in the line are ignored.
40 Lines can optionally contain a space character or a hash sign ('#') after the
41 ID. Any characters after that are ignored. (This also allows files in OPL
42 format to be read.) Empty lines are ignored.
43
44 Note that all objects will be taken from the *OSM-FILE*, the *ID-OSM-FILE* is
45 only used to detect which objects to remove.
46
47 The *OSM-FILE* can be a history file in which case all versions of the objects
48 with the specified IDs will be removed.
49
50 This command will not work with negative IDs.
51
52
53 # OPTIONS
54
55 \--default-type=TYPE
56 : Use TYPE ('node', 'way', or 'relation') for IDs without a type prefix
57 (default: 'node'). It is also allowed to just use the first character
58 of the type here.
59
60 -i, \--id-file[=FILE]
61 : Read IDs from text file instead of from the command line. Use the special
62 name "-" to read from *STDIN*. Each line of the file must start with an
63 ID in the format described above. Lines can optionally contain a space
64 character or a hash sign ('#') after the ID. This character and all
65 following characters are ignored. (This allows files in OPL format to be
66 read.) Empty lines are also ignored. This option can be used multiple
67 times.
68
69 -I, \--id-osm-file=OSMFILE
70 : Like **\--id-file/-i** but get the IDs from an OSM file. This option can be
71 used multiple times.
72
73 @MAN_COMMON_OPTIONS@
74 @MAN_PROGRESS_OPTIONS@
75 @MAN_INPUT_OPTIONS@
76 @MAN_OUTPUT_OPTIONS@
77
78 # DIAGNOSTICS
79
80 **osmium removeid** exits with exit code
81
82 0
83 ~ if nothing went wrong
84
85 2
86 ~ if there was a problem with the command line arguments.
87
88
89 # MEMORY USAGE
90
91 **osmium removeid** does all its work on the fly and only keeps a table of all
92 IDs it needs in main memory.
93
94
95 # EXAMPLES
96
97 Output all nodes except nodes 17 and 1234, all ways except way 42, and all
98 relations except relation 111 to STDOUT in OPL format:
99
100 osmium removeid -f opl planet.osm.pbf n1234 w42 n17 r111
101
102
103 # SEE ALSO
104
105 * **osmium**(1), **osmium-getid**(1), **osmium-file-formats**(5), **osmium-output-headers**(5)
106 * [Osmium website](https://osmcode.org/osmium-tool/)
107
139139
140140 # SEE ALSO
141141
142 * **osmium**(1), **osmium-file-formats**(5), **osmium-sort**(1)
142 * **osmium**(1), **osmium-file-formats**(5), **osmium-output-headers**(5), **osmium-sort**(1)
143143 * [Osmium website](https://osmcode.org/osmium-tool/)
144144
7878
7979 # SEE ALSO
8080
81 * **osmium**(1), **osmium-file-formats**(5)
81 * **osmium**(1), **osmium-file-formats**(5), **osmium-output-headers**(5)
8282 * [Osmium website](https://osmcode.org/osmium-tool/)
8383
170170
171171 # SEE ALSO
172172
173 * **osmium**(1), **osmium-file-formats**(5)
173 * **osmium**(1), **osmium-file-formats**(5), **osmium-output-headers**(5)
174174 * [Osmium website](https://osmcode.org/osmium-tool/)
175175
6767
6868 # SEE ALSO
6969
70 * **osmium**(1), **osmium-file-formats**(5)
70 * **osmium**(1), **osmium-file-formats**(5), **osmium-output-headers**(5)
7171 * [Osmium website](https://osmcode.org/osmium-tool/)
7272
7373 merge-changes
7474 : merge several OSM change files into one
7575
76 removeid
77 : remove OSM objects with specified IDs
78
7679 renumber
7780 : renumber object IDs
7881
143146 **osmium-sort**(1),
144147 **osmium-tags-filter**(1),
145148 **osmium-time-filter**(1),
146 **osmium-file-formats**(5)
149 **osmium-file-formats**(5),
150 **osmium-index-types**(5),
151 **osmium-output-headers**(5)
147152 * [Osmium website](https://osmcode.org/osmium-tool/)
148153
2222
2323 \--output-header=OPTION=VALUE
2424 : Add output header option. This command line option can be used multiple
25 times for different OPTIONs. See the *libosmium manual* for a list of
26 available header options. For some commands you can use the special format
27 "OPTION!" (ie. an exclamation mark after the OPTION and no value set) to
28 set the value to the same as in the input file.
25 times for different OPTIONs. See the *osmium-output-headers(5)* man page
26 for a list of available header options. For some commands you can use the
27 special format "OPTION!" (ie. an exclamation mark after the OPTION and no
28 value set) to set the value to the same as in the input file.
151151 }
152152 }
153153
154 std::string check_index_type(const std::string& index_type_name) {
154 std::string check_index_type(const std::string& index_type_name, bool allow_none) {
155 if (allow_none && index_type_name == "none") {
156 return index_type_name;
157 }
158
155159 std::string type{index_type_name};
156160 const auto pos = type.find(',');
157161 if (pos != std::string::npos) {
3131
3232 #include <boost/program_options.hpp>
3333
34 #include <algorithm>
3435 #include <functional>
3536 #include <map>
3637 #include <memory>
116117 return m_osm_entity_bits;
117118 }
118119
119 bool display_progress() const {
120 bool display_progress_internal() const {
120121 switch (m_display_progress) {
121122 case display_progress_type::on_tty:
122123 return osmium::isatty(1) && osmium::isatty(2); // if STDOUT and STDERR are a TTY
150151 return m_input_file;
151152 }
152153
154 /// Is the input file STDIN?
155 bool any_input_is_stdin() const noexcept {
156 return m_input_file.filename().empty();
157 }
158
153159 }; // class with_single_osm_input
154160
155161 class with_multiple_osm_inputs {
172178 return m_input_files;
173179 }
174180
181 /// Is any of the input files STDIN?
182 bool any_input_is_stdin() const noexcept {
183 return std::any_of(m_input_files.cbegin(), m_input_files.cend(),
184 [](const osmium::io::File& file) {
185 return file.filename().empty();
186 });
187 }
188
175189 }; // class with_multiple_osm_inputs
190
191 class CommandWithSingleOSMInput : public Command, public with_single_osm_input {
192
193 public:
194
195 explicit CommandWithSingleOSMInput(const CommandFactory& command_factory) :
196 Command(command_factory) {
197 }
198
199 bool display_progress() const {
200 return display_progress_internal() && !any_input_is_stdin();
201 }
202
203 }; // class CommandWithSingleOSMInput
204
205 class CommandWithMultipleOSMInputs : public Command, public with_multiple_osm_inputs {
206
207 public:
208
209 explicit CommandWithMultipleOSMInputs(const CommandFactory& command_factory) :
210 Command(command_factory) {
211 }
212
213 bool display_progress() const {
214 return display_progress_internal() && !any_input_is_stdin();
215 }
216
217 }; // class CommandWithMultipleOSMInputs
176218
177219 void init_header(osmium::io::Header& header, const osmium::io::Header& input_header, const std::vector<std::string>& options);
178220
253295 }; // class CommandFactory
254296
255297 void register_commands(CommandFactory& cmd_factory);
256 std::string check_index_type(const std::string& index_type_name);
298 std::string check_index_type(const std::string& index_type_name, bool allow_none = false);
257299
258300 #endif // CMD_HPP
3636 using index_type = osmium::index::map::Map<osmium::unsigned_object_id_type, osmium::Location>;
3737 using location_handler_type = osmium::handler::NodeLocationsForWays<index_type, index_type>;
3838
39 class CommandAddLocationsToWays : public Command, public with_multiple_osm_inputs, public with_osm_output {
39 class CommandAddLocationsToWays : public CommandWithMultipleOSMInputs, public with_osm_output {
4040
4141 std::string m_index_type_name_pos;
4242 std::string m_index_type_name_neg;
4848 public:
4949
5050 explicit CommandAddLocationsToWays(const CommandFactory& command_factory) :
51 Command(command_factory) {
51 CommandWithMultipleOSMInputs(command_factory) {
5252 }
5353
5454 bool setup(const std::vector<std::string>& arguments) override final;
2727 #include <string>
2828 #include <vector>
2929
30 class CommandApplyChanges : public Command, public with_single_osm_input, public with_osm_output {
30 class CommandApplyChanges : public CommandWithSingleOSMInput, public with_osm_output {
3131
3232 std::vector<std::string> m_change_filenames;
3333
4040 public:
4141
4242 explicit CommandApplyChanges(const CommandFactory& command_factory) :
43 Command(command_factory) {
43 CommandWithSingleOSMInput(command_factory) {
4444 }
4545
4646 bool setup(const std::vector<std::string>& arguments) override final;
4141 opts_cmd.add_options()
4242 ("object-type,t", po::value<std::vector<std::string>>(), "Read only objects of given type (node, way, relation, changeset)")
4343 ("clean,c", po::value<std::vector<std::string>>(), "Clean attribute (version, changeset, timestamp, uid, user)")
44 ("buffer-data", "Buffer all data in memory before writing it out")
4445 ;
4546
4647 po::options_description opts_common{add_common_options()};
8990 }
9091 }
9192
93 if (vm.count("buffer-data")) {
94 m_buffer_data = true;
95 }
96
9297 return true;
9398 }
9499
125130 m_vout << " attributes to clean: " << clean_names << '\n';
126131 }
127132
133 void CommandCat::clean_buffer(osmium::memory::Buffer& buffer) const {
134 for (auto& object : buffer.select<osmium::OSMObject>()) {
135 if (m_clean_attrs & clean_options::clean_version) {
136 object.set_version(static_cast<osmium::object_version_type>(0));
137 }
138 if (m_clean_attrs & clean_options::clean_changeset) {
139 object.set_changeset(static_cast<osmium::changeset_id_type>(0));
140 }
141 if (m_clean_attrs & clean_options::clean_timestamp) {
142 object.set_timestamp(osmium::Timestamp{});
143 }
144 if (m_clean_attrs & clean_options::clean_uid) {
145 object.set_uid(static_cast<osmium::user_id_type>(0));
146 }
147 if (m_clean_attrs & clean_options::clean_user) {
148 object.clear_user();
149 }
150 }
151 }
152
128153 void CommandCat::copy(osmium::ProgressBar& progress_bar, osmium::io::Reader& reader, osmium::io::Writer &writer) const {
129154 while (osmium::memory::Buffer buffer = reader.read()) {
130155 progress_bar.update(reader.offset());
131156
132157 if (m_clean_attrs) {
133 for (auto& object : buffer.select<osmium::OSMObject>()) {
134 if (m_clean_attrs & clean_options::clean_version) {
135 object.set_version(static_cast<osmium::object_version_type>(0));
136 }
137 if (m_clean_attrs & clean_options::clean_changeset) {
138 object.set_changeset(static_cast<osmium::changeset_id_type>(0));
139 }
140 if (m_clean_attrs & clean_options::clean_timestamp) {
141 object.set_timestamp(osmium::Timestamp{});
142 }
143 if (m_clean_attrs & clean_options::clean_uid) {
144 object.set_uid(static_cast<osmium::user_id_type>(0));
145 }
146 if (m_clean_attrs & clean_options::clean_user) {
147 object.clear_user();
148 }
149 }
158 clean_buffer(buffer);
150159 }
151160
152161 writer(std::move(buffer));
162 }
163 }
164
165 std::size_t CommandCat::read_buffers(osmium::ProgressBar& progress_bar, osmium::io::Reader& reader, std::vector<osmium::memory::Buffer>& buffers) {
166 std::size_t size = 0;
167
168 while (osmium::memory::Buffer buffer = reader.read()) {
169 progress_bar.update(reader.offset());
170
171 if (m_clean_attrs) {
172 clean_buffer(buffer);
173 }
174
175 size += buffer.committed();
176
177 buffers.emplace_back(std::move(buffer));
178 }
179
180 return size;
181 }
182
183 void CommandCat::write_buffers(osmium::ProgressBar& progress_bar, std::vector<osmium::memory::Buffer>& buffers, osmium::io::Writer& writer) {
184 std::size_t size = 0;
185
186 for (auto&& buffer : buffers) {
187 size += buffer.committed();
188 writer(std::move(buffer));
189 progress_bar.update(size);
190 }
191 }
192
193 static void report_filename(osmium::VerboseOutput& vout, const osmium::io::File& file, const osmium::io::Reader& reader) {
194 const auto size = reader.file_size();
195 const auto name = file.filename();
196
197 if (size == 0) {
198 if (name.empty()) {
199 vout << "Reading from stdin...\n";
200 } else {
201 vout << "Reading input file '" << name << "'...\n";
202 }
203 } else {
204 vout << "Reading input file '" << name << "' (" << size << " bytes)...\n";
153205 }
154206 }
155207
159211 if (m_input_files.size() == 1) { // single input file
160212 osmium::io::Reader reader{m_input_files[0], osm_entity_bits()};
161213 osmium::io::Header header{reader.header()};
162 m_vout << "Copying input file '" << m_input_files[0].filename()
163 << "' (" << reader.file_size() << " bytes)\n";
214
215 report_filename(m_vout, m_input_files[0], reader);
164216
165217 setup_header(header);
166218 osmium::io::Writer writer(m_output_file, header, m_output_overwrite, m_fsync);
167219
168 osmium::ProgressBar progress_bar{reader.file_size(), display_progress()};
169 copy(progress_bar, reader, writer);
170 progress_bar.done();
220 if (m_buffer_data) {
221 std::vector<osmium::memory::Buffer> buffers;
222 osmium::ProgressBar progress_bar_reader{reader.file_size(), display_progress()};
223 std::size_t size = read_buffers(progress_bar_reader, reader, buffers);
224 progress_bar_reader.done();
225 m_vout << "All data read.\n";
226 show_memory_used();
227 m_vout << "Writing data...\n";
228 osmium::ProgressBar progress_bar_writer{size, display_progress()};
229 write_buffers(progress_bar_writer, buffers, writer);
230 progress_bar_writer.done();
231 } else {
232 osmium::ProgressBar progress_bar{reader.file_size(), display_progress()};
233 copy(progress_bar, reader, writer);
234 progress_bar.done();
235 }
171236 file_size = writer.close();
172237 reader.close();
173238 } else { // multiple input files
175240 setup_header(header);
176241 osmium::io::Writer writer{m_output_file, header, m_output_overwrite, m_fsync};
177242
178 osmium::ProgressBar progress_bar{file_size_sum(m_input_files), display_progress()};
179 for (const auto& input_file : m_input_files) {
180 progress_bar.remove();
181 osmium::io::Reader reader{input_file, osm_entity_bits()};
182 m_vout << "Copying input file '" << input_file.filename()
183 << "' (" << reader.file_size() << " bytes)\n";
184 copy(progress_bar, reader, writer);
185 progress_bar.file_done(reader.file_size());
186 reader.close();
187 }
188 file_size = writer.close();
189 progress_bar.done();
243 if (m_buffer_data) {
244 std::vector<osmium::memory::Buffer> buffers;
245 std::size_t size = 0;
246 osmium::ProgressBar progress_bar_reader{file_size_sum(m_input_files), display_progress()};
247 for (const auto& input_file : m_input_files) {
248 progress_bar_reader.remove();
249 osmium::io::Reader reader{input_file, osm_entity_bits()};
250 report_filename(m_vout, input_file, reader);
251 size += read_buffers(progress_bar_reader, reader, buffers);
252 progress_bar_reader.file_done(reader.file_size());
253 reader.close();
254 }
255 progress_bar_reader.done();
256 m_vout << "All data read.\n";
257 show_memory_used();
258 m_vout << "Writing data...\n";
259 osmium::ProgressBar progress_bar_writer{size, display_progress()};
260 write_buffers(progress_bar_writer, buffers, writer);
261 file_size = writer.close();
262 progress_bar_writer.done();
263 } else {
264 osmium::ProgressBar progress_bar{file_size_sum(m_input_files), display_progress()};
265 for (const auto& input_file : m_input_files) {
266 progress_bar.remove();
267 osmium::io::Reader reader{input_file, osm_entity_bits()};
268 report_filename(m_vout, input_file, reader);
269 copy(progress_bar, reader, writer);
270 progress_bar.file_done(reader.file_size());
271 reader.close();
272 }
273 file_size = writer.close();
274 progress_bar.done();
275 }
190276 }
191277
192278 if (file_size > 0) {
3131 #include <string>
3232 #include <vector>
3333
34 class CommandCat : public Command, public with_multiple_osm_inputs, public with_osm_output {
34 class CommandCat : public CommandWithMultipleOSMInputs, public with_osm_output {
3535
3636 enum clean_options : uint8_t {
3737 clean_version = 0x01,
4343
4444 uint8_t m_clean_attrs = 0;
4545
46 bool m_buffer_data = false;
47
48 void clean_buffer(osmium::memory::Buffer& buffer) const;
49
4650 void copy(osmium::ProgressBar& progress_bar, osmium::io::Reader& reader, osmium::io::Writer &writer) const;
51
52 std::size_t read_buffers(osmium::ProgressBar& progress_bar, osmium::io::Reader& reader, std::vector<osmium::memory::Buffer>& buffers);
53
54 void write_buffers(osmium::ProgressBar& progress_bar, std::vector<osmium::memory::Buffer>& buffers, osmium::io::Writer &writer);
4755
4856 public:
4957
5058 explicit CommandCat(const CommandFactory& command_factory) :
51 Command(command_factory) {
59 CommandWithMultipleOSMInputs(command_factory) {
5260 }
5361
5462 bool setup(const std::vector<std::string>& arguments) override final;
3131 #include <string>
3232 #include <vector>
3333
34 class CommandChangesetFilter : public Command, public with_single_osm_input, public with_osm_output {
34 class CommandChangesetFilter : public CommandWithSingleOSMInput, public with_osm_output {
3535
3636 std::string m_user;
3737 osmium::Box m_box;
4949 public:
5050
5151 explicit CommandChangesetFilter(const CommandFactory& command_factory) :
52 Command(command_factory) {
52 CommandWithSingleOSMInput(command_factory) {
5353 }
5454
5555 bool setup(const std::vector<std::string>& arguments) override final;
2727 #include <string>
2828 #include <vector>
2929
30 class CommandCheckRefs : public Command, public with_single_osm_input {
30 class CommandCheckRefs : public CommandWithSingleOSMInput {
3131
3232 bool m_show_ids = false;
3333 bool m_check_relations = false;
3535 public:
3636
3737 explicit CommandCheckRefs(const CommandFactory& command_factory) :
38 Command(command_factory) {
38 CommandWithSingleOSMInput(command_factory) {
3939 }
4040
4141 bool setup(const std::vector<std::string>& arguments) override final;
2727 #include <string>
2828 #include <vector>
2929
30 class CommandCreateLocationsIndex : public Command, public with_single_osm_input {
30 class CommandCreateLocationsIndex : public CommandWithSingleOSMInput {
3131
3232 std::string m_index_file_name;
3333 bool m_update = false;
3535 public:
3636
3737 explicit CommandCreateLocationsIndex(const CommandFactory& command_factory) :
38 Command(command_factory) {
38 CommandWithSingleOSMInput(command_factory) {
3939 }
4040
4141 bool setup(const std::vector<std::string>& arguments) override final;
3131 #include <string>
3232 #include <vector>
3333
34 class CommandDeriveChanges : public Command, public with_multiple_osm_inputs, public with_osm_output {
34 class CommandDeriveChanges : public CommandWithMultipleOSMInputs, public with_osm_output {
3535
3636 osmium::memory::Buffer m_buffer{128};
3737
4242 public:
4343
4444 explicit CommandDeriveChanges(const CommandFactory& command_factory) :
45 Command(command_factory) {
45 CommandWithMultipleOSMInputs(command_factory) {
4646 }
4747
4848 bool setup(const std::vector<std::string>& arguments) override final;
2727 #include <string>
2828 #include <vector>
2929
30 class CommandDiff : public Command, public with_multiple_osm_inputs, public with_osm_output {
30 class CommandDiff : public CommandWithMultipleOSMInputs, public with_osm_output {
3131
3232 std::string m_output_action;
3333 bool m_show_summary = false;
3636 public:
3737
3838 explicit CommandDiff(const CommandFactory& command_factory) :
39 Command(command_factory) {
39 CommandWithMultipleOSMInputs(command_factory) {
4040 }
4141
4242 bool setup(const std::vector<std::string>& arguments) override final;
271271 ("show-errors,e", "Output any geometry errors on STDOUT")
272272 ("stop-on-error,E", "Stop on the first error encountered")
273273 ("show-index-types,I", "Show available index types")
274 ("attributes,a", po::value<std::string>(), "Comma-separated list of attributes to add to the output (default: none)")
274275 ("omit-rs,r", "Do not print RS (record separator) character when using JSON Text Sequences")
275276 ;
276277
411412 }
412413 }
413414
415 if (vm.count("attributes")) {
416 const auto attrs = osmium::split_string(vm["attributes"].as<std::string>(), ',');
417 for (const auto& attr : attrs) {
418 if (attr == "type") {
419 m_options.type = "@type";
420 } else if (attr == "id") {
421 m_options.id = "@id";
422 } else if (attr == "version") {
423 m_options.version = "@version";
424 } else if (attr == "changeset") {
425 m_options.changeset = "@changeset";
426 } else if (attr == "timestamp") {
427 m_options.timestamp = "@timestamp";
428 } else if (attr == "uid") {
429 m_options.uid = "@uid";
430 } else if (attr == "user") {
431 m_options.user = "@user";
432 } else if (attr == "way_nodes") {
433 m_options.way_nodes = "@way_nodes";
434 } else {
435 throw argument_error{"Unknown attribute in --attributes option: " + attr + "."};
436 }
437 }
438 }
439
414440 if (vm.count("index-type")) {
415 m_index_type_name = check_index_type(vm["index-type"].as<std::string>());
441 m_index_type_name = check_index_type(vm["index-type"].as<std::string>(), true);
416442 }
417443
418444 if (vm.count("keep-untagged")) {
3535 #include <string>
3636 #include <vector>
3737
38 class CommandExport : public Command, public with_single_osm_input {
38 class CommandExport : public CommandWithSingleOSMInput {
3939
4040 using index_type = osmium::index::map::Map<osmium::unsigned_object_id_type, osmium::Location>;
4141 using location_handler_type = osmium::handler::NodeLocationsForWays<index_type, index_type>;
6969 public:
7070
7171 explicit CommandExport(const CommandFactory& command_factory) :
72 Command(command_factory) {
72 CommandWithSingleOSMInput(command_factory) {
7373 }
7474
7575 bool setup(const std::vector<std::string>& arguments) override final;
176176 // If the file type is not set, try to deduce it from the file name
177177 // suffix.
178178 if (file_type.empty()) {
179 std::string suffix{get_filename_suffix(file_name)};
180 if (suffix == "poly") {
179 if (ends_with(file_name, ".poly")) {
181180 file_type = "poly";
182 } else if (suffix == "json" || suffix == "geojson") {
181 } else if (ends_with(file_name, ".json") || ends_with(file_name, ".geojson")) {
183182 file_type = "geojson";
184183 } else {
184 std::string suffix{get_filename_suffix(file_name)};
185185 osmium::io::File osmfile{"", suffix};
186186 if (osmfile.format() != osmium::io::file_format::unknown) {
187187 file_type = "osm";
3434 #include <string>
3535 #include <vector>
3636
37 class CommandExtract : public Command, public with_single_osm_input, public with_osm_output {
37 class CommandExtract : public CommandWithSingleOSMInput, public with_osm_output {
3838
3939 static const std::size_t initial_buffer_size = 10 * 1024;
4040
5959 public:
6060
6161 explicit CommandExtract(const CommandFactory& command_factory) :
62 Command(command_factory) {
62 CommandWithSingleOSMInput(command_factory) {
6363 }
6464
6565 bool setup(const std::vector<std::string>& arguments) override final;
229229 std::cout << " Compression: " << input_file.compression() << "\n";
230230
231231 if (!input_file.filename().empty()) {
232 std::cout << " Size: " << osmium::file_size(input_file.filename()) << "\n";
232 std::cout << " Size: " << file_size(input_file) << "\n";
233233 }
234234 }
235235
347347
348348 if (!input_file.filename().empty()) {
349349 m_writer.String("size");
350 m_writer.Int64(osmium::file_size(input_file.filename()));
350 m_writer.Int64(file_size(input_file));
351351 }
352352
353353 m_writer.EndObject();
536536 if (input_file.filename().empty()) {
537537 std::cout << 0 << "\n";
538538 } else {
539 std::cout << osmium::file_size(input_file.filename()) << "\n";
539 std::cout << file_size(input_file) << "\n";
540540 }
541541 return;
542542 }
543543 }
544544
545545 void header(const osmium::io::Header& header) final {
546 if (m_get_value == "header.boxes") {
547 for (const auto& box : header.boxes()) {
548 std::cout << box << "\n";
549 }
550 }
551
546552 if (m_get_value == "header.with_history") {
547553 std::cout << yes_no(header.has_multiple_object_versions());
548554 return;
769775 "file.format",
770776 "file.compression",
771777 "file.size",
778 "header.boxes",
772779 "header.with_history",
773780 "header.option.generator",
774781 "header.option.osmosis_replication_base_url",
2727 #include <string>
2828 #include <vector>
2929
30 class CommandFileinfo : public Command, public with_single_osm_input {
30 class CommandFileinfo : public CommandWithSingleOSMInput {
3131
3232 std::string m_get_value;
3333 bool m_extended = false;
3737 public:
3838
3939 explicit CommandFileinfo(const CommandFactory& command_factory) :
40 Command(command_factory) {
40 CommandWithSingleOSMInput(command_factory) {
4141 }
4242
4343 bool setup(const std::vector<std::string>& arguments) override final;
3737 #include <string>
3838 #include <vector>
3939
40 class CommandGetId : public Command, public with_single_osm_input, public with_osm_output {
40 class CommandGetId : public CommandWithSingleOSMInput, public with_osm_output {
4141
4242 osmium::nwr_array<osmium::index::IdSetDense<osmium::unsigned_object_id_type>> m_matching_ids;
4343 osmium::nwr_array<osmium::index::IdSetDense<osmium::unsigned_object_id_type>> m_ids;
6262 public:
6363
6464 explicit CommandGetId(const CommandFactory& command_factory) :
65 Command(command_factory) {
65 CommandWithSingleOSMInput(command_factory) {
6666 }
6767
6868 bool setup(const std::vector<std::string>& arguments) override final;
3737 #include <string>
3838 #include <vector>
3939
40 class CommandGetParents : public Command, public with_single_osm_input, public with_osm_output {
40 class CommandGetParents : public CommandWithSingleOSMInput, public with_osm_output {
4141
4242 osmium::nwr_array<osmium::index::IdSetDense<osmium::unsigned_object_id_type>> m_ids;
4343
5454 public:
5555
5656 explicit CommandGetParents(const CommandFactory& command_factory) :
57 Command(command_factory) {
57 CommandWithSingleOSMInput(command_factory) {
5858 }
5959
6060 bool setup(const std::vector<std::string>& arguments) override final;
6868 }
6969
7070 std::cout << "\nTOPICS:\n"
71 " file-formats File formats supported by Osmium\n"
72 " index-types Index types for storing node locations\n";
71 " file-formats File formats supported by Osmium\n"
72 " index-types Index types for storing node locations\n"
73 " output-headers Header options that can be set on output files\n";
7374
7475 std::cout << "\nUse 'osmium COMMAND -h' for short usage information.\n"
7576 "Use 'osmium help COMMAND' for detailed information on a specific command.\n"
9394 return true;
9495 }
9596
97 if (m_topic == "output-headers") {
98 show_help("output-headers", "");
99 return true;
100 }
101
96102 std::cerr << "Unknown help topic '" << m_topic << "'.\n";
97103 return false;
98104 }
2020 */
2121
2222 #include "command_merge.hpp"
23 #include "exception.hpp"
2324 #include "util.hpp"
2425
2526 #include <osmium/io/file.hpp>
4647
4748 bool CommandMerge::setup(const std::vector<std::string>& arguments) {
4849 po::options_description opts_cmd{"COMMAND OPTIONS"};
50 opts_cmd.add_options()
51 ("with-history,H", "Do not warn about input files with multiple object versions")
52 ;
4953
5054 po::options_description opts_common{add_common_options()};
5155 po::options_description opts_input{add_multiple_inputs_options()};
7478 setup_input_files(vm);
7579 setup_output_file(vm);
7680
81 if (vm.count("with-history")) {
82 m_with_history = true;
83 }
84
7785 return true;
7886 }
7987
8896
8997 using it_type = osmium::io::InputIterator<osmium::io::Reader, osmium::OSMObject>;
9098
91 std::unique_ptr<osmium::io::Reader> reader;
92 it_type iterator;
99 std::unique_ptr<osmium::io::Reader> m_reader;
100 std::string m_name;
101 it_type m_iterator;
102
103 osmium::item_type m_last_type = osmium::item_type::node;
104 osmium::object_id_type m_last_id = 0;
105 osmium::object_version_type m_last_version = 0;
106
107 bool m_warning;
93108
94109 public:
95110
96 explicit DataSource(const osmium::io::File& file) :
97 reader(new osmium::io::Reader{file}),
98 iterator(*reader) {
111 explicit DataSource(const osmium::io::File& file, bool with_history) :
112 m_reader(new osmium::io::Reader{file}),
113 m_name(file.filename()),
114 m_iterator(*m_reader),
115 m_warning(!with_history) {
116 if (m_iterator != it_type{}) {
117 m_last_type = m_iterator->type();
118 m_last_id = m_iterator->id();
119 m_last_version = m_iterator->version();
120 }
99121 }
100122
101123 bool empty() const noexcept {
102 return iterator == it_type{};
103 }
104
105 bool next() noexcept {
106 ++iterator;
107 return iterator != it_type{};
124 return m_iterator == it_type{};
125 }
126
127 bool next() {
128 ++m_iterator;
129
130 if (m_iterator == it_type{}) { // reached end of file
131 return false;
132 }
133
134 if (m_iterator->type() < m_last_type) {
135 throw std::runtime_error{"Objects in input file '" + m_name + "' out of order (must be nodes, then ways, then relations)."};
136 }
137 if (m_iterator->type() > m_last_type) {
138 m_last_type = m_iterator->type();
139 m_last_id = m_iterator->id();
140 m_last_version = m_iterator->version();
141 return true;
142 }
143
144 if (m_iterator->id() < m_last_id) {
145 throw std::runtime_error{"Objects in input file '" + m_name + "' out of order (smaller ids must come first)."};
146 }
147 if (m_iterator->id() > m_last_id) {
148 m_last_id = m_iterator->id();
149 m_last_version = m_iterator->version();
150 return true;
151 }
152
153 if (m_iterator->version() < m_last_version) {
154 throw std::runtime_error{"Objects in input file '" + m_name + "' out of order (smaller version must come first)."};
155 }
156 if (m_iterator->version() == m_last_version) {
157 throw std::runtime_error{"Two objects in input file '" + m_name + "' with same version."};
158 }
159
160 if (m_warning) {
161 std::cerr << "Warning: Multiple objects with same id in input file '" + m_name + "'!\n";
162 std::cerr << "If you are reading history files, this is to be expected. Use --with-history to disable warning.\n";
163 m_warning = false;
164 }
165
166 m_last_version = m_iterator->version();
167
168 return true;
108169 }
109170
110171 const osmium::OSMObject* get() noexcept {
111 return &*iterator;
172 return &*m_iterator;
112173 }
113174
114175 std::size_t offset() const noexcept {
115 return reader->offset();
176 return m_reader->offset();
116177 }
117178
118179 }; // DataSource
166227 while (osmium::memory::Buffer buffer = reader.read()) {
167228 writer(std::move(buffer));
168229 }
169 } else if (m_input_files.size() == 2) {
170 // Use simpler code when there are exactly two files to merge
171 m_vout << "Merging 2 input files to output file...\n";
172
173 // The larger file should be first so the progress bar will work better
174 if (osmium::file_size(m_input_files[0].filename()) <
175 osmium::file_size(m_input_files[1].filename())) {
176 using std::swap;
177 swap(m_input_files[0], m_input_files[1]);
178 }
179
180 osmium::io::ReaderWithProgressBar reader1(display_progress(), m_input_files[0], osmium::osm_entity_bits::object);
181 osmium::io::Reader reader2(m_input_files[1], osmium::osm_entity_bits::object);
182 auto in1 = osmium::io::make_input_iterator_range<osmium::OSMObject>(reader1);
183 auto in2 = osmium::io::make_input_iterator_range<osmium::OSMObject>(reader2);
184 auto out = osmium::io::make_output_iterator(writer);
185
186 std::set_union(in1.cbegin(), in1.cend(),
187 in2.cbegin(), in2.cend(),
188 out);
189230 } else {
190 // Three or more files to merge
191231 m_vout << "Merging " << m_input_files.size() << " input files to output file...\n";
192232 osmium::ProgressBar progress_bar{file_size_sum(m_input_files), display_progress()};
193233 std::vector<DataSource> data_sources;
197237
198238 int index = 0;
199239 for (const osmium::io::File& file : m_input_files) {
200 data_sources.emplace_back(file);
240 data_sources.emplace_back(file, m_with_history);
201241
202242 if (!data_sources.back().empty()) {
203243 queue.emplace(data_sources.back().get(), index);
2727 #include <string>
2828 #include <vector>
2929
30 class CommandMerge : public Command, public with_multiple_osm_inputs, public with_osm_output {
30 class CommandMerge : public CommandWithMultipleOSMInputs, public with_osm_output {
31
32 bool m_with_history = false;
3133
3234 public:
3335
3436 explicit CommandMerge(const CommandFactory& command_factory) :
35 Command(command_factory) {
37 CommandWithMultipleOSMInputs(command_factory) {
3638 }
3739
3840 bool setup(const std::vector<std::string>& arguments) override final;
2727 #include <string>
2828 #include <vector>
2929
30 class CommandMergeChanges : public Command, public with_multiple_osm_inputs, public with_osm_output {
30 class CommandMergeChanges : public CommandWithMultipleOSMInputs, public with_osm_output {
3131
3232 bool m_simplify_change = false;
3333
3434 public:
3535
3636 explicit CommandMergeChanges(const CommandFactory& command_factory) :
37 Command(command_factory) {
37 CommandWithMultipleOSMInputs(command_factory) {
3838 }
3939
4040 bool setup(const std::vector<std::string>& arguments) override final;
0 /*
1
2 Osmium -- OpenStreetMap data manipulation command line tool
3 https://osmcode.org/osmium-tool/
4
5 Copyright (C) 2013-2021 Jochen Topf <jochen@topf.org>
6
7 This program is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <https://www.gnu.org/licenses/>.
19
20 */
21
22 #include "command_removeid.hpp"
23 #include "exception.hpp"
24 #include "id_file.hpp"
25 #include "util.hpp"
26
27 #include <osmium/io/header.hpp>
28 #include <osmium/io/reader.hpp>
29 #include <osmium/io/writer.hpp>
30 #include <osmium/memory/buffer.hpp>
31 #include <osmium/osm.hpp>
32 #include <osmium/osm/types_from_string.hpp>
33 #include <osmium/util/progress_bar.hpp>
34 #include <osmium/util/string.hpp>
35 #include <osmium/util/verbose_output.hpp>
36
37 #include <boost/program_options.hpp>
38
39 #include <cstddef>
40 #include <fstream>
41 #include <iostream>
42 #include <stdexcept>
43 #include <string>
44 #include <utility>
45 #include <vector>
46
47 bool CommandRemoveId::setup(const std::vector<std::string>& arguments) {
48 po::options_description opts_cmd{"COMMAND OPTIONS"};
49 opts_cmd.add_options()
50 ("default-type", po::value<std::string>()->default_value("node"), "Default item type")
51 ("id-file,i", po::value<std::vector<std::string>>(), "Read OSM IDs from text file")
52 ("id-osm-file,I", po::value<std::vector<std::string>>(), "Read OSM IDs from OSM file")
53 ;
54
55 po::options_description opts_common{add_common_options()};
56 po::options_description opts_input{add_single_input_options()};
57 po::options_description opts_output{add_output_options()};
58
59 po::options_description hidden;
60 hidden.add_options()
61 ("input-filename", po::value<std::string>(), "OSM input file")
62 ("ids", po::value<std::vector<std::string>>(), "OSM IDs")
63 ;
64
65 po::options_description desc;
66 desc.add(opts_cmd).add(opts_common).add(opts_input).add(opts_output);
67
68 po::options_description parsed_options;
69 parsed_options.add(desc).add(hidden);
70
71 po::positional_options_description positional;
72 positional.add("input-filename", 1);
73 positional.add("ids", -1);
74
75 po::variables_map vm;
76 po::store(po::command_line_parser(arguments).options(parsed_options).positional(positional).run(), vm);
77 po::notify(vm);
78
79 setup_common(vm, desc);
80 setup_progress(vm);
81 setup_input_file(vm);
82 setup_output_file(vm);
83
84 if (vm.count("default-type")) {
85 m_default_item_type = parse_item_type(vm["default-type"].as<std::string>());
86 }
87
88 if (vm.count("id-file")) {
89 for (const std::string& filename : vm["id-file"].as<std::vector<std::string>>()) {
90 if (filename == "-") {
91 if (m_input_filename.empty() || m_input_filename == "-") {
92 throw argument_error{"Can not read OSM input and IDs both from STDIN."};
93 }
94 m_vout << "Reading IDs from STDIN...\n";
95 read_id_file(std::cin, m_ids, m_default_item_type);
96 } else {
97 std::ifstream id_file{filename};
98 if (!id_file.is_open()) {
99 throw argument_error{"Could not open file '" + filename + "'"};
100 }
101 m_vout << "Reading ID file...\n";
102 read_id_file(id_file, m_ids, m_default_item_type);
103 }
104 }
105 }
106
107 if (vm.count("id-osm-file")) {
108 for (const std::string& filename : vm["id-osm-file"].as<std::vector<std::string>>()) {
109 m_vout << "Reading OSM ID file...\n";
110 read_id_osm_file(filename, m_ids);
111 }
112 }
113
114 if (vm.count("ids")) {
115 std::string sids;
116 for (const auto& s : vm["ids"].as<std::vector<std::string>>()) {
117 sids += s + " ";
118 }
119 for (const auto& s : osmium::split_string(sids, "\t ;,/|", true)) {
120 parse_and_add_id(s, m_ids, m_default_item_type);
121 }
122 }
123
124 if (no_ids(m_ids)) {
125 throw argument_error{"Please specify IDs to look for on command line or with option --id-file/-i or --id-osm-file/-I."};
126 }
127
128 return true;
129 }
130
131 void CommandRemoveId::show_arguments() {
132 show_single_input_arguments(m_vout);
133 show_output_arguments(m_vout);
134
135 m_vout << " other options:\n";
136 m_vout << " default object type: " << osmium::item_type_to_name(m_default_item_type) << "\n";
137 m_vout << " removing " << m_ids(osmium::item_type::node).size() << " node ID(s), "
138 << m_ids(osmium::item_type::way).size() << " way ID(s), and "
139 << m_ids(osmium::item_type::relation).size() << " relation ID(s)\n";
140 }
141
142 bool CommandRemoveId::run() {
143 m_vout << "Opening input file...\n";
144 osmium::io::Reader reader{m_input_file, osmium::osm_entity_bits::nwr};
145
146 m_vout << "Opening output file...\n";
147 osmium::io::Header header{reader.header()};
148 setup_header(header);
149
150 osmium::io::Writer writer{m_output_file, header, m_output_overwrite, m_fsync};
151
152 m_vout << "Copying non-matching objects to output file...\n";
153 osmium::ProgressBar progress_bar{reader.file_size(), display_progress()};
154 while (osmium::memory::Buffer buffer = reader.read()) {
155 progress_bar.update(reader.offset());
156 for (auto& object : buffer.select<osmium::OSMObject>()) {
157 if (!m_ids(object.type()).get(object.positive_id())) {
158 writer(object);
159 }
160 }
161 }
162 progress_bar.done();
163
164 m_vout << "Closing output file...\n";
165 writer.close();
166
167 m_vout << "Closing input file...\n";
168 reader.close();
169
170 show_memory_used();
171
172 m_vout << "Done.\n";
173
174 return true;
175 }
176
0 #ifndef COMMAND_REMOVEID_HPP
1 #define COMMAND_REMOVEID_HPP
2
3 /*
4
5 Osmium -- OpenStreetMap data manipulation command line tool
6 https://osmcode.org/osmium-tool/
7
8 Copyright (C) 2013-2021 Jochen Topf <jochen@topf.org>
9
10 This program is free software: you can redistribute it and/or modify
11 it under the terms of the GNU General Public License as published by
12 the Free Software Foundation, either version 3 of the License, or
13 (at your option) any later version.
14
15 This program is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License for more details.
19
20 You should have received a copy of the GNU General Public License
21 along with this program. If not, see <https://www.gnu.org/licenses/>.
22
23 */
24
25 #include "cmd.hpp" // IWYU pragma: export
26
27 #include <osmium/fwd.hpp>
28 #include <osmium/index/id_set.hpp>
29 #include <osmium/index/nwr_array.hpp>
30 #include <osmium/index/relations_map.hpp>
31 #include <osmium/osm/entity_bits.hpp>
32 #include <osmium/osm/item_type.hpp>
33 #include <osmium/osm/types.hpp>
34
35 #include <cstddef>
36 #include <iosfwd>
37 #include <string>
38 #include <vector>
39
40 class CommandRemoveId : public CommandWithSingleOSMInput, public with_osm_output {
41
42 osmium::nwr_array<osmium::index::IdSetDense<osmium::unsigned_object_id_type>> m_ids;
43
44 osmium::item_type m_default_item_type = osmium::item_type::node;
45
46 public:
47
48 explicit CommandRemoveId(const CommandFactory& command_factory) :
49 CommandWithSingleOSMInput(command_factory) {
50 }
51
52 bool setup(const std::vector<std::string>& arguments) override final;
53
54 void show_arguments() override final;
55
56 bool run() override final;
57
58 const char* name() const noexcept override final {
59 return "removeid";
60 }
61
62 const char* synopsis() const noexcept override final {
63 return "osmium removeid [OPTIONS] OSM-FILE ID...\n"
64 " osmium removeid [OPTIONS] OSM-FILE -i ID-FILE\n"
65 " osmium removeid [OPTIONS] OSM-FILE -I ID-OSM-FILE";
66 }
67
68 }; // class CommandRemoveId
69
70
71 #endif // COMMAND_REMOVEID_HPP
9898
9999 }; // class id_map
100100
101 class CommandRenumber : public Command, public with_single_osm_input, public with_osm_output {
101 class CommandRenumber : public CommandWithSingleOSMInput, public with_osm_output {
102102
103103 std::string m_index_directory;
104104
124124 public:
125125
126126 explicit CommandRenumber(const CommandFactory& command_factory) :
127 Command(command_factory) {
127 CommandWithSingleOSMInput(command_factory) {
128128 }
129129
130130 bool setup(const std::vector<std::string>& arguments) override final;
2727 #include <string>
2828 #include <vector>
2929
30 class CommandShow : public Command, public with_single_osm_input {
30 class CommandShow : public CommandWithSingleOSMInput {
3131
3232 std::string m_output_format{"debug,color=true"};
3333 std::string m_pager;
3838 public:
3939
4040 explicit CommandShow(const CommandFactory& command_factory) :
41 Command(command_factory) {
41 CommandWithSingleOSMInput(command_factory) {
4242 }
4343
4444 bool setup(const std::vector<std::string>& arguments) override final;
2727 #include <string>
2828 #include <vector>
2929
30 class CommandSort : public Command, public with_multiple_osm_inputs, public with_osm_output {
30 class CommandSort : public CommandWithMultipleOSMInputs, public with_osm_output {
3131
3232 std::vector<std::string> m_filenames;
3333 std::string m_strategy{"simple"};
3535 public:
3636
3737 explicit CommandSort(const CommandFactory& command_factory) :
38 Command(command_factory) {
38 CommandWithMultipleOSMInputs(command_factory) {
3939 }
4040
4141 bool setup(const std::vector<std::string>& arguments) override final;
126126 using sort_func_type =
127127 std::function<bool(const element_type&, const element_type&)>;
128128
129 class CommandTagsCount : public Command, public with_single_osm_input, public with_osm_output {
129 class CommandTagsCount : public CommandWithSingleOSMInput, public with_osm_output {
130130
131131 osmium::TagsFilter m_keys_filter;
132132 osmium::TagsFilter m_tags_filter;
146146 public:
147147
148148 explicit CommandTagsCount(const CommandFactory& command_factory) :
149 Command(command_factory) {
149 CommandWithSingleOSMInput(command_factory) {
150150 }
151151
152152 bool setup(const std::vector<std::string>& arguments) override final;
271271 }
272272
273273 const auto rel_in_rel = stash.build_parent_to_member_index();
274 for (const osmium::unsigned_object_id_type id : m_referenced_ids(osmium::item_type::relation)) {
274 for (const osmium::unsigned_object_id_type id : m_matching_ids(osmium::item_type::relation)) {
275275 mark_rel_ids(rel_in_rel, id);
276276 }
277277
3838 #include <string>
3939 #include <vector>
4040
41 class CommandTagsFilter : public Command, public with_single_osm_input, public with_osm_output {
41 class CommandTagsFilter : public CommandWithSingleOSMInput, public with_osm_output {
4242
4343 osmium::nwr_array<osmium::TagsFilter> m_filters;
4444 osmium::TagsFilter m_area_filters;
7777 public:
7878
7979 explicit CommandTagsFilter(const CommandFactory& command_factory) :
80 Command(command_factory) {
80 CommandWithSingleOSMInput(command_factory) {
8181 }
8282
8383 bool setup(const std::vector<std::string>& arguments) override final;
2929 #include <string>
3030 #include <vector>
3131
32 class CommandTimeFilter : public Command, public with_single_osm_input, public with_osm_output {
32 class CommandTimeFilter : public CommandWithSingleOSMInput, public with_osm_output {
3333
3434 osmium::Timestamp m_from;
3535 osmium::Timestamp m_to;
3737 public:
3838
3939 explicit CommandTimeFilter(const CommandFactory& command_factory) :
40 Command(command_factory) {
40 CommandWithSingleOSMInput(command_factory) {
4141 }
4242
4343 bool setup(const std::vector<std::string>& arguments) override final;
1717 #include "command_merge.hpp"
1818 #include "command_merge_changes.hpp"
1919 #include "command_query_locations_index.hpp"
20 #include "command_removeid.hpp"
2021 #include "command_renumber.hpp"
2122 #include "command_show.hpp"
2223 #include "command_sort.hpp"
9293 return new CommandQueryLocationsIndex{cmd_factory};
9394 });
9495
96 cmd_factory.register_command("removeid", "Remove objects from OSM file by ID", [&]() {
97 return new CommandRemoveId{cmd_factory};
98 });
99
95100 cmd_factory.register_command("renumber", "Renumber IDs in OSM file", [&]() {
96101 return new CommandRenumber{cmd_factory};
97102 });
3434 #include <vector>
3535
3636 static void add_ring(std::vector<osmium::Segment>& segments, const osmium::NodeRefList& ring) {
37 auto it = ring.begin();
38 const auto end = ring.end();
37 const auto *it = ring.begin();
38 const auto *const end = ring.end();
3939
4040 if (it == end) {
4141 throw config_error{"Ring without any points."};
4242 }
4343
44 auto prev_it = it++;
44 const auto *prev_it = it++;
4545 while (it != end) {
4646 segments.emplace_back(prev_it->location(), it->location());
4747 prev_it = it++;
2121
2222 #include "../exception.hpp"
2323 #include "geojson_file_parser.hpp"
24 #include "geometry_util.hpp"
2425
2526 #include <osmium/builder/osm_object_builder.hpp>
2627 #include <osmium/geom/coordinates.hpp>
3132 #include <rapidjson/error/en.h>
3233 #include <rapidjson/istreamwrapper.h>
3334
35 #include <algorithm>
3436 #include <cassert>
3537 #include <fstream>
3638 #include <string>
9698 }
9799
98100 {
99 const auto outer_ring = parse_ring(array[0]);
101 auto outer_ring = parse_ring(array[0]);
102 if (!is_ccw(outer_ring)) {
103 std::reverse(outer_ring.begin(), outer_ring.end());
104 }
100105 osmium::builder::OuterRingBuilder ring_builder{builder};
101106 for (const auto& c : outer_ring) {
102107 osmium::Location loc{c.x, c.y};
112117 }
113118
114119 for (unsigned int i = 1; i < array.Size(); ++i) {
115 const auto inner_ring = parse_ring(array[i]);
120 auto inner_ring = parse_ring(array[i]);
121 if (is_ccw(inner_ring)) {
122 std::reverse(inner_ring.begin(), inner_ring.end());
123 }
116124 osmium::builder::InnerRingBuilder ring_builder{builder};
117125 for (const auto& c : inner_ring) {
118126 osmium::Location loc{c.x, c.y};
0
1 #include "geometry_util.hpp"
2
3 double calculate_double_area(const std::vector<osmium::Location>& coordinates) {
4 assert(coordinates.size() > 1);
5
6 double total = 0.0;
7 auto prev = coordinates.front();
8
9 for (unsigned i = 1; i < coordinates.size(); ++i) {
10 auto const cur = coordinates[i];
11 total += prev.lon() * cur.lat() - cur.lon() * prev.lat();
12 prev = cur;
13 }
14
15 return total;
16 }
17
18 double calculate_double_area(const std::vector<osmium::geom::Coordinates>& coordinates) {
19 assert(coordinates.size() > 1);
20
21 double total = 0.0;
22 auto prev = coordinates.front();
23
24 for (unsigned i = 1; i < coordinates.size(); ++i) {
25 auto const cur = coordinates[i];
26 total += prev.x * cur.y - cur.x * prev.y;
27 prev = cur;
28 }
29
30 return total;
31 }
32
0 #ifndef EXTRACT_GEOMETRY_UTIL_HPP
1 #define EXTRACT_GEOMETRY_UTIL_HPP
2
3 /*
4
5 Osmium -- OpenStreetMap data manipulation command line tool
6 https://osmcode.org/osmium-tool/
7
8 Copyright (C) 2013-2021 Jochen Topf <jochen@topf.org>
9
10 This program is free software: you can redistribute it and/or modify
11 it under the terms of the GNU General Public License as published by
12 the Free Software Foundation, either version 3 of the License, or
13 (at your option) any later version.
14
15 This program is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License for more details.
19
20 You should have received a copy of the GNU General Public License
21 along with this program. If not, see <https://www.gnu.org/licenses/>.
22
23 */
24
25 #include <osmium/geom/coordinates.hpp>
26
27 #include <vector>
28
29 double calculate_double_area(const std::vector<osmium::geom::Coordinates>& coordinates);
30
31 double calculate_double_area(const std::vector<osmium::Location>& coordinates);
32
33 /// Is the ring defined by the coordinates counter-clockwise?
34 template <typename T>
35 bool is_ccw(T &coordinates) {
36 return calculate_double_area(coordinates) > 0;
37 }
38
39 #endif // EXTRACT_GEOMETRY_UTIL_HPP
2020 */
2121
2222 #include "../exception.hpp"
23 #include "geometry_util.hpp"
2324 #include "poly_file_parser.hpp"
2425
2526 #include <osmium/geom/coordinates.hpp>
2627 #include <osmium/memory/buffer.hpp>
2728 #include <osmium/util/string.hpp>
2829
30 #include <algorithm>
2931 #include <fstream>
3032 #include <sstream>
3133 #include <string>
5658 }
5759
5860 void PolyFileParser::parse_ring() {
59 bool inner_ring = line()[0] == '!';
61 const bool is_inner_ring = line()[0] == '!';
6062 ++m_line;
6163
6264 std::vector<osmium::Location> coordinates;
7072 coordinates.push_back(coordinates.front());
7173 }
7274
73 if (inner_ring) {
75 if (is_inner_ring) {
76 if (is_ccw(coordinates)) {
77 std::reverse(coordinates.begin(), coordinates.end());
78 }
7479 osmium::builder::InnerRingBuilder ring_builder{*m_builder};
7580 for (const auto& location : coordinates) {
7681 ring_builder.add_node_ref(0, location);
7782 }
7883 } else {
84 if (!is_ccw(coordinates)) {
85 std::reverse(coordinates.begin(), coordinates.end());
86 }
7987 osmium::builder::OuterRingBuilder ring_builder{*m_builder};
8088 for (const auto& location : coordinates) {
8189 ring_builder.add_node_ref(0, location);
6666 std::cerr << "WARNING: " << text;
6767 }
6868
69 std::size_t file_size(const osmium::io::File& file) {
70 if (file.filename().empty()) {
71 return 0;
72 }
73 return osmium::file_size(file.filename());
74 }
75
6976 std::size_t file_size_sum(const std::vector<osmium::io::File>& files) {
7077 std::size_t sum = 0;
7178
7279 for (const auto& file : files) {
73 sum += osmium::file_size(file.filename());
80 sum += file_size(file);
7481 }
7582
7683 return sum;
248255 return osmium::item_type_to_name(object.type());
249256 }
250257
258 bool ends_with(const std::string& str, const std::string& suffix) {
259 if (suffix.size() > str.size()) {
260 return false;
261 }
262
263 return std::strcmp(str.c_str() + (str.size() - suffix.size()),
264 suffix.c_str()) == 0;
265 }
266
3838 const char* yes_no(bool choice) noexcept;
3939 void warning(const char* text);
4040 void warning(const std::string& text);
41 std::size_t file_size(const osmium::io::File& file);
4142 std::size_t file_size_sum(const std::vector<osmium::io::File>& files);
4243 osmium::osm_entity_bits::type get_types(const std::string& str);
4344 std::pair<osmium::osm_entity_bits::type, std::string> get_filter_expression(const std::string& str);
4849 osmium::Box parse_bbox(const std::string& str, const std::string& option_name);
4950 osmium::item_type parse_item_type(const std::string& t);
5051 const char* object_type_as_string(const osmium::OSMObject& object) noexcept;
52 bool ends_with(const std::string& str, const std::string& suffix);
5153
5254 #endif // UTIL_HPP
2424 set_tests_properties(export-error-area PROPERTIES WILL_FAIL true)
2525
2626 #-----------------------------------------------------------------------------
27
28 check_export(attributes "-E -f text -a id" way.osm way-all.txt)
2729
2830 check_export(c-empty-empty-n "-E -f text --keep-untagged -c export/config-empty-empty.json" way.osm way-all-n.txt)
2931 set_tests_properties(export-c-empty-empty-n PROPERTIES ENVIRONMENT osmium_cmake_stderr=ignore)
1313 check_output(extract cfg_${_name} "extract --generator=test extract/${_input} ${_opts} -c ${CMAKE_CURRENT_SOURCE_DIR}/config.json" "extract/${_output}")
1414 endfunction()
1515
16 function(check_extract_opl _name _input _output _opts)
17 check_output(extract ${_name} "extract --generator=test -f opl extract/${_input} ${_opts}" "extract/${_output}")
18 endfunction()
19
1620
1721 #-----------------------------------------------------------------------------
1822
2529
2630 check_extract_cfg(simple input1.osm output-simple.osm "-s simple --output-header=xml_josm_upload=false")
2731
32 #-----------------------------------------------------------------------------
33
34 check_extract_opl(antimeridian-east-bbox antimeridian.opl output-antimeridian-east.opl "--bbox=160,60,180,80")
35 check_extract_opl(antimeridian-west-bbox antimeridian.opl output-antimeridian-west.opl "--bbox=-180,60,-160,80")
36 check_extract_opl(antimeridian-east-poly antimeridian.opl output-antimeridian-east.opl "--polygon=extract/polygon-russia-east.geojson")
37 check_extract_opl(antimeridian-west-poly antimeridian.opl output-antimeridian-west.opl "--polygon=extract/polygon-russia-west.geojson")
38 check_extract_opl(antimeridian-both-poly antimeridian.opl output-antimeridian-both.opl "--polygon=extract/polygon-russia-all.geojson")
39 check_extract_opl(antimeridian-reverse-poly antimeridian.opl output-antimeridian-both.opl "--polygon=extract/polygon-russia-reverse.geojson")
40
41 check_extract_opl(antimeridian-alaska-east-json w42394837.osm w42394837.opl "--polygon=extract/polygon-us-alaska.geojson")
42 check_extract_opl(antimeridian-alaska-west-json w46113981.osm w46113981.opl "--polygon=extract/polygon-us-alaska.geojson")
43 check_extract_opl(antimeridian-alaska-east-poly w42394837.osm w42394837.opl "--polygon=extract/polygon-us-alaska.poly")
44 check_extract_opl(antimeridian-alaska-west-poly w46113981.osm w46113981.opl "--polygon=extract/polygon-us-alaska.poly")
2845
2946 #-----------------------------------------------------------------------------
0 n10 v1 dV c1 t2020-01-01T00:00:00Z i0 u T x170 y66
1 n11 v1 dV c1 t2020-01-01T00:00:00Z i0 u T x180 y66
2 n12 v1 dV c1 t2020-01-01T00:00:00Z i0 u T x180 y70
3 n13 v1 dV c1 t2020-01-01T00:00:00Z i0 u T x170 y70
4 n20 v1 dV c1 t2020-01-01T00:00:00Z i0 u T x-170 y66
5 n21 v1 dV c1 t2020-01-01T00:00:00Z i0 u T x-180 y66
6 n22 v1 dV c1 t2020-01-01T00:00:00Z i0 u T x-180 y70
7 n23 v1 dV c1 t2020-01-01T00:00:00Z i0 u T x-170 y70
8 w40 v1 dV c1 t2020-01-01T00:00:00Z i0 u T Nn10,n11,n12,n13,n10
9 w41 v1 dV c1 t2020-01-01T00:00:00Z i0 u T Nn20,n21,n22,n23,n20
10 w42 v1 dV c1 t2020-01-01T00:00:00Z i0 u T Nn11,n12
11 w43 v1 dV c1 t2020-01-01T00:00:00Z i0 u T Nn21,n22
12 w50 v1 dV c1 t2020-01-01T00:00:00Z i0 u T Nn10,n13,n12,n11,n10
13 w51 v1 dV c1 t2020-01-01T00:00:00Z i0 u T Nn20,n23,n22,n21,n20
14 w52 v1 dV c1 t2020-01-01T00:00:00Z i0 u T Nn12,n11
15 w53 v1 dV c1 t2020-01-01T00:00:00Z i0 u T Nn22,n21
0 n10 v1 dV c1 t2020-01-01T00:00:00Z i0 u T x170 y66
1 n11 v1 dV c1 t2020-01-01T00:00:00Z i0 u T x180 y66
2 n12 v1 dV c1 t2020-01-01T00:00:00Z i0 u T x180 y70
3 n13 v1 dV c1 t2020-01-01T00:00:00Z i0 u T x170 y70
4 n20 v1 dV c1 t2020-01-01T00:00:00Z i0 u T x-170 y66
5 n21 v1 dV c1 t2020-01-01T00:00:00Z i0 u T x-180 y66
6 n22 v1 dV c1 t2020-01-01T00:00:00Z i0 u T x-180 y70
7 n23 v1 dV c1 t2020-01-01T00:00:00Z i0 u T x-170 y70
8 w40 v1 dV c1 t2020-01-01T00:00:00Z i0 u T Nn10,n11,n12,n13,n10
9 w41 v1 dV c1 t2020-01-01T00:00:00Z i0 u T Nn20,n21,n22,n23,n20
10 w42 v1 dV c1 t2020-01-01T00:00:00Z i0 u T Nn11,n12
11 w43 v1 dV c1 t2020-01-01T00:00:00Z i0 u T Nn21,n22
12 w50 v1 dV c1 t2020-01-01T00:00:00Z i0 u T Nn10,n13,n12,n11,n10
13 w51 v1 dV c1 t2020-01-01T00:00:00Z i0 u T Nn20,n23,n22,n21,n20
14 w52 v1 dV c1 t2020-01-01T00:00:00Z i0 u T Nn12,n11
15 w53 v1 dV c1 t2020-01-01T00:00:00Z i0 u T Nn22,n21
0 n10 v1 dV c1 t2020-01-01T00:00:00Z i0 u T x170 y66
1 n11 v1 dV c1 t2020-01-01T00:00:00Z i0 u T x180 y66
2 n12 v1 dV c1 t2020-01-01T00:00:00Z i0 u T x180 y70
3 n13 v1 dV c1 t2020-01-01T00:00:00Z i0 u T x170 y70
4 w40 v1 dV c1 t2020-01-01T00:00:00Z i0 u T Nn10,n11,n12,n13,n10
5 w42 v1 dV c1 t2020-01-01T00:00:00Z i0 u T Nn11,n12
6 w50 v1 dV c1 t2020-01-01T00:00:00Z i0 u T Nn10,n13,n12,n11,n10
7 w52 v1 dV c1 t2020-01-01T00:00:00Z i0 u T Nn12,n11
0 n20 v1 dV c1 t2020-01-01T00:00:00Z i0 u T x-170 y66
1 n21 v1 dV c1 t2020-01-01T00:00:00Z i0 u T x-180 y66
2 n22 v1 dV c1 t2020-01-01T00:00:00Z i0 u T x-180 y70
3 n23 v1 dV c1 t2020-01-01T00:00:00Z i0 u T x-170 y70
4 w41 v1 dV c1 t2020-01-01T00:00:00Z i0 u T Nn20,n21,n22,n23,n20
5 w43 v1 dV c1 t2020-01-01T00:00:00Z i0 u T Nn21,n22
6 w51 v1 dV c1 t2020-01-01T00:00:00Z i0 u T Nn20,n23,n22,n21,n20
7 w53 v1 dV c1 t2020-01-01T00:00:00Z i0 u T Nn22,n21
0 {
1 "type": "Feature",
2 "properties": {
3 "name": "polygon"
4 },
5 "geometry": {
6 "type": "MultiPolygon",
7 "coordinates": [
8 [
9 [
10 [
11 47.45024,
12 41.21199
13 ],
14 [
15 47.55554,
16 41.14866
17 ],
18 [
19 47.63965,
20 41.17394
21 ],
22 [
23 47.77601,
24 41.1355
25 ],
26 [
27 47.90696,
28 41.17502
29 ],
30 [
31 48.1129,
32 41.44532
33 ],
34 [
35 48.41078,
36 41.55137
37 ],
38 [
39 48.62989,
40 41.80192
41 ],
42 [
43 48.86453,
44 41.95753
45 ],
46 [
47 48.60773,
48 42.16834
49 ],
50 [
51 48.23971,
52 42.57976
53 ],
54 [
55 47.97945,
56 42.99383
57 ],
58 [
59 47.84597,
60 43.11901
61 ],
62 [
63 47.88465,
64 43.29552
65 ],
66 [
67 47.85146,
68 43.47209
69 ],
70 [
71 47.89469,
72 43.61146
73 ],
74 [
75 48.16466,
76 43.87705
77 ],
78 [
79 48.19536,
80 43.98996
81 ],
82 [
83 48.1644,
84 44.09189
85 ],
86 [
87 48.04129,
88 44.20116
89 ],
90 [
91 47.8084,
92 44.24603
93 ],
94 [
95 47.89509,
96 44.44452
97 ],
98 [
99 47.78865,
100 44.65814
101 ],
102 [
103 47.59802,
104 44.74029
105 ],
106 [
107 47.37386,
108 44.72613
109 ],
110 [
111 47.64786,
112 45.15848
113 ],
114 [
115 48.05696,
116 45.24572
117 ],
118 [
119 48.27987,
120 45.40203
121 ],
122 [
123 48.67183,
124 45.35084
125 ],
126 [
127 48.86567,
128 45.38544
129 ],
130 [
131 49.01144,
132 45.47855
133 ],
134 [
135 49.11256,
136 45.65282
137 ],
138 [
139 49.93666,
140 46.04634
141 ],
142 [
143 49.71829,
144 46.23479
145 ],
146 [
147 49.52308,
148 46.24281
149 ],
150 [
151 49.19315,
152 46.4275
153 ],
154 [
155 48.62393,
156 46.65237
157 ],
158 [
159 48.92563,
160 46.6427
161 ],
162 [
163 49.04755,
164 46.75114
165 ],
166 [
167 48.56782,
168 47.43402
169 ],
170 [
171 48.46943,
172 47.47112
173 ],
174 [
175 48.23329,
176 47.7388
177 ],
178 [
179 48.04813,
180 47.81218
181 ],
182 [
183 47.66885,
184 47.80996
185 ],
186 [
187 47.41085,
188 47.8885
189 ],
190 [
191 47.35203,
192 47.76545
193 ],
194 [
195 47.23594,
196 47.80066
197 ],
198 [
199 47.22767,
200 47.87353
201 ],
202 [
203 47.14475,
204 47.95903
205 ],
206 [
207 47.26121,
208 48.07877
209 ],
210 [
211 47.17553,
212 48.15345
213 ],
214 [
215 47.15755,
216 48.3071
217 ],
218 [
219 46.59034,
220 48.46934
221 ],
222 [
223 46.80537,
224 48.89006
225 ],
226 [
227 47.0122,
228 48.9948
229 ],
230 [
231 47.09872,
232 49.14378
233 ],
234 [
235 47.0187,
236 49.27955
237 ],
238 [
239 46.85039,
240 49.38503
241 ],
242 [
243 46.94498,
244 49.81672
245 ],
246 [
247 47.19074,
248 49.88336
249 ],
250 [
251 47.38377,
252 50.05208
253 ],
254 [
255 47.36594,
256 50.27447
257 ],
258 [
259 47.51007,
260 50.37976
261 ],
262 [
263 47.59166,
264 50.40748
265 ],
266 [
267 47.89502,
268 50.20414
269 ],
270 [
271 48.05998,
272 50.05301
273 ],
274 [
275 48.20312,
276 49.82278
277 ],
278 [
279 48.4479,
280 49.75097
281 ],
282 [
283 48.76092,
284 49.87291
285 ],
286 [
287 48.95297,
288 50.02451
289 ],
290 [
291 48.77469,
292 50.29923
293 ],
294 [
295 48.71294,
296 50.54935
297 ],
298 [
299 48.83899,
300 50.54948
301 ],
302 [
303 49.14368,
304 50.73163
305 ],
306 [
307 49.45624,
308 50.81043
309 ],
310 [
311 49.49517,
312 50.88162
313 ],
314 [
315 49.43494,
316 51.00972
317 ],
318 [
319 49.46337,
320 51.05153
321 ],
322 [
323 49.77528,
324 51.05602
325 ],
326 [
327 50.02016,
328 51.19171
329 ],
330 [
331 50.38884,
332 51.28291
333 ],
334 [
335 50.43973,
336 51.36955
337 ],
338 [
339 50.59199,
340 51.43686
341 ],
342 [
343 50.62893,
344 51.56545
345 ],
346 [
347 50.76797,
348 51.52409
349 ],
350 [
351 50.84618,
352 51.54813
353 ],
354 [
355 50.87969,
356 51.63323
357 ],
358 [
359 51.23949,
360 51.62827
361 ],
362 [
363 51.19473,
364 51.52671
365 ],
366 [
367 51.26264,
368 51.44307
369 ],
370 [
371 51.58176,
372 51.45817
373 ],
374 [
375 51.63571,
376 51.40443
377 ],
378 [
379 51.85604,
380 51.46959
381 ],
382 [
383 51.84275,
384 51.56811
385 ],
386 [
387 51.90648,
388 51.62539
389 ],
390 [
391 52.09789,
392 51.60852
393 ],
394 [
395 52.31873,
396 51.68726
397 ],
398 [
399 52.54097,
400 51.40815
401 ],
402 [
403 52.78196,
404 51.44728
405 ],
406 [
407 52.94984,
408 51.40401
409 ],
410 [
411 53.22514,
412 51.45484
413 ],
414 [
415 53.53716,
416 51.3739
417 ],
418 [
419 53.55134,
420 51.28157
421 ],
422 [
423 53.63629,
424 51.18537
425 ],
426 [
427 53.99397,
428 51.1117
429 ],
430 [
431 54.08016,
432 51.06506
433 ],
434 [
435 54.17041,
436 50.92215
437 ],
438 [
439 54.42749,
440 50.80938
441 ],
442 [
443 54.36506,
444 50.61075
445 ],
446 [
447 54.54151,
448 50.47668
449 ],
450 [
451 54.64616,
452 50.49797
453 ],
454 [
455 54.78157,
456 50.61327
457 ],
458 [
459 54.72781,
460 50.8079
461 ],
462 [
463 54.74457,
464 50.91284
465 ],
466 [
467 54.65958,
468 50.97017
469 ],
470 [
471 55.02412,
472 50.85762
473 ],
474 [
475 55.02561,
476 50.77932
477 ],
478 [
479 55.36266,
480 50.60933
481 ],
482 [
483 55.47464,
484 50.61864
485 ],
486 [
487 55.71887,
488 50.49804
489 ],
490 [
491 56.08227,
492 50.65105
493 ],
494 [
495 56.17464,
496 50.72225
497 ],
498 [
499 56.2094,
500 50.861
501 ],
502 [
503 56.37383,
504 50.8525
505 ],
506 [
507 56.49571,
508 50.9305
509 ],
510 [
511 56.51267,
512 51.00062
513 ],
514 [
515 56.71622,
516 50.92326
517 ],
518 [
519 56.79957,
520 50.96934
521 ],
522 [
523 56.77757,
524 51.03494
525 ],
526 [
527 57.16343,
528 51.04051
529 ],
530 [
531 57.2991,
532 50.89787
533 ],
534 [
535 57.50648,
536 50.82501
537 ],
538 [
539 57.57432,
540 50.88038
541 ],
542 [
543 57.79196,
544 50.87955
545 ],
546 [
547 57.81701,
548 51.06097
549 ],
550 [
551 58.16644,
552 51.01243
553 ],
554 [
555 58.29841,
556 51.09797
557 ],
558 [
559 58.36807,
560 51.02613
561 ],
562 [
563 58.5548,
564 51.00639
565 ],
566 [
567 58.55671,
568 50.83518
569 ],
570 [
571 58.61717,
572 50.82102
573 ],
574 [
575 58.63651,
576 50.76234
577 ],
578 [
579 58.75108,
580 50.75904
581 ],
582 [
583 58.87397,
584 50.64752
585 ],
586 [
587 59.40752,
588 50.5865
589 ],
590 [
591 59.41208,
592 50.5204
593 ],
594 [
595 59.50366,
596 50.44446
597 ],
598 [
599 59.83658,
600 50.49067
601 ],
602 [
603 60.03802,
604 50.64431
605 ],
606 [
607 60.04013,
608 50.76267
609 ],
610 [
611 60.14419,
612 50.78129
613 ],
614 [
615 60.30811,
616 50.62164
617 ],
618 [
619 60.82497,
620 50.60673
621 ],
622 [
623 61.4775,
624 50.76372
625 ],
626 [
627 61.6091,
628 51.18039
629 ],
630 [
631 61.71087,
632 51.2122
633 ],
634 [
635 61.73371,
636 51.27975
637 ],
638 [
639 61.505,
640 51.45935
641 ],
642 [
643 61.02821,
644 51.52042
645 ],
646 [
647 60.97324,
648 51.56357
649 ],
650 [
651 60.9563,
652 51.66168
653 ],
654 [
655 60.48638,
656 51.69575
657 ],
658 [
659 60.55666,
660 51.7417
661 ],
662 [
663 60.55461,
664 51.83352
665 ],
666 [
667 60.19803,
668 51.9389
669 ],
670 [
671 60.52283,
672 52.10175
673 ],
674 [
675 60.74276,
676 52.11238
677 ],
678 [
679 61.10595,
680 52.3143
681 ],
682 [
683 61.0192,
684 52.54008
685 ],
686 [
687 60.90531,
688 52.56987
689 ],
690 [
691 60.88123,
692 52.67443
693 ],
694 [
695 60.7726,
696 52.69768
697 ],
698 [
699 61.16093,
700 52.94651
701 ],
702 [
703 61.47824,
704 52.97811
705 ],
706 [
707 61.62182,
708 52.90428
709 ],
710 [
711 61.7987,
712 52.94538
713 ],
714 [
715 62.0233,
716 52.89914
717 ],
718 [
719 62.16733,
720 52.95498
721 ],
722 [
723 62.19602,
724 53.05015
725 ],
726 [
727 62.13175,
728 53.16199
729 ],
730 [
731 61.81359,
732 53.22919
733 ],
734 [
735 61.70444,
736 53.30797
737 ],
738 [
739 61.54245,
740 53.26888
741 ],
742 [
743 61.23391,
744 53.34354
745 ],
746 [
747 61.28709,
748 53.45849
749 ],
750 [
751 61.47316,
752 53.4121
753 ],
754 [
755 61.58914,
756 53.45228
757 ],
758 [
759 61.64179,
760 53.52702
761 ],
762 [
763 61.56672,
764 53.64116
765 ],
766 [
767 61.2198,
768 53.61791
769 ],
770 [
771 61.11265,
772 53.6706
773 ],
774 [
775 61.27224,
776 53.77458
777 ],
778 [
779 61.32252,
780 54.02155
781 ],
782 [
783 61.43208,
784 54.02931
785 ],
786 [
787 61.55738,
788 53.92026
789 ],
790 [
791 61.70177,
792 53.96783
793 ],
794 [
795 61.93821,
796 53.8984
797 ],
798 [
799 62.07141,
800 53.90617
801 ],
802 [
803 62.08669,
804 53.99158
805 ],
806 [
807 62.3479,
808 53.98152
809 ],
810 [
811 62.40841,
812 53.89399
813 ],
814 [
815 62.5166,
816 53.86345
817 ],
818 [
819 62.62218,
820 53.93064
821 ],
822 [
823 62.63738,
824 54.02574
825 ],
826 [
827 63.09202,
828 54.05401
829 ],
830 [
831 63.23851,
832 54.14052
833 ],
834 [
835 63.79068,
836 54.21601
837 ],
838 [
839 63.97411,
840 54.14977
841 ],
842 [
843 64.10045,
844 54.25829
845 ],
846 [
847 64.61423,
848 54.32537
849 ],
850 [
851 64.75536,
852 54.3044
853 ],
854 [
855 64.95391,
856 54.36365
857 ],
858 [
859 65.10061,
860 54.28314
861 ],
862 [
863 65.23567,
864 54.28547
865 ],
866 [
867 65.31312,
868 54.35856
869 ],
870 [
871 65.27782,
872 54.4981
873 ],
874 [
875 65.51136,
876 54.51945
877 ],
878 [
879 65.55275,
880 54.58507
881 ],
882 [
883 65.76179,
884 54.55718
885 ],
886 [
887 65.90964,
888 54.65084
889 ],
890 [
891 66.01484,
892 54.57539
893 ],
894 [
895 67.07417,
896 54.73086
897 ],
898 [
899 67.32834,
900 54.81538
901 ],
902 [
903 67.69672,
904 54.81308
905 ],
906 [
907 67.80211,
908 54.84358
909 ],
910 [
911 67.86256,
912 54.92386
913 ],
914 [
915 68.24901,
916 54.92079
917 ],
918 [
919 68.36633,
920 55.06849
921 ],
922 [
923 68.30415,
924 55.13647
925 ],
926 [
927 68.64694,
928 55.15331
929 ],
930 [
931 68.77505,
932 55.31655
933 ],
934 [
935 69.02836,
936 55.23811
937 ],
938 [
939 69.03674,
940 55.37045
941 ],
942 [
943 69.20471,
944 55.28023
945 ],
946 [
947 69.37966,
948 55.32359
949 ],
950 [
951 69.48628,
952 55.28513
953 ],
954 [
955 69.7053,
956 55.29902
957 ],
958 [
959 69.93304,
960 55.16394
961 ],
962 [
963 70.20063,
964 55.09731
965 ],
966 [
967 70.41639,
968 55.16605
969 ],
970 [
971 70.46601,
972 55.22237
973 ],
974 [
975 70.76852,
976 55.23043
977 ],
978 [
979 70.9409,
980 55.05848
981 ],
982 [
983 70.91112,
984 54.87317
985 ],
986 [
987 70.99774,
988 54.74058
989 ],
990 [
991 71.07781,
992 54.65284
993 ],
994 [
995 71.17515,
996 54.64735
997 ],
998 [
999 71.12151,
1000 54.5804
1001 ],
1002 [
1003 71.15395,
1004 54.37672
1005 ],
1006 [
1007 70.94941,
1008 54.34494
1009 ],
1010 [
1011 70.95604,
1012 54.24729
1013 ],
1014 [
1015 71.09352,
1016 54.08826
1017 ],
1018 [
1019 71.16922,
1020 54.04168
1021 ],
1022 [
1023 71.35058,
1024 54.12825
1025 ],
1026 [
1027 71.47602,
1028 54.04809
1029 ],
1030 [
1031 71.73271,
1032 54.05468
1033 ],
1034 [
1035 71.81381,
1036 54.12726
1037 ],
1038 [
1039 71.79116,
1040 54.19184
1041 ],
1042 [
1043 71.96843,
1044 54.17919
1045 ],
1046 [
1047 72.19242,
1048 54.0773
1049 ],
1050 [
1051 72.26859,
1052 54.18256
1053 ],
1054 [
1055 72.36464,
1056 54.00627
1057 ],
1058 [
1059 72.32821,
1060 53.92899
1061 ],
1062 [
1063 72.51375,
1064 53.85759
1065 ],
1066 [
1067 72.57601,
1068 53.91939
1069 ],
1070 [
1071 72.73967,
1072 53.92125
1073 ],
1074 [
1075 72.76257,
1076 54.02257
1077 ],
1078 [
1079 72.71928,
1080 54.07208
1081 ],
1082 [
1083 72.92642,
1084 54.04317
1085 ],
1086 [
1087 73.04924,
1088 53.93876
1089 ],
1090 [
1091 73.39994,
1092 53.89362
1093 ],
1094 [
1095 73.30287,
1096 53.81917
1097 ],
1098 [
1099 73.28642,
1100 53.72743
1101 ],
1102 [
1103 73.20671,
1104 53.69327
1105 ],
1106 [
1107 73.19241,
1108 53.55241
1109 ],
1110 [
1111 73.44144,
1112 53.385
1113 ],
1114 [
1115 73.70901,
1116 53.55462
1117 ],
1118 [
1119 73.82959,
1120 53.5285
1121 ],
1122 [
1123 73.93355,
1124 53.59363
1125 ],
1126 [
1127 74.05274,
1128 53.5143
1129 ],
1130 [
1131 74.19647,
1132 53.53673
1133 ],
1134 [
1135 74.25824,
1136 53.45297
1137 ],
1138 [
1139 74.40758,
1140 53.40888
1141 ],
1142 [
1143 74.53481,
1144 53.55444
1145 ],
1146 [
1147 74.50614,
1148 53.6269
1149 ],
1150 [
1151 74.65941,
1152 53.62507
1153 ],
1154 [
1155 74.83088,
1156 53.76654
1157 ],
1158 [
1159 75.07475,
1160 53.74859
1161 ],
1162 [
1163 75.47387,
1164 53.93347
1165 ],
1166 [
1167 75.47389,
1168 54.04444
1169 ],
1170 [
1171 76.20979,
1172 54.20822
1173 ],
1174 [
1175 76.2796,
1176 54.29552
1177 ],
1178 [
1179 76.64382,
1180 54.2847
1181 ],
1182 [
1183 76.74415,
1184 54.34325
1185 ],
1186 [
1187 76.7993,
1188 54.3135
1189 ],
1190 [
1191 76.69981,
1192 54.20269
1193 ],
1194 [
1195 76.40203,
1196 54.19956
1197 ],
1198 [
1199 76.3879,
1200 54.10426
1201 ],
1202 [
1203 76.46503,
1204 53.9997
1205 ],
1206 [
1207 77.87975,
1208 53.24298
1209 ],
1210 [
1211 79.04392,
1212 52.00902
1213 ],
1214 [
1215 80.05173,
1216 50.69358
1217 ],
1218 [
1219 80.24767,
1220 50.84853
1221 ],
1222 [
1223 80.51988,
1224 50.93412
1225 ],
1226 [
1227 80.51989,
1228 51.14206
1229 ],
1230 [
1231 80.6576,
1232 51.16136
1233 ],
1234 [
1235 80.70717,
1236 51.25352
1237 ],
1238 [
1239 81.10698,
1240 51.13065
1241 ],
1242 [
1243 81.01967,
1244 50.91674
1245 ],
1246 [
1247 81.35919,
1248 50.92006
1249 ],
1250 [
1251 81.45208,
1252 50.70372
1253 ],
1254 [
1255 81.89253,
1256 50.7463
1257 ],
1258 [
1259 82.16666,
1260 50.67976
1261 ],
1262 [
1263 82.36827,
1264 50.72346
1265 ],
1266 [
1267 82.56112,
1268 50.69488
1269 ],
1270 [
1271 82.73557,
1272 50.77502
1273 ],
1274 [
1275 82.78288,
1276 50.86773
1277 ],
1278 [
1279 82.98475,
1280 50.83348
1281 ],
1282 [
1283 83.16801,
1284 50.95285
1285 ],
1286 [
1287 83.39428,
1288 50.95179
1289 ],
1290 [
1291 83.89711,
1292 50.76756
1293 ],
1294 [
1295 83.93169,
1296 50.69045
1297 ],
1298 [
1299 84.16214,
1300 50.50008
1301 ],
1302 [
1303 84.20435,
1304 50.27332
1305 ],
1306 [
1307 84.31094,
1308 50.17701
1309 ],
1310 [
1311 84.61849,
1312 50.15736
1313 ],
1314 [
1315 84.94911,
1316 50.02382
1317 ],
1318 [
1319 84.94348,
1320 49.87841
1321 ],
1322 [
1323 85.15354,
1324 49.70814
1325 ],
1326 [
1327 85.16417,
1328 49.60616
1329 ],
1330 [
1331 85.23928,
1332 49.54103
1333 ],
1334 [
1335 85.58158,
1336 49.55187
1337 ],
1338 [
1339 85.67419,
1340 49.49991
1341 ],
1342 [
1343 85.88436,
1344 49.50714
1345 ],
1346 [
1347 85.95551,
1348 49.4376
1349 ],
1350 [
1351 86.09463,
1352 49.47158
1353 ],
1354 [
1355 86.21145,
1356 49.41643
1357 ],
1358 [
1359 86.31924,
1360 49.54148
1361 ],
1362 [
1363 86.444,
1364 49.56335
1365 ],
1366 [
1367 86.58109,
1368 49.66593
1369 ],
1370 [
1371 86.54902,
1372 49.61732
1373 ],
1374 [
1375 86.5778,
1376 49.53995
1377 ],
1378 [
1379 86.77356,
1380 49.5029
1381 ],
1382 [
1383 86.79323,
1384 49.42129
1385 ],
1386 [
1387 86.99838,
1388 49.21372
1389 ],
1390 [
1391 87.23516,
1392 49.18828
1393 ],
1394 [
1395 87.24755,
1396 49.0826
1397 ],
1398 [
1399 87.42123,
1400 49.02101
1401 ],
1402 [
1403 87.71537,
1404 49.12298
1405 ],
1406 [
1407 88.00845,
1408 49.13609
1409 ],
1410 [
1411 88.21125,
1412 49.26367
1413 ],
1414 [
1415 88.23826,
1416 49.42432
1417 ],
1418 [
1419 88.59651,
1420 49.44701
1421 ],
1422 [
1423 88.8494,
1424 49.39079
1425 ],
1426 [
1427 88.92032,
1428 49.44588
1429 ],
1430 [
1431 88.9861,
1432 49.41323
1433 ],
1434 [
1435 89.15498,
1436 49.4515
1437 ],
1438 [
1439 89.25965,
1440 49.50635
1441 ],
1442 [
1443 89.27895,
1444 49.56276
1445 ],
1446 [
1447 89.37528,
1448 49.53596
1449 ],
1450 [
1451 89.75596,
1452 49.69343
1453 ],
1454 [
1455 89.7634,
1456 49.80047
1457 ],
1458 [
1459 89.69338,
1460 49.88559
1461 ],
1462 [
1463 90.00121,
1464 49.92667
1465 ],
1466 [
1467 90.07709,
1468 49.97752
1469 ],
1470 [
1471 90.07877,
1472 50.03075
1473 ],
1474 [
1475 90.29256,
1476 50.05998
1477 ],
1478 [
1479 90.52389,
1480 50.18479
1481 ],
1482 [
1483 90.70322,
1484 50.17162
1485 ],
1486 [
1487 90.77261,
1488 50.21512
1489 ],
1490 [
1491 90.78055,
1492 50.27553
1493 ],
1494 [
1495 90.92677,
1496 50.3018
1497 ],
1498 [
1499 90.97181,
1500 50.37544
1501 ],
1502 [
1503 91.4244,
1504 50.40232
1505 ],
1506 [
1507 91.5069,
1508 50.5069
1509 ],
1510 [
1511 91.67377,
1512 50.54436
1513 ],
1514 [
1515 91.70358,
1516 50.61791
1517 ],
1518 [
1519 91.80652,
1520 50.67285
1521 ],
1522 [
1523 92.08418,
1524 50.64518
1525 ],
1526 [
1527 92.27933,
1528 50.68308
1529 ],
1530 [
1531 92.36371,
1532 50.79781
1533 ],
1534 [
1535 92.43545,
1536 50.74418
1537 ],
1538 [
1539 92.54259,
1540 50.74061
1541 ],
1542 [
1543 92.55869,
1544 50.68319
1545 ],
1546 [
1547 92.63326,
1548 50.6551
1549 ],
1550 [
1551 92.77416,
1552 50.68068
1553 ],
1554 [
1555 92.81338,
1556 50.75551
1557 ],
1558 [
1559 92.96927,
1560 50.74261
1561 ],
1562 [
1563 92.92014,
1564 50.63042
1565 ],
1566 [
1567 92.99199,
1568 50.55842
1569 ],
1570 [
1571 93.11647,
1572 50.53637
1573 ],
1574 [
1575 93.44148,
1576 50.57837
1577 ],
1578 [
1579 93.70001,
1580 50.53328
1581 ],
1582 [
1583 94.23916,
1584 50.53319
1585 ],
1586 [
1587 94.29163,
1588 50.48363
1589 ],
1590 [
1591 94.34909,
1592 50.18726
1593 ],
1594 [
1595 94.45798,
1596 50.14274
1597 ],
1598 [
1599 94.60536,
1600 49.98558
1601 ],
1602 [
1603 94.9497,
1604 49.997
1605 ],
1606 [
1607 95.02491,
1608 49.92501
1609 ],
1610 [
1611 95.4031,
1612 49.90624
1613 ],
1614 [
1615 95.52948,
1616 49.85375
1617 ],
1618 [
1619 95.80041,
1620 49.92778
1621 ],
1622 [
1623 95.85203,
1624 49.98876
1625 ],
1626 [
1627 95.96315,
1628 49.9215
1629 ],
1630 [
1631 96.06126,
1632 49.95682
1633 ],
1634 [
1635 96.23183,
1636 49.9262
1637 ],
1638 [
1639 96.40952,
1640 49.82275
1641 ],
1642 [
1643 96.52829,
1644 49.88244
1645 ],
1646 [
1647 96.6104,
1648 49.82108
1649 ],
1650 [
1651 96.72672,
1652 49.86967
1653 ],
1654 [
1655 96.94036,
1656 49.84157
1657 ],
1658 [
1659 97.21371,
1660 49.69574
1661 ],
1662 [
1663 97.33491,
1664 49.70385
1665 ],
1666 [
1667 97.51801,
1668 49.76273
1669 ],
1670 [
1671 97.60912,
1672 49.81855
1673 ],
1674 [
1675 97.63576,
1676 49.89312
1677 ],
1678 [
1679 97.73767,
1680 49.92475
1681 ],
1682 [
1683 97.81343,
1684 49.8756
1685 ],
1686 [
1687 97.91491,
1688 49.88112
1689 ],
1690 [
1691 98.10534,
1692 49.99953
1693 ],
1694 [
1695 98.35058,
1696 50.29995
1697 ],
1698 [
1699 98.37164,
1700 50.52891
1701 ],
1702 [
1703 98.07766,
1704 50.68434
1705 ],
1706 [
1707 98.02749,
1708 50.77358
1709 ],
1710 [
1711 98.07692,
1712 50.89105
1713 ],
1714 [
1715 97.90421,
1716 51.01184
1717 ],
1718 [
1719 98.01436,
1720 51.31991
1721 ],
1722 [
1723 98.08842,
1724 51.40432
1725 ],
1726 [
1727 98.25657,
1728 51.4186
1729 ],
1730 [
1731 98.29632,
1732 51.56664
1733 ],
1734 [
1735 98.4043,
1736 51.68337
1737 ],
1738 [
1739 98.78829,
1740 51.82535
1741 ],
1742 [
1743 98.9223,
1744 52.09636
1745 ],
1746 [
1747 98.99962,
1748 52.02087
1749 ],
1750 [
1751 99.198,
1752 51.97517
1753 ],
1754 [
1755 99.27698,
1756 51.90741
1757 ],
1758 [
1759 99.72202,
1760 51.85495
1761 ],
1762 [
1763 99.85793,
1764 51.71593
1765 ],
1766 [
1767 100.034,
1768 51.67827
1769 ],
1770 [
1771 100.5598,
1772 51.6847
1773 ],
1774 [
1775 101.1288,
1776 51.47283
1777 ],
1778 [
1779 101.2383,
1780 51.48023
1781 ],
1782 [
1783 101.3556,
1784 51.40426
1785 ],
1786 [
1787 101.5145,
1788 51.44502
1789 ],
1790 [
1791 101.6075,
1792 51.3934
1793 ],
1794 [
1795 102.0795,
1796 51.31954
1797 ],
1798 [
1799 102.0841,
1800 51.1035
1801 ],
1802 [
1803 102.173,
1804 50.97255
1805 ],
1806 [
1807 102.1671,
1808 50.80767
1809 ],
1810 [
1811 102.2637,
1812 50.73078
1813 ],
1814 [
1815 102.2659,
1816 50.64856
1817 ],
1818 [
1819 102.4925,
1820 50.54337
1821 ],
1822 [
1823 102.6371,
1824 50.35583
1825 ],
1826 [
1827 102.9291,
1828 50.25778
1829 ],
1830 [
1831 103.2022,
1832 50.27522
1833 ],
1834 [
1835 103.2185,
1836 50.17473
1837 ],
1838 [
1839 103.2692,
1840 50.14192
1841 ],
1842 [
1843 103.4506,
1844 50.15905
1845 ],
1846 [
1847 103.7202,
1848 50.08042
1849 ],
1850 [
1851 103.8655,
1852 50.13703
1853 ],
1854 [
1855 104.1506,
1856 50.09528
1857 ],
1858 [
1859 104.4205,
1860 50.25897
1861 ],
1862 [
1863 104.816,
1864 50.29484
1865 ],
1866 [
1867 104.9176,
1868 50.35659
1869 ],
1870 [
1871 105.1356,
1872 50.34157
1873 ],
1874 [
1875 105.3358,
1876 50.42247
1877 ],
1878 [
1879 105.9772,
1880 50.36646
1881 ],
1882 [
1883 106.0687,
1884 50.28509
1885 ],
1886 [
1887 106.2522,
1888 50.25273
1889 ],
1890 [
1891 106.6131,
1892 50.2864
1893 ],
1894 [
1895 106.9572,
1896 50.16639
1897 ],
1898 [
1899 107.0553,
1900 50.02044
1901 ],
1902 [
1903 107.2216,
1904 49.94051
1905 ],
1906 [
1907 107.8674,
1908 49.88297
1909 ],
1910 [
1911 107.9188,
1912 49.62664
1913 ],
1914 [
1915 108.2573,
1916 49.48815
1917 ],
1918 [
1919 108.3194,
1920 49.3937
1921 ],
1922 [
1923 108.5228,
1924 49.27065
1925 ],
1926 [
1927 109.1851,
1928 49.30017
1929 ],
1930 [
1931 109.5601,
1932 49.16905
1933 ],
1934 [
1935 110.2016,
1936 49.1031
1937 ],
1938 [
1939 110.3939,
1940 49.18066
1941 ],
1942 [
1943 110.675,
1944 49.11985
1945 ],
1946 [
1947 110.8318,
1948 49.13151
1949 ],
1950 [
1951 111.3795,
1952 49.30048
1953 ],
1954 [
1955 111.535,
1956 49.27253
1957 ],
1958 [
1959 111.6978,
1960 49.33232
1961 ],
1962 [
1963 111.9713,
1964 49.33214
1965 ],
1966 [
1967 112.483,
1968 49.47066
1969 ],
1970 [
1971 112.8329,
1972 49.46813
1973 ],
1974 [
1975 113.0753,
1976 49.56811
1977 ],
1978 [
1979 113.2495,
1980 49.79361
1981 ],
1982 [
1983 114.3339,
1984 50.22572
1985 ],
1986 [
1987 114.8412,
1988 50.16705
1989 ],
1990 [
1991 114.9752,
1992 50.12079
1993 ],
1994 [
1995 115.2067,
1996 49.93925
1997 ],
1998 [
1999 115.5053,
2000 49.85507
2001 ],
2002 [
2003 115.7563,
2004 49.83735
2005 ],
2006 [
2007 116.2382,
2008 49.97786
2009 ],
2010 [
2011 116.5947,
2012 49.88062
2013 ],
2014 [
2015 116.6926,
2016 49.79324
2017 ],
2018 [
2019 117.0505,
2020 49.63472
2021 ],
2022 [
2023 117.8774,
2024 49.45985
2025 ],
2026 [
2027 117.9416,
2028 49.54323
2029 ],
2030 [
2031 118.1871,
2032 49.61285
2033 ],
2034 [
2035 118.6009,
2036 49.87309
2037 ],
2038 [
2039 119.0964,
2040 49.93556
2041 ],
2042 [
2043 119.321,
2044 50.07283
2045 ],
2046 [
2047 119.3992,
2048 50.17526
2049 ],
2050 [
2051 119.4274,
2052 50.32667
2053 ],
2054 [
2055 119.3728,
2056 50.40218
2057 ],
2058 [
2059 119.2828,
2060 50.41416
2061 ],
2062 [
2063 119.3404,
2064 50.57032
2065 ],
2066 [
2067 119.5266,
2068 50.70932
2069 ],
2070 [
2071 119.5779,
2072 50.87959
2073 ],
2074 [
2075 119.7974,
2076 51.06188
2077 ],
2078 [
2079 119.8679,
2080 51.23952
2081 ],
2082 [
2083 120.0398,
2084 51.42882
2085 ],
2086 [
2087 120.0956,
2088 51.59387
2089 ],
2090 [
2091 120.6829,
2092 51.88581
2093 ],
2094 [
2095 120.7452,
2096 51.96097
2097 ],
2098 [
2099 120.8298,
2100 52.15832
2101 ],
2102 [
2103 120.79,
2104 52.28908
2105 ],
2106 [
2107 120.6923,
2108 52.34577
2109 ],
2110 [
2111 120.7762,
2112 52.52516
2113 ],
2114 [
2115 120.7613,
2116 52.57697
2117 ],
2118 [
2119 120.4502,
2120 52.69505
2121 ],
2122 [
2123 120.0884,
2124 52.63744
2125 ],
2126 [
2127 120.1049,
2128 52.73635
2129 ],
2130 [
2131 120.3116,
2132 52.82015
2133 ],
2134 [
2135 120.8901,
2136 53.23289
2137 ],
2138 [
2139 121.2326,
2140 53.22818
2141 ],
2142 [
2143 122.3246,
2144 53.44094
2145 ],
2146 [
2147 122.4353,
2148 53.39169
2149 ],
2150 [
2151 122.8514,
2152 53.40464
2153 ],
2154 [
2155 123.1574,
2156 53.45004
2157 ],
2158 [
2159 123.2722,
2160 53.50785
2161 ],
2162 [
2163 123.47,
2164 53.44685
2165 ],
2166 [
2167 123.6187,
2168 53.48627
2169 ],
2170 [
2171 123.8609,
2172 53.43111
2173 ],
2174 [
2175 124.0983,
2176 53.29736
2177 ],
2178 [
2179 124.2257,
2180 53.31909
2181 ],
2182 [
2183 124.4174,
2184 53.16787
2185 ],
2186 [
2187 124.6538,
2188 53.15172
2189 ],
2190 [
2191 124.8532,
2192 53.05015
2193 ],
2194 [
2195 124.9248,
2196 53.06199
2197 ],
2198 [
2199 124.9538,
2200 53.13363
2201 ],
2202 [
2203 125.1487,
2204 53.15071
2205 ],
2206 [
2207 125.4939,
2208 52.99904
2209 ],
2210 [
2211 125.5857,
2212 53.02373
2213 ],
2214 [
2215 125.6394,
2216 52.96569
2217 ],
2218 [
2219 125.6027,
2220 52.90062
2221 ],
2222 [
2223 125.6314,
2224 52.82388
2225 ],
2226 [
2227 125.803,
2228 52.83892
2229 ],
2230 [
2231 125.9434,
2232 52.70869
2233 ],
2234 [
2235 125.9116,
2236 52.65355
2237 ],
2238 [
2239 125.9399,
2240 52.56955
2241 ],
2242 [
2243 126.1223,
2244 52.51982
2245 ],
2246 [
2247 126.1545,
2248 52.42823
2249 ],
2250 [
2251 126.2816,
2252 52.38269
2253 ],
2254 [
2255 126.2711,
2256 52.16747
2257 ],
2258 [
2259 126.4815,
2260 52.10319
2261 ],
2262 [
2263 126.3914,
2264 52.04517
2265 ],
2266 [
2267 126.4073,
2268 51.93178
2269 ],
2270 [
2271 126.6623,
2272 51.67533
2273 ],
2274 [
2275 126.621,
2276 51.59101
2277 ],
2278 [
2279 126.7484,
2280 51.50534
2281 ],
2282 [
2283 126.7256,
2284 51.43632
2285 ],
2286 [
2287 126.7847,
2288 51.37122
2289 ],
2290 [
2291 126.7585,
2292 51.29761
2293 ],
2294 [
2295 126.8431,
2296 51.19485
2297 ],
2298 [
2299 126.8733,
2300 51.03162
2301 ],
2302 [
2303 127.0839,
2304 50.88711
2305 ],
2306 [
2307 127.2297,
2308 50.71578
2309 ],
2310 [
2311 127.2978,
2312 50.57983
2313 ],
2314 [
2315 127.2364,
2316 50.47953
2317 ],
2318 [
2319 127.2909,
2320 50.39955
2321 ],
2322 [
2323 127.2872,
2324 50.30199
2325 ],
2326 [
2327 127.5453,
2328 50.18689
2329 ],
2330 [
2331 127.4377,
2332 50.01178
2333 ],
2334 [
2335 127.5004,
2336 49.77009
2337 ],
2338 [
2339 127.6156,
2340 49.72548
2341 ],
2342 [
2343 127.6583,
2344 49.62535
2345 ],
2346 [
2347 127.8411,
2348 49.52235
2349 ],
2350 [
2351 128.1806,
2352 49.48504
2353 ],
2354 [
2355 128.5465,
2356 49.54902
2357 ],
2358 [
2359 128.6881,
2360 49.51431
2361 ],
2362 [
2363 128.7491,
2364 49.42439
2365 ],
2366 [
2367 128.9727,
2368 49.40282
2369 ],
2370 [
2371 129.0795,
2372 49.30177
2373 ],
2374 [
2375 129.218,
2376 49.34529
2377 ],
2378 [
2379 129.3668,
2380 49.30406
2381 ],
2382 [
2383 129.4291,
2384 49.38526
2385 ],
2386 [
2387 129.4759,
2388 49.37681
2389 ],
2390 [
2391 129.5408,
2392 49.24043
2393 ],
2394 [
2395 129.6882,
2396 49.24001
2397 ],
2398 [
2399 129.8921,
2400 48.99576
2401 ],
2402 [
2403 130.1979,
2404 48.82225
2405 ],
2406 [
2407 130.4284,
2408 48.85132
2409 ],
2410 [
2411 130.5595,
2412 48.8049
2413 ],
2414 [
2415 130.4748,
2416 48.59328
2417 ],
2418 [
2419 130.5535,
2420 48.54617
2421 ],
2422 [
2423 130.5905,
2424 48.4499
2425 ],
2426 [
2427 130.6787,
2428 48.43887
2429 ],
2430 [
2431 130.7561,
2432 48.30394
2433 ],
2434 [
2435 130.6185,
2436 48.14973
2437 ],
2438 [
2439 130.6074,
2440 48.07632
2441 ],
2442 [
2443 130.841,
2444 47.88329
2445 ],
2446 [
2447 130.9676,
2448 47.65113
2449 ],
2450 [
2451 131.0996,
2452 47.63207
2453 ],
2454 [
2455 131.4507,
2456 47.69047
2457 ],
2458 [
2459 131.5963,
2460 47.60511
2461 ],
2462 [
2463 131.7141,
2464 47.65205
2465 ],
2466 [
2467 131.9638,
2468 47.61171
2469 ],
2470 [
2471 132.3304,
2472 47.70502
2473 ],
2474 [
2475 132.568,
2476 47.66682
2477 ],
2478 [
2479 132.644,
2480 47.71194
2481 ],
2482 [
2483 132.7325,
2484 47.88553
2485 ],
2486 [
2487 132.8258,
2488 47.88361
2489 ],
2490 [
2491 133.0785,
2492 48.05274
2493 ],
2494 [
2495 133.5531,
2496 48.07553
2497 ],
2498 [
2499 133.624,
2500 48.14036
2501 ],
2502 [
2503 133.7354,
2504 48.14429
2505 ],
2506 [
2507 133.7865,
2508 48.20655
2509 ],
2510 [
2511 134.2169,
2512 48.33272
2513 ],
2514 [
2515 134.6858,
2516 48.35052
2517 ],
2518 [
2519 134.4936,
2520 47.98576
2521 ],
2522 [
2523 134.7102,
2524 47.72819
2525 ],
2526 [
2527 134.5187,
2528 47.52034
2529 ],
2530 [
2531 134.2986,
2532 47.48392
2533 ],
2534 [
2535 134.1255,
2536 47.3412
2537 ],
2538 [
2539 134.1005,
2540 47.24881
2541 ],
2542 [
2543 134.1693,
2544 47.15426
2545 ],
2546 [
2547 134.0129,
2548 47.00225
2549 ],
2550 [
2551 133.9657,
2552 46.69141
2553 ],
2554 [
2555 133.7971,
2556 46.49669
2557 ],
2558 [
2559 133.8315,
2560 46.29377
2561 ],
2562 [
2563 133.6469,
2564 46.18546
2565 ],
2566 [
2567 133.6674,
2568 46.0558
2569 ],
2570 [
2571 133.4254,
2572 45.87078
2573 ],
2574 [
2575 133.3554,
2576 45.6264
2577 ],
2578 [
2579 133.1504,
2580 45.54089
2581 ],
2582 [
2583 133.0403,
2584 45.29954
2585 ],
2586 [
2587 133.0559,
2588 45.14931
2589 ],
2590 [
2591 132.9346,
2592 45.08232
2593 ],
2594 [
2595 132.0293,
2596 45.29861
2597 ],
2598 [
2599 131.8762,
2600 45.39202
2601 ],
2602 [
2603 131.7397,
2604 45.27829
2605 ],
2606 [
2607 131.6433,
2608 45.25991
2609 ],
2610 [
2611 131.6028,
2612 45.12862
2613 ],
2614 [
2615 131.4421,
2616 45.02841
2617 ],
2618 [
2619 131.0879,
2620 44.98491
2621 ],
2622 [
2623 130.9201,
2624 44.88378
2625 ],
2626 [
2627 130.917,
2628 44.79406
2629 ],
2630 [
2631 131.0654,
2632 44.65677
2633 ],
2634 [
2635 131.2381,
2636 44.08007
2637 ],
2638 [
2639 131.1856,
2640 43.98994
2641 ],
2642 [
2643 131.1361,
2644 43.55799
2645 ],
2646 [
2647 131.2402,
2648 43.41428
2649 ],
2650 [
2651 131.1481,
2652 43.24203
2653 ],
2654 [
2655 131.1502,
2656 43.15951
2657 ],
2658 [
2659 131.0672,
2660 43.08742
2661 ],
2662 [
2663 131.0517,
2664 42.97433
2665 ],
2666 [
2667 130.9582,
2668 42.91953
2669 ],
2670 [
2671 130.8023,
2672 42.93109
2673 ],
2674 [
2675 130.5421,
2676 42.86199
2677 ],
2678 [
2679 130.3442,
2680 42.73033
2681 ],
2682 [
2683 130.3947,
2684 42.66008
2685 ],
2686 [
2687 130.5583,
2688 42.6077
2689 ],
2690 [
2691 130.5039,
2692 42.50742
2693 ],
2694 [
2695 130.6269,
2696 42.28052
2697 ],
2698 [
2699 130.8987,
2700 42.12396
2701 ],
2702 [
2703 133.2675,
2704 39.96882
2705 ],
2706 [
2707 140.789789,
2708 45.836458
2709 ],
2710 [
2711 142.586054,
2712 45.579449
2713 ],
2714 [
2715 145.596308,
2716 44.66475
2717 ],
2718 [
2719 145.431513,
2720 44.13886
2721 ],
2722 [
2723 145.195307,
2724 43.763164
2725 ],
2726 [
2727 145.493316,
2728 43.534612
2729 ],
2730 [
2731 145.828398,
2732 43.384093
2733 ],
2734 [
2735 146.0519,
2736 43.12595
2737 ],
2738 [
2739 180,
2740 35.61404
2741 ],
2742 [
2743 180,
2744 83.83133
2745 ],
2746 [
2747 37.2795,
2748 83.81215
2749 ],
2750 [
2751 31.27848,
2752 70.11174
2753 ],
2754 [
2755 30.77568,
2756 69.82379
2757 ],
2758 [
2759 30.88567,
2760 69.60134
2761 ],
2762 [
2763 30.54062,
2764 69.59318
2765 ],
2766 [
2767 30.24028,
2768 69.70254
2769 ],
2770 [
2771 30.07925,
2772 69.70996
2773 ],
2774 [
2775 30.04604,
2776 69.62395
2777 ],
2778 [
2779 30.11237,
2780 69.57275
2781 ],
2782 [
2783 30.01001,
2784 69.47197
2785 ],
2786 [
2787 29.84288,
2788 69.47344
2789 ],
2790 [
2791 29.56539,
2792 69.37147
2793 ],
2794 [
2795 29.28577,
2796 69.34884
2797 ],
2798 [
2799 29.18916,
2800 69.14856
2801 ],
2802 [
2803 29.04647,
2804 69.07043
2805 ],
2806 [
2807 28.90818,
2808 69.09988
2809 ],
2810 [
2811 28.36758,
2812 68.92939
2813 ],
2814 [
2815 28.45581,
2816 68.83664
2817 ],
2818 [
2819 28.68857,
2820 68.8165
2821 ],
2822 [
2823 28.38412,
2824 68.5494
2825 ],
2826 [
2827 28.61946,
2828 68.15368
2829 ],
2830 [
2831 29.29281,
2832 68.02793
2833 ],
2834 [
2835 29.62745,
2836 67.76365
2837 ],
2838 [
2839 29.92133,
2840 67.63731
2841 ],
2842 [
2843 29.88819,
2844 67.56283
2845 ],
2846 [
2847 29.04771,
2848 67.04106
2849 ],
2850 [
2851 28.98188,
2852 66.93578
2853 ],
2854 [
2855 29.07125,
2856 66.75276
2857 ],
2858 [
2859 29.43544,
2860 66.50602
2861 ],
2862 [
2863 29.66187,
2864 66.23217
2865 ],
2866 [
2867 29.89118,
2868 66.07974
2869 ],
2870 [
2871 30.06695,
2872 65.74475
2873 ],
2874 [
2875 29.67942,
2876 65.66431
2877 ],
2878 [
2879 29.73666,
2880 65.55009
2881 ],
2882 [
2883 29.68779,
2884 65.49607
2885 ],
2886 [
2887 29.67485,
2888 65.36906
2889 ],
2890 [
2891 29.56924,
2892 65.30861
2893 ],
2894 [
2895 29.55285,
2896 65.24834
2897 ],
2898 [
2899 29.61512,
2900 65.18409
2901 ],
2902 [
2903 29.78282,
2904 65.17332
2905 ],
2906 [
2907 29.59119,
2908 65.09738
2909 ],
2910 [
2911 29.54934,
2912 65.00337
2913 ],
2914 [
2915 29.56488,
2916 64.90444
2917 ],
2918 [
2919 29.70682,
2920 64.7489
2921 ],
2922 [
2923 29.99222,
2924 64.74085
2925 ],
2926 [
2927 30.02651,
2928 64.66196
2929 ],
2930 [
2931 29.94633,
2932 64.6067
2933 ],
2934 [
2935 29.93739,
2936 64.52972
2937 ],
2938 [
2939 30.00522,
2940 64.3703
2941 ],
2942 [
2943 30.42164,
2944 64.21392
2945 ],
2946 [
2947 30.49199,
2948 64.10354
2949 ],
2950 [
2951 30.22901,
2952 63.8715
2953 ],
2954 [
2955 29.9702,
2956 63.81066
2957 ],
2958 [
2959 29.93021,
2960 63.72835
2961 ],
2962 [
2963 30.46048,
2964 63.42266
2965 ],
2966 [
2967 30.77099,
2968 63.35498
2969 ],
2970 [
2971 31.18489,
2972 63.18117
2973 ],
2974 [
2975 31.2423,
2976 63.06728
2977 ],
2978 [
2979 31.49568,
2980 62.90009
2981 ],
2982 [
2983 31.11931,
2984 62.48988
2985 ],
2986 [
2987 30.61954,
2988 62.24558
2989 ],
2990 [
2991 29.69859,
2992 61.61222
2993 ],
2994 [
2995 29.4718,
2996 61.53579
2997 ],
2998 [
2999 29.20748,
3000 61.31401
3001 ],
3002 [
3003 28.79581,
3004 61.16649
3005 ],
3006 [
3007 28.63369,
3008 61.00659
3009 ],
3010 [
3011 28.49232,
3012 60.99797
3013 ],
3014 [
3015 27.85071,
3016 60.65141
3017 ],
3018 [
3019 27.64466,
3020 60.46285
3021 ],
3022 [
3023 27.6426,
3024 60.40344
3025 ],
3026 [
3027 27.4862,
3028 60.30133
3029 ],
3030 [
3031 26.86507,
3032 60.16682
3033 ],
3034 [
3035 26.39009,
3036 59.92985
3037 ],
3038 [
3039 26.91914,
3040 59.57938
3041 ],
3042 [
3043 27.82954,
3044 59.53154
3045 ],
3046 [
3047 28.12685,
3048 59.36757
3049 ],
3050 [
3051 27.88014,
3052 59.28753
3053 ],
3054 [
3055 27.68803,
3056 59.01193
3057 ],
3058 [
3059 27.30915,
3060 58.80412
3061 ],
3062 [
3063 27.48362,
3064 58.38673
3065 ],
3066 [
3067 27.44354,
3068 58.20541
3069 ],
3070 [
3071 27.55825,
3072 58.07796
3073 ],
3074 [
3075 27.63487,
3076 57.89748
3077 ],
3078 [
3079 27.51724,
3080 57.87234
3081 ],
3082 [
3083 27.26678,
3084 57.58119
3085 ],
3086 [
3087 27.33297,
3088 57.47116
3089 ],
3090 [
3091 27.48984,
3092 57.48141
3093 ],
3094 [
3095 27.48489,
3096 57.38802
3097 ],
3098 [
3099 27.80667,
3100 57.26726
3101 ],
3102 [
3103 27.77309,
3104 57.18686
3105 ],
3106 [
3107 27.66903,
3108 57.11764
3109 ],
3110 [
3111 27.68045,
3112 56.96759
3113 ],
3114 [
3115 27.60984,
3116 56.82296
3117 ],
3118 [
3119 27.64703,
3120 56.78608
3121 ],
3122 [
3123 27.84829,
3124 56.81343
3125 ],
3126 [
3127 27.86174,
3128 56.71678
3129 ],
3130 [
3131 28.12917,
3132 56.4235
3133 ],
3134 [
3135 28.11273,
3136 56.37153
3137 ],
3138 [
3139 28.16811,
3140 56.28574
3141 ],
3142 [
3143 28.10297,
3144 56.1868
3145 ],
3146 [
3147 28.11991,
3148 56.1093
3149 ],
3150 [
3151 28.30397,
3152 56.00917
3153 ],
3154 [
3155 28.58389,
3156 56.0545
3157 ],
3158 [
3159 28.72857,
3160 55.91646
3161 ],
3162 [
3163 28.86271,
3164 55.905
3165 ],
3166 [
3167 29.06219,
3168 55.97783
3169 ],
3170 [
3171 29.30575,
3172 55.93635
3173 ],
3174 [
3175 29.34851,
3176 55.92022
3177 ],
3178 [
3179 29.31199,
3180 55.74329
3181 ],
3182 [
3183 29.49395,
3184 55.65306
3185 ],
3186 [
3187 29.68037,
3188 55.7369
3189 ],
3190 [
3191 29.81433,
3192 55.73245
3193 ],
3194 [
3195 29.9147,
3196 55.80383
3197 ],
3198 [
3199 30.12313,
3200 55.78048
3201 ],
3202 [
3203 30.23792,
3204 55.81532
3205 ],
3206 [
3207 30.57809,
3208 55.69633
3209 ],
3210 [
3211 30.63959,
3212 55.59844
3213 ],
3214 [
3215 30.75319,
3216 55.54151
3217 ],
3218 [
3219 30.88151,
3220 55.57085
3221 ],
3222 [
3223 30.85992,
3224 55.41069
3225 ],
3226 [
3227 30.78692,
3228 55.36041
3229 ],
3230 [
3231 30.76885,
3232 55.28175
3233 ],
3234 [
3235 30.93431,
3236 55.09108
3237 ],
3238 [
3239 30.78148,
3240 54.97479
3241 ],
3242 [
3243 30.71476,
3244 54.77384
3245 ],
3246 [
3247 30.91914,
3248 54.69588
3249 ],
3250 [
3251 30.97209,
3252 54.6262
3253 ],
3254 [
3255 31.10248,
3256 54.61217
3257 ],
3258 [
3259 31.03625,
3260 54.49514
3261 ],
3262 [
3263 31.18732,
3264 54.41846
3265 ],
3266 [
3267 31.28732,
3268 54.20322
3269 ],
3270 [
3271 31.80737,
3272 54.02874
3273 ],
3274 [
3275 31.79375,
3276 53.94019
3277 ],
3278 [
3279 31.70897,
3280 53.84793
3281 ],
3282 [
3283 31.73503,
3284 53.7526
3285 ],
3286 [
3287 31.89973,
3288 53.72387
3289 ],
3290 [
3291 32.1166,
3292 53.76006
3293 ],
3294 [
3295 32.3069,
3296 53.70644
3297 ],
3298 [
3299 32.44324,
3300 53.5122
3301 ],
3302 [
3303 32.6811,
3304 53.40566
3305 ],
3306 [
3307 32.46274,
3308 53.34737
3309 ],
3310 [
3311 32.41788,
3312 53.2555
3313 ],
3314 [
3315 32.0986,
3316 53.12929
3317 ],
3318 [
3319 31.85271,
3320 53.16265
3321 ],
3322 [
3323 31.81184,
3324 53.22346
3325 ],
3326 [
3327 31.62667,
3328 53.28143
3329 ],
3330 [
3331 31.38296,
3332 53.25917
3333 ],
3334 [
3335 31.28393,
3336 53.09675
3337 ],
3338 [
3339 31.20669,
3340 53.06964
3341 ],
3342 [
3343 31.20841,
3344 52.98805
3345 ],
3346 [
3347 31.53098,
3348 52.75924
3349 ],
3350 [
3351 31.44993,
3352 52.69603
3353 ],
3354 [
3355 31.52909,
3356 52.56008
3357 ],
3358 [
3359 31.48765,
3360 52.46169
3361 ],
3362 [
3363 31.56666,
3364 52.37409
3365 ],
3366 [
3367 31.54027,
3368 52.29675
3369 ],
3370 [
3371 31.75549,
3372 52.06822
3373 ],
3374 [
3375 31.86193,
3376 52.05565
3377 ],
3378 [
3379 31.90689,
3380 51.99334
3381 ],
3382 [
3383 32.09497,
3384 51.98266
3385 ],
3386 [
3387 32.38992,
3388 52.09939
3389 ],
3390 [
3391 32.44809,
3392 52.27175
3393 ],
3394 [
3395 32.6915,
3396 52.19798
3397 ],
3398 [
3399 32.89863,
3400 52.19427
3401 ],
3402 [
3403 33.21088,
3404 52.32006
3405 ],
3406 [
3407 33.54886,
3408 52.25097
3409 ],
3410 [
3411 33.78861,
3412 52.31255
3413 ],
3414 [
3415 34.03332,
3416 52.12261
3417 ],
3418 [
3419 34.01219,
3420 52.07252
3421 ],
3422 [
3423 34.06314,
3424 51.96613
3425 ],
3426 [
3427 34.21642,
3428 51.84007
3429 ],
3430 [
3431 34.35746,
3432 51.79404
3433 ],
3434 [
3435 34.03453,
3436 51.68698
3437 ],
3438 [
3439 34.05617,
3440 51.62284
3441 ],
3442 [
3443 34.21773,
3444 51.50759
3445 ],
3446 [
3447 34.17101,
3448 51.42194
3449 ],
3450 [
3451 34.22899,
3452 51.34658
3453 ],
3454 [
3455 34.19268,
3456 51.23231
3457 ],
3458 [
3459 34.31097,
3460 51.18884
3461 ],
3462 [
3463 34.60857,
3464 51.19203
3465 ],
3466 [
3467 34.70031,
3468 51.12526
3469 ],
3470 [
3471 35.07328,
3472 51.16195
3473 ],
3474 [
3475 35.12019,
3476 51.04252
3477 ],
3478 [
3479 35.27827,
3480 51.00344
3481 ],
3482 [
3483 35.28067,
3484 50.92582
3485 ],
3486 [
3487 35.41448,
3488 50.73853
3489 ],
3490 [
3491 35.35064,
3492 50.67781
3493 ],
3494 [
3495 35.34606,
3496 50.55788
3497 ],
3498 [
3499 35.59275,
3500 50.31192
3501 ],
3502 [
3503 35.7418,
3504 50.3038
3505 ],
3506 [
3507 35.85155,
3508 50.374
3509 ],
3510 [
3511 36.07715,
3512 50.39531
3513 ],
3514 [
3515 36.27515,
3516 50.24484
3517 ],
3518 [
3519 36.46162,
3520 50.25969
3521 ],
3522 [
3523 36.64995,
3524 50.16646
3525 ],
3526 [
3527 36.88982,
3528 50.28679
3529 ],
3530 [
3531 37.16752,
3532 50.30649
3533 ],
3534 [
3535 37.41356,
3536 50.38116
3537 ],
3538 [
3539 37.57234,
3540 50.255
3541 ],
3542 [
3543 37.61331,
3544 50.13249
3545 ],
3546 [
3547 37.73295,
3548 50.03249
3549 ],
3550 [
3551 37.88199,
3552 49.99718
3553 ],
3554 [
3555 38.01555,
3556 49.85233
3557 ],
3558 [
3559 38.19247,
3560 49.896
3561 ],
3562 [
3563 38.28829,
3564 50.02419
3565 ],
3566 [
3567 38.3358,
3568 49.95768
3569 ],
3570 [
3571 38.65124,
3572 49.90573
3573 ],
3574 [
3575 38.92585,
3576 49.74657
3577 ],
3578 [
3579 39.17134,
3580 49.81935
3581 ],
3582 [
3583 39.25245,
3584 49.71591
3585 ],
3586 [
3587 39.54762,
3588 49.68604
3589 ],
3590 [
3591 39.6294,
3592 49.57456
3593 ],
3594 [
3595 39.79514,
3596 49.50784
3597 ],
3598 [
3599 39.99489,
3600 49.54761
3601 ],
3602 [
3603 39.98036,
3604 49.44172
3605 ],
3606 [
3607 40.1341,
3608 49.31827
3609 ],
3610 [
3611 39.89786,
3612 49.11549
3613 ],
3614 [
3615 39.62763,
3616 49.06151
3617 ],
3618 [
3619 39.64642,
3620 48.95187
3621 ],
3622 [
3623 39.75439,
3624 48.87157
3625 ],
3626 [
3627 39.65966,
3628 48.74513
3629 ],
3630 [
3631 39.61548,
3632 48.58986
3633 ],
3634 [
3635 39.66738,
3636 48.53953
3637 ],
3638 [
3639 39.80232,
3640 48.52768
3641 ],
3642 [
3643 39.79789,
3644 48.45847
3645 ],
3646 [
3647 39.85571,
3648 48.39424
3649 ],
3650 [
3651 39.79521,
3652 48.35044
3653 ],
3654 [
3655 39.79541,
3656 48.28809
3657 ],
3658 [
3659 39.8875,
3660 48.22399
3661 ],
3662 [
3663 39.73231,
3664 48.06436
3665 ],
3666 [
3667 39.76046,
3668 47.97173
3669 ],
3670 [
3671 39.71582,
3672 47.88397
3673 ],
3674 [
3675 38.87402,
3676 47.9262
3677 ],
3678 [
3679 38.74584,
3680 47.84248
3681 ],
3682 [
3683 38.72452,
3684 47.75158
3685 ],
3686 [
3687 38.32055,
3688 47.6572
3689 ],
3690 [
3691 38.2375,
3692 47.56339
3693 ],
3694 [
3695 38.24691,
3696 47.42509
3697 ],
3698 [
3699 38.17056,
3700 47.33226
3701 ],
3702 [
3703 38.17948,
3704 47.11301
3705 ],
3706 [
3707 38.23594,
3708 46.98468
3709 ],
3710 [
3711 38.11227,
3712 46.91138
3713 ],
3714 [
3715 37.62322,
3716 46.88217
3717 ],
3718 [
3719 37.41553,
3720 46.76322
3721 ],
3722 [
3723 36.64303,
3724 45.68821
3725 ],
3726 [
3727 36.33254,
3728 45.72272
3729 ],
3730 [
3731 35.99696,
3732 45.67179
3733 ],
3734 [
3735 35.78323,
3736 45.6953
3737 ],
3738 [
3739 35.5479,
3740 45.57771
3741 ],
3742 [
3743 35.25239,
3744 45.8388
3745 ],
3746 [
3747 34.95522,
3748 45.81513
3749 ],
3750 [
3751 34.86024,
3752 45.85082
3753 ],
3754 [
3755 34.834,
3756 45.94033
3757 ],
3758 [
3759 34.64487,
3760 46.03539
3761 ],
3762 [
3763 34.56099,
3764 46.04619
3765 ],
3766 [
3767 34.48616,
3768 45.99791
3769 ],
3770 [
3771 34.35945,
3772 46.10523
3773 ],
3774 [
3775 33.64373,
3776 46.28118
3777 ],
3778 [
3779 33.57107,
3780 46.24987
3781 ],
3782 [
3783 33.57418,
3784 46.17282
3785 ],
3786 [
3787 33.50204,
3788 46.05619
3789 ],
3790 [
3791 32.76382,
3792 45.87799
3793 ],
3794 [
3795 32.29008,
3796 45.63796
3797 ],
3798 [
3799 32.15053,
3800 45.4186
3801 ],
3802 [
3803 32.24215,
3804 45.18556
3805 ],
3806 [
3807 32.58196,
3808 45.06437
3809 ],
3810 [
3811 32.81426,
3812 45.08492
3813 ],
3814 [
3815 33.1961,
3816 44.89718
3817 ],
3818 [
3819 33.18807,
3820 44.79736
3821 ],
3822 [
3823 33.04632,
3824 44.63244
3825 ],
3826 [
3827 33.08447,
3828 44.45073
3829 ],
3830 [
3831 33.28842,
3832 44.28003
3833 ],
3834 [
3835 33.73338,
3836 44.13411
3837 ],
3838 [
3839 34.25741,
3840 44.18416
3841 ],
3842 [
3843 34.56984,
3844 44.35196
3845 ],
3846 [
3847 34.75216,
3848 44.53336
3849 ],
3850 [
3851 35.19419,
3852 44.54824
3853 ],
3854 [
3855 35.63792,
3856 44.77878
3857 ],
3858 [
3859 35.86723,
3860 44.74156
3861 ],
3862 [
3863 36.3213,
3864 44.7814
3865 ],
3866 [
3867 36.62697,
3868 44.88227
3869 ],
3870 [
3871 36.82653,
3872 44.86342
3873 ],
3874 [
3875 36.99347,
3876 44.80367
3877 ],
3878 [
3879 37.13441,
3880 44.60302
3881 ],
3882 [
3883 37.30884,
3884 44.50028
3885 ],
3886 [
3887 37.72977,
3888 44.41796
3889 ],
3890 [
3891 38.06819,
3892 44.20528
3893 ],
3894 [
3895 38.58442,
3896 44.07787
3897 ],
3898 [
3899 39.0957,
3900 43.73459
3901 ],
3902 [
3903 39.77181,
3904 43.19436
3905 ],
3906 [
3907 39.92102,
3908 43.18958
3909 ],
3910 [
3911 40.14963,
3912 43.51766
3913 ],
3914 [
3915 40.53619,
3916 43.46775
3917 ],
3918 [
3919 40.65366,
3920 43.50114
3921 ],
3922 [
3923 40.9289,
3924 43.37216
3925 ],
3926 [
3927 41.36808,
3928 43.30067
3929 ],
3930 [
3931 41.61549,
3932 43.17233
3933 ],
3934 [
3935 42.04859,
3936 43.13725
3937 ],
3938 [
3939 42.39962,
3940 43.19365
3941 ],
3942 [
3943 42.66235,
3944 43.08262
3945 ],
3946 [
3947 42.73485,
3948 43.1274
3949 ],
3950 [
3951 42.84302,
3952 43.12009
3953 ],
3954 [
3955 43.17041,
3956 42.88863
3957 ],
3958 [
3959 43.54686,
3960 42.81264
3961 ],
3962 [
3963 43.73402,
3964 42.71448
3965 ],
3966 [
3967 43.67202,
3968 42.66099
3969 ],
3970 [
3971 43.67724,
3972 42.59853
3973 ],
3974 [
3975 43.93197,
3976 42.50111
3977 ],
3978 [
3979 44.2535,
3980 42.58062
3981 ],
3982 [
3983 44.3303,
3984 42.66346
3985 ],
3986 [
3987 44.53225,
3988 42.64866
3989 ],
3990 [
3991 44.57483,
3992 42.69518
3993 ],
3994 [
3995 44.69127,
3996 42.69116
3997 ],
3998 [
3999 44.81052,
4000 42.56385
4001 ],
4002 [
4003 44.86958,
4004 42.58652
4005 ],
4006 [
4007 44.92369,
4008 42.69655
4009 ],
4010 [
4011 45.03821,
4012 42.64202
4013 ],
4014 [
4015 45.12851,
4016 42.6547
4017 ],
4018 [
4019 45.32356,
4020 42.47483
4021 ],
4022 [
4023 45.54435,
4024 42.4928
4025 ],
4026 [
4027 45.70059,
4028 42.42948
4029 ],
4030 [
4031 45.68852,
4032 42.34632
4033 ],
4034 [
4035 45.56284,
4036 42.25334
4037 ],
4038 [
4039 45.61474,
4040 42.14678
4041 ],
4042 [
4043 45.77294,
4044 42.05502
4045 ],
4046 [
4047 45.86065,
4048 42.05444
4049 ],
4050 [
4051 45.91019,
4052 41.98434
4053 ],
4054 [
4055 46.20599,
4056 41.9492
4057 ],
4058 [
4059 46.49783,
4060 41.83242
4061 ],
4062 [
4063 46.55742,
4064 41.75878
4065 ],
4066 [
4067 46.72213,
4068 41.77576
4069 ],
4070 [
4071 46.94197,
4072 41.60451
4073 ],
4074 [
4075 46.98537,
4076 41.51775
4077 ],
4078 [
4079 47.10308,
4080 41.50738
4081 ],
4082 [
4083 47.24051,
4084 41.28804
4085 ],
4086 [
4087 47.45024,
4088 41.21199
4089 ]
4090 ]
4091 ],
4092 [
4093 [
4094 [
4095 -180,
4096 72.2916
4097 ],
4098 [
4099 -180,
4100 72.29053
4101 ],
4102 [
4103 -180,
4104 62.26134
4105 ],
4106 [
4107 -172.074188,
4108 64.033556
4109 ],
4110 [
4111 -168.725284,
4112 65.414875
4113 ],
4114 [
4115 -168.684085,
4116 65.990095
4117 ],
4118 [
4119 -169.907891,
4120 72.234092
4121 ],
4122 [
4123 -180,
4124 72.2916
4125 ]
4126 ]
4127 ],
4128 [
4129 [
4130 [
4131 22.22727,
4132 54.33593
4133 ],
4134 [
4135 22.7962,
4136 54.35926
4137 ],
4138 [
4139 22.74021,
4140 54.44744
4141 ],
4142 [
4143 22.7093,
4144 54.45891
4145 ],
4146 [
4147 22.70476,
4148 54.50897
4149 ],
4150 [
4151 22.68861,
4152 54.53217
4153 ],
4154 [
4155 22.71956,
4156 54.56434
4157 ],
4158 [
4159 22.69213,
4160 54.58511
4161 ],
4162 [
4163 22.75463,
4164 54.63005
4165 ],
4166 [
4167 22.76275,
4168 54.65463
4169 ],
4170 [
4171 22.74373,
4172 54.66534
4173 ],
4174 [
4175 22.74301,
4176 54.68216
4177 ],
4178 [
4179 22.73321,
4180 54.68658
4181 ],
4182 [
4183 22.75458,
4184 54.7047
4185 ],
4186 [
4187 22.74835,
4188 54.72438
4189 ],
4190 [
4191 22.78026,
4192 54.74346
4193 ],
4194 [
4195 22.80989,
4196 54.7428
4197 ],
4198 [
4199 22.81955,
4200 54.75959
4201 ],
4202 [
4203 22.84556,
4204 54.76117
4205 ],
4206 [
4207 22.86419,
4208 54.77399
4209 ],
4210 [
4211 22.86373,
4212 54.78234
4213 ],
4214 [
4215 22.88351,
4216 54.78865
4217 ],
4218 [
4219 22.88011,
4220 54.80362
4221 ],
4222 [
4223 22.89215,
4224 54.81546
4225 ],
4226 [
4227 22.86936,
4228 54.84295
4229 ],
4230 [
4231 22.87459,
4232 54.8553
4233 ],
4234 [
4235 22.8486,
4236 54.869
4237 ],
4238 [
4239 22.85917,
4240 54.89211
4241 ],
4242 [
4243 22.82176,
4244 54.91769
4245 ],
4246 [
4247 22.79607,
4248 54.90969
4249 ],
4250 [
4251 22.78564,
4252 54.92998
4253 ],
4254 [
4255 22.77229,
4256 54.92998
4257 ],
4258 [
4259 22.76934,
4260 54.94047
4261 ],
4262 [
4263 22.73776,
4264 54.95228
4265 ],
4266 [
4267 22.72969,
4268 54.96771
4269 ],
4270 [
4271 22.69528,
4272 54.97819
4273 ],
4274 [
4275 22.68043,
4276 54.99268
4277 ],
4278 [
4279 22.65624,
4280 54.9868
4281 ],
4282 [
4283 22.65115,
4284 54.9726
4285 ],
4286 [
4287 22.64782,
4288 54.9875
4289 ],
4290 [
4291 22.60258,
4292 55.02726
4293 ],
4294 [
4295 22.59123,
4296 55.07575
4297 ],
4298 [
4299 22.47057,
4300 55.05064
4301 ],
4302 [
4303 22.29012,
4304 55.071
4305 ],
4306 [
4307 22.1606,
4308 55.06165
4309 ],
4310 [
4311 22.13061,
4312 55.05093
4313 ],
4314 [
4315 22.11668,
4316 55.03312
4317 ],
4318 [
4319 22.07676,
4320 55.03107
4321 ],
4322 [
4323 22.0409,
4324 55.04771
4325 ],
4326 [
4327 22.04595,
4328 55.07927
4329 ],
4330 [
4331 22.03355,
4332 55.09001
4333 ],
4334 [
4335 21.99622,
4336 55.09254
4337 ],
4338 [
4339 21.96346,
4340 55.0801
4341 ],
4342 [
4343 21.92037,
4344 55.08658
4345 ],
4346 [
4347 21.85347,
4348 55.1025
4349 ],
4350 [
4351 21.81586,
4352 55.12522
4353 ],
4354 [
4355 21.72595,
4356 55.13858
4357 ],
4358 [
4359 21.71247,
4360 55.15668
4361 ],
4362 [
4363 21.65011,
4364 55.18673
4365 ],
4366 [
4367 21.56952,
4368 55.20409
4369 ],
4370 [
4371 21.50256,
4372 55.19329
4373 ],
4374 [
4375 21.45261,
4376 55.22705
4377 ],
4378 [
4379 21.43505,
4380 55.25676
4381 ],
4382 [
4383 21.38577,
4384 55.29945
4385 ],
4386 [
4387 21.27184,
4388 55.25158
4389 ],
4390 [
4391 21.09934,
4392 55.26235
4393 ],
4394 [
4395 20.95439,
4396 55.28694
4397 ],
4398 [
4399 20.65365,
4400 55.3899
4401 ],
4402 [
4403 20.39793,
4404 55.18633
4405 ],
4406 [
4407 20.20131,
4408 55.16615
4409 ],
4410 [
4411 19.9205,
4412 55.16401
4413 ],
4414 [
4415 19.82198,
4416 55.14569
4417 ],
4418 [
4419 19.72775,
4420 55.10661
4421 ],
4422 [
4423 19.63488,
4424 55.02533
4425 ],
4426 [
4427 19.58918,
4428 54.95461
4429 ],
4430 [
4431 19.57351,
4432 54.86918
4433 ],
4434 [
4435 19.58461,
4436 54.77262
4437 ],
4438 [
4439 19.50858,
4440 54.68355
4441 ],
4442 [
4443 19.40837,
4444 54.61169
4445 ],
4446 [
4447 19.64733,
4448 54.44727
4449 ],
4450 [
4451 20.33136,
4452 54.39511
4453 ],
4454 [
4455 20.58391,
4456 54.37189
4457 ],
4458 [
4459 20.63083,
4460 54.3604
4461 ],
4462 [
4463 20.74068,
4464 54.36326
4465 ],
4466 [
4467 21.26116,
4468 54.32314
4469 ],
4470 [
4471 21.37827,
4472 54.32501
4473 ],
4474 [
4475 21.44629,
4476 54.31282
4477 ],
4478 [
4479 22.22727,
4480 54.33593
4481 ]
4482 ]
4483 ]
4484 ]
4485 }
4486 }
0 {
1 "type": "Feature",
2 "properties": {
3 "name": "polygon"
4 },
5 "geometry": {
6 "type": "MultiPolygon",
7 "coordinates": [
8 [
9 [
10 [
11 47.45024,
12 41.21199
13 ],
14 [
15 47.55554,
16 41.14866
17 ],
18 [
19 47.63965,
20 41.17394
21 ],
22 [
23 47.77601,
24 41.1355
25 ],
26 [
27 47.90696,
28 41.17502
29 ],
30 [
31 48.1129,
32 41.44532
33 ],
34 [
35 48.41078,
36 41.55137
37 ],
38 [
39 48.62989,
40 41.80192
41 ],
42 [
43 48.86453,
44 41.95753
45 ],
46 [
47 48.60773,
48 42.16834
49 ],
50 [
51 48.23971,
52 42.57976
53 ],
54 [
55 47.97945,
56 42.99383
57 ],
58 [
59 47.84597,
60 43.11901
61 ],
62 [
63 47.88465,
64 43.29552
65 ],
66 [
67 47.85146,
68 43.47209
69 ],
70 [
71 47.89469,
72 43.61146
73 ],
74 [
75 48.16466,
76 43.87705
77 ],
78 [
79 48.19536,
80 43.98996
81 ],
82 [
83 48.1644,
84 44.09189
85 ],
86 [
87 48.04129,
88 44.20116
89 ],
90 [
91 47.8084,
92 44.24603
93 ],
94 [
95 47.89509,
96 44.44452
97 ],
98 [
99 47.78865,
100 44.65814
101 ],
102 [
103 47.59802,
104 44.74029
105 ],
106 [
107 47.37386,
108 44.72613
109 ],
110 [
111 47.64786,
112 45.15848
113 ],
114 [
115 48.05696,
116 45.24572
117 ],
118 [
119 48.27987,
120 45.40203
121 ],
122 [
123 48.67183,
124 45.35084
125 ],
126 [
127 48.86567,
128 45.38544
129 ],
130 [
131 49.01144,
132 45.47855
133 ],
134 [
135 49.11256,
136 45.65282
137 ],
138 [
139 49.93666,
140 46.04634
141 ],
142 [
143 49.71829,
144 46.23479
145 ],
146 [
147 49.52308,
148 46.24281
149 ],
150 [
151 49.19315,
152 46.4275
153 ],
154 [
155 48.62393,
156 46.65237
157 ],
158 [
159 48.92563,
160 46.6427
161 ],
162 [
163 49.04755,
164 46.75114
165 ],
166 [
167 48.56782,
168 47.43402
169 ],
170 [
171 48.46943,
172 47.47112
173 ],
174 [
175 48.23329,
176 47.7388
177 ],
178 [
179 48.04813,
180 47.81218
181 ],
182 [
183 47.66885,
184 47.80996
185 ],
186 [
187 47.41085,
188 47.8885
189 ],
190 [
191 47.35203,
192 47.76545
193 ],
194 [
195 47.23594,
196 47.80066
197 ],
198 [
199 47.22767,
200 47.87353
201 ],
202 [
203 47.14475,
204 47.95903
205 ],
206 [
207 47.26121,
208 48.07877
209 ],
210 [
211 47.17553,
212 48.15345
213 ],
214 [
215 47.15755,
216 48.3071
217 ],
218 [
219 46.59034,
220 48.46934
221 ],
222 [
223 46.80537,
224 48.89006
225 ],
226 [
227 47.0122,
228 48.9948
229 ],
230 [
231 47.09872,
232 49.14378
233 ],
234 [
235 47.0187,
236 49.27955
237 ],
238 [
239 46.85039,
240 49.38503
241 ],
242 [
243 46.94498,
244 49.81672
245 ],
246 [
247 47.19074,
248 49.88336
249 ],
250 [
251 47.38377,
252 50.05208
253 ],
254 [
255 47.36594,
256 50.27447
257 ],
258 [
259 47.51007,
260 50.37976
261 ],
262 [
263 47.59166,
264 50.40748
265 ],
266 [
267 47.89502,
268 50.20414
269 ],
270 [
271 48.05998,
272 50.05301
273 ],
274 [
275 48.20312,
276 49.82278
277 ],
278 [
279 48.4479,
280 49.75097
281 ],
282 [
283 48.76092,
284 49.87291
285 ],
286 [
287 48.95297,
288 50.02451
289 ],
290 [
291 48.77469,
292 50.29923
293 ],
294 [
295 48.71294,
296 50.54935
297 ],
298 [
299 48.83899,
300 50.54948
301 ],
302 [
303 49.14368,
304 50.73163
305 ],
306 [
307 49.45624,
308 50.81043
309 ],
310 [
311 49.49517,
312 50.88162
313 ],
314 [
315 49.43494,
316 51.00972
317 ],
318 [
319 49.46337,
320 51.05153
321 ],
322 [
323 49.77528,
324 51.05602
325 ],
326 [
327 50.02016,
328 51.19171
329 ],
330 [
331 50.38884,
332 51.28291
333 ],
334 [
335 50.43973,
336 51.36955
337 ],
338 [
339 50.59199,
340 51.43686
341 ],
342 [
343 50.62893,
344 51.56545
345 ],
346 [
347 50.76797,
348 51.52409
349 ],
350 [
351 50.84618,
352 51.54813
353 ],
354 [
355 50.87969,
356 51.63323
357 ],
358 [
359 51.23949,
360 51.62827
361 ],
362 [
363 51.19473,
364 51.52671
365 ],
366 [
367 51.26264,
368 51.44307
369 ],
370 [
371 51.58176,
372 51.45817
373 ],
374 [
375 51.63571,
376 51.40443
377 ],
378 [
379 51.85604,
380 51.46959
381 ],
382 [
383 51.84275,
384 51.56811
385 ],
386 [
387 51.90648,
388 51.62539
389 ],
390 [
391 52.09789,
392 51.60852
393 ],
394 [
395 52.31873,
396 51.68726
397 ],
398 [
399 52.54097,
400 51.40815
401 ],
402 [
403 52.78196,
404 51.44728
405 ],
406 [
407 52.94984,
408 51.40401
409 ],
410 [
411 53.22514,
412 51.45484
413 ],
414 [
415 53.53716,
416 51.3739
417 ],
418 [
419 53.55134,
420 51.28157
421 ],
422 [
423 53.63629,
424 51.18537
425 ],
426 [
427 53.99397,
428 51.1117
429 ],
430 [
431 54.08016,
432 51.06506
433 ],
434 [
435 54.17041,
436 50.92215
437 ],
438 [
439 54.42749,
440 50.80938
441 ],
442 [
443 54.36506,
444 50.61075
445 ],
446 [
447 54.54151,
448 50.47668
449 ],
450 [
451 54.64616,
452 50.49797
453 ],
454 [
455 54.78157,
456 50.61327
457 ],
458 [
459 54.72781,
460 50.8079
461 ],
462 [
463 54.74457,
464 50.91284
465 ],
466 [
467 54.65958,
468 50.97017
469 ],
470 [
471 55.02412,
472 50.85762
473 ],
474 [
475 55.02561,
476 50.77932
477 ],
478 [
479 55.36266,
480 50.60933
481 ],
482 [
483 55.47464,
484 50.61864
485 ],
486 [
487 55.71887,
488 50.49804
489 ],
490 [
491 56.08227,
492 50.65105
493 ],
494 [
495 56.17464,
496 50.72225
497 ],
498 [
499 56.2094,
500 50.861
501 ],
502 [
503 56.37383,
504 50.8525
505 ],
506 [
507 56.49571,
508 50.9305
509 ],
510 [
511 56.51267,
512 51.00062
513 ],
514 [
515 56.71622,
516 50.92326
517 ],
518 [
519 56.79957,
520 50.96934
521 ],
522 [
523 56.77757,
524 51.03494
525 ],
526 [
527 57.16343,
528 51.04051
529 ],
530 [
531 57.2991,
532 50.89787
533 ],
534 [
535 57.50648,
536 50.82501
537 ],
538 [
539 57.57432,
540 50.88038
541 ],
542 [
543 57.79196,
544 50.87955
545 ],
546 [
547 57.81701,
548 51.06097
549 ],
550 [
551 58.16644,
552 51.01243
553 ],
554 [
555 58.29841,
556 51.09797
557 ],
558 [
559 58.36807,
560 51.02613
561 ],
562 [
563 58.5548,
564 51.00639
565 ],
566 [
567 58.55671,
568 50.83518
569 ],
570 [
571 58.61717,
572 50.82102
573 ],
574 [
575 58.63651,
576 50.76234
577 ],
578 [
579 58.75108,
580 50.75904
581 ],
582 [
583 58.87397,
584 50.64752
585 ],
586 [
587 59.40752,
588 50.5865
589 ],
590 [
591 59.41208,
592 50.5204
593 ],
594 [
595 59.50366,
596 50.44446
597 ],
598 [
599 59.83658,
600 50.49067
601 ],
602 [
603 60.03802,
604 50.64431
605 ],
606 [
607 60.04013,
608 50.76267
609 ],
610 [
611 60.14419,
612 50.78129
613 ],
614 [
615 60.30811,
616 50.62164
617 ],
618 [
619 60.82497,
620 50.60673
621 ],
622 [
623 61.4775,
624 50.76372
625 ],
626 [
627 61.6091,
628 51.18039
629 ],
630 [
631 61.71087,
632 51.2122
633 ],
634 [
635 61.73371,
636 51.27975
637 ],
638 [
639 61.505,
640 51.45935
641 ],
642 [
643 61.02821,
644 51.52042
645 ],
646 [
647 60.97324,
648 51.56357
649 ],
650 [
651 60.9563,
652 51.66168
653 ],
654 [
655 60.48638,
656 51.69575
657 ],
658 [
659 60.55666,
660 51.7417
661 ],
662 [
663 60.55461,
664 51.83352
665 ],
666 [
667 60.19803,
668 51.9389
669 ],
670 [
671 60.52283,
672 52.10175
673 ],
674 [
675 60.74276,
676 52.11238
677 ],
678 [
679 61.10595,
680 52.3143
681 ],
682 [
683 61.0192,
684 52.54008
685 ],
686 [
687 60.90531,
688 52.56987
689 ],
690 [
691 60.88123,
692 52.67443
693 ],
694 [
695 60.7726,
696 52.69768
697 ],
698 [
699 61.16093,
700 52.94651
701 ],
702 [
703 61.47824,
704 52.97811
705 ],
706 [
707 61.62182,
708 52.90428
709 ],
710 [
711 61.7987,
712 52.94538
713 ],
714 [
715 62.0233,
716 52.89914
717 ],
718 [
719 62.16733,
720 52.95498
721 ],
722 [
723 62.19602,
724 53.05015
725 ],
726 [
727 62.13175,
728 53.16199
729 ],
730 [
731 61.81359,
732 53.22919
733 ],
734 [
735 61.70444,
736 53.30797
737 ],
738 [
739 61.54245,
740 53.26888
741 ],
742 [
743 61.23391,
744 53.34354
745 ],
746 [
747 61.28709,
748 53.45849
749 ],
750 [
751 61.47316,
752 53.4121
753 ],
754 [
755 61.58914,
756 53.45228
757 ],
758 [
759 61.64179,
760 53.52702
761 ],
762 [
763 61.56672,
764 53.64116
765 ],
766 [
767 61.2198,
768 53.61791
769 ],
770 [
771 61.11265,
772 53.6706
773 ],
774 [
775 61.27224,
776 53.77458
777 ],
778 [
779 61.32252,
780 54.02155
781 ],
782 [
783 61.43208,
784 54.02931
785 ],
786 [
787 61.55738,
788 53.92026
789 ],
790 [
791 61.70177,
792 53.96783
793 ],
794 [
795 61.93821,
796 53.8984
797 ],
798 [
799 62.07141,
800 53.90617
801 ],
802 [
803 62.08669,
804 53.99158
805 ],
806 [
807 62.3479,
808 53.98152
809 ],
810 [
811 62.40841,
812 53.89399
813 ],
814 [
815 62.5166,
816 53.86345
817 ],
818 [
819 62.62218,
820 53.93064
821 ],
822 [
823 62.63738,
824 54.02574
825 ],
826 [
827 63.09202,
828 54.05401
829 ],
830 [
831 63.23851,
832 54.14052
833 ],
834 [
835 63.79068,
836 54.21601
837 ],
838 [
839 63.97411,
840 54.14977
841 ],
842 [
843 64.10045,
844 54.25829
845 ],
846 [
847 64.61423,
848 54.32537
849 ],
850 [
851 64.75536,
852 54.3044
853 ],
854 [
855 64.95391,
856 54.36365
857 ],
858 [
859 65.10061,
860 54.28314
861 ],
862 [
863 65.23567,
864 54.28547
865 ],
866 [
867 65.31312,
868 54.35856
869 ],
870 [
871 65.27782,
872 54.4981
873 ],
874 [
875 65.51136,
876 54.51945
877 ],
878 [
879 65.55275,
880 54.58507
881 ],
882 [
883 65.76179,
884 54.55718
885 ],
886 [
887 65.90964,
888 54.65084
889 ],
890 [
891 66.01484,
892 54.57539
893 ],
894 [
895 67.07417,
896 54.73086
897 ],
898 [
899 67.32834,
900 54.81538
901 ],
902 [
903 67.69672,
904 54.81308
905 ],
906 [
907 67.80211,
908 54.84358
909 ],
910 [
911 67.86256,
912 54.92386
913 ],
914 [
915 68.24901,
916 54.92079
917 ],
918 [
919 68.36633,
920 55.06849
921 ],
922 [
923 68.30415,
924 55.13647
925 ],
926 [
927 68.64694,
928 55.15331
929 ],
930 [
931 68.77505,
932 55.31655
933 ],
934 [
935 69.02836,
936 55.23811
937 ],
938 [
939 69.03674,
940 55.37045
941 ],
942 [
943 69.20471,
944 55.28023
945 ],
946 [
947 69.37966,
948 55.32359
949 ],
950 [
951 69.48628,
952 55.28513
953 ],
954 [
955 69.7053,
956 55.29902
957 ],
958 [
959 69.93304,
960 55.16394
961 ],
962 [
963 70.20063,
964 55.09731
965 ],
966 [
967 70.41639,
968 55.16605
969 ],
970 [
971 70.46601,
972 55.22237
973 ],
974 [
975 70.76852,
976 55.23043
977 ],
978 [
979 70.9409,
980 55.05848
981 ],
982 [
983 70.91112,
984 54.87317
985 ],
986 [
987 70.99774,
988 54.74058
989 ],
990 [
991 71.07781,
992 54.65284
993 ],
994 [
995 71.17515,
996 54.64735
997 ],
998 [
999 71.12151,
1000 54.5804
1001 ],
1002 [
1003 71.15395,
1004 54.37672
1005 ],
1006 [
1007 70.94941,
1008 54.34494
1009 ],
1010 [
1011 70.95604,
1012 54.24729
1013 ],
1014 [
1015 71.09352,
1016 54.08826
1017 ],
1018 [
1019 71.16922,
1020 54.04168
1021 ],
1022 [
1023 71.35058,
1024 54.12825
1025 ],
1026 [
1027 71.47602,
1028 54.04809
1029 ],
1030 [
1031 71.73271,
1032 54.05468
1033 ],
1034 [
1035 71.81381,
1036 54.12726
1037 ],
1038 [
1039 71.79116,
1040 54.19184
1041 ],
1042 [
1043 71.96843,
1044 54.17919
1045 ],
1046 [
1047 72.19242,
1048 54.0773
1049 ],
1050 [
1051 72.26859,
1052 54.18256
1053 ],
1054 [
1055 72.36464,
1056 54.00627
1057 ],
1058 [
1059 72.32821,
1060 53.92899
1061 ],
1062 [
1063 72.51375,
1064 53.85759
1065 ],
1066 [
1067 72.57601,
1068 53.91939
1069 ],
1070 [
1071 72.73967,
1072 53.92125
1073 ],
1074 [
1075 72.76257,
1076 54.02257
1077 ],
1078 [
1079 72.71928,
1080 54.07208
1081 ],
1082 [
1083 72.92642,
1084 54.04317
1085 ],
1086 [
1087 73.04924,
1088 53.93876
1089 ],
1090 [
1091 73.39994,
1092 53.89362
1093 ],
1094 [
1095 73.30287,
1096 53.81917
1097 ],
1098 [
1099 73.28642,
1100 53.72743
1101 ],
1102 [
1103 73.20671,
1104 53.69327
1105 ],
1106 [
1107 73.19241,
1108 53.55241
1109 ],
1110 [
1111 73.44144,
1112 53.385
1113 ],
1114 [
1115 73.70901,
1116 53.55462
1117 ],
1118 [
1119 73.82959,
1120 53.5285
1121 ],
1122 [
1123 73.93355,
1124 53.59363
1125 ],
1126 [
1127 74.05274,
1128 53.5143
1129 ],
1130 [
1131 74.19647,
1132 53.53673
1133 ],
1134 [
1135 74.25824,
1136 53.45297
1137 ],
1138 [
1139 74.40758,
1140 53.40888
1141 ],
1142 [
1143 74.53481,
1144 53.55444
1145 ],
1146 [
1147 74.50614,
1148 53.6269
1149 ],
1150 [
1151 74.65941,
1152 53.62507
1153 ],
1154 [
1155 74.83088,
1156 53.76654
1157 ],
1158 [
1159 75.07475,
1160 53.74859
1161 ],
1162 [
1163 75.47387,
1164 53.93347
1165 ],
1166 [
1167 75.47389,
1168 54.04444
1169 ],
1170 [
1171 76.20979,
1172 54.20822
1173 ],
1174 [
1175 76.2796,
1176 54.29552
1177 ],
1178 [
1179 76.64382,
1180 54.2847
1181 ],
1182 [
1183 76.74415,
1184 54.34325
1185 ],
1186 [
1187 76.7993,
1188 54.3135
1189 ],
1190 [
1191 76.69981,
1192 54.20269
1193 ],
1194 [
1195 76.40203,
1196 54.19956
1197 ],
1198 [
1199 76.3879,
1200 54.10426
1201 ],
1202 [
1203 76.46503,
1204 53.9997
1205 ],
1206 [
1207 77.87975,
1208 53.24298
1209 ],
1210 [
1211 79.04392,
1212 52.00902
1213 ],
1214 [
1215 80.05173,
1216 50.69358
1217 ],
1218 [
1219 80.24767,
1220 50.84853
1221 ],
1222 [
1223 80.51988,
1224 50.93412
1225 ],
1226 [
1227 80.51989,
1228 51.14206
1229 ],
1230 [
1231 80.6576,
1232 51.16136
1233 ],
1234 [
1235 80.70717,
1236 51.25352
1237 ],
1238 [
1239 81.10698,
1240 51.13065
1241 ],
1242 [
1243 81.01967,
1244 50.91674
1245 ],
1246 [
1247 81.35919,
1248 50.92006
1249 ],
1250 [
1251 81.45208,
1252 50.70372
1253 ],
1254 [
1255 81.89253,
1256 50.7463
1257 ],
1258 [
1259 82.16666,
1260 50.67976
1261 ],
1262 [
1263 82.36827,
1264 50.72346
1265 ],
1266 [
1267 82.56112,
1268 50.69488
1269 ],
1270 [
1271 82.73557,
1272 50.77502
1273 ],
1274 [
1275 82.78288,
1276 50.86773
1277 ],
1278 [
1279 82.98475,
1280 50.83348
1281 ],
1282 [
1283 83.16801,
1284 50.95285
1285 ],
1286 [
1287 83.39428,
1288 50.95179
1289 ],
1290 [
1291 83.89711,
1292 50.76756
1293 ],
1294 [
1295 83.93169,
1296 50.69045
1297 ],
1298 [
1299 84.16214,
1300 50.50008
1301 ],
1302 [
1303 84.20435,
1304 50.27332
1305 ],
1306 [
1307 84.31094,
1308 50.17701
1309 ],
1310 [
1311 84.61849,
1312 50.15736
1313 ],
1314 [
1315 84.94911,
1316 50.02382
1317 ],
1318 [
1319 84.94348,
1320 49.87841
1321 ],
1322 [
1323 85.15354,
1324 49.70814
1325 ],
1326 [
1327 85.16417,
1328 49.60616
1329 ],
1330 [
1331 85.23928,
1332 49.54103
1333 ],
1334 [
1335 85.58158,
1336 49.55187
1337 ],
1338 [
1339 85.67419,
1340 49.49991
1341 ],
1342 [
1343 85.88436,
1344 49.50714
1345 ],
1346 [
1347 85.95551,
1348 49.4376
1349 ],
1350 [
1351 86.09463,
1352 49.47158
1353 ],
1354 [
1355 86.21145,
1356 49.41643
1357 ],
1358 [
1359 86.31924,
1360 49.54148
1361 ],
1362 [
1363 86.444,
1364 49.56335
1365 ],
1366 [
1367 86.58109,
1368 49.66593
1369 ],
1370 [
1371 86.54902,
1372 49.61732
1373 ],
1374 [
1375 86.5778,
1376 49.53995
1377 ],
1378 [
1379 86.77356,
1380 49.5029
1381 ],
1382 [
1383 86.79323,
1384 49.42129
1385 ],
1386 [
1387 86.99838,
1388 49.21372
1389 ],
1390 [
1391 87.23516,
1392 49.18828
1393 ],
1394 [
1395 87.24755,
1396 49.0826
1397 ],
1398 [
1399 87.42123,
1400 49.02101
1401 ],
1402 [
1403 87.71537,
1404 49.12298
1405 ],
1406 [
1407 88.00845,
1408 49.13609
1409 ],
1410 [
1411 88.21125,
1412 49.26367
1413 ],
1414 [
1415 88.23826,
1416 49.42432
1417 ],
1418 [
1419 88.59651,
1420 49.44701
1421 ],
1422 [
1423 88.8494,
1424 49.39079
1425 ],
1426 [
1427 88.92032,
1428 49.44588
1429 ],
1430 [
1431 88.9861,
1432 49.41323
1433 ],
1434 [
1435 89.15498,
1436 49.4515
1437 ],
1438 [
1439 89.25965,
1440 49.50635
1441 ],
1442 [
1443 89.27895,
1444 49.56276
1445 ],
1446 [
1447 89.37528,
1448 49.53596
1449 ],
1450 [
1451 89.75596,
1452 49.69343
1453 ],
1454 [
1455 89.7634,
1456 49.80047
1457 ],
1458 [
1459 89.69338,
1460 49.88559
1461 ],
1462 [
1463 90.00121,
1464 49.92667
1465 ],
1466 [
1467 90.07709,
1468 49.97752
1469 ],
1470 [
1471 90.07877,
1472 50.03075
1473 ],
1474 [
1475 90.29256,
1476 50.05998
1477 ],
1478 [
1479 90.52389,
1480 50.18479
1481 ],
1482 [
1483 90.70322,
1484 50.17162
1485 ],
1486 [
1487 90.77261,
1488 50.21512
1489 ],
1490 [
1491 90.78055,
1492 50.27553
1493 ],
1494 [
1495 90.92677,
1496 50.3018
1497 ],
1498 [
1499 90.97181,
1500 50.37544
1501 ],
1502 [
1503 91.4244,
1504 50.40232
1505 ],
1506 [
1507 91.5069,
1508 50.5069
1509 ],
1510 [
1511 91.67377,
1512 50.54436
1513 ],
1514 [
1515 91.70358,
1516 50.61791
1517 ],
1518 [
1519 91.80652,
1520 50.67285
1521 ],
1522 [
1523 92.08418,
1524 50.64518
1525 ],
1526 [
1527 92.27933,
1528 50.68308
1529 ],
1530 [
1531 92.36371,
1532 50.79781
1533 ],
1534 [
1535 92.43545,
1536 50.74418
1537 ],
1538 [
1539 92.54259,
1540 50.74061
1541 ],
1542 [
1543 92.55869,
1544 50.68319
1545 ],
1546 [
1547 92.63326,
1548 50.6551
1549 ],
1550 [
1551 92.77416,
1552 50.68068
1553 ],
1554 [
1555 92.81338,
1556 50.75551
1557 ],
1558 [
1559 92.96927,
1560 50.74261
1561 ],
1562 [
1563 92.92014,
1564 50.63042
1565 ],
1566 [
1567 92.99199,
1568 50.55842
1569 ],
1570 [
1571 93.11647,
1572 50.53637
1573 ],
1574 [
1575 93.44148,
1576 50.57837
1577 ],
1578 [
1579 93.70001,
1580 50.53328
1581 ],
1582 [
1583 94.23916,
1584 50.53319
1585 ],
1586 [
1587 94.29163,
1588 50.48363
1589 ],
1590 [
1591 94.34909,
1592 50.18726
1593 ],
1594 [
1595 94.45798,
1596 50.14274
1597 ],
1598 [
1599 94.60536,
1600 49.98558
1601 ],
1602 [
1603 94.9497,
1604 49.997
1605 ],
1606 [
1607 95.02491,
1608 49.92501
1609 ],
1610 [
1611 95.4031,
1612 49.90624
1613 ],
1614 [
1615 95.52948,
1616 49.85375
1617 ],
1618 [
1619 95.80041,
1620 49.92778
1621 ],
1622 [
1623 95.85203,
1624 49.98876
1625 ],
1626 [
1627 95.96315,
1628 49.9215
1629 ],
1630 [
1631 96.06126,
1632 49.95682
1633 ],
1634 [
1635 96.23183,
1636 49.9262
1637 ],
1638 [
1639 96.40952,
1640 49.82275
1641 ],
1642 [
1643 96.52829,
1644 49.88244
1645 ],
1646 [
1647 96.6104,
1648 49.82108
1649 ],
1650 [
1651 96.72672,
1652 49.86967
1653 ],
1654 [
1655 96.94036,
1656 49.84157
1657 ],
1658 [
1659 97.21371,
1660 49.69574
1661 ],
1662 [
1663 97.33491,
1664 49.70385
1665 ],
1666 [
1667 97.51801,
1668 49.76273
1669 ],
1670 [
1671 97.60912,
1672 49.81855
1673 ],
1674 [
1675 97.63576,
1676 49.89312
1677 ],
1678 [
1679 97.73767,
1680 49.92475
1681 ],
1682 [
1683 97.81343,
1684 49.8756
1685 ],
1686 [
1687 97.91491,
1688 49.88112
1689 ],
1690 [
1691 98.10534,
1692 49.99953
1693 ],
1694 [
1695 98.35058,
1696 50.29995
1697 ],
1698 [
1699 98.37164,
1700 50.52891
1701 ],
1702 [
1703 98.07766,
1704 50.68434
1705 ],
1706 [
1707 98.02749,
1708 50.77358
1709 ],
1710 [
1711 98.07692,
1712 50.89105
1713 ],
1714 [
1715 97.90421,
1716 51.01184
1717 ],
1718 [
1719 98.01436,
1720 51.31991
1721 ],
1722 [
1723 98.08842,
1724 51.40432
1725 ],
1726 [
1727 98.25657,
1728 51.4186
1729 ],
1730 [
1731 98.29632,
1732 51.56664
1733 ],
1734 [
1735 98.4043,
1736 51.68337
1737 ],
1738 [
1739 98.78829,
1740 51.82535
1741 ],
1742 [
1743 98.9223,
1744 52.09636
1745 ],
1746 [
1747 98.99962,
1748 52.02087
1749 ],
1750 [
1751 99.198,
1752 51.97517
1753 ],
1754 [
1755 99.27698,
1756 51.90741
1757 ],
1758 [
1759 99.72202,
1760 51.85495
1761 ],
1762 [
1763 99.85793,
1764 51.71593
1765 ],
1766 [
1767 100.034,
1768 51.67827
1769 ],
1770 [
1771 100.5598,
1772 51.6847
1773 ],
1774 [
1775 101.1288,
1776 51.47283
1777 ],
1778 [
1779 101.2383,
1780 51.48023
1781 ],
1782 [
1783 101.3556,
1784 51.40426
1785 ],
1786 [
1787 101.5145,
1788 51.44502
1789 ],
1790 [
1791 101.6075,
1792 51.3934
1793 ],
1794 [
1795 102.0795,
1796 51.31954
1797 ],
1798 [
1799 102.0841,
1800 51.1035
1801 ],
1802 [
1803 102.173,
1804 50.97255
1805 ],
1806 [
1807 102.1671,
1808 50.80767
1809 ],
1810 [
1811 102.2637,
1812 50.73078
1813 ],
1814 [
1815 102.2659,
1816 50.64856
1817 ],
1818 [
1819 102.4925,
1820 50.54337
1821 ],
1822 [
1823 102.6371,
1824 50.35583
1825 ],
1826 [
1827 102.9291,
1828 50.25778
1829 ],
1830 [
1831 103.2022,
1832 50.27522
1833 ],
1834 [
1835 103.2185,
1836 50.17473
1837 ],
1838 [
1839 103.2692,
1840 50.14192
1841 ],
1842 [
1843 103.4506,
1844 50.15905
1845 ],
1846 [
1847 103.7202,
1848 50.08042
1849 ],
1850 [
1851 103.8655,
1852 50.13703
1853 ],
1854 [
1855 104.1506,
1856 50.09528
1857 ],
1858 [
1859 104.4205,
1860 50.25897
1861 ],
1862 [
1863 104.816,
1864 50.29484
1865 ],
1866 [
1867 104.9176,
1868 50.35659
1869 ],
1870 [
1871 105.1356,
1872 50.34157
1873 ],
1874 [
1875 105.3358,
1876 50.42247
1877 ],
1878 [
1879 105.9772,
1880 50.36646
1881 ],
1882 [
1883 106.0687,
1884 50.28509
1885 ],
1886 [
1887 106.2522,
1888 50.25273
1889 ],
1890 [
1891 106.6131,
1892 50.2864
1893 ],
1894 [
1895 106.9572,
1896 50.16639
1897 ],
1898 [
1899 107.0553,
1900 50.02044
1901 ],
1902 [
1903 107.2216,
1904 49.94051
1905 ],
1906 [
1907 107.8674,
1908 49.88297
1909 ],
1910 [
1911 107.9188,
1912 49.62664
1913 ],
1914 [
1915 108.2573,
1916 49.48815
1917 ],
1918 [
1919 108.3194,
1920 49.3937
1921 ],
1922 [
1923 108.5228,
1924 49.27065
1925 ],
1926 [
1927 109.1851,
1928 49.30017
1929 ],
1930 [
1931 109.5601,
1932 49.16905
1933 ],
1934 [
1935 110.2016,
1936 49.1031
1937 ],
1938 [
1939 110.3939,
1940 49.18066
1941 ],
1942 [
1943 110.675,
1944 49.11985
1945 ],
1946 [
1947 110.8318,
1948 49.13151
1949 ],
1950 [
1951 111.3795,
1952 49.30048
1953 ],
1954 [
1955 111.535,
1956 49.27253
1957 ],
1958 [
1959 111.6978,
1960 49.33232
1961 ],
1962 [
1963 111.9713,
1964 49.33214
1965 ],
1966 [
1967 112.483,
1968 49.47066
1969 ],
1970 [
1971 112.8329,
1972 49.46813
1973 ],
1974 [
1975 113.0753,
1976 49.56811
1977 ],
1978 [
1979 113.2495,
1980 49.79361
1981 ],
1982 [
1983 114.3339,
1984 50.22572
1985 ],
1986 [
1987 114.8412,
1988 50.16705
1989 ],
1990 [
1991 114.9752,
1992 50.12079
1993 ],
1994 [
1995 115.2067,
1996 49.93925
1997 ],
1998 [
1999 115.5053,
2000 49.85507
2001 ],
2002 [
2003 115.7563,
2004 49.83735
2005 ],
2006 [
2007 116.2382,
2008 49.97786
2009 ],
2010 [
2011 116.5947,
2012 49.88062
2013 ],
2014 [
2015 116.6926,
2016 49.79324
2017 ],
2018 [
2019 117.0505,
2020 49.63472
2021 ],
2022 [
2023 117.8774,
2024 49.45985
2025 ],
2026 [
2027 117.9416,
2028 49.54323
2029 ],
2030 [
2031 118.1871,
2032 49.61285
2033 ],
2034 [
2035 118.6009,
2036 49.87309
2037 ],
2038 [
2039 119.0964,
2040 49.93556
2041 ],
2042 [
2043 119.321,
2044 50.07283
2045 ],
2046 [
2047 119.3992,
2048 50.17526
2049 ],
2050 [
2051 119.4274,
2052 50.32667
2053 ],
2054 [
2055 119.3728,
2056 50.40218
2057 ],
2058 [
2059 119.2828,
2060 50.41416
2061 ],
2062 [
2063 119.3404,
2064 50.57032
2065 ],
2066 [
2067 119.5266,
2068 50.70932
2069 ],
2070 [
2071 119.5779,
2072 50.87959
2073 ],
2074 [
2075 119.7974,
2076 51.06188
2077 ],
2078 [
2079 119.8679,
2080 51.23952
2081 ],
2082 [
2083 120.0398,
2084 51.42882
2085 ],
2086 [
2087 120.0956,
2088 51.59387
2089 ],
2090 [
2091 120.6829,
2092 51.88581
2093 ],
2094 [
2095 120.7452,
2096 51.96097
2097 ],
2098 [
2099 120.8298,
2100 52.15832
2101 ],
2102 [
2103 120.79,
2104 52.28908
2105 ],
2106 [
2107 120.6923,
2108 52.34577
2109 ],
2110 [
2111 120.7762,
2112 52.52516
2113 ],
2114 [
2115 120.7613,
2116 52.57697
2117 ],
2118 [
2119 120.4502,
2120 52.69505
2121 ],
2122 [
2123 120.0884,
2124 52.63744
2125 ],
2126 [
2127 120.1049,
2128 52.73635
2129 ],
2130 [
2131 120.3116,
2132 52.82015
2133 ],
2134 [
2135 120.8901,
2136 53.23289
2137 ],
2138 [
2139 121.2326,
2140 53.22818
2141 ],
2142 [
2143 122.3246,
2144 53.44094
2145 ],
2146 [
2147 122.4353,
2148 53.39169
2149 ],
2150 [
2151 122.8514,
2152 53.40464
2153 ],
2154 [
2155 123.1574,
2156 53.45004
2157 ],
2158 [
2159 123.2722,
2160 53.50785
2161 ],
2162 [
2163 123.47,
2164 53.44685
2165 ],
2166 [
2167 123.6187,
2168 53.48627
2169 ],
2170 [
2171 123.8609,
2172 53.43111
2173 ],
2174 [
2175 124.0983,
2176 53.29736
2177 ],
2178 [
2179 124.2257,
2180 53.31909
2181 ],
2182 [
2183 124.4174,
2184 53.16787
2185 ],
2186 [
2187 124.6538,
2188 53.15172
2189 ],
2190 [
2191 124.8532,
2192 53.05015
2193 ],
2194 [
2195 124.9248,
2196 53.06199
2197 ],
2198 [
2199 124.9538,
2200 53.13363
2201 ],
2202 [
2203 125.1487,
2204 53.15071
2205 ],
2206 [
2207 125.4939,
2208 52.99904
2209 ],
2210 [
2211 125.5857,
2212 53.02373
2213 ],
2214 [
2215 125.6394,
2216 52.96569
2217 ],
2218 [
2219 125.6027,
2220 52.90062
2221 ],
2222 [
2223 125.6314,
2224 52.82388
2225 ],
2226 [
2227 125.803,
2228 52.83892
2229 ],
2230 [
2231 125.9434,
2232 52.70869
2233 ],
2234 [
2235 125.9116,
2236 52.65355
2237 ],
2238 [
2239 125.9399,
2240 52.56955
2241 ],
2242 [
2243 126.1223,
2244 52.51982
2245 ],
2246 [
2247 126.1545,
2248 52.42823
2249 ],
2250 [
2251 126.2816,
2252 52.38269
2253 ],
2254 [
2255 126.2711,
2256 52.16747
2257 ],
2258 [
2259 126.4815,
2260 52.10319
2261 ],
2262 [
2263 126.3914,
2264 52.04517
2265 ],
2266 [
2267 126.4073,
2268 51.93178
2269 ],
2270 [
2271 126.6623,
2272 51.67533
2273 ],
2274 [
2275 126.621,
2276 51.59101
2277 ],
2278 [
2279 126.7484,
2280 51.50534
2281 ],
2282 [
2283 126.7256,
2284 51.43632
2285 ],
2286 [
2287 126.7847,
2288 51.37122
2289 ],
2290 [
2291 126.7585,
2292 51.29761
2293 ],
2294 [
2295 126.8431,
2296 51.19485
2297 ],
2298 [
2299 126.8733,
2300 51.03162
2301 ],
2302 [
2303 127.0839,
2304 50.88711
2305 ],
2306 [
2307 127.2297,
2308 50.71578
2309 ],
2310 [
2311 127.2978,
2312 50.57983
2313 ],
2314 [
2315 127.2364,
2316 50.47953
2317 ],
2318 [
2319 127.2909,
2320 50.39955
2321 ],
2322 [
2323 127.2872,
2324 50.30199
2325 ],
2326 [
2327 127.5453,
2328 50.18689
2329 ],
2330 [
2331 127.4377,
2332 50.01178
2333 ],
2334 [
2335 127.5004,
2336 49.77009
2337 ],
2338 [
2339 127.6156,
2340 49.72548
2341 ],
2342 [
2343 127.6583,
2344 49.62535
2345 ],
2346 [
2347 127.8411,
2348 49.52235
2349 ],
2350 [
2351 128.1806,
2352 49.48504
2353 ],
2354 [
2355 128.5465,
2356 49.54902
2357 ],
2358 [
2359 128.6881,
2360 49.51431
2361 ],
2362 [
2363 128.7491,
2364 49.42439
2365 ],
2366 [
2367 128.9727,
2368 49.40282
2369 ],
2370 [
2371 129.0795,
2372 49.30177
2373 ],
2374 [
2375 129.218,
2376 49.34529
2377 ],
2378 [
2379 129.3668,
2380 49.30406
2381 ],
2382 [
2383 129.4291,
2384 49.38526
2385 ],
2386 [
2387 129.4759,
2388 49.37681
2389 ],
2390 [
2391 129.5408,
2392 49.24043
2393 ],
2394 [
2395 129.6882,
2396 49.24001
2397 ],
2398 [
2399 129.8921,
2400 48.99576
2401 ],
2402 [
2403 130.1979,
2404 48.82225
2405 ],
2406 [
2407 130.4284,
2408 48.85132
2409 ],
2410 [
2411 130.5595,
2412 48.8049
2413 ],
2414 [
2415 130.4748,
2416 48.59328
2417 ],
2418 [
2419 130.5535,
2420 48.54617
2421 ],
2422 [
2423 130.5905,
2424 48.4499
2425 ],
2426 [
2427 130.6787,
2428 48.43887
2429 ],
2430 [
2431 130.7561,
2432 48.30394
2433 ],
2434 [
2435 130.6185,
2436 48.14973
2437 ],
2438 [
2439 130.6074,
2440 48.07632
2441 ],
2442 [
2443 130.841,
2444 47.88329
2445 ],
2446 [
2447 130.9676,
2448 47.65113
2449 ],
2450 [
2451 131.0996,
2452 47.63207
2453 ],
2454 [
2455 131.4507,
2456 47.69047
2457 ],
2458 [
2459 131.5963,
2460 47.60511
2461 ],
2462 [
2463 131.7141,
2464 47.65205
2465 ],
2466 [
2467 131.9638,
2468 47.61171
2469 ],
2470 [
2471 132.3304,
2472 47.70502
2473 ],
2474 [
2475 132.568,
2476 47.66682
2477 ],
2478 [
2479 132.644,
2480 47.71194
2481 ],
2482 [
2483 132.7325,
2484 47.88553
2485 ],
2486 [
2487 132.8258,
2488 47.88361
2489 ],
2490 [
2491 133.0785,
2492 48.05274
2493 ],
2494 [
2495 133.5531,
2496 48.07553
2497 ],
2498 [
2499 133.624,
2500 48.14036
2501 ],
2502 [
2503 133.7354,
2504 48.14429
2505 ],
2506 [
2507 133.7865,
2508 48.20655
2509 ],
2510 [
2511 134.2169,
2512 48.33272
2513 ],
2514 [
2515 134.6858,
2516 48.35052
2517 ],
2518 [
2519 134.4936,
2520 47.98576
2521 ],
2522 [
2523 134.7102,
2524 47.72819
2525 ],
2526 [
2527 134.5187,
2528 47.52034
2529 ],
2530 [
2531 134.2986,
2532 47.48392
2533 ],
2534 [
2535 134.1255,
2536 47.3412
2537 ],
2538 [
2539 134.1005,
2540 47.24881
2541 ],
2542 [
2543 134.1693,
2544 47.15426
2545 ],
2546 [
2547 134.0129,
2548 47.00225
2549 ],
2550 [
2551 133.9657,
2552 46.69141
2553 ],
2554 [
2555 133.7971,
2556 46.49669
2557 ],
2558 [
2559 133.8315,
2560 46.29377
2561 ],
2562 [
2563 133.6469,
2564 46.18546
2565 ],
2566 [
2567 133.6674,
2568 46.0558
2569 ],
2570 [
2571 133.4254,
2572 45.87078
2573 ],
2574 [
2575 133.3554,
2576 45.6264
2577 ],
2578 [
2579 133.1504,
2580 45.54089
2581 ],
2582 [
2583 133.0403,
2584 45.29954
2585 ],
2586 [
2587 133.0559,
2588 45.14931
2589 ],
2590 [
2591 132.9346,
2592 45.08232
2593 ],
2594 [
2595 132.0293,
2596 45.29861
2597 ],
2598 [
2599 131.8762,
2600 45.39202
2601 ],
2602 [
2603 131.7397,
2604 45.27829
2605 ],
2606 [
2607 131.6433,
2608 45.25991
2609 ],
2610 [
2611 131.6028,
2612 45.12862
2613 ],
2614 [
2615 131.4421,
2616 45.02841
2617 ],
2618 [
2619 131.0879,
2620 44.98491
2621 ],
2622 [
2623 130.9201,
2624 44.88378
2625 ],
2626 [
2627 130.917,
2628 44.79406
2629 ],
2630 [
2631 131.0654,
2632 44.65677
2633 ],
2634 [
2635 131.2381,
2636 44.08007
2637 ],
2638 [
2639 131.1856,
2640 43.98994
2641 ],
2642 [
2643 131.1361,
2644 43.55799
2645 ],
2646 [
2647 131.2402,
2648 43.41428
2649 ],
2650 [
2651 131.1481,
2652 43.24203
2653 ],
2654 [
2655 131.1502,
2656 43.15951
2657 ],
2658 [
2659 131.0672,
2660 43.08742
2661 ],
2662 [
2663 131.0517,
2664 42.97433
2665 ],
2666 [
2667 130.9582,
2668 42.91953
2669 ],
2670 [
2671 130.8023,
2672 42.93109
2673 ],
2674 [
2675 130.5421,
2676 42.86199
2677 ],
2678 [
2679 130.3442,
2680 42.73033
2681 ],
2682 [
2683 130.3947,
2684 42.66008
2685 ],
2686 [
2687 130.5583,
2688 42.6077
2689 ],
2690 [
2691 130.5039,
2692 42.50742
2693 ],
2694 [
2695 130.6269,
2696 42.28052
2697 ],
2698 [
2699 130.8987,
2700 42.12396
2701 ],
2702 [
2703 133.2675,
2704 39.96882
2705 ],
2706 [
2707 140.789789,
2708 45.836458
2709 ],
2710 [
2711 142.586054,
2712 45.579449
2713 ],
2714 [
2715 145.596308,
2716 44.66475
2717 ],
2718 [
2719 145.431513,
2720 44.13886
2721 ],
2722 [
2723 145.195307,
2724 43.763164
2725 ],
2726 [
2727 145.493316,
2728 43.534612
2729 ],
2730 [
2731 145.828398,
2732 43.384093
2733 ],
2734 [
2735 146.0519,
2736 43.12595
2737 ],
2738 [
2739 180,
2740 35.61404
2741 ],
2742 [
2743 180,
2744 83.83133
2745 ],
2746 [
2747 37.2795,
2748 83.81215
2749 ],
2750 [
2751 31.27848,
2752 70.11174
2753 ],
2754 [
2755 30.77568,
2756 69.82379
2757 ],
2758 [
2759 30.88567,
2760 69.60134
2761 ],
2762 [
2763 30.54062,
2764 69.59318
2765 ],
2766 [
2767 30.24028,
2768 69.70254
2769 ],
2770 [
2771 30.07925,
2772 69.70996
2773 ],
2774 [
2775 30.04604,
2776 69.62395
2777 ],
2778 [
2779 30.11237,
2780 69.57275
2781 ],
2782 [
2783 30.01001,
2784 69.47197
2785 ],
2786 [
2787 29.84288,
2788 69.47344
2789 ],
2790 [
2791 29.56539,
2792 69.37147
2793 ],
2794 [
2795 29.28577,
2796 69.34884
2797 ],
2798 [
2799 29.18916,
2800 69.14856
2801 ],
2802 [
2803 29.04647,
2804 69.07043
2805 ],
2806 [
2807 28.90818,
2808 69.09988
2809 ],
2810 [
2811 28.36758,
2812 68.92939
2813 ],
2814 [
2815 28.45581,
2816 68.83664
2817 ],
2818 [
2819 28.68857,
2820 68.8165
2821 ],
2822 [
2823 28.38412,
2824 68.5494
2825 ],
2826 [
2827 28.61946,
2828 68.15368
2829 ],
2830 [
2831 29.29281,
2832 68.02793
2833 ],
2834 [
2835 29.62745,
2836 67.76365
2837 ],
2838 [
2839 29.92133,
2840 67.63731
2841 ],
2842 [
2843 29.88819,
2844 67.56283
2845 ],
2846 [
2847 29.04771,
2848 67.04106
2849 ],
2850 [
2851 28.98188,
2852 66.93578
2853 ],
2854 [
2855 29.07125,
2856 66.75276
2857 ],
2858 [
2859 29.43544,
2860 66.50602
2861 ],
2862 [
2863 29.66187,
2864 66.23217
2865 ],
2866 [
2867 29.89118,
2868 66.07974
2869 ],
2870 [
2871 30.06695,
2872 65.74475
2873 ],
2874 [
2875 29.67942,
2876 65.66431
2877 ],
2878 [
2879 29.73666,
2880 65.55009
2881 ],
2882 [
2883 29.68779,
2884 65.49607
2885 ],
2886 [
2887 29.67485,
2888 65.36906
2889 ],
2890 [
2891 29.56924,
2892 65.30861
2893 ],
2894 [
2895 29.55285,
2896 65.24834
2897 ],
2898 [
2899 29.61512,
2900 65.18409
2901 ],
2902 [
2903 29.78282,
2904 65.17332
2905 ],
2906 [
2907 29.59119,
2908 65.09738
2909 ],
2910 [
2911 29.54934,
2912 65.00337
2913 ],
2914 [
2915 29.56488,
2916 64.90444
2917 ],
2918 [
2919 29.70682,
2920 64.7489
2921 ],
2922 [
2923 29.99222,
2924 64.74085
2925 ],
2926 [
2927 30.02651,
2928 64.66196
2929 ],
2930 [
2931 29.94633,
2932 64.6067
2933 ],
2934 [
2935 29.93739,
2936 64.52972
2937 ],
2938 [
2939 30.00522,
2940 64.3703
2941 ],
2942 [
2943 30.42164,
2944 64.21392
2945 ],
2946 [
2947 30.49199,
2948 64.10354
2949 ],
2950 [
2951 30.22901,
2952 63.8715
2953 ],
2954 [
2955 29.9702,
2956 63.81066
2957 ],
2958 [
2959 29.93021,
2960 63.72835
2961 ],
2962 [
2963 30.46048,
2964 63.42266
2965 ],
2966 [
2967 30.77099,
2968 63.35498
2969 ],
2970 [
2971 31.18489,
2972 63.18117
2973 ],
2974 [
2975 31.2423,
2976 63.06728
2977 ],
2978 [
2979 31.49568,
2980 62.90009
2981 ],
2982 [
2983 31.11931,
2984 62.48988
2985 ],
2986 [
2987 30.61954,
2988 62.24558
2989 ],
2990 [
2991 29.69859,
2992 61.61222
2993 ],
2994 [
2995 29.4718,
2996 61.53579
2997 ],
2998 [
2999 29.20748,
3000 61.31401
3001 ],
3002 [
3003 28.79581,
3004 61.16649
3005 ],
3006 [
3007 28.63369,
3008 61.00659
3009 ],
3010 [
3011 28.49232,
3012 60.99797
3013 ],
3014 [
3015 27.85071,
3016 60.65141
3017 ],
3018 [
3019 27.64466,
3020 60.46285
3021 ],
3022 [
3023 27.6426,
3024 60.40344
3025 ],
3026 [
3027 27.4862,
3028 60.30133
3029 ],
3030 [
3031 26.86507,
3032 60.16682
3033 ],
3034 [
3035 26.39009,
3036 59.92985
3037 ],
3038 [
3039 26.91914,
3040 59.57938
3041 ],
3042 [
3043 27.82954,
3044 59.53154
3045 ],
3046 [
3047 28.12685,
3048 59.36757
3049 ],
3050 [
3051 27.88014,
3052 59.28753
3053 ],
3054 [
3055 27.68803,
3056 59.01193
3057 ],
3058 [
3059 27.30915,
3060 58.80412
3061 ],
3062 [
3063 27.48362,
3064 58.38673
3065 ],
3066 [
3067 27.44354,
3068 58.20541
3069 ],
3070 [
3071 27.55825,
3072 58.07796
3073 ],
3074 [
3075 27.63487,
3076 57.89748
3077 ],
3078 [
3079 27.51724,
3080 57.87234
3081 ],
3082 [
3083 27.26678,
3084 57.58119
3085 ],
3086 [
3087 27.33297,
3088 57.47116
3089 ],
3090 [
3091 27.48984,
3092 57.48141
3093 ],
3094 [
3095 27.48489,
3096 57.38802
3097 ],
3098 [
3099 27.80667,
3100 57.26726
3101 ],
3102 [
3103 27.77309,
3104 57.18686
3105 ],
3106 [
3107 27.66903,
3108 57.11764
3109 ],
3110 [
3111 27.68045,
3112 56.96759
3113 ],
3114 [
3115 27.60984,
3116 56.82296
3117 ],
3118 [
3119 27.64703,
3120 56.78608
3121 ],
3122 [
3123 27.84829,
3124 56.81343
3125 ],
3126 [
3127 27.86174,
3128 56.71678
3129 ],
3130 [
3131 28.12917,
3132 56.4235
3133 ],
3134 [
3135 28.11273,
3136 56.37153
3137 ],
3138 [
3139 28.16811,
3140 56.28574
3141 ],
3142 [
3143 28.10297,
3144 56.1868
3145 ],
3146 [
3147 28.11991,
3148 56.1093
3149 ],
3150 [
3151 28.30397,
3152 56.00917
3153 ],
3154 [
3155 28.58389,
3156 56.0545
3157 ],
3158 [
3159 28.72857,
3160 55.91646
3161 ],
3162 [
3163 28.86271,
3164 55.905
3165 ],
3166 [
3167 29.06219,
3168 55.97783
3169 ],
3170 [
3171 29.30575,
3172 55.93635
3173 ],
3174 [
3175 29.34851,
3176 55.92022
3177 ],
3178 [
3179 29.31199,
3180 55.74329
3181 ],
3182 [
3183 29.49395,
3184 55.65306
3185 ],
3186 [
3187 29.68037,
3188 55.7369
3189 ],
3190 [
3191 29.81433,
3192 55.73245
3193 ],
3194 [
3195 29.9147,
3196 55.80383
3197 ],
3198 [
3199 30.12313,
3200 55.78048
3201 ],
3202 [
3203 30.23792,
3204 55.81532
3205 ],
3206 [
3207 30.57809,
3208 55.69633
3209 ],
3210 [
3211 30.63959,
3212 55.59844
3213 ],
3214 [
3215 30.75319,
3216 55.54151
3217 ],
3218 [
3219 30.88151,
3220 55.57085
3221 ],
3222 [
3223 30.85992,
3224 55.41069
3225 ],
3226 [
3227 30.78692,
3228 55.36041
3229 ],
3230 [
3231 30.76885,
3232 55.28175
3233 ],
3234 [
3235 30.93431,
3236 55.09108
3237 ],
3238 [
3239 30.78148,
3240 54.97479
3241 ],
3242 [
3243 30.71476,
3244 54.77384
3245 ],
3246 [
3247 30.91914,
3248 54.69588
3249 ],
3250 [
3251 30.97209,
3252 54.6262
3253 ],
3254 [
3255 31.10248,
3256 54.61217
3257 ],
3258 [
3259 31.03625,
3260 54.49514
3261 ],
3262 [
3263 31.18732,
3264 54.41846
3265 ],
3266 [
3267 31.28732,
3268 54.20322
3269 ],
3270 [
3271 31.80737,
3272 54.02874
3273 ],
3274 [
3275 31.79375,
3276 53.94019
3277 ],
3278 [
3279 31.70897,
3280 53.84793
3281 ],
3282 [
3283 31.73503,
3284 53.7526
3285 ],
3286 [
3287 31.89973,
3288 53.72387
3289 ],
3290 [
3291 32.1166,
3292 53.76006
3293 ],
3294 [
3295 32.3069,
3296 53.70644
3297 ],
3298 [
3299 32.44324,
3300 53.5122
3301 ],
3302 [
3303 32.6811,
3304 53.40566
3305 ],
3306 [
3307 32.46274,
3308 53.34737
3309 ],
3310 [
3311 32.41788,
3312 53.2555
3313 ],
3314 [
3315 32.0986,
3316 53.12929
3317 ],
3318 [
3319 31.85271,
3320 53.16265
3321 ],
3322 [
3323 31.81184,
3324 53.22346
3325 ],
3326 [
3327 31.62667,
3328 53.28143
3329 ],
3330 [
3331 31.38296,
3332 53.25917
3333 ],
3334 [
3335 31.28393,
3336 53.09675
3337 ],
3338 [
3339 31.20669,
3340 53.06964
3341 ],
3342 [
3343 31.20841,
3344 52.98805
3345 ],
3346 [
3347 31.53098,
3348 52.75924
3349 ],
3350 [
3351 31.44993,
3352 52.69603
3353 ],
3354 [
3355 31.52909,
3356 52.56008
3357 ],
3358 [
3359 31.48765,
3360 52.46169
3361 ],
3362 [
3363 31.56666,
3364 52.37409
3365 ],
3366 [
3367 31.54027,
3368 52.29675
3369 ],
3370 [
3371 31.75549,
3372 52.06822
3373 ],
3374 [
3375 31.86193,
3376 52.05565
3377 ],
3378 [
3379 31.90689,
3380 51.99334
3381 ],
3382 [
3383 32.09497,
3384 51.98266
3385 ],
3386 [
3387 32.38992,
3388 52.09939
3389 ],
3390 [
3391 32.44809,
3392 52.27175
3393 ],
3394 [
3395 32.6915,
3396 52.19798
3397 ],
3398 [
3399 32.89863,
3400 52.19427
3401 ],
3402 [
3403 33.21088,
3404 52.32006
3405 ],
3406 [
3407 33.54886,
3408 52.25097
3409 ],
3410 [
3411 33.78861,
3412 52.31255
3413 ],
3414 [
3415 34.03332,
3416 52.12261
3417 ],
3418 [
3419 34.01219,
3420 52.07252
3421 ],
3422 [
3423 34.06314,
3424 51.96613
3425 ],
3426 [
3427 34.21642,
3428 51.84007
3429 ],
3430 [
3431 34.35746,
3432 51.79404
3433 ],
3434 [
3435 34.03453,
3436 51.68698
3437 ],
3438 [
3439 34.05617,
3440 51.62284
3441 ],
3442 [
3443 34.21773,
3444 51.50759
3445 ],
3446 [
3447 34.17101,
3448 51.42194
3449 ],
3450 [
3451 34.22899,
3452 51.34658
3453 ],
3454 [
3455 34.19268,
3456 51.23231
3457 ],
3458 [
3459 34.31097,
3460 51.18884
3461 ],
3462 [
3463 34.60857,
3464 51.19203
3465 ],
3466 [
3467 34.70031,
3468 51.12526
3469 ],
3470 [
3471 35.07328,
3472 51.16195
3473 ],
3474 [
3475 35.12019,
3476 51.04252
3477 ],
3478 [
3479 35.27827,
3480 51.00344
3481 ],
3482 [
3483 35.28067,
3484 50.92582
3485 ],
3486 [
3487 35.41448,
3488 50.73853
3489 ],
3490 [
3491 35.35064,
3492 50.67781
3493 ],
3494 [
3495 35.34606,
3496 50.55788
3497 ],
3498 [
3499 35.59275,
3500 50.31192
3501 ],
3502 [
3503 35.7418,
3504 50.3038
3505 ],
3506 [
3507 35.85155,
3508 50.374
3509 ],
3510 [
3511 36.07715,
3512 50.39531
3513 ],
3514 [
3515 36.27515,
3516 50.24484
3517 ],
3518 [
3519 36.46162,
3520 50.25969
3521 ],
3522 [
3523 36.64995,
3524 50.16646
3525 ],
3526 [
3527 36.88982,
3528 50.28679
3529 ],
3530 [
3531 37.16752,
3532 50.30649
3533 ],
3534 [
3535 37.41356,
3536 50.38116
3537 ],
3538 [
3539 37.57234,
3540 50.255
3541 ],
3542 [
3543 37.61331,
3544 50.13249
3545 ],
3546 [
3547 37.73295,
3548 50.03249
3549 ],
3550 [
3551 37.88199,
3552 49.99718
3553 ],
3554 [
3555 38.01555,
3556 49.85233
3557 ],
3558 [
3559 38.19247,
3560 49.896
3561 ],
3562 [
3563 38.28829,
3564 50.02419
3565 ],
3566 [
3567 38.3358,
3568 49.95768
3569 ],
3570 [
3571 38.65124,
3572 49.90573
3573 ],
3574 [
3575 38.92585,
3576 49.74657
3577 ],
3578 [
3579 39.17134,
3580 49.81935
3581 ],
3582 [
3583 39.25245,
3584 49.71591
3585 ],
3586 [
3587 39.54762,
3588 49.68604
3589 ],
3590 [
3591 39.6294,
3592 49.57456
3593 ],
3594 [
3595 39.79514,
3596 49.50784
3597 ],
3598 [
3599 39.99489,
3600 49.54761
3601 ],
3602 [
3603 39.98036,
3604 49.44172
3605 ],
3606 [
3607 40.1341,
3608 49.31827
3609 ],
3610 [
3611 39.89786,
3612 49.11549
3613 ],
3614 [
3615 39.62763,
3616 49.06151
3617 ],
3618 [
3619 39.64642,
3620 48.95187
3621 ],
3622 [
3623 39.75439,
3624 48.87157
3625 ],
3626 [
3627 39.65966,
3628 48.74513
3629 ],
3630 [
3631 39.61548,
3632 48.58986
3633 ],
3634 [
3635 39.66738,
3636 48.53953
3637 ],
3638 [
3639 39.80232,
3640 48.52768
3641 ],
3642 [
3643 39.79789,
3644 48.45847
3645 ],
3646 [
3647 39.85571,
3648 48.39424
3649 ],
3650 [
3651 39.79521,
3652 48.35044
3653 ],
3654 [
3655 39.79541,
3656 48.28809
3657 ],
3658 [
3659 39.8875,
3660 48.22399
3661 ],
3662 [
3663 39.73231,
3664 48.06436
3665 ],
3666 [
3667 39.76046,
3668 47.97173
3669 ],
3670 [
3671 39.71582,
3672 47.88397
3673 ],
3674 [
3675 38.87402,
3676 47.9262
3677 ],
3678 [
3679 38.74584,
3680 47.84248
3681 ],
3682 [
3683 38.72452,
3684 47.75158
3685 ],
3686 [
3687 38.32055,
3688 47.6572
3689 ],
3690 [
3691 38.2375,
3692 47.56339
3693 ],
3694 [
3695 38.24691,
3696 47.42509
3697 ],
3698 [
3699 38.17056,
3700 47.33226
3701 ],
3702 [
3703 38.17948,
3704 47.11301
3705 ],
3706 [
3707 38.23594,
3708 46.98468
3709 ],
3710 [
3711 38.11227,
3712 46.91138
3713 ],
3714 [
3715 37.62322,
3716 46.88217
3717 ],
3718 [
3719 37.41553,
3720 46.76322
3721 ],
3722 [
3723 36.64303,
3724 45.68821
3725 ],
3726 [
3727 36.33254,
3728 45.72272
3729 ],
3730 [
3731 35.99696,
3732 45.67179
3733 ],
3734 [
3735 35.78323,
3736 45.6953
3737 ],
3738 [
3739 35.5479,
3740 45.57771
3741 ],
3742 [
3743 35.25239,
3744 45.8388
3745 ],
3746 [
3747 34.95522,
3748 45.81513
3749 ],
3750 [
3751 34.86024,
3752 45.85082
3753 ],
3754 [
3755 34.834,
3756 45.94033
3757 ],
3758 [
3759 34.64487,
3760 46.03539
3761 ],
3762 [
3763 34.56099,
3764 46.04619
3765 ],
3766 [
3767 34.48616,
3768 45.99791
3769 ],
3770 [
3771 34.35945,
3772 46.10523
3773 ],
3774 [
3775 33.64373,
3776 46.28118
3777 ],
3778 [
3779 33.57107,
3780 46.24987
3781 ],
3782 [
3783 33.57418,
3784 46.17282
3785 ],
3786 [
3787 33.50204,
3788 46.05619
3789 ],
3790 [
3791 32.76382,
3792 45.87799
3793 ],
3794 [
3795 32.29008,
3796 45.63796
3797 ],
3798 [
3799 32.15053,
3800 45.4186
3801 ],
3802 [
3803 32.24215,
3804 45.18556
3805 ],
3806 [
3807 32.58196,
3808 45.06437
3809 ],
3810 [
3811 32.81426,
3812 45.08492
3813 ],
3814 [
3815 33.1961,
3816 44.89718
3817 ],
3818 [
3819 33.18807,
3820 44.79736
3821 ],
3822 [
3823 33.04632,
3824 44.63244
3825 ],
3826 [
3827 33.08447,
3828 44.45073
3829 ],
3830 [
3831 33.28842,
3832 44.28003
3833 ],
3834 [
3835 33.73338,
3836 44.13411
3837 ],
3838 [
3839 34.25741,
3840 44.18416
3841 ],
3842 [
3843 34.56984,
3844 44.35196
3845 ],
3846 [
3847 34.75216,
3848 44.53336
3849 ],
3850 [
3851 35.19419,
3852 44.54824
3853 ],
3854 [
3855 35.63792,
3856 44.77878
3857 ],
3858 [
3859 35.86723,
3860 44.74156
3861 ],
3862 [
3863 36.3213,
3864 44.7814
3865 ],
3866 [
3867 36.62697,
3868 44.88227
3869 ],
3870 [
3871 36.82653,
3872 44.86342
3873 ],
3874 [
3875 36.99347,
3876 44.80367
3877 ],
3878 [
3879 37.13441,
3880 44.60302
3881 ],
3882 [
3883 37.30884,
3884 44.50028
3885 ],
3886 [
3887 37.72977,
3888 44.41796
3889 ],
3890 [
3891 38.06819,
3892 44.20528
3893 ],
3894 [
3895 38.58442,
3896 44.07787
3897 ],
3898 [
3899 39.0957,
3900 43.73459
3901 ],
3902 [
3903 39.77181,
3904 43.19436
3905 ],
3906 [
3907 39.92102,
3908 43.18958
3909 ],
3910 [
3911 40.14963,
3912 43.51766
3913 ],
3914 [
3915 40.53619,
3916 43.46775
3917 ],
3918 [
3919 40.65366,
3920 43.50114
3921 ],
3922 [
3923 40.9289,
3924 43.37216
3925 ],
3926 [
3927 41.36808,
3928 43.30067
3929 ],
3930 [
3931 41.61549,
3932 43.17233
3933 ],
3934 [
3935 42.04859,
3936 43.13725
3937 ],
3938 [
3939 42.39962,
3940 43.19365
3941 ],
3942 [
3943 42.66235,
3944 43.08262
3945 ],
3946 [
3947 42.73485,
3948 43.1274
3949 ],
3950 [
3951 42.84302,
3952 43.12009
3953 ],
3954 [
3955 43.17041,
3956 42.88863
3957 ],
3958 [
3959 43.54686,
3960 42.81264
3961 ],
3962 [
3963 43.73402,
3964 42.71448
3965 ],
3966 [
3967 43.67202,
3968 42.66099
3969 ],
3970 [
3971 43.67724,
3972 42.59853
3973 ],
3974 [
3975 43.93197,
3976 42.50111
3977 ],
3978 [
3979 44.2535,
3980 42.58062
3981 ],
3982 [
3983 44.3303,
3984 42.66346
3985 ],
3986 [
3987 44.53225,
3988 42.64866
3989 ],
3990 [
3991 44.57483,
3992 42.69518
3993 ],
3994 [
3995 44.69127,
3996 42.69116
3997 ],
3998 [
3999 44.81052,
4000 42.56385
4001 ],
4002 [
4003 44.86958,
4004 42.58652
4005 ],
4006 [
4007 44.92369,
4008 42.69655
4009 ],
4010 [
4011 45.03821,
4012 42.64202
4013 ],
4014 [
4015 45.12851,
4016 42.6547
4017 ],
4018 [
4019 45.32356,
4020 42.47483
4021 ],
4022 [
4023 45.54435,
4024 42.4928
4025 ],
4026 [
4027 45.70059,
4028 42.42948
4029 ],
4030 [
4031 45.68852,
4032 42.34632
4033 ],
4034 [
4035 45.56284,
4036 42.25334
4037 ],
4038 [
4039 45.61474,
4040 42.14678
4041 ],
4042 [
4043 45.77294,
4044 42.05502
4045 ],
4046 [
4047 45.86065,
4048 42.05444
4049 ],
4050 [
4051 45.91019,
4052 41.98434
4053 ],
4054 [
4055 46.20599,
4056 41.9492
4057 ],
4058 [
4059 46.49783,
4060 41.83242
4061 ],
4062 [
4063 46.55742,
4064 41.75878
4065 ],
4066 [
4067 46.72213,
4068 41.77576
4069 ],
4070 [
4071 46.94197,
4072 41.60451
4073 ],
4074 [
4075 46.98537,
4076 41.51775
4077 ],
4078 [
4079 47.10308,
4080 41.50738
4081 ],
4082 [
4083 47.24051,
4084 41.28804
4085 ],
4086 [
4087 47.45024,
4088 41.21199
4089 ]
4090 ]
4091 ]
4092 ]
4093 }
4094 }
0 {
1 "type": "FeatureCollection",
2 "name": "russia",
3 "crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } },
4 "features": [
5 { "type": "Feature", "properties": { "name": "polygon" }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ 47.45024, 41.21199 ], [ 47.24051, 41.28804 ], [ 47.10308, 41.50738 ], [ 46.98537, 41.51775 ], [ 46.94197, 41.60451 ], [ 46.72213, 41.77576 ], [ 46.55742, 41.75878 ], [ 46.49783, 41.83242 ], [ 46.20599, 41.9492 ], [ 45.91019, 41.98434 ], [ 45.86065, 42.05444 ], [ 45.77294, 42.05502 ], [ 45.61474, 42.14678 ], [ 45.56284, 42.25334 ], [ 45.68852, 42.34632 ], [ 45.70059, 42.42948 ], [ 45.54435, 42.4928 ], [ 45.32356, 42.47483 ], [ 45.12851, 42.6547 ], [ 45.03821, 42.64202 ], [ 44.92369, 42.69655 ], [ 44.86958, 42.58652 ], [ 44.81052, 42.56385 ], [ 44.69127, 42.69116 ], [ 44.57483, 42.69518 ], [ 44.53225, 42.64866 ], [ 44.3303, 42.66346 ], [ 44.2535, 42.58062 ], [ 43.93197, 42.50111 ], [ 43.67724, 42.59853 ], [ 43.67202, 42.66099 ], [ 43.73402, 42.71448 ], [ 43.54686, 42.81264 ], [ 43.17041, 42.88863 ], [ 42.84302, 43.12009 ], [ 42.73485, 43.1274 ], [ 42.66235, 43.08262 ], [ 42.39962, 43.19365 ], [ 42.04859, 43.13725 ], [ 41.61549, 43.17233 ], [ 41.36808, 43.30067 ], [ 40.9289, 43.37216 ], [ 40.65366, 43.50114 ], [ 40.53619, 43.46775 ], [ 40.14963, 43.51766 ], [ 39.92102, 43.18958 ], [ 39.77181, 43.19436 ], [ 39.0957, 43.73459 ], [ 38.58442, 44.07787 ], [ 38.06819, 44.20528 ], [ 37.72977, 44.41796 ], [ 37.30884, 44.50028 ], [ 37.13441, 44.60302 ], [ 36.99347, 44.80367 ], [ 36.82653, 44.86342 ], [ 36.62697, 44.88227 ], [ 36.3213, 44.7814 ], [ 35.86723, 44.74156 ], [ 35.63792, 44.77878 ], [ 35.19419, 44.54824 ], [ 34.75216, 44.53336 ], [ 34.56984, 44.35196 ], [ 34.25741, 44.18416 ], [ 33.73338, 44.13411 ], [ 33.28842, 44.28003 ], [ 33.08447, 44.45073 ], [ 33.04632, 44.63244 ], [ 33.18807, 44.79736 ], [ 33.1961, 44.89718 ], [ 32.81426, 45.08492 ], [ 32.58196, 45.06437 ], [ 32.24215, 45.18556 ], [ 32.15053, 45.4186 ], [ 32.29008, 45.63796 ], [ 32.76382, 45.87799 ], [ 33.50204, 46.05619 ], [ 33.57418, 46.17282 ], [ 33.57107, 46.24987 ], [ 33.64373, 46.28118 ], [ 34.35945, 46.10523 ], [ 34.48616, 45.99791 ], [ 34.56099, 46.04619 ], [ 34.64487, 46.03539 ], [ 34.834, 45.94033 ], [ 34.86024, 45.85082 ], [ 34.95522, 45.81513 ], [ 35.25239, 45.8388 ], [ 35.5479, 45.57771 ], [ 35.78323, 45.6953 ], [ 35.99696, 45.67179 ], [ 36.33254, 45.72272 ], [ 36.64303, 45.68821 ], [ 37.41553, 46.76322 ], [ 37.62322, 46.88217 ], [ 38.11227, 46.91138 ], [ 38.23594, 46.98468 ], [ 38.17948, 47.11301 ], [ 38.17056, 47.33226 ], [ 38.24691, 47.42509 ], [ 38.2375, 47.56339 ], [ 38.32055, 47.6572 ], [ 38.72452, 47.75158 ], [ 38.74584, 47.84248 ], [ 38.87402, 47.9262 ], [ 39.71582, 47.88397 ], [ 39.76046, 47.97173 ], [ 39.73231, 48.06436 ], [ 39.8875, 48.22399 ], [ 39.79541, 48.28809 ], [ 39.79521, 48.35044 ], [ 39.85571, 48.39424 ], [ 39.79789, 48.45847 ], [ 39.80232, 48.52768 ], [ 39.66738, 48.53953 ], [ 39.61548, 48.58986 ], [ 39.65966, 48.74513 ], [ 39.75439, 48.87157 ], [ 39.64642, 48.95187 ], [ 39.62763, 49.06151 ], [ 39.89786, 49.11549 ], [ 40.1341, 49.31827 ], [ 39.98036, 49.44172 ], [ 39.99489, 49.54761 ], [ 39.79514, 49.50784 ], [ 39.6294, 49.57456 ], [ 39.54762, 49.68604 ], [ 39.25245, 49.71591 ], [ 39.17134, 49.81935 ], [ 38.92585, 49.74657 ], [ 38.65124, 49.90573 ], [ 38.3358, 49.95768 ], [ 38.28829, 50.02419 ], [ 38.19247, 49.896 ], [ 38.01555, 49.85233 ], [ 37.88199, 49.99718 ], [ 37.73295, 50.03249 ], [ 37.61331, 50.13249 ], [ 37.57234, 50.255 ], [ 37.41356, 50.38116 ], [ 37.16752, 50.30649 ], [ 36.88982, 50.28679 ], [ 36.64995, 50.16646 ], [ 36.46162, 50.25969 ], [ 36.27515, 50.24484 ], [ 36.07715, 50.39531 ], [ 35.85155, 50.374 ], [ 35.7418, 50.3038 ], [ 35.59275, 50.31192 ], [ 35.34606, 50.55788 ], [ 35.35064, 50.67781 ], [ 35.41448, 50.73853 ], [ 35.28067, 50.92582 ], [ 35.27827, 51.00344 ], [ 35.12019, 51.04252 ], [ 35.07328, 51.16195 ], [ 34.70031, 51.12526 ], [ 34.60857, 51.19203 ], [ 34.31097, 51.18884 ], [ 34.19268, 51.23231 ], [ 34.22899, 51.34658 ], [ 34.17101, 51.42194 ], [ 34.21773, 51.50759 ], [ 34.05617, 51.62284 ], [ 34.03453, 51.68698 ], [ 34.35746, 51.79404 ], [ 34.21642, 51.84007 ], [ 34.06314, 51.96613 ], [ 34.01219, 52.07252 ], [ 34.03332, 52.12261 ], [ 33.78861, 52.31255 ], [ 33.54886, 52.25097 ], [ 33.21088, 52.32006 ], [ 32.89863, 52.19427 ], [ 32.6915, 52.19798 ], [ 32.44809, 52.27175 ], [ 32.38992, 52.09939 ], [ 32.09497, 51.98266 ], [ 31.90689, 51.99334 ], [ 31.86193, 52.05565 ], [ 31.75549, 52.06822 ], [ 31.54027, 52.29675 ], [ 31.56666, 52.37409 ], [ 31.48765, 52.46169 ], [ 31.52909, 52.56008 ], [ 31.44993, 52.69603 ], [ 31.53098, 52.75924 ], [ 31.20841, 52.98805 ], [ 31.20669, 53.06964 ], [ 31.28393, 53.09675 ], [ 31.38296, 53.25917 ], [ 31.62667, 53.28143 ], [ 31.81184, 53.22346 ], [ 31.85271, 53.16265 ], [ 32.0986, 53.12929 ], [ 32.41788, 53.2555 ], [ 32.46274, 53.34737 ], [ 32.6811, 53.40566 ], [ 32.44324, 53.5122 ], [ 32.3069, 53.70644 ], [ 32.1166, 53.76006 ], [ 31.89973, 53.72387 ], [ 31.73503, 53.7526 ], [ 31.70897, 53.84793 ], [ 31.79375, 53.94019 ], [ 31.80737, 54.02874 ], [ 31.28732, 54.20322 ], [ 31.18732, 54.41846 ], [ 31.03625, 54.49514 ], [ 31.10248, 54.61217 ], [ 30.97209, 54.6262 ], [ 30.91914, 54.69588 ], [ 30.71476, 54.77384 ], [ 30.78148, 54.97479 ], [ 30.93431, 55.09108 ], [ 30.76885, 55.28175 ], [ 30.78692, 55.36041 ], [ 30.85992, 55.41069 ], [ 30.88151, 55.57085 ], [ 30.75319, 55.54151 ], [ 30.63959, 55.59844 ], [ 30.57809, 55.69633 ], [ 30.23792, 55.81532 ], [ 30.12313, 55.78048 ], [ 29.9147, 55.80383 ], [ 29.81433, 55.73245 ], [ 29.68037, 55.7369 ], [ 29.49395, 55.65306 ], [ 29.31199, 55.74329 ], [ 29.34851, 55.92022 ], [ 29.30575, 55.93635 ], [ 29.06219, 55.97783 ], [ 28.86271, 55.905 ], [ 28.72857, 55.91646 ], [ 28.58389, 56.0545 ], [ 28.30397, 56.00917 ], [ 28.11991, 56.1093 ], [ 28.10297, 56.1868 ], [ 28.16811, 56.28574 ], [ 28.11273, 56.37153 ], [ 28.12917, 56.4235 ], [ 27.86174, 56.71678 ], [ 27.84829, 56.81343 ], [ 27.64703, 56.78608 ], [ 27.60984, 56.82296 ], [ 27.68045, 56.96759 ], [ 27.66903, 57.11764 ], [ 27.77309, 57.18686 ], [ 27.80667, 57.26726 ], [ 27.48489, 57.38802 ], [ 27.48984, 57.48141 ], [ 27.33297, 57.47116 ], [ 27.26678, 57.58119 ], [ 27.51724, 57.87234 ], [ 27.63487, 57.89748 ], [ 27.55825, 58.07796 ], [ 27.44354, 58.20541 ], [ 27.48362, 58.38673 ], [ 27.30915, 58.80412 ], [ 27.68803, 59.01193 ], [ 27.88014, 59.28753 ], [ 28.12685, 59.36757 ], [ 27.82954, 59.53154 ], [ 26.91914, 59.57938 ], [ 26.39009, 59.92985 ], [ 26.86507, 60.16682 ], [ 27.4862, 60.30133 ], [ 27.6426, 60.40344 ], [ 27.64466, 60.46285 ], [ 27.85071, 60.65141 ], [ 28.49232, 60.99797 ], [ 28.63369, 61.00659 ], [ 28.79581, 61.16649 ], [ 29.20748, 61.31401 ], [ 29.4718, 61.53579 ], [ 29.69859, 61.61222 ], [ 30.61954, 62.24558 ], [ 31.11931, 62.48988 ], [ 31.49568, 62.90009 ], [ 31.2423, 63.06728 ], [ 31.18489, 63.18117 ], [ 30.77099, 63.35498 ], [ 30.46048, 63.42266 ], [ 29.93021, 63.72835 ], [ 29.9702, 63.81066 ], [ 30.22901, 63.8715 ], [ 30.49199, 64.10354 ], [ 30.42164, 64.21392 ], [ 30.00522, 64.3703 ], [ 29.93739, 64.52972 ], [ 29.94633, 64.6067 ], [ 30.02651, 64.66196 ], [ 29.99222, 64.74085 ], [ 29.70682, 64.7489 ], [ 29.56488, 64.90444 ], [ 29.54934, 65.00337 ], [ 29.59119, 65.09738 ], [ 29.78282, 65.17332 ], [ 29.61512, 65.18409 ], [ 29.55285, 65.24834 ], [ 29.56924, 65.30861 ], [ 29.67485, 65.36906 ], [ 29.68779, 65.49607 ], [ 29.73666, 65.55009 ], [ 29.67942, 65.66431 ], [ 30.06695, 65.74475 ], [ 29.89118, 66.07974 ], [ 29.66187, 66.23217 ], [ 29.43544, 66.50602 ], [ 29.07125, 66.75276 ], [ 28.98188, 66.93578 ], [ 29.04771, 67.04106 ], [ 29.88819, 67.56283 ], [ 29.92133, 67.63731 ], [ 29.62745, 67.76365 ], [ 29.29281, 68.02793 ], [ 28.61946, 68.15368 ], [ 28.38412, 68.5494 ], [ 28.68857, 68.8165 ], [ 28.45581, 68.83664 ], [ 28.36758, 68.92939 ], [ 28.90818, 69.09988 ], [ 29.04647, 69.07043 ], [ 29.18916, 69.14856 ], [ 29.28577, 69.34884 ], [ 29.56539, 69.37147 ], [ 29.84288, 69.47344 ], [ 30.01001, 69.47197 ], [ 30.11237, 69.57275 ], [ 30.04604, 69.62395 ], [ 30.07925, 69.70996 ], [ 30.24028, 69.70254 ], [ 30.54062, 69.59318 ], [ 30.88567, 69.60134 ], [ 30.77568, 69.82379 ], [ 31.27848, 70.11174 ], [ 37.2795, 83.81215 ], [ 180.0, 83.83133 ], [ 180.0, 35.61404 ], [ 146.0519, 43.12595 ], [ 145.828398, 43.384093 ], [ 145.493316, 43.534612 ], [ 145.195307, 43.763164 ], [ 145.431513, 44.13886 ], [ 145.596308, 44.66475 ], [ 142.586054, 45.579449 ], [ 140.789789, 45.836458 ], [ 133.2675, 39.96882 ], [ 130.8987, 42.12396 ], [ 130.6269, 42.28052 ], [ 130.5039, 42.50742 ], [ 130.5583, 42.6077 ], [ 130.3947, 42.66008 ], [ 130.3442, 42.73033 ], [ 130.5421, 42.86199 ], [ 130.8023, 42.93109 ], [ 130.9582, 42.91953 ], [ 131.0517, 42.97433 ], [ 131.0672, 43.08742 ], [ 131.1502, 43.15951 ], [ 131.1481, 43.24203 ], [ 131.2402, 43.41428 ], [ 131.1361, 43.55799 ], [ 131.1856, 43.98994 ], [ 131.2381, 44.08007 ], [ 131.0654, 44.65677 ], [ 130.917, 44.79406 ], [ 130.9201, 44.88378 ], [ 131.0879, 44.98491 ], [ 131.4421, 45.02841 ], [ 131.6028, 45.12862 ], [ 131.6433, 45.25991 ], [ 131.7397, 45.27829 ], [ 131.8762, 45.39202 ], [ 132.0293, 45.29861 ], [ 132.9346, 45.08232 ], [ 133.0559, 45.14931 ], [ 133.0403, 45.29954 ], [ 133.1504, 45.54089 ], [ 133.3554, 45.6264 ], [ 133.4254, 45.87078 ], [ 133.6674, 46.0558 ], [ 133.6469, 46.18546 ], [ 133.8315, 46.29377 ], [ 133.7971, 46.49669 ], [ 133.9657, 46.69141 ], [ 134.0129, 47.00225 ], [ 134.1693, 47.15426 ], [ 134.1005, 47.24881 ], [ 134.1255, 47.3412 ], [ 134.2986, 47.48392 ], [ 134.5187, 47.52034 ], [ 134.7102, 47.72819 ], [ 134.4936, 47.98576 ], [ 134.6858, 48.35052 ], [ 134.2169, 48.33272 ], [ 133.7865, 48.20655 ], [ 133.7354, 48.14429 ], [ 133.624, 48.14036 ], [ 133.5531, 48.07553 ], [ 133.0785, 48.05274 ], [ 132.8258, 47.88361 ], [ 132.7325, 47.88553 ], [ 132.644, 47.71194 ], [ 132.568, 47.66682 ], [ 132.3304, 47.70502 ], [ 131.9638, 47.61171 ], [ 131.7141, 47.65205 ], [ 131.5963, 47.60511 ], [ 131.4507, 47.69047 ], [ 131.0996, 47.63207 ], [ 130.9676, 47.65113 ], [ 130.841, 47.88329 ], [ 130.6074, 48.07632 ], [ 130.6185, 48.14973 ], [ 130.7561, 48.30394 ], [ 130.6787, 48.43887 ], [ 130.5905, 48.4499 ], [ 130.5535, 48.54617 ], [ 130.4748, 48.59328 ], [ 130.5595, 48.8049 ], [ 130.4284, 48.85132 ], [ 130.1979, 48.82225 ], [ 129.8921, 48.99576 ], [ 129.6882, 49.24001 ], [ 129.5408, 49.24043 ], [ 129.4759, 49.37681 ], [ 129.4291, 49.38526 ], [ 129.3668, 49.30406 ], [ 129.218, 49.34529 ], [ 129.0795, 49.30177 ], [ 128.9727, 49.40282 ], [ 128.7491, 49.42439 ], [ 128.6881, 49.51431 ], [ 128.5465, 49.54902 ], [ 128.1806, 49.48504 ], [ 127.8411, 49.52235 ], [ 127.6583, 49.62535 ], [ 127.6156, 49.72548 ], [ 127.5004, 49.77009 ], [ 127.4377, 50.01178 ], [ 127.5453, 50.18689 ], [ 127.2872, 50.30199 ], [ 127.2909, 50.39955 ], [ 127.2364, 50.47953 ], [ 127.2978, 50.57983 ], [ 127.2297, 50.71578 ], [ 127.0839, 50.88711 ], [ 126.8733, 51.03162 ], [ 126.8431, 51.19485 ], [ 126.7585, 51.29761 ], [ 126.7847, 51.37122 ], [ 126.7256, 51.43632 ], [ 126.7484, 51.50534 ], [ 126.621, 51.59101 ], [ 126.6623, 51.67533 ], [ 126.4073, 51.93178 ], [ 126.3914, 52.04517 ], [ 126.4815, 52.10319 ], [ 126.2711, 52.16747 ], [ 126.2816, 52.38269 ], [ 126.1545, 52.42823 ], [ 126.1223, 52.51982 ], [ 125.9399, 52.56955 ], [ 125.9116, 52.65355 ], [ 125.9434, 52.70869 ], [ 125.803, 52.83892 ], [ 125.6314, 52.82388 ], [ 125.6027, 52.90062 ], [ 125.6394, 52.96569 ], [ 125.5857, 53.02373 ], [ 125.4939, 52.99904 ], [ 125.1487, 53.15071 ], [ 124.9538, 53.13363 ], [ 124.9248, 53.06199 ], [ 124.8532, 53.05015 ], [ 124.6538, 53.15172 ], [ 124.4174, 53.16787 ], [ 124.2257, 53.31909 ], [ 124.0983, 53.29736 ], [ 123.8609, 53.43111 ], [ 123.6187, 53.48627 ], [ 123.47, 53.44685 ], [ 123.2722, 53.50785 ], [ 123.1574, 53.45004 ], [ 122.8514, 53.40464 ], [ 122.4353, 53.39169 ], [ 122.3246, 53.44094 ], [ 121.2326, 53.22818 ], [ 120.8901, 53.23289 ], [ 120.3116, 52.82015 ], [ 120.1049, 52.73635 ], [ 120.0884, 52.63744 ], [ 120.4502, 52.69505 ], [ 120.7613, 52.57697 ], [ 120.7762, 52.52516 ], [ 120.6923, 52.34577 ], [ 120.79, 52.28908 ], [ 120.8298, 52.15832 ], [ 120.7452, 51.96097 ], [ 120.6829, 51.88581 ], [ 120.0956, 51.59387 ], [ 120.0398, 51.42882 ], [ 119.8679, 51.23952 ], [ 119.7974, 51.06188 ], [ 119.5779, 50.87959 ], [ 119.5266, 50.70932 ], [ 119.3404, 50.57032 ], [ 119.2828, 50.41416 ], [ 119.3728, 50.40218 ], [ 119.4274, 50.32667 ], [ 119.3992, 50.17526 ], [ 119.321, 50.07283 ], [ 119.0964, 49.93556 ], [ 118.6009, 49.87309 ], [ 118.1871, 49.61285 ], [ 117.9416, 49.54323 ], [ 117.8774, 49.45985 ], [ 117.0505, 49.63472 ], [ 116.6926, 49.79324 ], [ 116.5947, 49.88062 ], [ 116.2382, 49.97786 ], [ 115.7563, 49.83735 ], [ 115.5053, 49.85507 ], [ 115.2067, 49.93925 ], [ 114.9752, 50.12079 ], [ 114.8412, 50.16705 ], [ 114.3339, 50.22572 ], [ 113.2495, 49.79361 ], [ 113.0753, 49.56811 ], [ 112.8329, 49.46813 ], [ 112.483, 49.47066 ], [ 111.9713, 49.33214 ], [ 111.6978, 49.33232 ], [ 111.535, 49.27253 ], [ 111.3795, 49.30048 ], [ 110.8318, 49.13151 ], [ 110.675, 49.11985 ], [ 110.3939, 49.18066 ], [ 110.2016, 49.1031 ], [ 109.5601, 49.16905 ], [ 109.1851, 49.30017 ], [ 108.5228, 49.27065 ], [ 108.3194, 49.3937 ], [ 108.2573, 49.48815 ], [ 107.9188, 49.62664 ], [ 107.8674, 49.88297 ], [ 107.2216, 49.94051 ], [ 107.0553, 50.02044 ], [ 106.9572, 50.16639 ], [ 106.6131, 50.2864 ], [ 106.2522, 50.25273 ], [ 106.0687, 50.28509 ], [ 105.9772, 50.36646 ], [ 105.3358, 50.42247 ], [ 105.1356, 50.34157 ], [ 104.9176, 50.35659 ], [ 104.816, 50.29484 ], [ 104.4205, 50.25897 ], [ 104.1506, 50.09528 ], [ 103.8655, 50.13703 ], [ 103.7202, 50.08042 ], [ 103.4506, 50.15905 ], [ 103.2692, 50.14192 ], [ 103.2185, 50.17473 ], [ 103.2022, 50.27522 ], [ 102.9291, 50.25778 ], [ 102.6371, 50.35583 ], [ 102.4925, 50.54337 ], [ 102.2659, 50.64856 ], [ 102.2637, 50.73078 ], [ 102.1671, 50.80767 ], [ 102.173, 50.97255 ], [ 102.0841, 51.1035 ], [ 102.0795, 51.31954 ], [ 101.6075, 51.3934 ], [ 101.5145, 51.44502 ], [ 101.3556, 51.40426 ], [ 101.2383, 51.48023 ], [ 101.1288, 51.47283 ], [ 100.5598, 51.6847 ], [ 100.034, 51.67827 ], [ 99.85793, 51.71593 ], [ 99.72202, 51.85495 ], [ 99.27698, 51.90741 ], [ 99.198, 51.97517 ], [ 98.99962, 52.02087 ], [ 98.9223, 52.09636 ], [ 98.78829, 51.82535 ], [ 98.4043, 51.68337 ], [ 98.29632, 51.56664 ], [ 98.25657, 51.4186 ], [ 98.08842, 51.40432 ], [ 98.01436, 51.31991 ], [ 97.90421, 51.01184 ], [ 98.07692, 50.89105 ], [ 98.02749, 50.77358 ], [ 98.07766, 50.68434 ], [ 98.37164, 50.52891 ], [ 98.35058, 50.29995 ], [ 98.10534, 49.99953 ], [ 97.91491, 49.88112 ], [ 97.81343, 49.8756 ], [ 97.73767, 49.92475 ], [ 97.63576, 49.89312 ], [ 97.60912, 49.81855 ], [ 97.51801, 49.76273 ], [ 97.33491, 49.70385 ], [ 97.21371, 49.69574 ], [ 96.94036, 49.84157 ], [ 96.72672, 49.86967 ], [ 96.6104, 49.82108 ], [ 96.52829, 49.88244 ], [ 96.40952, 49.82275 ], [ 96.23183, 49.9262 ], [ 96.06126, 49.95682 ], [ 95.96315, 49.9215 ], [ 95.85203, 49.98876 ], [ 95.80041, 49.92778 ], [ 95.52948, 49.85375 ], [ 95.4031, 49.90624 ], [ 95.02491, 49.92501 ], [ 94.9497, 49.997 ], [ 94.60536, 49.98558 ], [ 94.45798, 50.14274 ], [ 94.34909, 50.18726 ], [ 94.29163, 50.48363 ], [ 94.23916, 50.53319 ], [ 93.70001, 50.53328 ], [ 93.44148, 50.57837 ], [ 93.11647, 50.53637 ], [ 92.99199, 50.55842 ], [ 92.92014, 50.63042 ], [ 92.96927, 50.74261 ], [ 92.81338, 50.75551 ], [ 92.77416, 50.68068 ], [ 92.63326, 50.6551 ], [ 92.55869, 50.68319 ], [ 92.54259, 50.74061 ], [ 92.43545, 50.74418 ], [ 92.36371, 50.79781 ], [ 92.27933, 50.68308 ], [ 92.08418, 50.64518 ], [ 91.80652, 50.67285 ], [ 91.70358, 50.61791 ], [ 91.67377, 50.54436 ], [ 91.5069, 50.5069 ], [ 91.4244, 50.40232 ], [ 90.97181, 50.37544 ], [ 90.92677, 50.3018 ], [ 90.78055, 50.27553 ], [ 90.77261, 50.21512 ], [ 90.70322, 50.17162 ], [ 90.52389, 50.18479 ], [ 90.29256, 50.05998 ], [ 90.07877, 50.03075 ], [ 90.07709, 49.97752 ], [ 90.00121, 49.92667 ], [ 89.69338, 49.88559 ], [ 89.7634, 49.80047 ], [ 89.75596, 49.69343 ], [ 89.37528, 49.53596 ], [ 89.27895, 49.56276 ], [ 89.25965, 49.50635 ], [ 89.15498, 49.4515 ], [ 88.9861, 49.41323 ], [ 88.92032, 49.44588 ], [ 88.8494, 49.39079 ], [ 88.59651, 49.44701 ], [ 88.23826, 49.42432 ], [ 88.21125, 49.26367 ], [ 88.00845, 49.13609 ], [ 87.71537, 49.12298 ], [ 87.42123, 49.02101 ], [ 87.24755, 49.0826 ], [ 87.23516, 49.18828 ], [ 86.99838, 49.21372 ], [ 86.79323, 49.42129 ], [ 86.77356, 49.5029 ], [ 86.5778, 49.53995 ], [ 86.54902, 49.61732 ], [ 86.58109, 49.66593 ], [ 86.444, 49.56335 ], [ 86.31924, 49.54148 ], [ 86.21145, 49.41643 ], [ 86.09463, 49.47158 ], [ 85.95551, 49.4376 ], [ 85.88436, 49.50714 ], [ 85.67419, 49.49991 ], [ 85.58158, 49.55187 ], [ 85.23928, 49.54103 ], [ 85.16417, 49.60616 ], [ 85.15354, 49.70814 ], [ 84.94348, 49.87841 ], [ 84.94911, 50.02382 ], [ 84.61849, 50.15736 ], [ 84.31094, 50.17701 ], [ 84.20435, 50.27332 ], [ 84.16214, 50.50008 ], [ 83.93169, 50.69045 ], [ 83.89711, 50.76756 ], [ 83.39428, 50.95179 ], [ 83.16801, 50.95285 ], [ 82.98475, 50.83348 ], [ 82.78288, 50.86773 ], [ 82.73557, 50.77502 ], [ 82.56112, 50.69488 ], [ 82.36827, 50.72346 ], [ 82.16666, 50.67976 ], [ 81.89253, 50.7463 ], [ 81.45208, 50.70372 ], [ 81.35919, 50.92006 ], [ 81.01967, 50.91674 ], [ 81.10698, 51.13065 ], [ 80.70717, 51.25352 ], [ 80.6576, 51.16136 ], [ 80.51989, 51.14206 ], [ 80.51988, 50.93412 ], [ 80.24767, 50.84853 ], [ 80.05173, 50.69358 ], [ 79.04392, 52.00902 ], [ 77.87975, 53.24298 ], [ 76.46503, 53.9997 ], [ 76.3879, 54.10426 ], [ 76.40203, 54.19956 ], [ 76.69981, 54.20269 ], [ 76.7993, 54.3135 ], [ 76.74415, 54.34325 ], [ 76.64382, 54.2847 ], [ 76.2796, 54.29552 ], [ 76.20979, 54.20822 ], [ 75.47389, 54.04444 ], [ 75.47387, 53.93347 ], [ 75.07475, 53.74859 ], [ 74.83088, 53.76654 ], [ 74.65941, 53.62507 ], [ 74.50614, 53.6269 ], [ 74.53481, 53.55444 ], [ 74.40758, 53.40888 ], [ 74.25824, 53.45297 ], [ 74.19647, 53.53673 ], [ 74.05274, 53.5143 ], [ 73.93355, 53.59363 ], [ 73.82959, 53.5285 ], [ 73.70901, 53.55462 ], [ 73.44144, 53.385 ], [ 73.19241, 53.55241 ], [ 73.20671, 53.69327 ], [ 73.28642, 53.72743 ], [ 73.30287, 53.81917 ], [ 73.39994, 53.89362 ], [ 73.04924, 53.93876 ], [ 72.92642, 54.04317 ], [ 72.71928, 54.07208 ], [ 72.76257, 54.02257 ], [ 72.73967, 53.92125 ], [ 72.57601, 53.91939 ], [ 72.51375, 53.85759 ], [ 72.32821, 53.92899 ], [ 72.36464, 54.00627 ], [ 72.26859, 54.18256 ], [ 72.19242, 54.0773 ], [ 71.96843, 54.17919 ], [ 71.79116, 54.19184 ], [ 71.81381, 54.12726 ], [ 71.73271, 54.05468 ], [ 71.47602, 54.04809 ], [ 71.35058, 54.12825 ], [ 71.16922, 54.04168 ], [ 71.09352, 54.08826 ], [ 70.95604, 54.24729 ], [ 70.94941, 54.34494 ], [ 71.15395, 54.37672 ], [ 71.12151, 54.5804 ], [ 71.17515, 54.64735 ], [ 71.07781, 54.65284 ], [ 70.99774, 54.74058 ], [ 70.91112, 54.87317 ], [ 70.9409, 55.05848 ], [ 70.76852, 55.23043 ], [ 70.46601, 55.22237 ], [ 70.41639, 55.16605 ], [ 70.20063, 55.09731 ], [ 69.93304, 55.16394 ], [ 69.7053, 55.29902 ], [ 69.48628, 55.28513 ], [ 69.37966, 55.32359 ], [ 69.20471, 55.28023 ], [ 69.03674, 55.37045 ], [ 69.02836, 55.23811 ], [ 68.77505, 55.31655 ], [ 68.64694, 55.15331 ], [ 68.30415, 55.13647 ], [ 68.36633, 55.06849 ], [ 68.24901, 54.92079 ], [ 67.86256, 54.92386 ], [ 67.80211, 54.84358 ], [ 67.69672, 54.81308 ], [ 67.32834, 54.81538 ], [ 67.07417, 54.73086 ], [ 66.01484, 54.57539 ], [ 65.90964, 54.65084 ], [ 65.76179, 54.55718 ], [ 65.55275, 54.58507 ], [ 65.51136, 54.51945 ], [ 65.27782, 54.4981 ], [ 65.31312, 54.35856 ], [ 65.23567, 54.28547 ], [ 65.10061, 54.28314 ], [ 64.95391, 54.36365 ], [ 64.75536, 54.3044 ], [ 64.61423, 54.32537 ], [ 64.10045, 54.25829 ], [ 63.97411, 54.14977 ], [ 63.79068, 54.21601 ], [ 63.23851, 54.14052 ], [ 63.09202, 54.05401 ], [ 62.63738, 54.02574 ], [ 62.62218, 53.93064 ], [ 62.5166, 53.86345 ], [ 62.40841, 53.89399 ], [ 62.3479, 53.98152 ], [ 62.08669, 53.99158 ], [ 62.07141, 53.90617 ], [ 61.93821, 53.8984 ], [ 61.70177, 53.96783 ], [ 61.55738, 53.92026 ], [ 61.43208, 54.02931 ], [ 61.32252, 54.02155 ], [ 61.27224, 53.77458 ], [ 61.11265, 53.6706 ], [ 61.2198, 53.61791 ], [ 61.56672, 53.64116 ], [ 61.64179, 53.52702 ], [ 61.58914, 53.45228 ], [ 61.47316, 53.4121 ], [ 61.28709, 53.45849 ], [ 61.23391, 53.34354 ], [ 61.54245, 53.26888 ], [ 61.70444, 53.30797 ], [ 61.81359, 53.22919 ], [ 62.13175, 53.16199 ], [ 62.19602, 53.05015 ], [ 62.16733, 52.95498 ], [ 62.0233, 52.89914 ], [ 61.7987, 52.94538 ], [ 61.62182, 52.90428 ], [ 61.47824, 52.97811 ], [ 61.16093, 52.94651 ], [ 60.7726, 52.69768 ], [ 60.88123, 52.67443 ], [ 60.90531, 52.56987 ], [ 61.0192, 52.54008 ], [ 61.10595, 52.3143 ], [ 60.74276, 52.11238 ], [ 60.52283, 52.10175 ], [ 60.19803, 51.9389 ], [ 60.55461, 51.83352 ], [ 60.55666, 51.7417 ], [ 60.48638, 51.69575 ], [ 60.9563, 51.66168 ], [ 60.97324, 51.56357 ], [ 61.02821, 51.52042 ], [ 61.505, 51.45935 ], [ 61.73371, 51.27975 ], [ 61.71087, 51.2122 ], [ 61.6091, 51.18039 ], [ 61.4775, 50.76372 ], [ 60.82497, 50.60673 ], [ 60.30811, 50.62164 ], [ 60.14419, 50.78129 ], [ 60.04013, 50.76267 ], [ 60.03802, 50.64431 ], [ 59.83658, 50.49067 ], [ 59.50366, 50.44446 ], [ 59.41208, 50.5204 ], [ 59.40752, 50.5865 ], [ 58.87397, 50.64752 ], [ 58.75108, 50.75904 ], [ 58.63651, 50.76234 ], [ 58.61717, 50.82102 ], [ 58.55671, 50.83518 ], [ 58.5548, 51.00639 ], [ 58.36807, 51.02613 ], [ 58.29841, 51.09797 ], [ 58.16644, 51.01243 ], [ 57.81701, 51.06097 ], [ 57.79196, 50.87955 ], [ 57.57432, 50.88038 ], [ 57.50648, 50.82501 ], [ 57.2991, 50.89787 ], [ 57.16343, 51.04051 ], [ 56.77757, 51.03494 ], [ 56.79957, 50.96934 ], [ 56.71622, 50.92326 ], [ 56.51267, 51.00062 ], [ 56.49571, 50.9305 ], [ 56.37383, 50.8525 ], [ 56.2094, 50.861 ], [ 56.17464, 50.72225 ], [ 56.08227, 50.65105 ], [ 55.71887, 50.49804 ], [ 55.47464, 50.61864 ], [ 55.36266, 50.60933 ], [ 55.02561, 50.77932 ], [ 55.02412, 50.85762 ], [ 54.65958, 50.97017 ], [ 54.74457, 50.91284 ], [ 54.72781, 50.8079 ], [ 54.78157, 50.61327 ], [ 54.64616, 50.49797 ], [ 54.54151, 50.47668 ], [ 54.36506, 50.61075 ], [ 54.42749, 50.80938 ], [ 54.17041, 50.92215 ], [ 54.08016, 51.06506 ], [ 53.99397, 51.1117 ], [ 53.63629, 51.18537 ], [ 53.55134, 51.28157 ], [ 53.53716, 51.3739 ], [ 53.22514, 51.45484 ], [ 52.94984, 51.40401 ], [ 52.78196, 51.44728 ], [ 52.54097, 51.40815 ], [ 52.31873, 51.68726 ], [ 52.09789, 51.60852 ], [ 51.90648, 51.62539 ], [ 51.84275, 51.56811 ], [ 51.85604, 51.46959 ], [ 51.63571, 51.40443 ], [ 51.58176, 51.45817 ], [ 51.26264, 51.44307 ], [ 51.19473, 51.52671 ], [ 51.23949, 51.62827 ], [ 50.87969, 51.63323 ], [ 50.84618, 51.54813 ], [ 50.76797, 51.52409 ], [ 50.62893, 51.56545 ], [ 50.59199, 51.43686 ], [ 50.43973, 51.36955 ], [ 50.38884, 51.28291 ], [ 50.02016, 51.19171 ], [ 49.77528, 51.05602 ], [ 49.46337, 51.05153 ], [ 49.43494, 51.00972 ], [ 49.49517, 50.88162 ], [ 49.45624, 50.81043 ], [ 49.14368, 50.73163 ], [ 48.83899, 50.54948 ], [ 48.71294, 50.54935 ], [ 48.77469, 50.29923 ], [ 48.95297, 50.02451 ], [ 48.76092, 49.87291 ], [ 48.4479, 49.75097 ], [ 48.20312, 49.82278 ], [ 48.05998, 50.05301 ], [ 47.89502, 50.20414 ], [ 47.59166, 50.40748 ], [ 47.51007, 50.37976 ], [ 47.36594, 50.27447 ], [ 47.38377, 50.05208 ], [ 47.19074, 49.88336 ], [ 46.94498, 49.81672 ], [ 46.85039, 49.38503 ], [ 47.0187, 49.27955 ], [ 47.09872, 49.14378 ], [ 47.0122, 48.9948 ], [ 46.80537, 48.89006 ], [ 46.59034, 48.46934 ], [ 47.15755, 48.3071 ], [ 47.17553, 48.15345 ], [ 47.26121, 48.07877 ], [ 47.14475, 47.95903 ], [ 47.22767, 47.87353 ], [ 47.23594, 47.80066 ], [ 47.35203, 47.76545 ], [ 47.41085, 47.8885 ], [ 47.66885, 47.80996 ], [ 48.04813, 47.81218 ], [ 48.23329, 47.7388 ], [ 48.46943, 47.47112 ], [ 48.56782, 47.43402 ], [ 49.04755, 46.75114 ], [ 48.92563, 46.6427 ], [ 48.62393, 46.65237 ], [ 49.19315, 46.4275 ], [ 49.52308, 46.24281 ], [ 49.71829, 46.23479 ], [ 49.93666, 46.04634 ], [ 49.11256, 45.65282 ], [ 49.01144, 45.47855 ], [ 48.86567, 45.38544 ], [ 48.67183, 45.35084 ], [ 48.27987, 45.40203 ], [ 48.05696, 45.24572 ], [ 47.64786, 45.15848 ], [ 47.37386, 44.72613 ], [ 47.59802, 44.74029 ], [ 47.78865, 44.65814 ], [ 47.89509, 44.44452 ], [ 47.8084, 44.24603 ], [ 48.04129, 44.20116 ], [ 48.1644, 44.09189 ], [ 48.19536, 43.98996 ], [ 48.16466, 43.87705 ], [ 47.89469, 43.61146 ], [ 47.85146, 43.47209 ], [ 47.88465, 43.29552 ], [ 47.84597, 43.11901 ], [ 47.97945, 42.99383 ], [ 48.23971, 42.57976 ], [ 48.60773, 42.16834 ], [ 48.86453, 41.95753 ], [ 48.62989, 41.80192 ], [ 48.41078, 41.55137 ], [ 48.1129, 41.44532 ], [ 47.90696, 41.17502 ], [ 47.77601, 41.1355 ], [ 47.63965, 41.17394 ], [ 47.55554, 41.14866 ], [ 47.45024, 41.21199 ] ] ], [ [ [ -180.0, 72.2916 ], [ -169.907891, 72.234092 ], [ -168.684085, 65.990095 ], [ -168.725284, 65.414875 ], [ -172.074188, 64.033556 ], [ -180.0, 62.26134 ], [ -180.0, 72.29053 ], [ -180.0, 72.2916 ] ] ], [ [ [ 22.22727, 54.33593 ], [ 21.44629, 54.31282 ], [ 21.37827, 54.32501 ], [ 21.26116, 54.32314 ], [ 20.74068, 54.36326 ], [ 20.63083, 54.3604 ], [ 20.58391, 54.37189 ], [ 20.33136, 54.39511 ], [ 19.64733, 54.44727 ], [ 19.40837, 54.61169 ], [ 19.50858, 54.68355 ], [ 19.58461, 54.77262 ], [ 19.57351, 54.86918 ], [ 19.58918, 54.95461 ], [ 19.63488, 55.02533 ], [ 19.72775, 55.10661 ], [ 19.82198, 55.14569 ], [ 19.9205, 55.16401 ], [ 20.20131, 55.16615 ], [ 20.39793, 55.18633 ], [ 20.65365, 55.3899 ], [ 20.95439, 55.28694 ], [ 21.09934, 55.26235 ], [ 21.27184, 55.25158 ], [ 21.38577, 55.29945 ], [ 21.43505, 55.25676 ], [ 21.45261, 55.22705 ], [ 21.50256, 55.19329 ], [ 21.56952, 55.20409 ], [ 21.65011, 55.18673 ], [ 21.71247, 55.15668 ], [ 21.72595, 55.13858 ], [ 21.81586, 55.12522 ], [ 21.85347, 55.1025 ], [ 21.92037, 55.08658 ], [ 21.96346, 55.0801 ], [ 21.99622, 55.09254 ], [ 22.03355, 55.09001 ], [ 22.04595, 55.07927 ], [ 22.0409, 55.04771 ], [ 22.07676, 55.03107 ], [ 22.11668, 55.03312 ], [ 22.13061, 55.05093 ], [ 22.1606, 55.06165 ], [ 22.29012, 55.071 ], [ 22.47057, 55.05064 ], [ 22.59123, 55.07575 ], [ 22.60258, 55.02726 ], [ 22.64782, 54.9875 ], [ 22.65115, 54.9726 ], [ 22.65624, 54.9868 ], [ 22.68043, 54.99268 ], [ 22.69528, 54.97819 ], [ 22.72969, 54.96771 ], [ 22.73776, 54.95228 ], [ 22.76934, 54.94047 ], [ 22.77229, 54.92998 ], [ 22.78564, 54.92998 ], [ 22.79607, 54.90969 ], [ 22.82176, 54.91769 ], [ 22.85917, 54.89211 ], [ 22.8486, 54.869 ], [ 22.87459, 54.8553 ], [ 22.86936, 54.84295 ], [ 22.89215, 54.81546 ], [ 22.88011, 54.80362 ], [ 22.88351, 54.78865 ], [ 22.86373, 54.78234 ], [ 22.86419, 54.77399 ], [ 22.84556, 54.76117 ], [ 22.81955, 54.75959 ], [ 22.80989, 54.7428 ], [ 22.78026, 54.74346 ], [ 22.74835, 54.72438 ], [ 22.75458, 54.7047 ], [ 22.73321, 54.68658 ], [ 22.74301, 54.68216 ], [ 22.74373, 54.66534 ], [ 22.76275, 54.65463 ], [ 22.75463, 54.63005 ], [ 22.69213, 54.58511 ], [ 22.71956, 54.56434 ], [ 22.68861, 54.53217 ], [ 22.70476, 54.50897 ], [ 22.7093, 54.45891 ], [ 22.74021, 54.44744 ], [ 22.7962, 54.35926 ], [ 22.22727, 54.33593 ] ] ] ] } }
6 ]
7 }
0 {
1 "type": "Feature",
2 "properties": {
3 "name": "polygon"
4 },
5 "geometry": {
6 "type": "MultiPolygon",
7 "coordinates": [
8 [
9 [
10 [
11 -180,
12 72.2916
13 ],
14 [
15 -180,
16 72.29053
17 ],
18 [
19 -180,
20 62.26134
21 ],
22 [
23 -172.074188,
24 64.033556
25 ],
26 [
27 -168.725284,
28 65.414875
29 ],
30 [
31 -168.684085,
32 65.990095
33 ],
34 [
35 -169.907891,
36 72.234092
37 ],
38 [
39 -180,
40 72.2916
41 ]
42 ]
43 ]
44 ]
45 }
46 }
0 {
1 "type": "Feature",
2 "properties": {
3 "name": "none"
4 },
5 "geometry": {
6 "type": "MultiPolygon",
7 "coordinates": [
8 [
9 [
10 [
11 180,
12 54.19453
13 ],
14 [
15 180,
16 51.11044
17 ],
18 [
19 171.7602,
20 51.13801
21 ],
22 [
23 171.8152,
24 54.08518
25 ],
26 [
27 180,
28 54.19453
29 ]
30 ]
31 ],
32 [
33 [
34 [
35 -180,
36 49.80942
37 ],
38 [
39 -180,
40 60.09775
41 ],
42 [
43 -169.0686,
44 65.40802
45 ],
46 [
47 -168.9478,
48 66.01132
49 ],
50 [
51 -169.1147,
52 71.19564
53 ],
54 [
55 -140.9715,
56 72.98845
57 ],
58 [
59 -140.9775,
60 60.31064
61 ],
62 [
63 -139.0488,
64 60.36127
65 ],
66 [
67 -139.1508,
68 60.10438
69 ],
70 [
71 -138.6734,
72 59.9144
73 ],
74 [
75 -138.6363,
76 59.81201
77 ],
78 [
79 -137.5517,
80 59.23372
81 ],
82 [
83 -137.4664,
84 58.94576
85 ],
86 [
87 -136.7081,
88 59.21237
89 ],
90 [
91 -136.3698,
92 59.61097
93 ],
94 [
95 -135.3911,
96 59.82867
97 ],
98 [
99 -134.7243,
100 59.3922
101 ],
102 [
103 -134.4972,
104 59.15539
105 ],
106 [
107 -133.3385,
108 58.42044
109 ],
110 [
111 -131.6441,
112 56.6537
113 ],
114 [
115 -129.7998,
116 56.04294
117 ],
118 [
119 -130.1171,
120 55.74696
121 ],
122 [
123 -129.8715,
124 55.26134
125 ],
126 [
127 -130.5575,
128 54.64634
129 ],
130 [
131 -131.6262,
132 54.4781
133 ],
134 [
135 -132.6944,
136 54.45706
137 ],
138 [
139 -133.7018,
140 54.51622
141 ],
142 [
143 -133.5648,
144 53.42951
145 ],
146 [
147 -180,
148 49.80942
149 ]
150 ]
151 ]
152 ]
153 }
154 }
0 none
1 1
2 1.80E+02 5.419453E+01
3 1.80E+02 5.111044E+01
4 1.717602E+02 5.113801E+01
5 1.718152E+02 5.408518E+01
6 1.80E+02 5.419453E+01
7 END
8 2
9 -1.80E+02 4.980942E+01
10 -1.80E+02 6.009775E+01
11 -1.690686E+02 6.540802E+01
12 -1.689478E+02 6.601132E+01
13 -1.691147E+02 7.119564E+01
14 -1.409715E+02 7.298845E+01
15 -1.409775E+02 6.031064E+01
16 -1.390488E+02 6.036127E+01
17 -1.391508E+02 6.010438E+01
18 -1.386734E+02 5.991440E+01
19 -1.386363E+02 5.981201E+01
20 -1.375517E+02 5.923372E+01
21 -1.374664E+02 5.894576E+01
22 -1.367081E+02 5.921237E+01
23 -1.363698E+02 5.961097E+01
24 -1.353911E+02 5.982867E+01
25 -1.347243E+02 5.939220E+01
26 -1.344972E+02 5.915539E+01
27 -1.333385E+02 5.842044E+01
28 -1.316441E+02 5.665370E+01
29 -1.297998E+02 5.604294E+01
30 -1.301171E+02 5.574696E+01
31 -1.298715E+02 5.526134E+01
32 -1.305575E+02 5.464634E+01
33 -1.316262E+02 5.447810E+01
34 -1.326944E+02 5.445706E+01
35 -1.337018E+02 5.451622E+01
36 -1.335648E+02 5.342951E+01
37 -1.80E+02 4.980942E+01
38 END
39 END
22
33 #include "exception.hpp"
44 #include "geojson_file_parser.hpp"
5 #include "geometry_util.hpp"
56 #include "osm_file_parser.hpp"
67 #include "poly_file_parser.hpp"
78
241242
242243 }
243244
245 TEST_CASE("Ring orientation (clockwise)") {
246 using oc = osmium::geom::Coordinates;
247 std::vector<oc> c = {oc{0,0}, oc{0,1}, oc{1,1}, oc{1,0}, oc{0,0}};
248 REQUIRE(calculate_double_area(c) == Approx(-2.0));
249 REQUIRE_FALSE(is_ccw(c));
250 }
251
252 TEST_CASE("Ring orientation (counter-clockwise)") {
253 using oc = osmium::geom::Coordinates;
254 std::vector<oc> c = {oc{0,0}, oc{1,0}, oc{1,1}, oc{0,1}, oc{0,0}};
255 REQUIRE(calculate_double_area(c) == Approx(2.0));
256 REQUIRE(is_ccw(c));
257 }
258
0 n529267768 v4 dV c18157685 t2013-10-03T09:27:25Z i90780 uVerdy_p T x180 y51.7940888
1 n529268301 v4 dV c18109681 t2013-09-30T12:42:56Z i90780 uVerdy_p T x180 y52.1384488
2 n2477601610 v2 dV c18157685 t2013-10-03T09:27:24Z i90780 uVerdy_p T x180 y51.8434451
3 n2477601612 v2 dV c18157685 t2013-10-03T09:27:24Z i90780 uVerdy_p T x180 y51.8927474
4 n2477601614 v2 dV c18157685 t2013-10-03T09:27:24Z i90780 uVerdy_p T x180 y51.9419957
5 n2477601616 v2 dV c18157685 t2013-10-03T09:27:24Z i90780 uVerdy_p T x180 y51.9911899
6 n2477601618 v2 dV c18157685 t2013-10-03T09:27:24Z i90780 uVerdy_p T x180 y52.0403302
7 n2477601621 v2 dV c18157685 t2013-10-03T09:27:24Z i90780 uVerdy_p T x180 y52.0894164
8 w42394837 v7 dV c74735267 t2019-09-20T21:14:03Z i8407767 uВасиль%20%Бойчук Tclosure_segment=yes,maritime=yes,name=Antimeridian%20%(180°%20%East),note=segment%20%closing%20%the%20%nautical%20%border%20%in%20%2%20%polygons%20%left%20%and%20%right%20%of%20%the%20%180th%20%meridian Nn529267768,n2477601610,n2477601612,n2477601614,n2477601616,n2477601618,n2477601621,n529268301
0 <?xml version="1.0" encoding="UTF-8"?>
1 <osm version="0.6" generator="CGImap 0.8.5 (2227060 spike-06.openstreetmap.org)" copyright="OpenStreetMap and contributors" attribution="http://www.openstreetmap.org/copyright" license="http://opendatacommons.org/licenses/odbl/1-0/">
2 <node id="529267768" visible="true" version="4" changeset="18157685" timestamp="2013-10-03T09:27:25Z" user="Verdy_p" uid="90780" lat="51.7940888" lon="180.0000000"/>
3 <node id="529268301" visible="true" version="4" changeset="18109681" timestamp="2013-09-30T12:42:56Z" user="Verdy_p" uid="90780" lat="52.1384488" lon="180.0000000"/>
4 <node id="2477601610" visible="true" version="2" changeset="18157685" timestamp="2013-10-03T09:27:24Z" user="Verdy_p" uid="90780" lat="51.8434451" lon="180.0000000"/>
5 <node id="2477601612" visible="true" version="2" changeset="18157685" timestamp="2013-10-03T09:27:24Z" user="Verdy_p" uid="90780" lat="51.8927474" lon="180.0000000"/>
6 <node id="2477601614" visible="true" version="2" changeset="18157685" timestamp="2013-10-03T09:27:24Z" user="Verdy_p" uid="90780" lat="51.9419957" lon="180.0000000"/>
7 <node id="2477601616" visible="true" version="2" changeset="18157685" timestamp="2013-10-03T09:27:24Z" user="Verdy_p" uid="90780" lat="51.9911899" lon="180.0000000"/>
8 <node id="2477601618" visible="true" version="2" changeset="18157685" timestamp="2013-10-03T09:27:24Z" user="Verdy_p" uid="90780" lat="52.0403302" lon="180.0000000"/>
9 <node id="2477601621" visible="true" version="2" changeset="18157685" timestamp="2013-10-03T09:27:24Z" user="Verdy_p" uid="90780" lat="52.0894164" lon="180.0000000"/>
10 <way id="42394837" visible="true" version="7" changeset="74735267" timestamp="2019-09-20T21:14:03Z" user="Василь Бойчук" uid="8407767">
11 <nd ref="529267768"/>
12 <nd ref="2477601610"/>
13 <nd ref="2477601612"/>
14 <nd ref="2477601614"/>
15 <nd ref="2477601616"/>
16 <nd ref="2477601618"/>
17 <nd ref="2477601621"/>
18 <nd ref="529268301"/>
19 <tag k="closure_segment" v="yes"/>
20 <tag k="maritime" v="yes"/>
21 <tag k="name" v="Antimeridian (180° East)"/>
22 <tag k="note" v="segment closing the nautical border in 2 polygons left and right of the 180th meridian"/>
23 </way>
24 </osm>
0 n529215046 v4 dV c18157685 t2013-10-03T09:27:24Z i90780 uVerdy_p T x-180 y51.7940888
1 n529215726 v4 dV c18112005 t2013-09-30T14:47:23Z i90780 uVerdy_p T x-180 y52.138489
2 n2480990121 v1 dV c18157685 t2013-10-03T09:22:55Z i90780 uVerdy_p T x-180 y51.8434509
3 n2480990124 v1 dV c18157685 t2013-10-03T09:22:55Z i90780 uVerdy_p T x-180 y51.892759
4 n2480990126 v1 dV c18157685 t2013-10-03T09:22:55Z i90780 uVerdy_p T x-180 y51.942013
5 n2480990128 v1 dV c18157685 t2013-10-03T09:22:56Z i90780 uVerdy_p T x-180 y51.991213
6 n2480990129 v1 dV c18157685 t2013-10-03T09:22:56Z i90780 uVerdy_p T x-180 y52.0403589
7 n2480990140 v1 dV c18157685 t2013-10-03T09:22:56Z i90780 uVerdy_p T x-180 y52.0894509
8 w46113981 v7 dV c24927728 t2014-08-22T09:27:42Z i1781102 uelazarev Tclosure_segment=yes,maritime=yes,name=Antimeridian%20%(180°%20%West),note=segment%20%closing%20%the%20%nautical%20%border%20%in%20%2%20%polygons%20%left%20%and%20%right%20%of%20%the%20%180th%20%meridian Nn529215726,n2480990140,n2480990129,n2480990128,n2480990126,n2480990124,n2480990121,n529215046
0 <?xml version="1.0" encoding="UTF-8"?>
1 <osm version="0.6" generator="CGImap 0.8.5 (2201680 spike-06.openstreetmap.org)" copyright="OpenStreetMap and contributors" attribution="http://www.openstreetmap.org/copyright" license="http://opendatacommons.org/licenses/odbl/1-0/">
2 <node id="529215046" visible="true" version="4" changeset="18157685" timestamp="2013-10-03T09:27:24Z" user="Verdy_p" uid="90780" lat="51.7940888" lon="-180.0000000"/>
3 <node id="529215726" visible="true" version="4" changeset="18112005" timestamp="2013-09-30T14:47:23Z" user="Verdy_p" uid="90780" lat="52.1384890" lon="-180.0000000"/>
4 <node id="2480990121" visible="true" version="1" changeset="18157685" timestamp="2013-10-03T09:22:55Z" user="Verdy_p" uid="90780" lat="51.8434509" lon="-180.0000000"/>
5 <node id="2480990124" visible="true" version="1" changeset="18157685" timestamp="2013-10-03T09:22:55Z" user="Verdy_p" uid="90780" lat="51.8927590" lon="-180.0000000"/>
6 <node id="2480990126" visible="true" version="1" changeset="18157685" timestamp="2013-10-03T09:22:55Z" user="Verdy_p" uid="90780" lat="51.9420130" lon="-180.0000000"/>
7 <node id="2480990128" visible="true" version="1" changeset="18157685" timestamp="2013-10-03T09:22:56Z" user="Verdy_p" uid="90780" lat="51.9912130" lon="-180.0000000"/>
8 <node id="2480990129" visible="true" version="1" changeset="18157685" timestamp="2013-10-03T09:22:56Z" user="Verdy_p" uid="90780" lat="52.0403589" lon="-180.0000000"/>
9 <node id="2480990140" visible="true" version="1" changeset="18157685" timestamp="2013-10-03T09:22:56Z" user="Verdy_p" uid="90780" lat="52.0894509" lon="-180.0000000"/>
10 <way id="46113981" visible="true" version="7" changeset="24927728" timestamp="2014-08-22T09:27:42Z" user="elazarev" uid="1781102">
11 <nd ref="529215726"/>
12 <nd ref="2480990140"/>
13 <nd ref="2480990129"/>
14 <nd ref="2480990128"/>
15 <nd ref="2480990126"/>
16 <nd ref="2480990124"/>
17 <nd ref="2480990121"/>
18 <nd ref="529215046"/>
19 <tag k="closure_segment" v="yes"/>
20 <tag k="maritime" v="yes"/>
21 <tag k="name" v="Antimeridian (180° West)"/>
22 <tag k="note" v="segment closing the nautical border in 2 polygons left and right of the 180th meridian"/>
23 </way>
24 </osm>
2929 check_merge2(i2f-only-version input1-only-version.osm input2-only-version.osm output2-12-only-version.osm)
3030 check_merge2(i2r-only-version input2-only-version.osm input1-only-version.osm output2-12-only-version.osm)
3131
32 do_test(merge-unsorted-types-wn "osmium merge ${PROJECT_SOURCE_DIR}/test/merge/unsorted-types-wn.osm ${PROJECT_SOURCE_DIR}/test/merge/empty.osm -f opl" "must be nodes, then ways, then relations")
33 do_test(merge-unsorted-types-nrw "osmium merge ${PROJECT_SOURCE_DIR}/test/merge/unsorted-types-nrw.osm ${PROJECT_SOURCE_DIR}/test/merge/empty.osm -f opl" "must be nodes, then ways, then relations")
34 do_test(merge-unsorted-ids-n "osmium merge ${PROJECT_SOURCE_DIR}/test/merge/unsorted-ids-n.osm ${PROJECT_SOURCE_DIR}/test/merge/empty.osm -f opl" "smaller ids must come first")
35 do_test(merge-unsorted-ids-w "osmium merge ${PROJECT_SOURCE_DIR}/test/merge/unsorted-ids-w.osm ${PROJECT_SOURCE_DIR}/test/merge/empty.osm -f opl" "smaller ids must come first")
36 do_test(merge-unsorted-versions-21 "osmium merge ${PROJECT_SOURCE_DIR}/test/merge/unsorted-versions-21.osm ${PROJECT_SOURCE_DIR}/test/merge/empty.osm -f opl" "smaller version must come first")
37 do_test(merge-unsorted-versions-132 "osmium merge ${PROJECT_SOURCE_DIR}/test/merge/unsorted-versions-132.osm ${PROJECT_SOURCE_DIR}/test/merge/empty.osm -f opl" "smaller version must come first")
38 do_test(merge-unsorted-versions-133 "osmium merge ${PROJECT_SOURCE_DIR}/test/merge/unsorted-versions-133.osm ${PROJECT_SOURCE_DIR}/test/merge/empty.osm -f opl" "with same version.")
39
40 do_test(merge-same-ids-warning "osmium merge ${PROJECT_SOURCE_DIR}/test/merge/same-ids.osm ${PROJECT_SOURCE_DIR}/test/merge/empty.osm -f opl" "Multiple objects with same id")
41 check_output(merge merge-same-ids-h "merge --generator=test --with-history -f osm merge/same-ids.osm merge/empty.osm" "merge/output-same-ids.osm")
42
3243 #-----------------------------------------------------------------------------
0 <?xml version='1.0' encoding='UTF-8'?>
1 <osm version="0.6" upload="false" generator="testdata">
2 </osm>
0 <?xml version='1.0' encoding='UTF-8'?>
1 <osm version="0.6" generator="test">
2 <node id="10" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="1" lon="1"/>
3 <node id="10" version="2" timestamp="2015-01-01T01:00:01Z" uid="1" user="test" changeset="2" lat="2" lon="2"/>
4 </osm>
0 <?xml version='1.0' encoding='UTF-8'?>
1 <osm version="0.6" upload="false" generator="testdata">
2 <node id="10" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="1" lon="1"/>
3 <node id="10" version="2" timestamp="2015-01-01T01:00:01Z" uid="1" user="test" changeset="2" lat="2" lon="2"/>
4 </osm>
0 <?xml version='1.0' encoding='UTF-8'?>
1 <osm version="0.6" upload="false" generator="testdata">
2 <node id="11" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="2" lon="1"/>
3 <node id="10" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="1" lon="1"/>
4 </osm>
0 <?xml version='1.0' encoding='UTF-8'?>
1 <osm version="0.6" upload="false" generator="testdata">
2 <node id="10" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="1" lon="1"/>
3 <node id="11" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="2" lon="1"/>
4 <node id="13" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="4" lon="1"/>
5 <node id="14" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="5" lon="1"/>
6 <node id="16" version="2" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="8" lon="1"/>
7 <way id="24" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1">
8 <nd ref="14"/>
9 <nd ref="16"/>
10 <tag k="xyz" v="abc"/>
11 </way>
12 <way id="20" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1">
13 <nd ref="10"/>
14 <nd ref="11"/>
15 <nd ref="13"/>
16 <tag k="foo" v="bar"/>
17 </way>
18 <relation id="31" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1">
19 <member type="node" ref="13" role="m1"/>
20 <member type="way" ref="20" role="m2"/>
21 </relation>
22 </osm>
0 <?xml version='1.0' encoding='UTF-8'?>
1 <osm version="0.6" upload="false" generator="testdata">
2 <node id="10" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="1" lon="1"/>
3 <node id="11" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="2" lon="1"/>
4 <node id="13" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="4" lon="1"/>
5 <node id="14" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="5" lon="1"/>
6 <node id="16" version="2" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="8" lon="1"/>
7 <relation id="31" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1">
8 <member type="node" ref="13" role="m1"/>
9 <member type="way" ref="20" role="m2"/>
10 </relation>
11 <way id="20" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1">
12 <nd ref="10"/>
13 <nd ref="11"/>
14 <nd ref="13"/>
15 <tag k="foo" v="bar"/>
16 </way>
17 <way id="24" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1">
18 <nd ref="14"/>
19 <nd ref="16"/>
20 <tag k="xyz" v="abc"/>
21 </way>
22 </osm>
0 <?xml version='1.0' encoding='UTF-8'?>
1 <osm version="0.6" upload="false" generator="testdata">
2 <way id="20" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1">
3 <nd ref="10"/>
4 <nd ref="11"/>
5 <nd ref="13"/>
6 <tag k="foo" v="bar"/>
7 </way>
8 <node id="10" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="1" lon="1"/>
9 </osm>
0 <?xml version='1.0' encoding='UTF-8'?>
1 <osm version="0.6" upload="false" generator="testdata">
2 <node id="10" version="1" timestamp="2015-01-01T01:00:01Z" uid="1" user="test" changeset="1" lat="1" lon="1"/>
3 <node id="10" version="3" timestamp="2015-01-01T01:00:03Z" uid="1" user="test" changeset="3" lat="1" lon="3"/>
4 <node id="10" version="2" timestamp="2015-01-01T01:00:02Z" uid="1" user="test" changeset="2" lat="1" lon="2"/>
5 </osm>
0 <?xml version='1.0' encoding='UTF-8'?>
1 <osm version="0.6" upload="false" generator="testdata">
2 <node id="10" version="1" timestamp="2015-01-01T01:00:01Z" uid="1" user="test" changeset="1" lat="1" lon="1"/>
3 <node id="10" version="3" timestamp="2015-01-01T01:00:03Z" uid="1" user="test" changeset="3" lat="1" lon="3"/>
4 <node id="10" version="3" timestamp="2015-01-01T01:00:03Z" uid="1" user="test" changeset="3" lat="1" lon="3"/>
5 </osm>
0 <?xml version='1.0' encoding='UTF-8'?>
1 <osm version="0.6" upload="false" generator="testdata">
2 <node id="10" version="2" timestamp="2015-01-01T01:00:01Z" uid="1" user="test" changeset="2" lat="2" lon="2"/>
3 <node id="10" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="1" lon="1"/>
4 </osm>
0 #-----------------------------------------------------------------------------
1 #
2 # CMake Config
3 #
4 # Osmium Tool Tests - removeid
5 #
6 #-----------------------------------------------------------------------------
7
8 function(check_removeid _name _input _ids _output)
9 check_output(removeid ${_name} "removeid --generator=test --output-header=xml_josm_upload=false -f osm removeid/${_input} ${_ids}" "removeid/${_output}")
10 endfunction()
11
12 function(check_removeid_file _name _file _input _output)
13 check_output(removeid ${_name} "removeid --generator=test --output-header=xml_josm_upload=false -i removeid/${_file} -f osm removeid/${_input}" "removeid/${_output}")
14 endfunction()
15
16 check_removeid(n11n12 input.osm n11,n12 output-n11n12.osm)
17 check_removeid(n10w21 input.osm 10,w21 output-n10w21.osm)
18 check_removeid(r30 input.osm r30 output-r30.osm)
19
20 check_removeid_file(n12w20 n12w20.ids input.osm output-n12w20.osm)
21
22 #-----------------------------------------------------------------------------
0 <?xml version='1.0' encoding='UTF-8'?>
1 <osm version="0.6" upload="false" generator="testdata">
2 <node id="10" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="1" lon="1"/>
3 <node id="11" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="2" lon="1"/>
4 <node id="12" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="3" lon="1"/>
5 <node id="13" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="4" lon="1"/>
6 <way id="20" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1">
7 <nd ref="10"/>
8 <nd ref="11"/>
9 <nd ref="12"/>
10 <tag k="foo" v="bar"/>
11 </way>
12 <way id="21" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1">
13 <nd ref="12"/>
14 <nd ref="13"/>
15 <tag k="xyz" v="abc"/>
16 </way>
17 <relation id="30" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1">
18 <member type="node" ref="12" role="m1"/>
19 <member type="way" ref="20" role="m2"/>
20 </relation>
21 </osm>
0 <?xml version='1.0' encoding='UTF-8'?>
1 <osm version="0.6" upload="false" generator="test">
2 <node id="11" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="2" lon="1"/>
3 <node id="12" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="3" lon="1"/>
4 <node id="13" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="4" lon="1"/>
5 <way id="20" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1">
6 <nd ref="10"/>
7 <nd ref="11"/>
8 <nd ref="12"/>
9 <tag k="foo" v="bar"/>
10 </way>
11 <relation id="30" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1">
12 <member type="node" ref="12" role="m1"/>
13 <member type="way" ref="20" role="m2"/>
14 </relation>
15 </osm>
0 <?xml version='1.0' encoding='UTF-8'?>
1 <osm version="0.6" upload="false" generator="test">
2 <node id="10" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="1" lon="1"/>
3 <node id="13" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="4" lon="1"/>
4 <way id="20" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1">
5 <nd ref="10"/>
6 <nd ref="11"/>
7 <nd ref="12"/>
8 <tag k="foo" v="bar"/>
9 </way>
10 <way id="21" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1">
11 <nd ref="12"/>
12 <nd ref="13"/>
13 <tag k="xyz" v="abc"/>
14 </way>
15 <relation id="30" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1">
16 <member type="node" ref="12" role="m1"/>
17 <member type="way" ref="20" role="m2"/>
18 </relation>
19 </osm>
0 <?xml version='1.0' encoding='UTF-8'?>
1 <osm version="0.6" upload="false" generator="test">
2 <node id="10" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="1" lon="1"/>
3 <node id="11" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="2" lon="1"/>
4 <node id="13" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="4" lon="1"/>
5 <way id="21" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1">
6 <nd ref="12"/>
7 <nd ref="13"/>
8 <tag k="xyz" v="abc"/>
9 </way>
10 <relation id="30" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1">
11 <member type="node" ref="12" role="m1"/>
12 <member type="way" ref="20" role="m2"/>
13 </relation>
14 </osm>
0 <?xml version='1.0' encoding='UTF-8'?>
1 <osm version="0.6" upload="false" generator="test">
2 <node id="10" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="1" lon="1"/>
3 <node id="11" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="2" lon="1"/>
4 <node id="12" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="3" lon="1"/>
5 <node id="13" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="4" lon="1"/>
6 <way id="20" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1">
7 <nd ref="10"/>
8 <nd ref="11"/>
9 <nd ref="12"/>
10 <tag k="foo" v="bar"/>
11 </way>
12 <way id="21" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1">
13 <nd ref="12"/>
14 <nd ref="13"/>
15 <tag k="xyz" v="abc"/>
16 </way>
17 </osm>
2929 check_tags_filter(highway-it "-i -t" input.osm w/highway output-highway-it.osm)
3030 check_tags_filter(note-rel-t "-t" input.osm r/note output-note-rel-t.osm)
3131
32
33 check_tags_filter(site-1 "" input-site.osm r/site=1 output-site-1.osm)
34 check_tags_filter(site-2 "" input-site.osm r/site=2 output-site-2.osm)
35 check_tags_filter(site-R "-R" input-site.osm r/site=2 output-site-R.osm)
36 check_tags_filter(site-R-all "-R" input-site.osm r/site output-site-R-all.osm)
37 check_tags_filter(site-t "-t" input-site.osm r/site output-site-t.osm)
38
3239 #-----------------------------------------------------------------------------
0 <?xml version='1.0' encoding='UTF-8'?>
1 <osm version="0.6" upload="false" generator="testdata">
2 <node id="10" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="1" lon="1"/>
3 <node id="11" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="2" lon="1">
4 <tag k="barrier" v="gate"/>
5 </node>
6 <node id="12" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="3" lon="1"/>
7 <node id="13" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="4" lon="1"/>
8 <way id="20" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1">
9 <nd ref="10"/>
10 <nd ref="11"/>
11 <nd ref="12"/>
12 <tag k="highway" v="primary"/>
13 </way>
14 <way id="21" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1">
15 <nd ref="13"/>
16 <tag k="highway" v="primary"/>
17 </way>
18 <relation id="30" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1">
19 <member type="node" ref="12" role="m1"/>
20 <member type="way" ref="20" role="m2"/>
21 <tag k="note" v="test"/>
22 </relation>
23 <relation id="31" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1">
24 <member type="relation" ref="30" role="m1"/>
25 <tag k="site" v="1"/>
26 </relation>
27 <relation id="32" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1">
28 <member type="relation" ref="31" role="m1"/>
29 <tag k="site" v="2"/>
30 </relation>
31 </osm>
0 <?xml version='1.0' encoding='UTF-8'?>
1 <osm version="0.6" upload="false" generator="test">
2 <node id="10" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="1" lon="1"/>
3 <node id="11" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="2" lon="1">
4 <tag k="barrier" v="gate"/>
5 </node>
6 <node id="12" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="3" lon="1"/>
7 <way id="20" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1">
8 <nd ref="10"/>
9 <nd ref="11"/>
10 <nd ref="12"/>
11 <tag k="highway" v="primary"/>
12 </way>
13 <relation id="30" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1">
14 <member type="node" ref="12" role="m1"/>
15 <member type="way" ref="20" role="m2"/>
16 <tag k="note" v="test"/>
17 </relation>
18 <relation id="31" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1">
19 <member type="relation" ref="30" role="m1"/>
20 <tag k="site" v="1"/>
21 </relation>
22 </osm>
0 <?xml version='1.0' encoding='UTF-8'?>
1 <osm version="0.6" upload="false" generator="test">
2 <node id="10" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="1" lon="1"/>
3 <node id="11" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="2" lon="1">
4 <tag k="barrier" v="gate"/>
5 </node>
6 <node id="12" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="3" lon="1"/>
7 <way id="20" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1">
8 <nd ref="10"/>
9 <nd ref="11"/>
10 <nd ref="12"/>
11 <tag k="highway" v="primary"/>
12 </way>
13 <relation id="30" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1">
14 <member type="node" ref="12" role="m1"/>
15 <member type="way" ref="20" role="m2"/>
16 <tag k="note" v="test"/>
17 </relation>
18 <relation id="31" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1">
19 <member type="relation" ref="30" role="m1"/>
20 <tag k="site" v="1"/>
21 </relation>
22 <relation id="32" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1">
23 <member type="relation" ref="31" role="m1"/>
24 <tag k="site" v="2"/>
25 </relation>
26 </osm>
0 <?xml version='1.0' encoding='UTF-8'?>
1 <osm version="0.6" upload="false" generator="test">
2 <relation id="31" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1">
3 <member type="relation" ref="30" role="m1"/>
4 <tag k="site" v="1"/>
5 </relation>
6 <relation id="32" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1">
7 <member type="relation" ref="31" role="m1"/>
8 <tag k="site" v="2"/>
9 </relation>
10 </osm>
0 <?xml version='1.0' encoding='UTF-8'?>
1 <osm version="0.6" upload="false" generator="test">
2 <relation id="32" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1">
3 <member type="relation" ref="31" role="m1"/>
4 <tag k="site" v="2"/>
5 </relation>
6 </osm>
0 <?xml version='1.0' encoding='UTF-8'?>
1 <osm version="0.6" upload="false" generator="test">
2 <node id="10" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="1" lon="1"/>
3 <node id="11" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="2" lon="1"/>
4 <node id="12" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1" lat="3" lon="1"/>
5 <way id="20" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1">
6 <nd ref="10"/>
7 <nd ref="11"/>
8 <nd ref="12"/>
9 </way>
10 <relation id="30" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1">
11 <member type="node" ref="12" role="m1"/>
12 <member type="way" ref="20" role="m2"/>
13 </relation>
14 <relation id="31" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1">
15 <member type="relation" ref="30" role="m1"/>
16 <tag k="site" v="1"/>
17 </relation>
18 <relation id="32" version="1" timestamp="2015-01-01T01:00:00Z" uid="1" user="test" changeset="1">
19 <member type="relation" ref="31" role="m1"/>
20 <tag k="site" v="2"/>
21 </relation>
22 </osm>
118118 REQUIRE_FALSE(test_tag_matcher("addr:*", "addr", "Berlin"));
119119 }
120120
121 TEST_CASE("ends_with") {
122 REQUIRE_FALSE(ends_with("foo", "bar"));
123 REQUIRE_FALSE(ends_with("", "bar"));
124 REQUIRE_FALSE(ends_with("foox", "foo"));
125
126 REQUIRE(ends_with("", ""));
127 REQUIRE(ends_with("abc", "abc"));
128 REQUIRE(ends_with("abc", "bc"));
129 REQUIRE(ends_with("abc", "c"));
130 REQUIRE(ends_with("abc", ""));
131
132 REQUIRE(ends_with("file.json", ".json"));
133 REQUIRE(ends_with("some.file.json", ".json"));
134 REQUIRE(ends_with("file.osm.bz2", ".bz2"));
135 REQUIRE(ends_with("file.osm.bz2", ".osm.bz2"));
136 }
1717
1818 _osmium() {
1919 local -a osmium_commands
20 osmium_commands=(add-locations-to-ways apply-changes cat diff changeset-filter check-refs derive-changes export extract fileinfo getid getparents help merge merge-changes renumber show sort tags-count tags-filter time-filter)
20 osmium_commands=(add-locations-to-ways apply-changes cat diff changeset-filter check-refs derive-changes export extract fileinfo getid getparents help merge merge-changes removeid renumber show sort tags-count tags-filter time-filter)
2121 if (( CURRENT > 2 )); then
2222 # Remember the subcommand name
2323 local cmd=${words[2]}
114114 '*--object-type[read only objects of given output types]:OSM entity type:_osmium_entity_type' \
115115 '*-c[clean attributes]:attribute type:_osmium_attr_type'\
116116 '*--clean[clean attributes]:attribute type:_osmium_attr_type'\
117 '--buffer-data[buffer data in memory]'\
117118 '(--progress)--no-progress[disable progress bar]' \
118119 '(--no-progress)--progress[enable progress bar]'
119120 }
200201 '(-o)--output[output file name]:output OSM file:_files -g "*.json *.geojson *.jsonseq *.geojsonseq"' \
201202 '(--overwrite)-O[allow overwriting of existing output file]' \
202203 '(-O)--overwrite[allow overwriting of existing output file]' \
203 '(--output-format)-f[format of output file]:file format:_export_file_formats' \
204 '(-f)--output-format[format of output file]:file format:_export_file_formats' \
204 '(--output-format)-f[format of output file]:file format:_osmium_export_file_formats' \
205 '(-f)--output-format[format of output file]:file format:_osmium_export_file_formats' \
205206 '(--config)-c[config file]:config file:_files -f "*.json"' \
206207 '(-c)--config[config file]:config file:_files -f "*.json"' \
207208 '(--show-errors)-e[output errors to stderr]' \
218219 '(-n)--keep-untagged[keep untagged features]' \
219220 '(--omit-rs)-r[omit record separator when using geojsonseq format]' \
220221 '(-r)--omit-rs[omit record separator when using geojsonseq format]' \
221 '(--add-unique-id)-u[add unique id]:unique id format:_export_id_type' \
222 '(-u)--add-unique-id[add unique id]:unique id format:_export_id_type' \
222 '(--add-unique-id)-u[add unique id]:unique id format:_osmium_export_id_type' \
223 '(-u)--add-unique-id[add unique id]:unique id format:_osmium_export_id_type' \
224 '(--attributes)-a[add attributes]:attributes:_osmium_export_attrs' \
225 '(-a)--attributes[add attributes]:attributes:_osmium_export_attrs' \
223226 '(--progress)--no-progress[disable progress bar]' \
224227 '(--no-progress)--progress[enable progress bar]'
225228 }
268271 ${(f)"$(_osmium-single-input-options)"} \
269272 ${(f)"$(_osmium-output-format-options)"} \
270273 ${(f)"$(_osmium-output-options)"} \
271 '--default-type[default item type]' \
272 '-i[read OSM IDs from text file]' \
273 '--id-file[read OSM IDs from text file]' \
274 '-I[read OSM IDs from OSM file]' \
275 '--id-osm-file[read OSM IDs from OSM file]' \
274 '--default-type[default item type]:OSM object type:_osmium_object_type' \
275 '-i[read OSM IDs from text file]:text IDs file:_files' \
276 '--id-file[read OSM IDs from text file]:text IDs file:_files' \
277 '-I[read OSM IDs from OSM file]:OSM IDs file:_files' \
278 '--id-osm-file[read OSM IDs from OSM file]:OSM IDs file:_files' \
276279 '(--add-referenced)-r[recursively add referenced objects]' \
277280 '(-r)--add-referenced[recursively add referenced objects]' \
278281 '(--with-history)-H[make it work with history files]' \
322325 '(-s)--simplify[only write last version of any object]' \
323326 '(--progress)--no-progress[disable progress bar]' \
324327 '(--no-progress)--progress[enable progress bar]'
328 }
329
330 _osmium-removeid() {
331 _arguments : \
332 ${(f)"$(_osmium-common-options)"} \
333 ${(f)"$(_osmium-single-input-options)"} \
334 ${(f)"$(_osmium-output-format-options)"} \
335 ${(f)"$(_osmium-output-options)"} \
336 '--default-type[default item type]:OSM object type:_osmium_object_type' \
337 '-i[read OSM IDs from text file]:text IDs file:_files' \
338 '--id-file[read OSM IDs from text file]:text IDs file:_files' \
339 '-I[read OSM IDs from OSM file]:OSM IDs file:_files' \
340 '--id-osm-file[read OSM IDs from OSM file]:OSM IDs file:_files' \
341 '(--progress)--no-progress[disable progress bar]' \
342 '(--no-progress)--progress[enable progress bar]' \
343 "*:IDs (format\: [nwr]ID):"
325344 }
326345
327346 _osmium-renumber() {
375394 '(-m)--min-count[min count]:count' \
376395 '(--max-count)-M[max count]:count' \
377396 '(-M)--max-count[max count]:count' \
378 '(--sort)-s[sort order]:sort order:_sort_order' \
379 '(-s)--sort[sort order]:sort order:_sort_order' \
397 '(--sort)-s[sort order]:sort order:_osmium_sort_order' \
398 '(-s)--sort[sort order]:sort order:_osmium_sort_order' \
380399 '(--progress)--no-progress[disable progress bar]' \
381400 '(--no-progress)--progress[enable progress bar]' \
382401 '*-t[read only objects of given output types]:OSM entity type:_osmium_entity_type' \
485504 'user'
486505 }
487506
488 _export_file_formats() {
507 _osmium_export_attrs() {
508 _values 'export attributes' \
509 'type' \
510 'id' \
511 'version' \
512 'timestamp' \
513 'changeset' \
514 'uid' \
515 'user' \
516 'way_nodes'
517 }
518
519 _osmium_export_file_formats() {
489520 _values 'export file formats' \
490521 'json[GeoJSON format]' \
491522 'geojson[GeoJSON format]' \
493524 'geojsonseq[GeoJSON Text Sequence format]'
494525 }
495526
496 _export_id_type() {
527 _osmium_export_id_type() {
497528 _values 'export unique id type' \
498529 'counter' \
499530 'type_id'
506537 'smart'
507538 }
508539
509 _sort_order() {
540 _osmium_sort_order() {
510541 _values 'sort order' \
511542 'count-asc' \
512543 'count-desc' \
528559
529560 _osmium-help() {
530561 local -a osmium_help_topics
531 osmium_help_topics=(add-locations-to-ways apply-changes cat diff changeset-filter check-refs derive-changes export extract fileinfo getid getparents help merge merge-changes renumber show sort tags-count tags-filter time-filter file-formats index-types)
562 osmium_help_topics=(add-locations-to-ways apply-changes cat diff changeset-filter check-refs derive-changes export extract fileinfo getid getparents help merge merge-changes removeid renumber show sort tags-count tags-filter time-filter file-formats index-types)
532563 _describe -t osmium-help-topics 'osmium help topics' osmium_help_topics
533564 }
534565