Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
46b03f16c0 |
@@ -1,5 +0,0 @@
|
||||
garmin2osmand-v3/*.osm
|
||||
*.obf*
|
||||
*.ocbf*
|
||||
compiling-obf/*
|
||||
bgmountains-build/*
|
||||
@@ -0,0 +1,12 @@
|
||||
## 0.3.0
|
||||
- Adds --whole-map and --plan.
|
||||
- Uses geographical submap coverage interval union instead of one large rectangular export loop.
|
||||
- Commits completed scanlines atomically and enables efficient continuation with --resume.
|
||||
- Ensures compatible inputs/options when resuming via a settings fingerprint.
|
||||
- Tested full Bulgarian IMG on zoom 10: 330 PNG tiles; peak RSS 20 MiB, 6.8 seconds, resumed in 0.02 seconds.
|
||||
- Planned countrywide 12–16: 1,698,680 candidate tiles (prior global rectangle 1,705,377).
|
||||
- Full zoom-16 countrywide render has NOT been executed or sized in this environment.
|
||||
|
||||
## 0.2.0
|
||||
- TYP line, polygons, icons, LBL codepage and antialiasing improvements.
|
||||
- Real-map 2,033-tile Rila test, 36.29 MiB, 34 seconds, peak 28 MiB.
|
||||
+1
-5
@@ -1,5 +1,5 @@
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(garmin2osmand VERSION 0.7.0 LANGUAGES CXX)
|
||||
project(garmin2osmand VERSION 0.5.0 LANGUAGES CXX)
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
find_package(PNG REQUIRED)
|
||||
@@ -21,8 +21,4 @@ find_package(Python3 COMPONENTS Interpreter QUIET)
|
||||
if(Python3_Interpreter_FOUND)
|
||||
add_test(NAME classic_and_gmp_end_to_end COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/tests/test_smoke.py $<TARGET_FILE:garmin2osmand>)
|
||||
add_test(NAME native_vector_export COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/tests/test_vector.py $<TARGET_FILE:garmin2osm>)
|
||||
add_test(NAME bgmountains_legend_audit COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/tests/test_legend_audit.py)
|
||||
endif()
|
||||
if(Python3_Interpreter_FOUND)
|
||||
add_test(NAME osmand_obf_pipeline_xml COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/tests/test_obf_pipeline.py)
|
||||
endif()
|
||||
|
||||
@@ -1,127 +1,155 @@
|
||||
# BGMountains Garmin IMG → OsmAnd OBF (v0.7)
|
||||
# BGMountains Garmin IMG → OSM → OBF: C++ converter + POI audit toolkit (v0.5)
|
||||
|
||||
**One command builds the C++ IMG converter, emits a reviewed OSM, generates complete custom OsmAnd POI and map type definitions, validates the intermediate source/OSM data, and invokes OsmAndMapCreator to build an OBF.**
|
||||
The source code, PNG icons, full-country inventory, editable 1,871-row POI configuration, source manifest, and comparison tools are included in this archive.
|
||||
|
||||
Unlike v0.6's optional `build_obf.sh` wrapper, the main script no longer expects you to create any missing XML files. First-time setup requires access to the official OsmAnd resource files and the OsmAndMapCreator Java tool; the script can download both on demand. Java, Python, CMake, libpng, SQLite3 and a C++ compiler must be installed.
|
||||
**Important:** The converter source is GPL-3.0-or-later. The original BGMountains map data and any extracted/converted geographic data have **separate** licenses. There is no blanket permission to merge this data into openstreetmap.org. No IMG or OBF binaries are bundled.
|
||||
|
||||
## One-command full Bulgarian map
|
||||
## Build
|
||||
|
||||
```bash
|
||||
sudo apt update
|
||||
sudo apt install -y build-essential cmake libpng-dev libsqlite3-dev python3 openjdk-21-jre-headless unzip
|
||||
|
||||
python3 scripts/build_bgmountains.py \
|
||||
--img '/path/to/gmapsupp.img' \
|
||||
--out '/path/to/BGMountains-build' \
|
||||
--download-creator
|
||||
```sh
|
||||
sudo apt-get install -y cmake g++ make libpng-dev libsqlite3-dev python3
|
||||
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
|
||||
cmake --build build -j "$(nproc)"
|
||||
ctest --test-dir build --output-on-failure
|
||||
```
|
||||
|
||||
If you **already have** OsmAndMapCreator, use `--creator /path/to/OsmAndMapCreator` in place of `--download-creator`. You can also `export OSMAND_MAPCREATOR=/path/to/OsmAndMapCreator` and omit `--creator`.
|
||||
## Bundled resources
|
||||
|
||||
OsmAndMapCreator is ~150 MB and requires extra disk space and Java RAM. By default, the script downloads it **only when** you request `--download-creator`; upstream OsmAnd `poi_types.xml` and `rendering_types.xml` are downloaded or read from your MapCreator directory automatically, then cached in the output folder. Requires Internet for first use unless you supply existing XML files with `--poi-base FILE --rendering-base FILE`.
|
||||
| File | Purpose |
|
||||
|---|---|
|
||||
| `data/BGMountains-unique-poi-types.csv` | **All 1,871 observed POI hex types**, counts, named counts, current default classification, icon availability and five source coordinates/names/mapset IDs per hex type |
|
||||
| `config/poi-overrides-all-types.csv` | **Editable configurator**: one row per hex, with count, default and an example embedded in the notes. Rules initially have empty tags, therefore do not change output |
|
||||
| `config/poi-overrides.csv` | Minimal template with explanation and an intentionally commented example |
|
||||
| `data/BGMountains-source-pois.csv.gz` | Complete extracted inventory (416,165 source records) for audit/provenance comparisons; *this is map-derived data* |
|
||||
| `data/poi-icons/*.png` | 96 successfully decoded Garmin TYP icons indexed by hex code; facilitates visual comparison with GPXSee |
|
||||
| `tools/validate_pois.py` | Disk-backed, streaming comparison of source manifest against OSM POIs; optional semantic override assertions; OsmAnd inspector wrapper |
|
||||
| `tests/demo.img` | Synthetic Garmin fixture suitable for reproducing baseline smoke tests |
|
||||
|
||||
**Multithreading remains disabled by default (`--jobs 1`).** Pass `--jobs 4` explicitly for the IMG parsing stage. It does not control MapCreator's Java processing.
|
||||
## Produce a countrywide OSM export + inventory
|
||||
|
||||
If the Java process runs out of memory:
|
||||
Default execution is **serial** (`--jobs 1`, even if not supplied). Set `--jobs 4` or another integer 1–64 to opt into parallel mapset processing. Parallel processing uses independent SQLite stages; all OSM nodes are emitted before ways and node refs are rebased correctly.
|
||||
|
||||
```bash
|
||||
python3 scripts/build_bgmountains.py --img gmapsupp.img --out ./BGMountains-build \
|
||||
--creator ~/OsmAndMapCreator --jobs 4 \
|
||||
--java-opts '-Xms1G -Xmx12G'
|
||||
```sh
|
||||
./build/garmin2osm \
|
||||
--input '/path/to/gmapsupp.img' \
|
||||
--output Bulgaria.osm \
|
||||
--poi-overrides config/poi-overrides-all-types.csv \
|
||||
--poi-types-out unique-poi-types.csv \
|
||||
--poi-manifest source-pois.csv \
|
||||
--poi-examples 5 \
|
||||
--jobs 4
|
||||
```
|
||||
|
||||
The full-country OSM can be large. Allocate substantial disk space for OSM XML, temporary indexing databases, and OBF output. The script retains intermediate files for auditing.
|
||||
For a regional check before rebuilding the whole country:
|
||||
|
||||
## What is generated
|
||||
|
||||
```text
|
||||
BGMountains-build/
|
||||
BGMountains.osm # converted source, Garmin type and name kept
|
||||
source-pois.csv # source point audit manifest
|
||||
poi-types.csv # observed type counts and example coordinates
|
||||
validation.json # source-to-OSM counts/mismatches
|
||||
mismatches.csv
|
||||
converter.log
|
||||
validator.log
|
||||
upstream/poi_types.xml # official OsmAnd definitions (if downloaded)
|
||||
upstream/rendering_types.xml
|
||||
osmand-config/
|
||||
poi_types.bgmountains.xml # FULL base OsmAnd POI rules + 1 custom type per observed Garmin code
|
||||
rendering_types.bgmountains.xml # FULL base render encoding + map encoding for each Garmin code
|
||||
BGMountains-custom.render.xml # OPTIONAL visual style for custom icons in OsmAnd
|
||||
type-index-summary.json
|
||||
mapcreator.log
|
||||
*.obf # full map (created by OsmAndMapCreator)
|
||||
obf-poi-index.txt # dump from inspector.sh, if available
|
||||
build-manifest.json
|
||||
```sh
|
||||
./build/garmin2osm --input '/path/to/gmapsupp.img' \
|
||||
--bbox 23.28,42.11,23.47,42.27 --output Rila.osm \
|
||||
--poi-overrides config/poi-overrides-all-types.csv \
|
||||
--poi-types-out Rila-types.csv --poi-manifest Rila-source.csv
|
||||
```
|
||||
|
||||
For the v0.6 reviewed **national catalog**: 263 decoded types, 410,563 POIs, 87 types with **at least 100** occurrences, 86 with Garmin TYP bitmap extraction. Actual new runs produce their own observed counts. The default threshold is 100; use `--threshold 250` to change it.
|
||||
Generate **only** a catalog and manifest (no OSM output or staging DB):
|
||||
|
||||
### Three different meanings of 'icon'
|
||||
|
||||
1. **Native OsmAnd map icon.** Verified type receives proper OSM tags (`natural=spring`, `tourism=hotel`, etc.) from `config/poi-overrides-all-types.csv`. Existing OsmAnd styles choose their built-in symbols.
|
||||
2. **Custom Garmin type in OBF.** Every observed POI receives `garmin:type` and `bgm_poi=type_0xHEX`; the generated POI and map type XML preserve those types as a dedicated category. Map-index objects at high-frequency types are stored from zoom **15** by default, rare types from zoom **17** (adjustable by `--frequent-zoom`, `--rare-zoom`). Native OsmAnd styles may not draw custom types without a matching style.
|
||||
3. **Actual Garmin TYP bitmap.** Preserved separately as PNG in `data/poi-icons/`; an OBF **does not embed third-party bitmap resources into the app icon set**. To display these exact symbols requires changing OsmAnd application resources, not just editing XML. A different installed OsmAnd render style may refer to already available built-in symbols.
|
||||
|
||||
## Assign additional built-in OsmAnd icons yourself
|
||||
|
||||
Edit `config/osmand-icons.csv`:
|
||||
|
||||
```csv
|
||||
code,show_in_custom_style,minzoom,osmand_builtin_icon,...
|
||||
0x650b,yes,16,information,...
|
||||
```sh
|
||||
./build/garmin2osm --input '/path/to/gmapsupp.img' \
|
||||
--poi-types-out catalog.csv --poi-manifest source.csv --icons-dir my-icons
|
||||
```
|
||||
|
||||
For common unknowns (>=100 occurrences with no verified standard OSM semantic category) the sample config enables a generic **built-in** `information` icon in an optional style. For verified classes, `show_in_custom_style=no` lets the stock OsmAnd map style draw a more meaningful native icon. The file includes one entry for **all 263 source types**, occurrence counts and sample coordinates. Change the `osmand_builtin_icon` to a valid icon ID supported by your installed OsmAnd version and set `show_in_custom_style=yes` to override the default.
|
||||
Other original flags remain: `--inspect`, `--contours`, `--all-levels`, `--keep-temp`, `--temp`, `--limit-maps`. Existing OSM, staging, and manifest output paths are never intentionally overwritten. Source inventory is generated even for ignored or `drop`-configured POIs, so intentional exclusions can be audited explicitly.
|
||||
|
||||
After building, install `BGMountains-custom.render.xml` as a custom OsmAnd rendering style in the application's `rendering` directory, then select the corresponding map style. It depends on OsmAnd's `default` style. It is optional and **not automatically installed** by placing the OBF on the device. Its exact icon rendering has not been device-tested in this release; built-in IDs and application versions may differ. Avoid over-rendering at low zoom because 410k points can be slow.
|
||||
## Override known defaults and add new POI types
|
||||
|
||||
## Test a region first
|
||||
Edit `config/poi-overrides-all-types.csv` in LibreOffice/Excel or a text editor. Columns:
|
||||
|
||||
```bash
|
||||
python3 scripts/build_bgmountains.py --img gmapsupp.img \
|
||||
--out ./rila-build --bbox 23.22,42.08,23.47,42.29 \
|
||||
--creator ~/OsmAndMapCreator
|
||||
```
|
||||
code,name_contains,mode,tags,note
|
||||
0x6414,,replace,man_made=water_well,ONLY IF VERIFIED
|
||||
0x6503,,append,information=guidepost;hiking=yes,Example: adds another attribute
|
||||
```
|
||||
|
||||
Alternatively use `--prepare-only` to stop before Java: this produces the OSM plus generated XML and validation reports.
|
||||
Choose a valid mode: `append`, `replace`, `keep_raw`, or `drop`. `name_contains` is optional and case-sensitive; if populated, the rule applies only to names containing that text. Rule order matters within the same code. Actual `garmin:type`, `garmin:feature`, `garmin:mapset` and `name` cannot be overridden. Use `key=` to delete an existing default key. Unknown hex types will remain raw-only until mapped. **Never infer the meaning of a code solely from its hexadecimal number.**
|
||||
|
||||
## Rebuild from existing OSM
|
||||
An immediately usable example that modifies all type `0x6414` points follows:
|
||||
|
||||
Only use an OSM generated by **v0.7 or later** containing `bgm_poi` tags:
|
||||
|
||||
```bash
|
||||
python3 scripts/build_bgmountains.py \
|
||||
--osm ./BGMountains-build/BGMountains.osm \
|
||||
--catalog ./BGMountains-build/poi-types.csv \
|
||||
--creator ~/OsmAndMapCreator \
|
||||
--out ./obf-rebuild
|
||||
```
|
||||
code,name_contains,mode,tags,note
|
||||
0x6414,,replace,man_made=water_well,TEST ONLY; not evidence of true semantics
|
||||
```
|
||||
|
||||
Original v0.6 OSM exports **lack** the `bgm_poi` classifier. The script rejects those for this path rather than quietly producing an incomplete custom POI index. To reuse old data, rerun the IMG extraction with v0.7.
|
||||
NOTE: `0x6414` presently has a built-in `amenity=drinking_water` default. Its old duplicate fallback to `water_well` was unreachable and has been removed. The icon and field data need to establish the right category. **The sample replacement is not a verified mapping.**
|
||||
|
||||
## How POIs are edited
|
||||
Coordinates in `data/BGMountains-unique-poi-types.csv` refer to the decoded *original IMG* features. For each type, open the coordinates in GPXSee's Garmin map and inspect both the label and icon. `data/poi-icons/0x6414.png` may provide additional context. The fact that a rendered glyph looks like water is **not** enough to distinguish `natural=spring`, `man_made=water_well` and `amenity=drinking_water`.
|
||||
|
||||
- `config/poi-overrides-all-types.csv`: reviewed original IMG type → semantic OSM tags (five-column CSV). You can override/add rules, preserving provenance. This includes the earlier 67 legend/icon matches.
|
||||
- `config/poi-name-fixes.csv`: coordinate-specific correction of verified names, never guessed universally.
|
||||
- `config/poi-additions.csv`: manually add personally verified POIs.
|
||||
- `config/osmand-icons.csv`: optional on-screen **stock OsmAnd** symbol selections for custom raw types.
|
||||
- `data/BGMountains-unique-poi-types.csv`: counts, names, five real sample coordinates per Garmin hex type.
|
||||
- `data/poi-icons`: 96 extracted TYP bitmaps for reference, not automatically installed into OsmAnd.
|
||||
## Automated validation: IMG → OSM
|
||||
|
||||
### Validation
|
||||
The `--poi-manifest` output is a separately emitted inventory of every parsed IMG point. To compare against the generated OSM:
|
||||
|
||||
The C++/Python roundtrip test checks extracted source POI manifest against OSM coordinates, names and tags. `ctest --test-dir build --output-on-failure` runs 5 bundled tests, including checks of full upstream XML augmentation. On the tested source bbox (23.22,42.08,23.47,42.29) a v0.7 extraction produced 3,986 POIs across 60 types and zero source-versus-OSM mismatches. **These tests do not assert OBF persistence** until MapCreator runs on your machine and `obf-poi-index.txt` is reviewed.
|
||||
```sh
|
||||
python3 tools/validate_pois.py compare \
|
||||
--source Rila-source.csv --osm Rila.osm \
|
||||
--rules config/poi-overrides-all-types.csv \
|
||||
--report Rila-report.json \
|
||||
--mismatches Rila-missing-extra.csv
|
||||
```
|
||||
|
||||
OsmAnd has separate indexed data for map rendering and POI search, and an additional app-side style/icons component. A successful OBF build does not prove every icon will be visible. To debug OBF use `~/OsmAndMapCreator/inspector.sh -vpoi /path/to/map.obf` and compare the categories to `osmand-config/type-index-summary.json`.
|
||||
Both `.osm` and `.osm.gz` are supported. The validator checks type, exact 7-digit quantized coordinates, name and multiplicity; it separately checks the assertions provided in the override CSV. Its failure exit code is nonzero; `--mismatches` includes direct OSM web links for investigation. Uses temporary SQLite to avoid holding the entire POI set in RAM. A `drop` override is treated as intentional absence, but a matching input record still appears in the source manifest.
|
||||
|
||||
## Upstream and redistribution
|
||||
**Proof limit:** This is an internal IMG-to-OSM conversion-consistency check, not independent verification of Garmin decoder fidelity or the semantic meaning of a hex code. It cannot by itself prove that your `.obf` contains all the classified features.
|
||||
|
||||
The repository's C++ converter has its own `LICENSE`; BGMountains-derived SVG/PNG icons, data, examples and Garmin IMG/OBF remain subject to map licensors' conditions. Do not redistribute the full data release or generated OBF as unrestricted ODbL/CC0 without additional rights clearance. The script downloads official OsmAnd XML into a private build directory rather than repackaging those resource files in this source ZIP.
|
||||
## Automated validation: OSM → OBF
|
||||
|
||||
Official references:
|
||||
- https://osmand.net/docs/technical/map-creation/create-offline-maps-yourself/
|
||||
- https://github.com/osmandapp/OsmAnd-resources/tree/master/poi
|
||||
- https://github.com/osmandapp/OsmAnd-resources/tree/master/obf_creation
|
||||
- https://osmand.net/docs/technical/osmand-file-formats/osmand-rendering-style/
|
||||
Build with the official OsmAndMapCreator distribution (download separately):
|
||||
|
||||
```sh
|
||||
./scripts/build_obf.sh /path/OsmAndMapCreator "$PWD/Rila.osm"
|
||||
# Custom OsmAnd POI / rendering definitions may be supplied with their FULL respective config XMLs:
|
||||
./scripts/build_obf.sh /path/OsmAndMapCreator "$PWD/Rila.osm" \
|
||||
--poi-types /path/to/full-poi_types.xml \
|
||||
--rendering-types /path/to/full-rendering_types.xml
|
||||
```
|
||||
|
||||
Inspect **your actual, externally compiled OBF**:
|
||||
|
||||
```sh
|
||||
python3 tools/validate_pois.py obf-inspect \
|
||||
--inspector /path/to/OsmAndMapCreator/inspector.sh \
|
||||
--obf /path/to/Rila.obf \
|
||||
--bbox 23.28,42.11,23.47,42.27 \
|
||||
--report obf-poi-inspection.txt
|
||||
```
|
||||
|
||||
The wrapper invokes OsmAnd BinaryInspector `-vpoi -vpoiobjects` with an optional bounding box and saves the output. It does **not** yet reconcile OBF internal IDs with the Garmin origin; OsmAnd may exclude unsupported tags from its map and POI indexes. For OBF persistence checks, use a POI (known category, name and coordinate) and inspect it via the rendered map / a bounded BinaryInspector dump; unknown types often require extending the **full** OsmAnd `poi_types.xml`. For line colors or custom map tags, modify **full** `rendering_types.xml`, then rebuild the OBF. A CSV rule only affects the OSM export; it does not change OsmAnd's indexes without a rebuild.
|
||||
|
||||
## What is tested
|
||||
|
||||
- Existing bundled CTest suite: 3/3 tests passed.
|
||||
- Supplied **441,942,016-byte** Bulgaria IMG: decoded **165 map regions**, **416,165 POI records**, **1,871 unique raw point types**, **96 icons**; full inventory generation completed.
|
||||
- Rila test bbox `23.28,42.11,23.47,42.27`: source and exported OSM each contained **2,424 POIs**, with **zero missing/extra** after seven-decimal coordinate correction.
|
||||
- Serial and `--jobs 4` Rila jobs: exactly the same multiset of **16,786 ways and 2,424 POIs** (including way geometry and tags).
|
||||
- A deliberately overridden test type was exported and assertions passed.
|
||||
- **Not tested:** user's full final `.obf` (not provided here); comprehensive semantic correspondence of 1,871 Garmin types; original Garmin route-network validity/turn-restrictions; all possible IMG/GMP variants.
|
||||
|
||||
## Concurrency caution
|
||||
|
||||
The Garmin container file uses a shared `std::ifstream`, protected by a mutex to ensure safe reads. Parser threads work on different `Map` objects with separate SQLite stores. For maximum throughput, `--jobs 4` may help on multi-core CPUs, but the disk read lock, SQLite writes and OSM XML output remain throughput bottlenecks. The default `--jobs 1` is deterministic and safest. Memory and temporary disk use increase with concurrency.
|
||||
|
||||
## Add independent POI records (optional)
|
||||
|
||||
Use `config/poi-additions.csv` with four CSV fields: `lat,lon,name,tags`.
|
||||
The program includes them with `garmin:feature=manual_poi` and `source=user_manual`.
|
||||
They are **not** presented as Garmin-extracted features; the source-POI validator
|
||||
ignores these intentional extra nodes. Add the flag `--poi-additions config/poi-additions.csv`
|
||||
to a command with `--output` (empty file is a no-op).
|
||||
|
||||
## Reproduce the bundled regional audit without the source IMG
|
||||
|
||||
```sh
|
||||
python3 tools/validate_pois.py compare \
|
||||
--source samples/Rila-source-pois.csv \
|
||||
--osm samples/Rila-vector.osm.gz \
|
||||
--report results.json --mismatches differences.csv
|
||||
```
|
||||
|
||||
For the complete source inventory, use the gzip-compressed CSV directly:
|
||||
`python3 tools/validate_pois.py compare --source data/BGMountains-source-pois.csv.gz --osm /your/full-map.osm`.
|
||||
|
||||
@@ -1,66 +0,0 @@
|
||||
# BGMountains Garmin IMG → OSM v0.6 (legend-reviewed, spatially validated)
|
||||
|
||||
This is an **incremental source + QA release**, based on the v0.5 converter. Original map IMG/OBF binaries are **not bundled**. The source map's license is **not** the converter's GPL license: map-derived data, icons, CSV and examples are for private verification unless the rights holders authorize redistribution.
|
||||
|
||||
## Corrected
|
||||
|
||||
1. **67 exact extracted TYP icon ↔ supplied BGMountains legend matches**, 60 of them present as decoded POI types in the IMG (7 icons occur only in its TYP catalog), including 48 changes to the previous semantic defaults. Changes appear in `data/legend-corrections-log.csv`, and new mappings are embedded directly in `src/vector.cpp` as safe fallbacks. Every verified icon also gets a `garmin:legend` tag to aid inspection. Optional `config/poi-overrides-legend-reviewed.csv` permits further edits while retaining the original 1,871 type rows.
|
||||
2. **Extended-point label pointer**: v0.5 read the label pointer at `p+len-3`; Garmin's layout places it at `p+6`, before the optional extra byte. Correcting this fixed or cleared **117 label outcomes**. See `data/extended-label-decoder-changes.csv`, with old/new names/coordinates. The string `есебър` was a decoder artifact at the *wrong geographic location*, not a misspelling to force to `Несебър`. The actual town of Несебър is in the normal classic point data at 42.6599550,27.7197504, mapset 02235056.
|
||||
3. **Spatial sanity gate**: Extended POIs outside their own TRE subdivision bounds (beyond 0.00005° margin) are no longer emitted. **5,602 suspected/invalid point records** disappear; classic POI count remains **407,820**. This is a conservative defense against malformed extended streams, not independent Garmin specification conformance testing. Retained extended records may still warrant validation. Total kept POIs: **410,563**, distinct types: **263** (113 classic, 150 extended). The old 1,871-code inventory remains available, annotated with exclusion counts.
|
||||
4. **Optional per-feature POI name corrections**, `--poi-name-fixes config/poi-name-fixes.csv` uses an exact source-map ID, hex code, latitude, longitude, previous name and replacement name. Never blanket-correct all points with a particular substring: it could mask a decoder error. No name corrections are active by default.
|
||||
5. **Threads are off by default** (`--jobs 1`); use `--jobs 4` to enable four parallel workers. POI rules apply consistently in both cases.
|
||||
|
||||
## Files
|
||||
|
||||
- `config/poi-overrides-all-types.csv` (same as `config/poi-overrides-legend-reviewed.csv`): **corrected editable 1,871-row override file** (schema `code,name_contains,mode,tags,note`). 60 active POI-code rows corrected (plus 7 extra verified icons embedded in C++ for future occurrences). Unverified rows are left inert and flagged in the notes.
|
||||
- `config/poi-name-fixes.csv`: name correction template, no active fixes by default.
|
||||
- `data/BGMountains-unique-poi-types.csv` (same as `data/BGMountains-unique-poi-types-STRICT-reviewed.csv`): **current useful catalog: 263 retained raw types**, current counts, reviewed classification status, up to five real source coordinates and names per type.
|
||||
- `data/BGMountains-unique-poi-types-reviewed.csv`: **historical 1,871-type catalog**, with v0.5 counts, exclusions and review status; do not mistake rejected coordinates for correct map objects.
|
||||
- `data/legend-corrections-log.csv`: 60 present-and-verified mappings; `data/all-67-icon-legend-matches.csv`: 67 TYP icon-to-legend matches (7 icon codes not observed as POIs), including original/new OSM semantic tags and one coordinate each.
|
||||
- `data/extended-label-decoder-changes.csv`: 117 extended-label before/after results (some names vanish because they came from the wrong LBL offset).
|
||||
- `data/legend-verified-POI-QA-waypoints.gpx`: 179 sample POIs of verified hex codes, for simultaneous visual comparison in GPXSee + original IMG. Exact count is in the GPX file.
|
||||
- `data/BGMountains-POI-Explorer.html`: no-network/offline searchable icon reference, with copyable sample coordinates and basemap links.
|
||||
- `data/poi-icons/*.png`: embedded Garmin icons extracted from the original TYP (copyright depends on source data).
|
||||
- `tools/validate_pois.py`: previously tested source→OSM audit; limitation remains that it is not a third-party ground-truth or OBF assertion.
|
||||
|
||||
## Build and validation
|
||||
|
||||
```bash
|
||||
sudo apt-get install -y cmake g++ libpng-dev libsqlite3-dev python3
|
||||
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
|
||||
cmake --build build -j "$(nproc)"
|
||||
ctest --test-dir build --output-on-failure
|
||||
|
||||
./build/garmin2osm --input 'gmapsupp.img' \
|
||||
--output BGMountains-legend-reviewed.osm \
|
||||
--poi-overrides config/poi-overrides-legend-reviewed.csv \
|
||||
--poi-name-fixes config/poi-name-fixes.csv \
|
||||
--poi-manifest BGMountains-source-reviewed.csv \
|
||||
--poi-types-out BGMountains-types-reviewed.csv
|
||||
|
||||
python3 tools/validate_pois.py compare \
|
||||
--source BGMountains-source-reviewed.csv \
|
||||
--osm BGMountains-legend-reviewed.osm \
|
||||
--rules config/poi-overrides-legend-reviewed.csv \
|
||||
--report validated.json --mismatches mismatches.csv
|
||||
```
|
||||
|
||||
Parallelism: append `--jobs 4` to the converter command if desired; otherwise it uses one worker.
|
||||
|
||||
**Adding one verified name correction:** edit `config/poi-name-fixes.csv`, with this schema:
|
||||
|
||||
```csv
|
||||
mapset,code,lat,lon,old_name,new_name,note
|
||||
# Example (illustrative; this row is NOT a real correction):
|
||||
# 02234071,0x6609,42.1897745,23.2835913,Х.Иван Вазов,х. Иван Вазов,Check actual Garmin source before use
|
||||
```
|
||||
|
||||
The original `name` and coordinates in the source manifest are quantized to seven decimals for exact matching. A manual name fix affects both OSM and the manifest, so it **cannot count as independent evidence of cartographic correctness**; record your verification separately.
|
||||
|
||||
## What this does not prove
|
||||
|
||||
The user's full `.obf` was not provided. Compile it again from the updated OSM source and inspect its POI categories/index; neither a successful OSM export nor this audit proves that OsmAnd indexing retains all custom tags. Geometry classification for the map's **area and line legend** remains a separate review (this patch principally covers POIs). Extended types other than those confirmed by icons are **unverified**, even when they pass the subdivision bounds check. Several extended nautical symbols (e.g., navigation lights) appear plausible but have no matching extracted TYP glyph.
|
||||
|
||||
## 0x10d1f / Несебър
|
||||
|
||||
The v0.5 type list showed `есебър` at **43.0592179,27.7399421**. At that latitude it is ~44 km north of the original Nesebar town POI. The v0.6 label-pointer fix no longer returns `есебър` at that record, and the subdivision bounds check suppresses the spurious record. **No synthetic `Несебър` POI has been inserted.** The real original city/town record is preserved unchanged.
|
||||
Binary file not shown.
@@ -0,0 +1,11 @@
|
||||
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
|
||||
cmake --build build -j "$(nproc)"
|
||||
|
||||
./build/garmin2osm \
|
||||
--input ~/gmapsupp.img \
|
||||
--output Bulgaria.osm \
|
||||
--poi-overrides config/poi-overrides-all-types.csv \
|
||||
--poi-additions config/poi-additions.csv \
|
||||
--poi-types-out unique-poi-types.csv \
|
||||
--poi-manifest source-pois.csv \
|
||||
--jobs 4
|
||||
@@ -1,17 +0,0 @@
|
||||
#sudo apt-get install -y cmake g++ libpng-dev libsqlite3-dev python3
|
||||
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
|
||||
cmake --build build -j "$(nproc)"
|
||||
ctest --test-dir build --output-on-failure
|
||||
|
||||
./build/garmin2osm --input '/home/opthq/gmapsupp.img' \
|
||||
--output BGMountains-legend-reviewed.osm \
|
||||
--poi-overrides config/poi-overrides-legend-reviewed.csv \
|
||||
--poi-name-fixes config/poi-name-fixes.csv
|
||||
--poi-manifest BGMountains-source-reviewed.csv \
|
||||
--poi-types-out BGMountains-types-reviewed.csv
|
||||
|
||||
python3 tools/validate_pois.py compare \
|
||||
--source BGMountains-source-reviewed.csv \
|
||||
--osm BGMountains-legend-reviewed.osm \
|
||||
--rules config/poi-overrides-legend-reviewed.csv \
|
||||
--report validated.json --mismatches mismatches.csv
|
||||
@@ -1,5 +0,0 @@
|
||||
export JAVA_OPTS="-Xms256M -Xmx25G"
|
||||
|
||||
../../scripts/build_obf.sh \
|
||||
$(realpath .) \
|
||||
$(realpath ../Bulgaria-garmin.osm)
|
||||
@@ -1,2 +0,0 @@
|
||||
wget https://download.osmand.net/latest-night-build/OsmAndMapCreator-main.zip
|
||||
unzip *.zip
|
||||
@@ -1,264 +0,0 @@
|
||||
code,show_in_custom_style,minzoom,osmand_builtin_icon,count,garmin_icon_extracted,legend_en,reviewed_osm_tags,example_lat,example_lon,note
|
||||
0x200,no,18,information,2,yes,Capital City,place=city;capital=yes,41.0612941,28.8116670,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x800,no,18,information,51,yes,Large City,place=city,43.9025259,22.2788572,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x900,no,16,information,283,yes,Town,place=town,42.0570374,24.5459247,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0xd00,yes,16,information,6610,no,,,41.6287208,23.7694144,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0xe00,yes,16,information,114,no,,,43.9952660,22.8717756,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1100,yes,16,information,8430,no,,,42.5975990,22.5972247,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x2800,no,16,information,54902,no,,place=locality,42.6277471,24.3122506,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x2a07,yes,16,information,227,no,,,43.8551474,25.9693837,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x2a0e,yes,16,information,525,yes,,,42.0046806,24.8740768,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x2b00,no,16,information,1558,no,,tourism=hotel,42.6465440,27.6449919,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x2c01,no,18,information,20,yes,,,42.0264173,23.9946342,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x2c02,yes,16,information,538,yes,,,42.3479176,25.0754786,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x2c03,yes,16,information,474,yes,,,43.2219315,25.7480693,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x2c05,no,16,information,2481,yes,School,amenity=school,41.7214394,24.6845198,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x2c06,no,18,information,57,yes,,,43.2240987,27.9363871,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x2c07,no,18,information,20,yes,,,43.1368518,24.7227359,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x2c08,yes,16,information,1328,yes,,,41.9112968,24.9703360,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x2c0b,no,16,information,1606,yes,Church,amenity=place_of_worship,43.0217957,24.8099613,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x2d01,no,18,information,68,no,,,42.8797030,25.3179932,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x2d02,yes,16,information,434,no,,,42.1507859,24.7315550,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x2d03,no,18,information,57,no,,,42.6922703,23.3241892,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x2d09,no,16,information,337,yes,,leisure=swimming_pool,41.8625021,23.5053134,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x2e02,yes,16,information,477,no,,,41.6551137,25.5503798,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x2e03,yes,16,information,502,no,,,43.2763910,27.9675651,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x2e04,no,18,information,66,no,,,42.5185919,27.4564004,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x2e05,no,16,information,487,yes,Pharmacy,amenity=pharmacy,42.7442837,25.3431416,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x2e06,yes,16,information,348,no,,,43.4717417,23.9467192,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x2e07,no,16,information,105,yes,Clothes shop,shop=clothes,43.0698609,25.6080151,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x2e08,no,18,information,13,no,,,42.7295208,23.2671332,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x2e09,no,18,information,8,no,,,43.2294202,27.8701901,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x2e0a,yes,16,information,159,no,,,43.8517356,25.9867859,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x2e0b,no,18,information,52,no,,,42.1881008,24.3556809,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x2f00,yes,16,information,1269,yes,,,42.9236698,24.2466116,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x2f01,yes,16,information,778,no,,,41.5430832,23.2712317,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x2f03,yes,16,information,106,no,,,41.3775158,25.0830102,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x2f05,no,16,information,486,no,,amenity=post_office,42.0306015,23.8108063,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x2f06,yes,16,information,320,no,,,42.3073840,23.8596869,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x2f08,yes,16,information,123,yes,,,42.6397204,23.3731771,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x2f0a,no,18,information,4,yes,Synagogue,amenity=place_of_worship;religion=jewish,41.5711713,23.7286234,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x2f0b,yes,16,information,1499,no,,,43.7308860,23.9443588,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x2f0c,no,16,information,320,yes,Mosque,amenity=place_of_worship;religion=muslim,44.0549612,26.7991304,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x2f0e,no,18,information,4,yes,Car Wash,amenity=car_wash,42.2939301,22.7035904,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x3001,yes,16,information,170,yes,,,43.3623934,25.1447439,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x3002,yes,16,information,564,no,,,42.5638032,27.6036644,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x3003,yes,16,information,841,no,,,43.2501698,27.7748966,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x3006,no,18,information,85,yes,,,43.7391043,28.5608482,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x3007,yes,16,information,132,no,,,43.2023406,25.7318473,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x3008,no,18,information,37,yes,Fire Station,amenity=fire_station,42.5666571,27.6193285,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x4700,no,16,information,101,yes,Port,industrial=port,41.6431189,25.2845192,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x4e00,no,18,information,14,no,,,41.9877291,24.0870094,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x6400,no,16,information,465,yes,Quarry,landuse=quarry,40.8776808,23.9436078,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x6401,no,16,information,1679,yes,Bridge,man_made=bridge,42.6645684,22.9691291,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x6402,no,16,information,6186,yes,Building,building=yes,42.5507569,23.2217932,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x6403,yes,16,information,1729,yes,Graveyard/Tombstone,,43.0418801,23.5914874,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x6404,no,16,information,1507,yes,Church,amenity=place_of_worship,42.1896243,27.0861053,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x6405,yes,16,information,260,yes,Hunting Lodge,,42.7514720,27.2207522,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x6406,no,16,information,854,yes,Barrier/Gate,barrier=gate,41.5502286,24.7455668,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x6407,no,16,information,2861,yes,Picnic Site,tourism=picnic_site,41.9156528,25.3233576,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x6408,no,18,information,12,yes,Mountain Rescue,emergency=mountain_rescue,42.6026416,23.2414269,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x6409,no,16,information,1235,yes,Monument,historic=monument,43.1282043,23.6027098,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x640a,yes,16,information,2095,yes,Danger,,43.1507993,25.3284001,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x640b,no,16,information,1128,yes,Chapel,amenity=place_of_worship,41.9598985,24.3688774,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x640c,no,16,information,1353,yes,Mine Shaft,man_made=mine_shaft,43.0497336,22.9328442,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x640d,yes,16,information,137,yes,Lift,,42.6056242,23.2995987,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x640e,no,16,information,977,yes,Bus Stop/Station,highway=bus_stop,43.3513427,25.1430917,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x640f,yes,16,information,2766,yes,Graveyard/Tombstone,,42.0345068,22.4919534,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x6410,no,18,information,98,yes,,,43.6105728,23.6852574,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x6411,no,16,information,875,yes,Tower,man_made=tower,41.7411375,24.8182654,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x6413,no,18,information,76,yes,Tunnel,,42.6872063,23.3418703,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x6414,no,16,information,32922,yes,Drinking Water,amenity=drinking_water,43.1117034,23.7205982,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x6415,no,16,information,264,yes,Camp Site,tourism=camp_site,41.7506647,25.1023221,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x6416,no,16,information,2886,yes,Ruins,historic=ruins,41.5940452,24.3094182,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x6417,no,16,information,8868,yes,Well,man_made=water_well,42.2628808,24.2223430,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x6418,yes,16,information,305,yes,,,42.7693677,26.3003898,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x6419,yes,16,information,113,yes,,,42.5478601,26.7053819,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x641a,no,18,information,62,yes,Church,amenity=place_of_worship,42.9599547,23.0566549,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x641c,no,16,information,3120,yes,Bus Stop/Station,highway=bus_stop,42.8542113,25.3382707,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x641d,no,18,information,17,yes,,,42.1828008,24.7408462,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x641e,no,18,information,55,yes,,,42.3201728,24.3003416,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x641f,no,18,information,1,yes,,,43.7468505,23.7692428,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x6500,yes,16,information,31214,yes,Reservoir,,42.0310307,24.7559094,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x6501,no,16,information,2412,yes,Restaurant,amenity=restaurant,43.3456135,28.0715060,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x6502,yes,16,information,1864,yes,River Passage,,42.7929711,25.2992177,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x6503,yes,16,information,760,yes,Crossroad,,43.4149003,28.4942007,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x6506,no,16,information,424,yes,Museum,tourism=museum,42.1463013,24.7487855,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x650b,yes,16,information,8767,yes,Winter Marking,,42.0000887,23.3820820,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x6511,no,16,information,50308,yes,Spring,natural=spring,42.8732872,23.3371925,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x6600,yes,16,information,66206,yes,Triangulation,,41.2312603,22.6785922,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x6601,yes,16,information,165,yes,Natural Phenomenon,,42.9589677,25.2119064,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x6602,no,16,information,891,yes,Viewpoint,tourism=viewpoint,41.7438412,23.4641790,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x6603,no,16,information,26366,yes,Triangulation,man_made=survey_point,42.5520873,23.8540435,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x6604,no,18,information,10,yes,,,42.2186995,27.7872348,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x6608,no,16,information,2644,yes,Hotel,tourism=hotel,42.8794885,27.8957462,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x6609,no,16,information,372,yes,Hut,tourism=alpine_hut,43.2779145,27.1159101,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x660a,no,16,information,275,yes,Refuge,amenity=shelter;shelter_type=basic_hut,42.8157377,23.8160634,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x660b,yes,16,information,2612,yes,Mark,,43.9378452,22.4072385,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x660c,no,18,information,94,yes,,natural=saddle,43.6241341,22.4983478,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x660d,no,18,information,8,yes,,,42.6904893,23.4124017,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x660e,no,18,information,8,yes,,,43.4520006,24.5126653,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x660f,no,18,information,44,yes,,,42.6426816,26.3592696,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x6610,no,18,information,15,yes,Meadow,,42.8212094,26.1542845,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x6613,no,16,information,1746,yes,Waterfall,waterway=waterfall,42.7435327,24.6398234,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x6614,yes,16,information,15289,yes,Rock,,42.7437901,25.2693915,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x6615,no,16,information,942,yes,Cave,natural=cave_entrance,41.8003178,23.3853436,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x6616,no,16,information,15540,no,,natural=peak,42.8516150,25.7782173,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x6617,no,16,information,112,yes,Peak,natural=peak,41.7893529,22.9647946,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x6618,no,16,information,10176,yes,Tree,natural=tree,42.7752686,23.9033318,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x6619,no,16,information,195,yes,Prehistoric site,historic=archaeological_site,42.5703692,25.3767228,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x661a,no,16,information,384,yes,Antiquity site,historic=archaeological_site,41.7153454,26.0307527,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x661b,no,16,information,319,yes,Medieval site,historic=archaeological_site,42.0922279,24.2505813,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x661c,yes,16,information,1169,yes,,,41.8346500,26.4578676,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x661d,yes,16,information,1412,yes,,,41.1914778,24.0922236,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x661e,no,16,information,979,yes,,amenity=shelter,41.4122772,24.8197031,"Custom style opt-in; for recognized OSM types, keep native OsmAnd icons."
|
||||
0x10000,no,18,information,2,no,,,43.1772995,27.7539325,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x10018,no,18,information,2,no,,,43.1856465,27.9490042,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x10100,no,18,information,12,no,,,42.4783373,27.4493837,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x10118,no,18,information,1,no,,,43.1870842,27.6683164,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1011e,no,18,information,1,no,,,42.5841022,27.6902461,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x10204,no,18,information,2,no,,,42.6573801,27.7476025,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x10205,no,18,information,1,no,,,42.4590254,27.5740099,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x10209,no,18,information,8,no,,,42.4733591,27.4699187,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1020a,no,18,information,9,no,,,42.4602699,27.4538684,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1020b,no,18,information,5,no,,,41.8699050,28.0232477,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1020c,no,18,information,2,no,,,43.1899381,27.8013968,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x10218,no,18,information,3,no,,,42.0534110,27.9847956,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x10301,yes,16,information,2006,no,,,43.4377956,28.9283538,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x10401,yes,16,information,157,no,,,42.6565218,27.7297497,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x10402,no,18,information,41,no,,,43.2109666,28.1308579,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x10403,no,18,information,2,no,,,41.3038731,28.7996078,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1040d,yes,16,information,229,no,,,41.9180989,28.0489111,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1040e,no,18,information,4,no,,,42.8295565,27.9202938,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1041e,no,18,information,1,no,,,42.6499343,27.8320599,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x10501,no,18,information,1,no,,,43.2052803,27.9446054,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x10602,no,18,information,1,no,,,42.7095008,27.8530884,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1061d,no,18,information,1,no,,,43.2051730,27.9395843,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x10701,no,18,information,58,no,,,43.1964397,27.8618217,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x10705,no,18,information,33,no,,,43.2224250,28.1217384,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x10706,no,18,information,32,no,,,43.4509492,28.8183832,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x10801,no,18,information,1,no,,,42.8644896,27.9285121,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x10903,no,18,information,1,no,,,42.6283908,27.6877141,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x10a01,no,18,information,1,no,,,43.2014394,27.8667355,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x10b01,no,18,information,1,no,,,41.8894100,28.0229688,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x10b09,no,18,information,1,no,,,43.2140994,27.9750752,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x10c00,no,18,information,1,no,,,43.2016969,27.9050374,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x10d01,no,18,information,1,no,,,43.2011819,27.8610492,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1161f,no,18,information,1,no,,,43.1953883,27.9319453,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1171e,no,18,information,1,no,,,43.2054305,27.8968406,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1181f,no,18,information,1,no,,,43.2013321,27.7061892,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x11901,no,18,information,1,no,,,43.8046575,28.5944295,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x11902,no,18,information,1,no,,,43.2049370,27.7813983,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x11a02,no,18,information,1,no,,,43.1968260,27.6557207,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1201f,no,18,information,1,no,,,42.5242352,27.5483894,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x12102,no,18,information,1,no,,,42.4892378,27.5353217,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x12502,no,18,information,1,no,,,43.2015038,27.8690314,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x12a03,no,18,information,1,no,,,42.6277685,27.7115536,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x12c1e,no,18,information,1,no,,,43.2013321,27.7046227,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x12d01,no,18,information,1,no,,,43.1838441,27.9260015,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x12e1f,no,18,information,1,no,,,43.2423377,28.1846094,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x13001,no,18,information,1,no,,,43.1683517,28.0398345,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1321f,no,18,information,1,no,,,42.6127267,27.8121257,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1331f,no,18,information,1,no,,,43.2015467,27.8662419,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x13400,no,18,information,1,no,,,43.1861830,27.9269886,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x13a01,no,18,information,1,no,,,42.5860548,27.6915121,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x13c03,no,18,information,1,no,,,42.4661279,27.6418805,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x13d1e,no,18,information,1,no,,,43.2068896,27.9138136,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1411e,no,18,information,1,no,,,43.2047009,27.7807546,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x14400,no,18,information,1,no,,,43.2175541,27.9579949,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x14401,no,18,information,1,no,,,43.2052159,27.9493475,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1441c,no,18,information,1,no,,,43.1683731,28.0286121,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x14501,no,18,information,1,no,,,42.6383686,27.8804684,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x14602,no,18,information,1,no,,,43.1857967,27.8471661,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1461c,no,18,information,1,no,,,43.2015252,27.7032280,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1461f,no,18,information,1,no,,,43.2052588,27.8920341,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1471f,no,18,information,1,no,,,43.2224464,27.8871202,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x14803,no,18,information,1,no,,,42.5953245,27.7765274,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1481f,no,18,information,1,no,,,43.2054090,27.8980207,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x14a1e,no,18,information,1,no,,,43.2069111,27.9140067,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x14b01,no,18,information,1,no,,,43.2014823,27.8672075,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x14c01,no,18,information,1,no,,,43.2069111,27.9118609,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x14d1f,no,18,information,1,no,,,42.5163817,27.6553559,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x14e1e,no,18,information,1,no,,,42.4459577,27.6790023,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x15200,no,18,information,1,no,,,43.2048941,27.7857113,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x15303,no,18,information,1,no,,,43.2014179,27.8711987,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1541d,no,18,information,1,no,,,42.4657202,27.6436615,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x15501,no,18,information,1,no,,,43.2052588,27.8956819,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x15800,no,18,information,1,no,,,43.2052588,27.9370308,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x15a00,no,18,information,1,no,,,43.2053447,27.8867555,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x15e01,no,18,information,1,no,,,42.6091433,27.6586604,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x16103,no,18,information,1,no,,,43.1455421,28.0770850,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x16201,no,18,information,1,no,,,43.2000232,27.9100585,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x16701,no,18,information,1,no,,,43.1955171,27.9348421,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1681c,no,18,information,1,no,,,42.6561785,27.8976774,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1681d,no,18,information,1,no,,,43.2166100,28.0465937,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x16a00,no,18,information,1,no,,,43.2054305,27.8999090,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x16b1c,no,18,information,1,no,,,42.6562428,27.9021621,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x16e1f,no,18,information,1,no,,,42.6637101,27.7445555,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x17000,no,18,information,1,no,,,42.5416589,27.6806760,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1711d,no,18,information,1,no,,,43.2069111,27.9155731,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x17303,no,18,information,1,no,,,42.5860977,27.6886582,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1731e,no,18,information,1,no,,,43.1925559,27.8419733,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1751f,no,18,information,1,no,,,43.2048941,27.7850676,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1771e,no,18,information,1,no,,,42.4598193,27.7104378,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1791e,no,18,information,1,no,,,43.2051516,27.8927636,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x17d1e,no,18,information,1,no,,,43.2051086,27.9474807,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x17e03,no,18,information,1,no,,,43.1967616,27.6618361,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x18003,no,18,information,1,no,,,43.1717634,27.9500127,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1811e,no,18,information,1,no,,,42.5413799,27.6878858,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x18302,no,18,information,1,no,,,43.2048941,27.7903032,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1861d,no,18,information,1,no,,,43.2015252,27.8606415,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1861f,no,18,information,1,no,,,43.2055807,27.8994370,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x18901,no,18,information,1,no,,,42.6384759,27.8675079,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x18a1f,no,18,information,2,no,,,43.2052374,27.8961754,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x18c1e,no,18,information,1,no,,,43.2053876,27.8944159,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x18d01,no,18,information,1,no,,,42.6413083,27.7646613,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x19001,no,18,information,1,no,,,42.6142931,27.7507782,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1921f,no,18,information,1,no,,,43.1928349,27.8456640,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x19a00,no,18,information,1,no,,,43.0997944,27.9608488,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x19d03,no,18,information,1,no,,,42.8070259,27.9287481,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1a11f,no,18,information,1,no,,,42.6562643,27.9072046,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1a401,no,18,information,1,no,,,43.1839085,27.9244995,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1a501,no,18,information,1,no,,,42.6584101,27.8624225,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1a51c,no,18,information,1,no,,,43.2050872,27.9406786,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1a800,no,18,information,1,no,,,42.5856042,27.6471162,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1a81c,no,18,information,1,no,,,43.2015252,27.7040648,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1a91c,no,18,information,1,no,,,43.2051516,27.9386616,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1a91f,no,18,information,1,no,,,43.1954098,27.9332972,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1ab1f,no,18,information,1,no,,,42.5952172,27.7136993,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1b101,no,18,information,1,no,,,43.1928992,27.8481531,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1b31f,no,18,information,1,no,,,43.2052374,27.9455066,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1b402,no,18,information,2,no,,,42.5443196,27.5562000,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1b41c,no,18,information,2,no,,,43.1952381,27.7601337,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1b703,no,18,information,1,no,,,42.7092648,27.8581309,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1ba03,no,18,information,1,no,,,43.2014394,27.8686452,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1be1c,no,18,information,1,no,,,43.2013321,27.7118969,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1c11e,no,18,information,1,no,,,43.1928992,27.8475738,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1c31d,no,18,information,1,no,,,43.1954956,27.9373097,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1c500,no,18,information,1,no,,,43.2015681,27.8681087,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1c71f,no,18,information,1,no,,,43.2048726,27.7903676,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1c81e,no,18,information,1,no,,,43.1928992,27.8485823,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1cb1f,no,18,information,1,no,,,43.2015681,27.8663921,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1ce02,no,18,information,1,no,,,43.2049799,27.7835441,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1d501,no,18,information,1,no,,,42.4691319,27.6782942,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1d51e,no,18,information,1,no,,,43.2054305,27.8993511,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1d61f,no,18,information,1,no,,,43.2015681,27.8704262,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1d71c,no,18,information,1,no,,,43.2011819,27.8677869,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1d800,no,18,information,1,no,,,43.2052159,27.8855324,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1da01,no,18,information,1,no,,,42.5940800,27.8528523,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1da1e,no,18,information,1,no,,,42.4458933,27.5304723,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1db01,no,18,information,1,no,,,43.1839299,27.9252076,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1db1e,no,18,information,1,no,,,43.2012463,27.8598905,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1db1f,no,18,information,1,no,,,43.1928563,27.8472519,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1dc01,no,18,information,1,no,,,43.1860757,27.8722286,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1de1f,no,18,information,1,no,,,43.2052588,27.9385757,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1e101,no,18,information,1,no,,,43.1975555,27.8627014,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1e21f,no,18,information,2,no,,,43.2048941,27.7844238,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1ea00,no,18,information,1,no,,,43.1715059,27.9508066,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1ec1d,no,18,information,1,no,,,43.2013321,27.7051377,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1f401,no,18,information,1,no,,,43.1708193,28.0719352,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1f501,no,18,information,1,no,,,42.5145793,27.5918198,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1fb01,no,18,information,1,no,,,43.2013750,27.7114248,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1ff00,no,18,information,1,no,,,43.2054734,27.8981280,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1ff11,no,18,information,1,no,,,42.4699044,27.4409509,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
0x1ff18,no,18,information,1,no,,,43.1953454,27.9564929,Unclassified: verify against Garmin TYP legend before changing the icon.
|
||||
|
@@ -1,5 +0,0 @@
|
||||
# Optional, coordinate-specific verified POI corrections; no active rows by default.
|
||||
# Use only after verifying a name against the ORIGINAL IMG at the same coordinates.
|
||||
# Changing a name in this file will change both generated OSM and source manifest; validator will still pass.
|
||||
# mapset ID, hex code, exact WGS84 lat/lon, old and new names must match precisely.
|
||||
mapset,code,lat,lon,old_name,new_name,note
|
||||
|
File diff suppressed because it is too large
Load Diff
+1821
-1821
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@@ -1,88 +0,0 @@
|
||||
garmin_hex,count,legend_en,legend_bg,verified_osm_tags,extracted_garmin_icon,example1_lat,example1_lon,example1_name,example2_lat,example2_lon,review_status,default_osmand_display
|
||||
0x6600,66206,Triangulation,Кота,,yes,41.2312603,22.6785922,217,42.8680515,22.6715970,icon_legend_verified,custom_style_information
|
||||
0x2800,54902,,,place=locality,no,42.6277471,24.3122506,Големия поп,43.3119893,27.8330684,not_on_legend,native_osmand
|
||||
0x6511,50308,Spring,Извор,natural=spring,yes,42.8732872,23.3371925,Студена вода,42.5154161,23.1598663,icon_legend_verified,native_osmand
|
||||
0x6414,32922,Drinking Water,Чешма,amenity=drinking_water,yes,43.1117034,23.7205982,затлачена,42.2771502,25.3026724,icon_legend_verified,native_osmand
|
||||
0x6500,31214,Reservoir,Каптаж,,yes,42.0310307,24.7559094,Забучена,42.7306151,22.7937984,icon_legend_verified,custom_style_information
|
||||
0x6603,26366,Triangulation,Кота,man_made=survey_point,yes,42.5520873,23.8540435,1079,42.5116181,23.8444304,icon_legend_verified,native_osmand
|
||||
0x6616,15540,,,natural=peak,no,42.8516150,25.7782173,Симов чукар,43.4484601,23.3003926,name_supported,native_osmand
|
||||
0x6614,15289,Rock,Скала,,yes,42.7437901,25.2693915,15,42.7658057,25.9388924,icon_legend_verified,custom_style_information
|
||||
0x6618,10176,Tree,Дърво,natural=tree,yes,42.7752686,23.9033318,столетно дърво,43.2969904,24.6177006,icon_legend_verified,native_osmand
|
||||
0x6417,8868,Well,Кладенец,man_made=water_well,yes,42.2628808,24.2223430,Юсеиновия кладенец,41.7512012,25.0972795,icon_legend_verified,native_osmand
|
||||
0x650b,8767,Winter Marking,Зимна маркировка,,yes,42.0000887,23.3820820,94,42.7546048,24.7787404,icon_legend_verified,custom_style_information
|
||||
0x1100,8430,,,,no,42.5975990,22.5972247,Върбица,42.8741455,25.5907202,not_on_legend,custom_style_information
|
||||
0xd00,6610,,,,no,41.6287208,23.7694144,Балдево,43.4385252,26.5020704,not_on_legend,custom_style_information
|
||||
0x6402,6186,Building,Сграда,building=yes,yes,42.5507569,23.2217932,Чакало,42.2648549,23.5112143,icon_legend_verified,native_osmand
|
||||
0x641c,3120,Bus Stop/Station,Спирка,highway=bus_stop,yes,42.8542113,25.3382707,1-7-10-14,42.8205442,23.3609891,icon_legend_verified,native_osmand
|
||||
0x6416,2886,Ruins,Руини,historic=ruins,yes,41.5940452,24.3094182,Разв.,41.9296217,24.6835971,icon_legend_verified,native_osmand
|
||||
0x6407,2861,Picnic Site,Пикник,tourism=picnic_site,yes,41.9156528,25.3233576,беседка,42.6045942,23.4355974,icon_legend_verified,native_osmand
|
||||
0x640f,2766,Graveyard/Tombstone,"Гробище, оброк",,yes,42.0345068,22.4919534,Гробище,41.4501715,24.6433210,icon_legend_verified,custom_style_information
|
||||
0x6608,2644,Hotel,Хотел,tourism=hotel,yes,42.8794885,27.8957462,Fortuna Cape Complex,42.3725724,27.7117682,icon_legend_verified,native_osmand
|
||||
0x660b,2612,Mark,Маркировка,,yes,43.9378452,22.4072385,Пир. 454,41.6514015,24.3190312,icon_legend_verified,custom_style_information
|
||||
0x2c05,2481,School,Училище,amenity=school,yes,41.7214394,24.6845198,СУ Олимпийски Надежди,42.2714853,24.5394874,icon_legend_verified,native_osmand
|
||||
0x6501,2412,Restaurant,Ресторант,amenity=restaurant,yes,43.3456135,28.0715060,Therma beach,42.4869204,26.4846039,icon_legend_verified,native_osmand
|
||||
0x640a,2095,Danger,Опасност,,yes,43.1507993,25.3284001,Стълба,42.5652623,23.4620762,icon_legend_verified,custom_style_information
|
||||
0x10301,2006,,,,no,43.4377956,28.9283538,,42.2109532,27.8938365,extended_unverified,custom_style_information
|
||||
0x6502,1864,River Passage,Брод,,yes,42.7929711,25.2992177,Бент,42.1954823,23.7029600,icon_legend_verified,custom_style_information
|
||||
0x6613,1746,Waterfall,Водопад,waterway=waterfall,yes,42.7435327,24.6398234,Кастрак дере горен,42.0257735,24.5287156,icon_legend_verified,native_osmand
|
||||
0x6403,1729,Graveyard/Tombstone,"Гробище, оброк",,yes,43.0418801,23.5914874,Св. Мария Магдалена,41.7204952,24.8700428,icon_legend_verified,custom_style_information
|
||||
0x6401,1679,Bridge,Мост,man_made=bridge,yes,42.6645684,22.9691291,Зидан мост,41.3415956,22.8474855,icon_legend_verified,native_osmand
|
||||
0x2c0b,1606,Church,Църква,amenity=place_of_worship,yes,43.0217957,24.8099613,Рождество Богородично,41.6844034,25.7115483,icon_legend_verified,native_osmand
|
||||
0x2b00,1558,,,tourism=hotel,no,42.6465440,27.6449919,Sotirovi Holiday,41.6332698,24.7040462,not_on_legend,native_osmand
|
||||
0x6404,1507,Church,Църква,amenity=place_of_worship,yes,42.1896243,27.0861053,Св. Димитър,42.6495481,23.1854010,icon_legend_verified,native_osmand
|
||||
0x2f0b,1499,,,,no,43.7308860,23.9443588,автополигон,42.2151589,24.0181303,not_on_legend,custom_style_information
|
||||
0x661d,1412,,,,yes,41.1914778,24.0922236,Овчарник,42.7084708,25.3351378,not_on_legend,custom_style_information
|
||||
0x640c,1353,Mine Shaft,Мина,man_made=mine_shaft,yes,43.0497336,22.9328442,(Въгл.),41.5701199,24.6346951,icon_legend_verified,native_osmand
|
||||
0x2c08,1328,,,,yes,41.9112968,24.9703360,"Конна база ""Wild City""",42.6861334,23.3365059,not_on_legend,custom_style_information
|
||||
0x2f00,1269,,,,yes,42.9236698,24.2466116,индустриални сгради,42.8208017,23.1913233,not_on_legend,custom_style_information
|
||||
0x6409,1235,Monument,Паметник,historic=monument,yes,43.1282043,23.6027098,Перо Херцеговинеца,42.4960184,22.8770757,icon_legend_verified,native_osmand
|
||||
0x661c,1169,,,,yes,41.8346500,26.4578676,Койчовата могила,43.6355710,28.5723281,not_on_legend,custom_style_information
|
||||
0x640b,1128,Chapel,Параклис,amenity=place_of_worship,yes,41.9598985,24.3688774,Параклис,41.9762921,24.8116350,icon_legend_verified,native_osmand
|
||||
0x661e,979,,,amenity=shelter,yes,41.4122772,24.8197031,Навес с барбекю,41.3865280,24.7667241,not_on_legend,native_osmand
|
||||
0x640e,977,Bus Stop/Station,Спирка,highway=bus_stop,yes,43.3513427,25.1430917,Левски,42.3796749,22.7069807,icon_legend_verified,native_osmand
|
||||
0x6615,942,Cave,Пещера,natural=cave_entrance,yes,41.8003178,23.3853436,Дупка,43.2577872,24.0077662,icon_legend_verified,native_osmand
|
||||
0x6602,891,Viewpoint,Гледка,tourism=viewpoint,yes,41.7438412,23.4641790,Кьошка (Балконе)-панорама,42.8009748,27.1023059,icon_legend_verified,native_osmand
|
||||
0x6411,875,Tower,Кула,man_made=tower,yes,41.7411375,24.8182654,GSM клетка,42.1343064,24.8024940,icon_legend_verified,native_osmand
|
||||
0x6406,854,Barrier/Gate,Бариера,barrier=gate,yes,41.5502286,24.7455668,Военен обект!,41.2806129,25.2994323,icon_legend_verified,native_osmand
|
||||
0x3003,841,,,,no,43.2501698,27.7748966,Кметство,41.8338132,24.8308182,not_on_legend,custom_style_information
|
||||
0x2f01,778,,,,no,41.5430832,23.2712317,Газостанция,43.7991214,26.1920500,not_on_legend,custom_style_information
|
||||
0x6503,760,Crossroad,Кръстопът,,yes,43.4149003,28.4942007,на запад Черноморски път,41.5363026,23.6495304,icon_legend_verified,custom_style_information
|
||||
0x3002,564,,,,no,42.5638032,27.6036644,First Aid,42.4966407,24.7085094,not_on_legend,custom_style_information
|
||||
0x2c02,538,,,,yes,42.3479176,25.0754786,Детска градина,43.5124254,26.7439628,not_on_legend,custom_style_information
|
||||
0x2a0e,525,,,,yes,42.0046806,24.8740768,Pandora,42.6043367,23.0305839,not_on_legend,custom_style_information
|
||||
0x2e03,502,,,,no,43.2763910,27.9675651,магазин,42.1473527,24.7843194,not_on_legend,custom_style_information
|
||||
0x2e05,487,Pharmacy,Аптека,amenity=pharmacy,yes,42.7442837,25.3431416,Аптечка,42.6866698,23.3093405,icon_legend_verified,native_osmand
|
||||
0x2f05,486,,,amenity=post_office,no,42.0306015,23.8108063,Поща,43.7494254,27.4069619,not_on_legend,native_osmand
|
||||
0x2e02,477,,,,no,41.6551137,25.5503798,Хранителни стоки,41.6634393,24.3756366,not_on_legend,custom_style_information
|
||||
0x2c03,474,,,,yes,43.2219315,25.7480693,читалище Съединение,43.7368727,26.1066914,not_on_legend,custom_style_information
|
||||
0x6400,465,Quarry,Кариера,landuse=quarry,yes,40.8776808,23.9436078,(Кам.),42.0491624,26.4963627,icon_legend_verified,native_osmand
|
||||
0x2d02,434,,,,no,42.1507859,24.7315550,Casa de Cuba,42.0225549,23.9974666,not_on_legend,custom_style_information
|
||||
0x6506,424,Museum,Музей,tourism=museum,yes,42.1463013,24.7487855,Градска художествена галерия,42.4936581,27.4754548,icon_legend_verified,native_osmand
|
||||
0x661a,384,Antiquity site,Античен обект,historic=archaeological_site,yes,41.7153454,26.0307527,Тракийска крепост Курт кале,43.2776999,27.1080351,icon_legend_verified,native_osmand
|
||||
0x6609,372,Hut,Хижа,tourism=alpine_hut,yes,43.2779145,27.1159101,Хижа Мадарски конник,41.8324399,24.7721529,icon_legend_verified,native_osmand
|
||||
0x2e06,348,,,,no,43.4717417,23.9467192,Trayкov Shop,42.6665640,25.4079223,not_on_legend,custom_style_information
|
||||
0x2d09,337,,,leisure=swimming_pool,yes,41.8625021,23.5053134,Минерален басейн Пирин,42.2918701,23.2552886,not_on_legend,native_osmand
|
||||
0x2f06,320,,,,no,42.3073840,23.8596869,Банка ДСК,43.2122111,27.9121184,not_on_legend,custom_style_information
|
||||
0x2f0c,320,Mosque,Джамия,amenity=place_of_worship;religion=muslim,yes,44.0549612,26.7991304,Джамия,41.4958334,24.6339655,icon_legend_verified,native_osmand
|
||||
0x661b,319,Medieval site,Средновековен обект,historic=archaeological_site,yes,42.0922279,24.2505813,"Средновековен манастир ""Св. Седмочиленици""",42.2452426,24.0083671,icon_legend_verified,native_osmand
|
||||
0x6418,305,,,,yes,42.7693677,26.3003898,Ветрогенератор,42.7765560,26.3197017,not_on_legend,custom_style_information
|
||||
0x900,283,Town,Град <75 000,place=town,yes,42.0570374,24.5459247,Перущица,40.8942676,26.1739397,icon_legend_verified,native_osmand
|
||||
0x660a,275,Refuge,Заслон,amenity=shelter;shelter_type=basic_hut,yes,42.8157377,23.8160634,Заслон,42.7268600,26.3467383,icon_legend_verified,native_osmand
|
||||
0x6415,264,Camp Site,Място за бивакуване,tourism=camp_site,yes,41.7506647,25.1023221,Бивак,43.2923126,27.1431398,icon_legend_verified,native_osmand
|
||||
0x6405,260,Hunting Lodge,Ловна хижа,,yes,42.7514720,27.2207522,заслон Зайчар,41.6350079,25.5436206,icon_legend_verified,custom_style_information
|
||||
0x1040d,229,,,,no,41.9180989,28.0489111,,42.8007388,27.8943729,extended_unverified,custom_style_information
|
||||
0x2a07,227,,,,no,43.8551474,25.9693837,Тирол,42.7743888,26.8785238,not_on_legend,custom_style_information
|
||||
0x6619,195,Prehistoric site,Праисторически обект,historic=archaeological_site,yes,42.5703692,25.3767228,Бащин камък (Слънчева врата),41.9394493,26.1900759,icon_legend_verified,native_osmand
|
||||
0x3001,170,,,,yes,43.3623934,25.1447439,полиция,43.1404138,24.7057414,not_on_legend,custom_style_information
|
||||
0x6601,165,Natural Phenomenon,Природен феномен,,yes,42.9589677,25.2119064,"скален феномен ""Момичките""",42.5682020,25.5528045,icon_legend_verified,custom_style_information
|
||||
0x2e0a,159,,,,no,43.8517356,25.9867859,Автокъщи,43.2120609,27.9186201,not_on_legend,custom_style_information
|
||||
0x10401,157,,,,no,42.6565218,27.7297497,,43.2037354,27.8479171,extended_unverified,custom_style_information
|
||||
0x640d,137,Lift,Лифт,,yes,42.6056242,23.2995987,Драгалевски междинна,42.5832009,23.2924747,icon_legend_verified,custom_style_information
|
||||
0x3007,132,,,,no,43.2023406,25.7318473,Помпена ст.,42.6586461,27.7180338,not_on_legend,custom_style_information
|
||||
0x2f08,123,,,,yes,42.6397204,23.3731771,Акад. Александър Теодоров - Балан,42.7053809,23.3233523,not_on_legend,custom_style_information
|
||||
0xe00,114,,,,no,43.9952660,22.8717756,жк. Крум Бъчваров,43.9941502,22.8833628,not_on_legend,custom_style_information
|
||||
0x6419,113,,,,yes,42.5478601,26.7053819,Фотоволтаична ценрала,42.4148440,25.6047320,not_on_legend,custom_style_information
|
||||
0x6617,112,Peak,Връх,natural=peak,yes,41.7893529,22.9647946,Огреяк (Кадийца) (1924),41.9179702,24.9033022,icon_legend_verified,native_osmand
|
||||
0x2f03,106,,,,no,41.3775158,25.0830102,"Автосервиз ""Профиров""",43.8112664,25.9830523,not_on_legend,custom_style_information
|
||||
0x2e07,105,Clothes shop,Магазин за дрехи,shop=clothes,yes,43.0698609,25.6080151,"Кооперативен пазар ""Бузлуджа""",42.1253800,24.7373700,icon_legend_verified,native_osmand
|
||||
0x4700,101,Port,Пристанище,industrial=port,yes,41.6431189,25.2845192,Пристан,42.0604706,27.9666424,icon_legend_verified,native_osmand
|
||||
|
Binary file not shown.
|
Before Width: | Height: | Size: 290 KiB |
Binary file not shown.
@@ -1,264 +0,0 @@
|
||||
code,kind,count,named,default_tags,has_typ_icon,configured_rules,example1_lat,example1_lon,example1_name,example1_map,example2_lat,example2_lon,example2_name,example2_map,example3_lat,example3_lon,example3_name,example3_map,example4_lat,example4_lon,example4_name,example4_map,example5_lat,example5_lon,example5_name,example5_map,verified_legend_en,verified_legend_bg,reviewed_tags,review_status,original_v05_count,suppressed_out_of_bounds,qa_note
|
||||
0x200,classic,2,2,place=city;capital=yes,yes,1,41.0612941,28.8116670,Истанбул,02235106,42.6954675,23.3326221,София,02234047,,,,,,,,,,,,,Capital City,Столица,place=city;capital=yes,icon_legend_verified,2,0,
|
||||
0x800,classic,51,51,place=city,yes,1,43.9025259,22.2788572,Зайчар,02234009,43.3169031,21.8945074,Ниш,02234032,42.4246931,25.6255674,Стара Загора,02235052,41.4337349,22.0119452,Кавадарци,02234093,44.0004802,22.8833199,Видин,02334142,Large City,Град >75 000,place=city,icon_legend_verified,51,0,
|
||||
0x900,classic,283,283,place=town,yes,1,42.0570374,24.5459247,Перущица,02235062,40.8942676,26.1739397,Ферес,02235113,41.3800907,25.0934172,Златоград,02235087,43.3485103,26.2265968,Попово,02235017,42.5014901,22.4737144,Босилеград,02234057,Town,Град <75 000,place=town,icon_legend_verified,283,0,
|
||||
0xd00,classic,6610,6609,,no,0,41.6287208,23.7694144,Балдево,02234096,43.4385252,26.5020704,Островче,02235018,43.5053658,27.2674227,Красен дол,02235019,41.4777446,26.1179996,Свирачи,02235089,41.8935943,21.6824412,Катланово,02234080,,,,not_on_legend,6610,0,
|
||||
0xe00,classic,114,114,,no,0,43.9952660,22.8717756,жк. Крум Бъчваров,02234010,43.9941502,22.8833628,жк. Георги Бенковски,02234010,43.5925055,27.7798963,кв. Рилци,02235020,42.4790668,26.5254378,ж.к. Зорница,02235054,43.9818335,22.8724837,жк. Съединение,02234010,,,,not_on_legend,114,0,
|
||||
0x1100,classic,8430,8365,,no,0,42.5975990,22.5972247,Върбица,02234058,42.8741455,25.5907202,Никачковци,02235040,42.8163815,24.9374413,Събевци,02235038,42.8579235,23.5614038,Ябланица,02234048,41.4104962,25.3626037,Масларово,02235087,,,,not_on_legend,8430,0,
|
||||
0x2800,classic,54902,54877,place=locality,no,0,42.6277471,24.3122506,Големия поп,02235049,43.3119893,27.8330684,Ергеле канара,02235032,43.0442190,23.6579418,Крива ливада,02234036,43.0452704,24.5645070,Предела,02235026,43.0573511,23.3123660,Стагата,02234035,,,place=locality,not_on_legend,54902,0,
|
||||
0x2a07,classic,227,189,,no,0,43.8551474,25.9693837,Тирол,02235004,42.7743888,26.8785238,Градина,02235042,42.1325040,24.7447729,Християна,02235062,43.2045293,23.5502887,Врачански закуски,02234036,43.2052159,27.9204869,Иглика,02235032,,,,not_on_legend,227,0,
|
||||
0x2a0e,classic,525,402,,yes,0,42.0046806,24.8740768,Pandora,02235062,42.6043367,23.0305839,кафе аперитив Фаги,02234059,42.2405005,23.3257127,Чайна,02234071,43.2058167,27.9110670,кафе Лаве,02235032,43.0808902,25.6336141,Ethno,02235028,,,,not_on_legend,525,0,
|
||||
0x2b00,classic,1558,1543,tourism=hotel,no,0,42.6465440,27.6449919,Sotirovi Holiday,02235056,41.6332698,24.7040462,Райков ски лодж,02235086,42.0263743,25.3204179,"Къща за гости ""Румена Рая""",02235063,41.9040442,24.9232793,Вълчаница,02235074,41.5037298,24.7227788,При Тодьо,02235086,,,tourism=hotel,not_on_legend,1558,0,
|
||||
0x2c01,classic,20,19,,yes,0,42.0264173,23.9946342,Евроинс ЗАД,02234072,41.5756774,24.7103977,Виваком,02235086,41.5713859,23.7272716,Боб,02234096,42.0279408,23.9912653,Български имоти ЗПК,02234072,42.1722007,26.5705419,Speedy,02235066,,,,not_on_legend,20,0,
|
||||
0x2c02,classic,538,407,,yes,0,42.3479176,25.0754786,Детска градина,02235051,43.5124254,26.7439628,Детска градина,02235018,43.6164308,25.3320479,Детска градина,02235015,42.8888226,24.7073507,ЦДГ Осми март,02235038,42.7680588,27.5291634,"ЦДГ ""Детски Свят""",02235044,,,,not_on_legend,538,0,
|
||||
0x2c03,classic,474,382,,yes,0,43.2219315,25.7480693,читалище Съединение,02235028,43.7368727,26.1066914,Читалище Светлина,02235005,43.7377739,23.9583063,Читалище Надежда,02234012,43.3572435,25.1420832,читалище Г. Парцалев,02235015,42.5275397,26.9815207,Читалище,02235054,,,,not_on_legend,474,0,
|
||||
0x2c05,classic,2481,1266,amenity=school,yes,1,41.7214394,24.6845198,СУ Олимпийски Надежди,02235074,42.2714853,24.5394874,СОУ Христо Ботев,02235062,43.6715770,24.0032601,ОУ Никола Вапцаров,02235001,43.1828570,23.2802868,спортна зала,02234035,42.6716065,23.3553243,СПТУ,02234047,School,Училище,amenity=school,icon_legend_verified,2481,0,
|
||||
0x2c06,classic,57,57,,yes,0,43.2240987,27.9363871,ТУ,02235032,42.5036144,27.4689531,Бургаски свободен университет,02235055,43.2581306,28.0271101,Варненски Свободен Университет,02235033,42.1380186,24.7507596,"Пловдивски университет ""Паисий Хилендарски",02235062,42.9043579,23.7835979,Технически колеж към ТУ София,02234048,,,,not_on_legend,57,0,
|
||||
0x2c07,classic,20,20,,yes,0,43.1368518,24.7227359,Зоопарк Ловеч,02235026,41.7728090,24.9222708,Бивш мечкарник,02235074,42.8736520,25.3300309,зоопарк,02235039,41.9538689,25.5356598,Зоопарк Хасково,02235076,41.9400930,25.3459096,Терариум Минерални Бани,02235075,,,,not_on_legend,20,0,
|
||||
0x2c08,classic,1328,439,,yes,0,41.9112968,24.9703360,"Конна база ""Wild City""",02235074,42.6861334,23.3365059,Детска площадка,02234047,42.6117611,23.3377719,"маса,пейка",02234059,42.2672153,22.6730347,картинг-писта Пауталия,02234070,43.2625294,26.8879223,Детски кът,02235030,,,,not_on_legend,1328,0,
|
||||
0x2c0b,classic,1606,870,amenity=place_of_worship,yes,1,43.0217957,24.8099613,Рождество Богородично,02235026,41.6844034,25.7115483,Св. пророк Илия,02235076,42.9942441,24.8140812,Св. Архангел Михаил,02235038,43.3605909,26.4345217,Св. Богоявление,02235017,41.4341640,23.6815023,Св.Константин и Елена,02234096,Church,Църква,amenity=place_of_worship,icon_legend_verified,1606,0,
|
||||
0x2d01,classic,68,66,,no,0,42.8797030,25.3179932,ДОМ НА ХУМОРА И САТИРАТА,02235039,42.1501207,24.7398806,"Театър ""Хенд""",02235062,43.6235332,22.6850295,Летен театър,02234022,43.5674214,27.8259444,Драматичен театър „Йордан Йовков“,02235020,43.4091926,23.2249045,Кино 77,02234023,,,,not_on_legend,68,0,
|
||||
0x2d02,classic,434,402,,no,0,42.1507859,24.7315550,Casa de Cuba,02235062,42.0225549,23.9974666,Джойс,02234072,42.5059104,24.3208337,Централ,02235049,42.1510005,24.7478414,Петното на Роршах,02235062,42.5018334,27.4684811,Enoteca Wine & Friends,02235055,,,,not_on_legend,434,0,
|
||||
0x2d03,classic,57,53,,no,0,42.6922703,23.3241892,Ново кино,02234047,43.1063604,26.4211965,Лятно кино,02235029,42.6901674,23.3405399,Влайкова,02234047,43.3849025,24.6304893,Лятно Кино,02235014,42.6936650,23.3281803,Бежово нощно кино,02234047,,,,not_on_legend,57,0,
|
||||
0x2d09,classic,337,179,leisure=swimming_pool,yes,0,41.8625021,23.5053134,Минерален басейн Пирин,02234084,42.2918701,23.2552886,Минерален Kомплекс „Плажъ“,02234071,41.9386554,25.3458238,Обществена баня,02235075,42.1914482,24.3368411,Общински плувен комплекс,02235061,42.1469450,24.7190452,Плувен басейн Младост,02235062,,,leisure=swimming_pool,not_on_legend,337,0,
|
||||
0x2e02,classic,477,377,,no,0,41.6551137,25.5503798,Хранителни стоки,02235088,41.6634393,24.3756366,Хранителни стоки,02235085,42.8488040,23.2693863,Хранителни стоки,02234047,41.5987873,24.3786836,Минимаркет,02235085,41.6153526,25.0046682,Хранителни стоки,02235087,,,,not_on_legend,477,0,
|
||||
0x2e03,classic,502,416,,no,0,43.2763910,27.9675651,магазин,02235032,42.1473527,24.7843194,Кауфланд,02235062,42.1961260,24.3348241,Billa,02235061,43.2198501,25.7398939,Dida,02235028,41.7236495,24.6849918,Супермаркет,02235074,,,,not_on_legend,502,0,
|
||||
0x2e04,classic,66,60,,no,0,42.5185919,27.4564004,Престиж,02235055,42.5308013,27.4573231,МОЛ Бургас Плаза,02235055,42.8847456,24.7138953,пазар,02235038,42.0116758,24.8763728,Пазар Асеница,02235062,43.2198501,27.8895450,Мол Варна,02235032,,,,not_on_legend,66,0,
|
||||
0x2e05,classic,487,363,amenity=pharmacy,yes,1,42.7442837,25.3431416,Аптечка,02235039,42.6866698,23.3093405,Дарвин-Дарвин Иванов,02234047,42.6969695,23.2874107,Аглика,02234047,41.8386197,23.4886193,аптека,02234083,41.9901538,24.0886831,Аптека,02235073,Pharmacy,Аптека,amenity=pharmacy,icon_legend_verified,487,0,
|
||||
0x2e06,classic,348,130,,no,0,43.4717417,23.9467192,Trayкov Shop,02234024,42.6665640,25.4079223,Левче,02235051,42.2565722,26.6285849,ЕТ 'Мираж',02235066,43.2055807,26.8905830,Хранителни стоки,02235030,42.4753332,26.5205240,Минимаркет,02235054,,,,not_on_legend,348,0,
|
||||
0x2e07,classic,105,82,shop=clothes,yes,1,43.0698609,25.6080151,"Кооперативен пазар ""Бузлуджа""",02235028,42.1253800,24.7373700,Конфискувани стоки,02235062,42.0133924,24.8706222,JYSK,02235062,42.1425033,24.7521973,Melina Fation,02235062,43.2328105,27.8671002,Мадара,02235032,Clothes shop,Магазин за дрехи,shop=clothes,icon_legend_verified,105,0,
|
||||
0x2e08,classic,13,11,,no,0,42.7295208,23.2671332,Практикер,02234047,42.0546556,24.5441008,Железария,02235062,42.6637101,23.3787990,Бриколаж,02234059,43.2412434,27.8666282,Алати,02235032,42.6405787,23.4096336,Практикер,02234059,,,,not_on_legend,13,0,
|
||||
0x2e09,classic,8,7,,no,0,43.2294202,27.8701901,мебелна палата Лазур,02235032,43.2233047,27.8732157,JYSK,02235032,42.7395844,23.2375860,Аико,02234047,43.2203650,27.8761768,Хоум Макс,02235032,43.2238412,27.8733659,Ikea,02235032,,,,not_on_legend,8,0,
|
||||
0x2e0a,classic,159,77,,no,0,43.8517356,25.9867859,Автокъщи,02235004,43.2120609,27.9186201,Фризьорско студио Мето,02235032,43.0801177,25.6300306,Хеликон,02235028,43.2042933,27.9221392,Сиела,02235032,42.4448204,25.7348728,Italicar,02235052,,,,not_on_legend,159,0,
|
||||
0x2e0b,classic,52,51,,no,0,42.1881008,24.3556809,Зора,02235061,43.4080982,24.6367335,Техномаркет,02235014,41.9303727,25.6028867,Зора,02235076,43.2339692,27.9061961,Технохит,02235032,42.7304864,23.2681203,Хит,02234047,,,,not_on_legend,52,0,
|
||||
0x2f00,classic,1269,1142,,yes,0,42.9236698,24.2466116,индустриални сгради,02235037,42.8208017,23.1913233,Индустриални - POPP,02234047,42.0542693,25.2493286,стопански сгради,02235063,42.1809983,25.9448576,постройки БДЖ,02235064,41.3848972,25.1177073,Бултекс,02235087,,,,not_on_legend,1269,0,
|
||||
0x2f01,classic,778,390,,no,0,41.5430832,23.2712317,Газостанция,02234095,43.7991214,26.1920500,Бензиностанция,02235005,42.6646113,27.7017045,Лукойл,02235056,43.4287620,23.7619686,Петрол,02234024,42.7019262,24.1859722,Shell,02235037,,,,not_on_legend,778,0,
|
||||
0x2f03,classic,106,66,,no,0,41.3775158,25.0830102,"Автосервиз ""Профиров""",02235087,43.8112664,25.9830523,Ной и Ко,02235004,42.6711988,23.3987975,Горивни добавки,02234047,42.1855903,24.3447804,Поставяне и ремонт на АГУ (автогаз),02235061,42.7313876,23.2313204,Субару сервиз,02234047,,,,not_on_legend,106,0,
|
||||
0x2f05,classic,486,402,amenity=post_office,no,0,42.0306015,23.8108063,Поща,02234072,43.7494254,27.4069619,Поща,02235007,42.8661847,25.3173494,Централна поща,02235039,43.3284473,27.5941586,Спиди,02235032,43.5647607,27.8351712,Европът,02235020,,,amenity=post_office,not_on_legend,486,0,
|
||||
0x2f06,classic,320,227,,no,0,42.3073840,23.8596869,Банка ДСК,02234072,43.2122111,27.9121184,Пощенска банка,02235032,42.6601267,27.7165103,(обмен),02235056,42.6949096,27.7097940,обб,02235044,42.0093799,24.8765659,ЦКБ,02235062,,,,not_on_legend,320,0,
|
||||
0x2f08,classic,123,123,,yes,0,42.6397204,23.3731771,Акад. Александър Теодоров - Балан,02234059,42.7053809,23.3233523,Лъвов мост,02234047,42.7063680,23.2841706,Вардар,02234047,42.7282119,23.3009720,Надежда,02234047,42.6461577,23.3846569,Младост III,02234059,,,,not_on_legend,123,0,
|
||||
0x2f0a,classic,4,3,amenity=place_of_worship;religion=jewish,yes,1,41.5711713,23.7286234,Синагога,02234096,42.3677444,23.0066586,Синагога,02234059,42.1920061,24.3338370,Синагога,02235061,42.7002525,23.3209920,,02234047,,,,,Synagogue,Синагога,amenity=place_of_worship;religion=jewish,icon_legend_verified,4,0,
|
||||
0x2f0b,classic,1499,68,,no,0,43.7308860,23.9443588,автополигон,02234012,42.2151589,24.0181303,Паркинг,02235061,41.7194867,24.6802282,"Паркинг ""Родопски къщи""",02235074,43.3349919,24.5515680,паркинг,02235014,42.2434402,23.5410404,Екопътека 'Бели Искър',02234072,,,,not_on_legend,1499,0,
|
||||
0x2f0c,classic,320,114,amenity=place_of_worship;religion=muslim,yes,1,44.0549612,26.7991304,Джамия,02335138,41.4958334,24.6339655,Джамия,02235086,41.9317031,25.5555511,Чаршийска джамия,02235076,41.7362881,24.0253615,Джамия,02235073,41.5593910,24.3108344,Джамия,02235085,Mosque,Джамия,amenity=place_of_worship;religion=muslim,icon_legend_verified,320,0,
|
||||
0x2f0e,classic,4,1,amenity=car_wash,yes,1,42.2939301,22.7035904,Олимпия,02234070,42.6629806,23.3585644,,02234059,42.6722503,23.3822322,,02234047,41.7109036,23.1720543,,02234083,,,,,Car Wash,Автомивка,amenity=car_wash,icon_legend_verified,4,0,
|
||||
0x3001,classic,170,156,,yes,0,43.3623934,25.1447439,полиция,02235015,43.1404138,24.7057414,Противопожарна команда,02235026,41.4898038,24.8439932,ГПУ Рудозем,02235086,41.6713786,24.3492866,Охрана,02235073,42.6375103,24.3578911,Полиция,02235049,,,,not_on_legend,170,0,
|
||||
0x3002,classic,564,470,,no,0,42.5638032,27.6036644,First Aid,02235056,42.4966407,24.7085094,Мед. институт на МВР,02235050,42.7049732,24.1637206,Ветеринарна лечебница,02235037,42.8830934,26.4489627,МБАЛ Проф. д-р Цончев,02235041,42.8766990,27.8864336,Поликлиника,02235044,,,,not_on_legend,564,0,
|
||||
0x3003,classic,841,709,,no,0,43.2501698,27.7748966,Кметство,02235032,41.8338132,24.8308182,Община,02235074,42.2146440,26.8325615,Кметство,02235066,42.3909402,26.5102458,Кметство,02235054,42.8947449,23.9156699,Община Правец,02234048,,,,not_on_legend,841,0,
|
||||
0x3006,classic,85,28,,yes,0,43.7391043,28.5608482,ГКПП Вама Веке,02235010,42.7977347,22.4487162,ГКПП Стрезимировци,02234045,44.0172386,27.5696111,ГКПП Кайнарджа-Липница,02335140,43.8785148,26.0150027,ГКПП Русе-Дунав мост,02235005,41.5485549,26.1786389,ГКПП Славеево-Кипринос,02235089,,,,not_on_legend,85,0,
|
||||
0x3007,classic,132,125,,no,0,43.2023406,25.7318473,Помпена ст.,02235028,42.6586461,27.7180338,Районен съд,02235056,43.4087205,24.6206832,Окръжен съд,02235014,41.9688892,25.4382205,Помпена станция,02235075,43.2114816,27.9063892,Районен съд Варна,02235032,,,,not_on_legend,132,0,
|
||||
0x3008,classic,37,37,amenity=fire_station,yes,1,42.5666571,27.6193285,Пожарна,02235056,42.3385620,27.1852612,Пожарна,02235055,42.9967761,27.7196646,Пожарна служба,02235044,43.4595323,25.7528329,Пожарна,02235016,41.4986014,25.3014278,Пожарна,02235087,Fire Station,Пожарна,amenity=fire_station,icon_legend_verified,37,0,
|
||||
0x4700,classic,101,2,industrial=port,yes,1,41.6431189,25.2845192,Пристан,02235087,42.0604706,27.9666424,Пристан разходки,02235068,43.1928563,27.8624654,,02235032,43.1975985,27.7780724,,02235032,42.5640392,27.6104879,,02235056,Port,Пристанище,industrial=port,icon_legend_verified,101,0,
|
||||
0x4e00,classic,14,6,,no,0,41.9877291,24.0870094,Минерална баня,02235073,42.1555066,24.1412330,Минерална баня,02235061,41.8874574,23.4654880,Турска баня,02234083,43.2185626,25.6136155,WC,02235028,42.0110536,23.6421061,Минерална баня,02234072,,,,not_on_legend,14,0,
|
||||
0x6400,classic,465,434,landuse=quarry,yes,1,40.8776808,23.9436078,(Кам.),02234120,42.0491624,26.4963627,(Кам.),02235065,42.0424891,26.5176916,(Кам.),02235066,43.3561921,27.0500994,(Кам.),02235019,42.8720212,23.3507752,(Кам.),02234047,Quarry,Кариера,landuse=quarry,icon_legend_verified,465,0,
|
||||
0x6401,classic,1679,60,man_made=bridge,yes,1,42.6645684,22.9691291,Зидан мост,02234058,41.3415956,22.8474855,Дяволския мост,02234094,42.7375460,25.2069068,Къркеланов мост,02235039,42.0968199,26.6947603,Кадъниния мост,02235066,41.6125202,25.4604721,въжен мост 260 м.,02235087,Bridge,Мост,man_made=bridge,icon_legend_verified,1679,0,
|
||||
0x6402,classic,6186,1012,building=yes,yes,1,42.5507569,23.2217932,Чакало,02234059,42.2648549,23.5112143,Кметство,02234072,41.5804839,24.4379926,Колиба,02235085,42.7037287,23.3173656,Поща,02234047,43.1565928,23.5806298,помп. станция Крушовица,02234036,Building,Сграда,building=yes,icon_legend_verified,6186,0,
|
||||
0x6403,classic,1729,636,,yes,1,43.0418801,23.5914874,Св. Мария Магдалена,02234036,41.7204952,24.8700428,кръст,02235074,42.3144221,22.0163441,Гроб,02234069,42.5259733,22.0552468,Гроб,02234057,42.2699189,22.3800731,Гроб,02234069,Graveyard/Tombstone,"Гробище, оброк",,icon_legend_verified,1729,0,
|
||||
0x6404,classic,1507,1043,amenity=place_of_worship,yes,1,42.1896243,27.0861053,Св. Димитър,02235067,42.6495481,23.1854010,Горнобански ман.Св. св. Кирил и Методий (Свети Крал) 985м,02234059,43.2710695,26.9130707,Евангелска Методистка,02235030,43.8517141,25.9852195,Православен храм 'Св. Архангел Михаил',02235004,43.1095147,23.6245537,Св. Георги,02234036,Church,Църква,amenity=place_of_worship,icon_legend_verified,1507,0,
|
||||
0x6405,classic,260,203,,yes,1,42.7514720,27.2207522,заслон Зайчар,02235043,41.6350079,25.5436206,Ловен дом Петлите,02235088,41.8497348,23.0167007,ловен заслон(отворен),02234083,43.3626509,27.8988361,ловна хижа Долище,02235020,41.8355942,24.7555876,Ловна хижа,02235074,Hunting Lodge,Ловна хижа,,icon_legend_verified,260,0,
|
||||
0x6406,classic,854,315,barrier=gate,yes,1,41.5502286,24.7455668,Военен обект!,02235086,41.2806129,25.2994323,Частен имот,02235099,41.3999176,24.8060989,Вододайна зона!,02235086,43.1745529,27.8986645,Порта закл.,02235032,42.0175123,24.7506738,Частен имот,02235062,Barrier/Gate,Бариера,barrier=gate,icon_legend_verified,854,0,
|
||||
0x6407,classic,2861,2186,tourism=picnic_site,yes,1,41.9156528,25.3233576,беседка,02235075,42.6045942,23.4355974,пейка,02234059,42.1314955,23.1496096,Беседка,02234071,42.8379893,27.2730017,Пейки,02235043,42.7331901,24.1863155,Беседка,02235037,Picnic Site,Пикник,tourism=picnic_site,icon_legend_verified,2861,0,
|
||||
0x6408,classic,12,12,emergency=mountain_rescue,yes,1,42.6026416,23.2414269,ПСС бунгало,02234059,42.7482104,24.8938608,ПСС,02235038,42.5720644,23.2877755,ПСС бунгало,02234059,42.2097945,23.3873177,ПСС,02234071,42.7656770,25.5035806,ПСС,02235040,Mountain Rescue,ПСС,emergency=mountain_rescue,icon_legend_verified,12,0,
|
||||
0x6409,classic,1235,767,historic=monument,yes,1,43.1282043,23.6027098,Перо Херцеговинеца,02234036,42.4960184,22.8770757,Паметник от Балканската война,02234058,43.5455561,26.4776945,Гецо Неделчев,02235017,41.6131210,24.3797994,С. Люцканова Е. Йовчев,02235085,41.3472819,23.1893492,Славчо Николов Терзиев - Тери 6.2.1946-17.1.2009,02234095,Monument,Паметник,historic=monument,icon_legend_verified,1235,0,
|
||||
0x640a,classic,2095,2034,,yes,1,43.1507993,25.3284001,Стълба,02235027,42.5652623,23.4620762,свлачище,02234059,43.2826567,27.1473241,непроходимо до пещерата,02235031,42.2344065,22.5821829,Обрасло с малини!,02234070,42.4225259,22.7016377,сипей,02234058,Danger,Опасност,,icon_legend_verified,2095,0,
|
||||
0x640b,classic,1128,986,amenity=place_of_worship,yes,1,41.9598985,24.3688774,Параклис,02235073,41.9762921,24.8116350,Св. Троица,02235074,42.0272112,24.2933249,Св. Георги Победоносец,02235061,41.8994522,25.0012565,Св. Илия,02235075,42.4137282,23.0256915,Св. Петка (734м),02234059,Chapel,Параклис,amenity=place_of_worship,icon_legend_verified,1128,0,
|
||||
0x640c,classic,1353,238,man_made=mine_shaft,yes,1,43.0497336,22.9328442,(Въгл.),02234034,41.5701199,24.6346951,(Ур.),02235086,42.0967555,23.4186459,(Ур.),02234071,42.6059246,22.9893422,Руд.Толбухин,02234058,43.0516005,22.9287028,(Въгл.),02234034,Mine Shaft,Мина,man_made=mine_shaft,icon_legend_verified,1353,0,
|
||||
0x640d,classic,137,90,,yes,1,42.6056242,23.2995987,Драгалевски междинна,02234059,42.5832009,23.2924747,Кабинков горна,02234059,41.6562724,24.6775675,Лифт Ардашлъ Снежанка триседалков (долна),02235086,42.5705194,23.2846212,Котва долна,02234059,41.6433334,24.6893477,Лифт Студенец 2 четириседалков (долна),02235086,Lift,Лифт,,icon_legend_verified,137,0,
|
||||
0x640e,classic,977,915,highway=bus_stop,yes,1,43.3513427,25.1430917,Левски,02235015,42.3796749,22.7069807,Раждавица,02234058,42.9125977,25.3967214,Съботковци,02235039,42.8417015,27.0389843,Завет,02235043,42.6515007,22.9731202,Гара Витановци,02234058,Bus Stop/Station,Спирка,highway=bus_stop,icon_legend_verified,977,0,
|
||||
0x640f,classic,2766,574,,yes,1,42.0345068,22.4919534,Гробище,02234069,41.4501715,24.6433210,гробище,02235086,42.2414017,22.8361559,Гробище,02234070,41.8649697,24.7047973,Гробище,02235074,42.8172183,22.2408342,Гробище,02234045,Graveyard/Tombstone,"Гробище, оброк",,icon_legend_verified,2766,0,
|
||||
0x6410,classic,98,88,,yes,0,43.6105728,23.6852574,МВЕЦ „ Елена“,02234024,42.0045090,24.8756862,"ВЕЦ ""Асеница 1""",02235062,41.9191074,24.1930962,ВЕЦ Батак,02235073,41.9946170,24.4710159,ВЕЦ Въча 2,02235073,43.1844449,25.2596283,"ВЕЦ ""Росица""",02235027,,,,not_on_legend,98,0,
|
||||
0x6411,classic,875,495,man_made=tower,yes,1,41.7411375,24.8182654,GSM клетка,02235074,42.1343064,24.8024940,НИМХ Пловдив,02235062,41.2826300,25.5326772,Гранична вишка,02235100,42.0159459,24.7430348,Ловно чакало,02235062,42.2614861,22.9261923,ловно чакало,02234070,Tower,Кула,man_made=tower,icon_legend_verified,875,0,
|
||||
0x6413,classic,76,7,,yes,1,42.6872063,23.3418703,Подлез,02234047,42.7647972,24.7336578,Галерия,02235038,42.6887298,23.3397245,Подлез,02234047,42.6899099,23.3380079,Подлез,02234047,42.7006817,24.3429565,Козница,02235037,Tunnel,Тунел,,icon_legend_verified,76,0,
|
||||
0x6414,classic,32922,4747,amenity=drinking_water,yes,1,43.1117034,23.7205982,затлачена,02234036,42.2771502,25.3026724,Лигова,02235063,43.9108086,22.4591660,Пилат чешма,02234009,42.7694106,26.2343645,Кесикташ,02235041,43.2204294,27.2649765,Орешака,02235031,Drinking Water,Чешма,amenity=drinking_water,icon_legend_verified,32922,0,
|
||||
0x6415,classic,264,215,tourism=camp_site,yes,1,41.7506647,25.1023221,Бивак,02235075,43.2923126,27.1431398,Пионерски лагер,02235031,43.5702968,28.5830140,къмпинг Добруджа,02235022,43.7619781,25.9560370,екопарк Саджака,02235004,41.7019987,23.4995627,Бивак,02234083,Camp Site,Място за бивакуване,tourism=camp_site,icon_legend_verified,264,0,
|
||||
0x6416,classic,2886,1634,historic=ruins,yes,1,41.5940452,24.3094182,Разв.,02235085,41.9296217,24.6835971,Разв.,02235074,42.7539825,24.1193461,Златишката мандра,02235037,41.5189862,24.7082305,Разв.,02235086,43.0104017,23.4075522,з. Трескавец (руини),02234035,Ruins,Руини,historic=ruins,icon_legend_verified,2886,0,
|
||||
0x6417,classic,8868,367,man_made=water_well,yes,1,42.2628808,24.2223430,Юсеиновия кладенец,02235061,41.7512012,25.0972795,(вриз),02235075,43.4005666,27.8917980,античен кладенец,02235020,43.6586809,23.6501956,Диковия геран,02234024,43.5718417,23.6637568,Манафски геран,02234024,Well,Кладенец,man_made=water_well,icon_legend_verified,8868,0,
|
||||
0x6418,classic,305,3,,yes,0,42.7693677,26.3003898,Ветрогенератор,02235041,42.7765560,26.3197017,Ветрогенератор,02235041,43.1920409,26.5263820,Ветрогенератор,02235030,43.4622145,28.3540606,,02235021,43.3898807,27.5740314,,02235020,,,,not_on_legend,305,0,
|
||||
0x6419,classic,113,19,,yes,0,42.5478601,26.7053819,Фотоволтаична ценрала,02235054,42.4148440,25.6047320,ВЕЦ Стара Загора,02235052,43.2008600,27.9051661,подстанция Енерго Про,02235032,42.0130706,24.2570615,Подстанция ВЕЦ Пещера,02235061,42.0763493,25.6177139,Фитоволтична централа,02235064,,,,not_on_legend,113,0,
|
||||
0x641a,classic,62,62,amenity=place_of_worship,yes,1,42.9599547,23.0566549,Св. Никола,02234047,41.5829730,23.2869387,Св. св. Козма и Дамян,02234095,42.9840946,23.2748580,Ман. Успение Богородично,02234047,42.6539254,22.6626492,Одранишки манастир „Св. св. ап. Петър и Павел”,02234058,43.1263375,26.8227339,м-р Патлейна,02235030,Church,Църква,amenity=place_of_worship,icon_legend_verified,62,0,
|
||||
0x641c,classic,3120,2822,highway=bus_stop,yes,1,42.8542113,25.3382707,1-7-10-14,02235039,42.8205442,23.3609891,"А:23,26",02234047,42.7005529,23.3722544,Тм:22,02234047,42.6578951,23.3979392,"А:384,404,604,N4 Тб:11",02234059,42.6948452,23.3303475,"А:N1,N2,N3,N4",02234047,Bus Stop/Station,Спирка,highway=bus_stop,icon_legend_verified,3120,0,
|
||||
0x641d,classic,17,17,,yes,0,42.1828008,24.7408462,ТЕЦ „Пловдив Север“,02235062,43.9489818,22.8509617,ТЕЦ „Видахим”АД,02234010,42.1545410,25.9073496,ТЕЦ „Марица изток 1“,02235064,43.1959462,27.7646184,ТЕЦ „Варна“,02235032,43.8307285,25.9306741,ТЕЦ „Русе Запад“,02235004,,,,not_on_legend,17,0,
|
||||
0x641e,classic,55,8,,yes,0,42.3201728,24.3003416,Соларен Парк Солсбор,02235061,42.6104736,25.6806278,Фотоволтаична централа,02235052,42.2889519,25.8097601,Фотоволтаична централа,02235064,42.4324822,25.9523034,Фотоволтаична централа,02235052,42.8275180,24.9023795,Соларен парк,02235038,,,,not_on_legend,55,0,
|
||||
0x641f,classic,1,1,,yes,0,43.7468505,23.7692428,АЕЦ Козлодуй,02234012,,,,,,,,,,,,,,,,,,,,not_on_legend,1,0,
|
||||
0x6500,classic,31214,712,,yes,1,42.0310307,24.7559094,Забучена,02235062,42.7306151,22.7937984,Калугерец,02234046,43.1759048,27.3662353,Изворите,02235031,43.0573082,27.2377896,Гюрлата,02235031,43.2198930,27.6934004,каптаж,02235032,Reservoir,Каптаж,,icon_legend_verified,31214,0,
|
||||
0x6501,classic,2412,2261,amenity=restaurant,yes,1,43.3456135,28.0715060,Therma beach,02235021,42.4869204,26.4846039,Каприз 2004,02235053,41.6558862,25.5600786,старите Кметове,02235088,43.2702541,26.9629169,бистро Карибу,02235030,41.9760990,24.8664379,Медуза,02235074,Restaurant,Ресторант,amenity=restaurant,icon_legend_verified,2412,0,
|
||||
0x6502,classic,1864,622,,yes,1,42.7929711,25.2992177,Бент,02235039,42.1954823,23.7029600,Брод,02234072,42.7659774,24.1279721,Брод,02235037,41.6309094,24.4783974,брод,02235085,42.7690244,24.1390228,Брод,02235037,River Passage,Брод,,icon_legend_verified,1864,0,
|
||||
0x6503,classic,760,459,,yes,1,43.4149003,28.4942007,на запад Черноморски път,02235021,41.5363026,23.6495304,Рзкл,02234096,41.7992020,23.3589077,Рзкл,02234083,41.6176271,23.5410404,Рзкл Тодорово,02234096,42.7354646,26.3277268,синя марк.за Сливен,02235041,Crossroad,Кръстопът,,icon_legend_verified,760,0,
|
||||
0x6506,classic,424,415,tourism=museum,yes,1,42.1463013,24.7487855,Градска художествена галерия,02235062,42.4936581,27.4754548,Археологически музей,02235055,42.8665495,24.7798991,Изложение на Художествените занаяти и изкуства Орешак,02235038,43.3617496,28.4654903,музей Калиакра,02235021,42.6802969,26.3179851,Регионален исторически музей,02235041,Museum,Музей,tourism=museum,icon_legend_verified,424,0,
|
||||
0x650b,classic,8767,218,,yes,1,42.0000887,23.3820820,94,02234071,42.7546048,24.7787404,74,02235038,42.6914549,25.3780746,Табели,02235039,42.5844884,22.7756453,Червено-бял,02234058,42.7498627,24.7798777,64,02235038,Winter Marking,Зимна маркировка,,icon_legend_verified,8767,0,
|
||||
0x6511,classic,50308,2504,natural=spring,yes,1,42.8732872,23.3371925,Студена вода,02234047,42.5154161,23.1598663,Врелото,02234059,42.2324324,26.8243647,Маврово кладенче,02235066,42.5689745,22.6115370,Вучанда,02234058,43.4746599,22.8128099,Цунина шообърка,02234022,Spring,Извор,natural=spring,icon_legend_verified,50308,0,
|
||||
0x6600,classic,66206,66122,,yes,1,41.2312603,22.6785922,217,02234106,42.8680515,22.6715970,781,02234046,42.0207524,23.3518052,2248,02234071,43.1519794,27.8918195,192,02235032,42.8781152,25.1690984,496,02235039,Triangulation,Кота,,icon_legend_verified,66206,0,Numeric names are spot elevations and can remain under ele; do not blindly replace with survey point
|
||||
0x6601,classic,165,146,,yes,1,42.9589677,25.2119064,"скален феномен ""Момичките""",02235039,42.5682020,25.5528045,Бункер,02235052,43.8477659,25.9528399,Драматичен театър 'Сава Огнянов',02235004,42.1860838,22.9879904,Марков камък,02234070,43.2102799,27.6799679,Побити камъни - група Канарата,02235032,Natural Phenomenon,Природен феномен,,icon_legend_verified,165,0,
|
||||
0x6602,classic,891,271,tourism=viewpoint,yes,1,41.7438412,23.4641790,Кьошка (Балконе)-панорама,02234083,42.8009748,27.1023059,"скална ""Сватба""",02235043,41.9350505,24.3787265,панорама 180,02235073,42.8256512,25.4819083,Локомотив,02235039,41.9915915,24.8787546,Гледка,02235074,Viewpoint,Гледка,tourism=viewpoint,icon_legend_verified,891,0,
|
||||
0x6603,classic,26366,26357,man_made=survey_point,yes,1,42.5520873,23.8540435,1079,02234060,42.5116181,23.8444304,862,02234060,42.6156020,23.9883041,677,02234060,42.7191353,23.8798571,778,02234048,42.4579740,23.6816740,972,02234060,Triangulation,Кота,man_made=survey_point,icon_legend_verified,26366,0,
|
||||
0x6604,classic,10,10,,yes,0,42.2186995,27.7872348,"Къмпинг ""Юг""",02235068,43.0315375,27.8832793,къмпинг Рай,02235032,43.0407858,27.8884077,къмпинг Романтика,02235032,42.4205947,27.6452065,"Къмпинг ""Градина""",02235056,42.3917341,27.7048159,"Къмпинг ""Смокиня""",02235056,,,,not_on_legend,10,0,
|
||||
0x6608,classic,2644,2591,tourism=hotel,yes,1,42.8794885,27.8957462,Fortuna Cape Complex,02235044,42.3725724,27.7117682,Марина Бийч - Дюни,02235056,42.0698905,24.7490859,Семеен хотел „Купола“,02235062,42.6359010,27.6414514,Midia Grand Resort,02235056,43.0968761,25.6632471,Севастократор,02235028,Hotel,Хотел,tourism=hotel,icon_legend_verified,2644,0,
|
||||
0x6609,classic,372,362,tourism=alpine_hut,yes,1,43.2779145,27.1159101,Хижа Мадарски конник,02235031,41.8324399,24.7721529,х. Пашалийца (не работи),02235074,41.9550920,24.8939681,х. Безово (не работи),02235074,43.1889725,23.0808592,х.Ком (нова) 1515м,02234035,41.4229417,23.6594868,Х. Славянка,02234096,Hut,Хижа,tourism=alpine_hut,icon_legend_verified,372,0,
|
||||
0x660a,classic,275,240,amenity=shelter;shelter_type=basic_hut,yes,1,42.8157377,23.8160634,Заслон,02234048,42.7268600,26.3467383,заслон Чочо,02235041,43.1160593,25.6249881,Дълъг живот,02235028,41.7127061,23.5394526,З.Изворите,02234084,42.7820492,25.8150172,Караиваново хорище,02235040,Refuge,Заслон,amenity=shelter;shelter_type=basic_hut,icon_legend_verified,275,0,
|
||||
0x660b,classic,2612,2534,,yes,1,43.9378452,22.4072385,Пир. 454,02234009,41.6514015,24.3190312,Инф. табло,02235085,41.9887161,26.8827081,Пир. 203,02235078,41.8233204,26.5118337,Пир. 292,02235078,41.2940240,25.6999397,Пир. 102,02235100,Mark,Маркировка,,icon_legend_verified,2612,0,
|
||||
0x660c,classic,94,88,natural=saddle,yes,0,43.6241341,22.4983478,Кадъбоаз,02234021,42.8232479,27.6280403,Дюлински проход,02235044,42.8006744,25.4271054,Гецанов камък,02235039,41.8039656,25.1517606,Казълъгедик,02235075,42.7531886,27.7547908,Поморийски проход,02235044,,,natural=saddle,not_on_legend,94,0,
|
||||
0x660d,classic,8,8,,yes,0,42.6904893,23.4124017,Летище София,02234047,43.1460357,25.7195950,Летище Горна Оряховица,02235028,43.2368660,27.8294420,Летище Варна,02235032,42.5648332,27.5147867,Летище Бургас,02235056,43.4545541,26.4315391,Летище Благоево,02235017,,,,not_on_legend,8,0,
|
||||
0x660e,classic,8,8,,yes,0,43.4520006,24.5126653,Авиобаза Долна Митрополия,02235014,42.0614576,24.8470831,24-та АБ Крумово,02235062,42.8157806,23.2999206,Авиобаза Доброславци,02234047,43.5985994,27.8323603,Авиобаза Добрич,02235020,42.1178055,25.0028229,Авиобаза Чешнегирово,02235063,,,,not_on_legend,8,0,
|
||||
0x660f,classic,44,28,,yes,0,42.6426816,26.3592696,Летище Сливен,02235053,43.2804251,27.7004385,Вертолетна площадка Калиманци,02235032,41.9794035,25.6020069,Летище Узунджово,02235076,41.4526820,23.2246900,Летище Кърналово,02234095,43.9716411,27.4697471,Летателна площадка Кайнарджа,02235007,,,,not_on_legend,44,0,
|
||||
0x6610,classic,15,15,,yes,1,42.8212094,26.1542845,Агликина поляна,02235041,41.6092157,23.5639143,Поляна,02234096,41.8723726,23.3053493,Поляна,02234083,41.8730593,23.3056498,Поляна с каптаж(2 бели камъка),02234083,41.8687248,23.3031178,Поляна здравец,02234083,Meadow,Поляна,,icon_legend_verified,15,0,
|
||||
0x6613,classic,1746,484,waterway=waterfall,yes,1,42.7435327,24.6398234,Кастрак дере горен,02235038,42.0257735,24.5287156,горен Устински водопад,02235062,41.8480825,24.6142459,Костен камък,02235074,42.7213883,23.9770174,Кокуш дере,02234048,41.4526606,25.5094600,Щолнята,02235088,Waterfall,Водопад,waterway=waterfall,icon_legend_verified,1746,0,
|
||||
0x6614,classic,15289,7841,,yes,1,42.7437901,25.2693915,15,02235039,42.7658057,25.9388924,6,02235040,41.6214252,25.8841109,9,02235088,42.6040363,23.9931536,8,02234060,41.7604923,25.1412892,7,02235075,Rock,Скала,,icon_legend_verified,15289,0,
|
||||
0x6615,classic,942,347,natural=cave_entrance,yes,1,41.8003178,23.3853436,Дупка,02234083,43.2577872,24.0077662,Магаречките дупки,02235025,43.3852458,24.6310258,Скални ниши,02235014,43.2037783,27.7019405,Темната дупка,02235032,43.2195926,23.4565187,Барки 14,02234035,Cave,Пещера,natural=cave_entrance,icon_legend_verified,942,0,
|
||||
0x6616,classic,15540,15436,natural=peak,no,0,42.8516150,25.7782173,Симов чукар,02235040,43.4484601,23.3003926,Остра могила (234),02234023,42.0256448,23.1812596,Чуката (904),02234071,42.3218465,23.6981964,Голяма Старческа присойна (845),02234072,42.2902608,23.9523411,Градевица (760),02234072,,,natural=peak,name_supported,15540,0,
|
||||
0x6617,classic,112,112,natural=peak,yes,1,41.7893529,22.9647946,Огреяк (Кадийца) (1924),02234082,41.9179702,24.9033022,Стария бунар (1517),02235074,41.3211894,23.1748867,Конгур (1951),02234107,41.7833877,27.6181912,Махя (1031),02235080,42.3677444,22.4650025,Арамлия (1496),02234057,Peak,Връх,natural=peak,icon_legend_verified,112,0,
|
||||
0x6618,classic,10176,1222,natural=tree,yes,1,42.7752686,23.9033318,столетно дърво,02234048,43.2969904,24.6177006,Полски клен,02235026,42.2663999,26.2558866,Черница,02235065,42.9399562,25.5326772,Зимен дъб,02235040,41.6851544,25.7126641,Полски ясен,02235076,Tree,Дърво,natural=tree,icon_legend_verified,10176,0,
|
||||
0x6619,classic,195,192,historic=archaeological_site,yes,1,42.5703692,25.3767228,Бащин камък (Слънчева врата),02235051,41.9394493,26.1900759,Долмен Оряхово,02235077,42.0039296,26.2752414,Долмен Мангъра,02235065,42.0932794,27.3929071,Долмен,02235067,41.6816568,25.8129787,Кромлех,02235076,Prehistoric site,Праисторически обект,historic=archaeological_site,icon_legend_verified,195,0,
|
||||
0x661a,classic,384,353,historic=archaeological_site,yes,1,41.7153454,26.0307527,Тракийска крепост Курт кале,02235077,43.2776999,27.1080351,Вила Рустика,02235031,41.6088080,23.8547945,Римски Мост,02234096,43.1936073,23.9905357,Антична крепост ''Кула'',02234036,41.9387841,25.3112984,Тракийска крепост Голямото градище,02235075,Antiquity site,Античен обект,historic=archaeological_site,icon_legend_verified,384,0,
|
||||
0x661b,classic,319,301,historic=archaeological_site,yes,1,42.0922279,24.2505813,"Средновековен манастир ""Св. Седмочиленици""",02235061,42.2452426,24.0083671,Късноантична и средновековна крепост ''Смилево градище'',02235061,41.5194798,23.3953214,Средновековен манастир „Св. Харалампий – св. Архангели“,02234095,42.0475101,24.1791701,Селското кале,02235061,43.2297850,24.4117069,Дядо Новаково кале,02235025,Medieval site,Средновековен обект,historic=archaeological_site,icon_legend_verified,319,0,
|
||||
0x661c,classic,1169,118,,yes,0,41.8346500,26.4578676,Койчовата могила,02235077,43.6355710,28.5723281,Аязмата,02235022,43.2369947,25.7930660,Немска могила,02235028,41.8810201,26.3879800,Стрелкова могила,02235077,41.8904185,26.4215612,Кочмарова могила,02235077,,,,not_on_legend,1169,0,
|
||||
0x661d,classic,1412,413,,yes,0,41.1914778,24.0922236,Овчарник,02235097,42.7084708,25.3351378,кошари,02235039,42.7437901,24.1515326,Овчарник,02235037,41.2387919,24.0231514,Овчарник,02235097,41.7111611,24.5897198,Овчарник,02235074,,,,not_on_legend,1412,0,
|
||||
0x661e,classic,979,803,amenity=shelter,yes,0,41.4122772,24.8197031,Навес с барбекю,02235086,41.3865280,24.7667241,Навес с барбекю,02235086,42.1769857,22.6236820,заслон-навес 1566 м,02234070,41.6840601,24.1560173,Навес,02235073,41.8664289,25.2836180,навес с маси и пейки,02235075,,,amenity=shelter,not_on_legend,979,0,
|
||||
0x10000,extended,2,0,,no,0,43.1772995,27.7539325,,02235032,43.1772995,27.7539325,,02235032,,,,,,,,,,,,,,,,extended_unverified,23,21,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x10018,extended,2,0,,no,0,43.1856465,27.9490042,,02235032,43.1691670,27.9513645,,02235032,,,,,,,,,,,,,,,,extended_unverified,160,158,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x10100,extended,12,12,,no,0,42.4783373,27.4493837,LFl 4.5s W 4M,02235055,41.6336131,28.0994225,Fl W 10s 12M,02235093,42.2633958,27.7585888,Iso W 6s 6M,02235068,43.1873202,27.9218388,LFl W 10s 10M,02235032,43.4110165,28.3561635,LFl W 5s 5M,02235021,,,,extended_unverified,35,23,
|
||||
0x10118,extended,1,0,,no,0,43.1870842,27.6683164,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,159,158,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1011e,extended,1,0,,no,0,42.5841022,27.6902461,,02235056,,,,,,,,,,,,,,,,,,,,extended_unverified,2,1,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x10204,extended,2,2,,no,0,42.6573801,27.7476025,Fl(3) W 10s,02235056,42.5164247,27.6434898,LFl(3) W 10s Horn,02235056,,,,,,,,,,,,,,,,extended_unverified,6,4,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x10205,extended,1,0,,no,0,42.4590254,27.5740099,,02235056,,,,,,,,,,,,,,,,,,,,extended_unverified,7,6,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x10209,extended,8,8,,no,0,42.4733591,27.4699187,Fl 3s,02235055,43.1984782,27.8729796,Fl R,02235032,43.1999803,27.8736019,Fl G (2+1) 10s,02235032,42.4790454,27.4806905,Fl 3s,02235055,43.1995296,27.8640532,Fl R,02235032,,,,extended_unverified,11,3,
|
||||
0x1020a,extended,9,9,,no,0,42.4602699,27.4538684,G,02235055,42.4743032,27.5255370,Fl 3s G 7.6M,02235056,43.1929851,27.7361441,Fl G,02235032,43.1970191,27.7040434,Fl G,02235032,43.1951952,27.7179480,Fl G,02235032,,,,extended_unverified,12,3,
|
||||
0x1020b,extended,5,3,,no,0,41.8699050,28.0232477,Fl(2) 6s,02235081,43.1872773,27.8926563,Y Fl 5s 4M,02235032,42.4769211,27.4610353,Fl 4s W,02235055,42.4678445,27.5515008,,02235056,42.6320171,27.6835513,,02235056,,,,extended_unverified,7,2,
|
||||
0x1020c,extended,2,0,,no,0,43.1899381,27.8013968,,02235032,43.1997228,27.8581524,,02235032,,,,,,,,,,,,,,,,extended_unverified,5,3,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x10218,extended,3,0,,no,0,42.0534110,27.9847956,,02235068,43.1925774,27.6698399,,02235032,43.1884360,27.8502131,,02235032,,,,,,,,,,,,extended_unverified,161,158,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x10301,extended,2006,0,,no,0,43.4377956,28.9283538,,02235022,42.2109532,27.8938365,,02235068,43.1874704,28.1750178,,02235033,41.9554996,28.1644607,,02235081,41.3539124,28.6557126,,02235094,,,,extended_unverified,2018,12,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x10401,extended,157,0,,no,0,42.6565218,27.7297497,,02235056,43.2037354,27.8479171,,02235032,43.1908822,27.6795602,,02235032,43.2028985,27.8478527,,02235032,43.1921697,27.8838801,,02235032,,,,extended_unverified,158,1,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x10402,extended,41,0,,no,0,43.2109666,28.1308579,,02235033,43.7255430,28.7586451,,02235010,43.2701468,28.1310081,,02235033,42.4677372,27.6944518,,02235056,43.5383034,28.6903024,,02235022,,,,extended_unverified,45,4,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x10403,extended,2,0,,no,0,41.3038731,28.7996078,,02235106,43.6612129,28.5722423,,02235022,,,,,,,,,,,,,,,,extended_unverified,5,3,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1040d,extended,229,0,,no,0,41.9180989,28.0489111,,02235081,42.8007388,27.8943729,,02235044,43.5790086,28.6161017,,02235022,41.5124631,28.2507205,,02235093,41.3938880,28.5315371,,02235094,,,,extended_unverified,229,0,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1040e,extended,4,0,,no,0,42.8295565,27.9202938,,02235044,43.6208725,28.6146212,,02235022,42.0751047,27.9735947,,02235068,42.8465295,27.9236841,,02235044,,,,,,,,extended_unverified,4,0,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1041e,extended,1,0,,no,0,42.6499343,27.8320599,,02235056,,,,,,,,,,,,,,,,,,,,extended_unverified,1,0,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x10501,extended,1,0,,no,0,43.2052803,27.9446054,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,4,3,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x10602,extended,1,0,,no,0,42.7095008,27.8530884,,02235044,,,,,,,,,,,,,,,,,,,,extended_unverified,2,1,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1061d,extended,1,0,,no,0,43.2051730,27.9395843,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,2,1,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x10701,extended,58,0,,no,0,43.1964397,27.8618217,,02235032,42.4684024,27.4976420,,02235055,42.4901605,27.5672507,,02235056,43.0828428,27.9600120,,02235032,42.4663210,27.5366306,,02235056,,,,extended_unverified,59,1,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x10705,extended,33,0,,no,0,43.2224250,28.1217384,,02235033,43.1959248,27.7077127,,02235032,43.5670781,28.7531519,,02235022,43.1349206,27.9537892,,02235032,43.0644107,28.0772996,,02235033,,,,extended_unverified,33,0,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x10706,extended,32,0,,no,0,43.4509492,28.8183832,,02235022,42.4609566,27.5497198,,02235056,43.0328679,28.2337046,,02235033,43.5668850,28.6722565,,02235022,43.0170536,28.3903027,,02235033,,,,extended_unverified,32,0,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x10801,extended,1,0,,no,0,42.8644896,27.9285121,,02235044,,,,,,,,,,,,,,,,,,,,extended_unverified,2,1,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x10903,extended,1,0,,no,0,42.6283908,27.6877141,,02235056,,,,,,,,,,,,,,,,,,,,extended_unverified,8,7,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x10a01,extended,1,0,,no,0,43.2014394,27.8667355,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,2,1,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x10b01,extended,1,0,,no,0,41.8894100,28.0229688,,02235081,,,,,,,,,,,,,,,,,,,,extended_unverified,18,17,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x10b09,extended,1,0,,no,0,43.2140994,27.9750752,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,1,0,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x10c00,extended,1,0,,no,0,43.2016969,27.9050374,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,2,1,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x10d01,extended,1,0,,no,0,43.2011819,27.8610492,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,1,0,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1161f,extended,1,0,,no,0,43.1953883,27.9319453,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,2,1,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1171e,extended,1,0,,no,0,43.2054305,27.8968406,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,2,1,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1181f,extended,1,0,,no,0,43.2013321,27.7061892,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,1,0,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x11901,extended,1,0,,no,0,43.8046575,28.5944295,,02235010,,,,,,,,,,,,,,,,,,,,extended_unverified,3,2,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x11902,extended,1,0,,no,0,43.2049370,27.7813983,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,4,3,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x11a02,extended,1,0,,no,0,43.1968260,27.6557207,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,3,2,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1201f,extended,1,0,,no,0,42.5242352,27.5483894,,02235056,,,,,,,,,,,,,,,,,,,,extended_unverified,1,0,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x12102,extended,1,0,,no,0,42.4892378,27.5353217,,02235056,,,,,,,,,,,,,,,,,,,,extended_unverified,6,5,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x12502,extended,1,0,,no,0,43.2015038,27.8690314,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,4,3,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x12a03,extended,1,0,,no,0,42.6277685,27.7115536,,02235056,,,,,,,,,,,,,,,,,,,,extended_unverified,7,6,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x12c1e,extended,1,0,,no,0,43.2013321,27.7046227,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,1,0,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x12d01,extended,1,0,,no,0,43.1838441,27.9260015,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,2,1,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x12e1f,extended,1,0,,no,0,43.2423377,28.1846094,,02235033,,,,,,,,,,,,,,,,,,,,extended_unverified,1,0,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x13001,extended,1,0,,no,0,43.1683517,28.0398345,,02235033,,,,,,,,,,,,,,,,,,,,extended_unverified,4,3,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1321f,extended,1,0,,no,0,42.6127267,27.8121257,,02235056,,,,,,,,,,,,,,,,,,,,extended_unverified,1,0,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1331f,extended,1,0,,no,0,43.2015467,27.8662419,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,3,2,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x13400,extended,1,0,,no,0,43.1861830,27.9269886,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,2,1,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x13a01,extended,1,0,,no,0,42.5860548,27.6915121,,02235056,,,,,,,,,,,,,,,,,,,,extended_unverified,3,2,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x13c03,extended,1,0,,no,0,42.4661279,27.6418805,,02235056,,,,,,,,,,,,,,,,,,,,extended_unverified,4,3,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x13d1e,extended,1,1,,no,0,43.2068896,27.9138136,я припек,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,2,1,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1411e,extended,1,0,,no,0,43.2047009,27.7807546,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,1,0,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x14400,extended,1,0,,no,0,43.2175541,27.9579949,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,2,1,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x14401,extended,1,0,,no,0,43.2052159,27.9493475,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,3,2,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1441c,extended,1,0,,no,0,43.1683731,28.0286121,,02235033,,,,,,,,,,,,,,,,,,,,extended_unverified,1,0,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x14501,extended,1,0,,no,0,42.6383686,27.8804684,,02235056,,,,,,,,,,,,,,,,,,,,extended_unverified,5,4,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x14602,extended,1,0,,no,0,43.1857967,27.8471661,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,4,3,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1461c,extended,1,0,,no,0,43.2015252,27.7032280,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,3,2,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1461f,extended,1,0,,no,0,43.2052588,27.8920341,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,2,1,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1471f,extended,1,0,,no,0,43.2224464,27.8871202,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,4,3,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x14803,extended,1,0,,no,0,42.5953245,27.7765274,,02235056,,,,,,,,,,,,,,,,,,,,extended_unverified,16,15,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1481f,extended,1,0,,no,0,43.2054090,27.8980207,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,2,1,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x14a1e,extended,1,0,,no,0,43.2069111,27.9140067,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,1,0,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x14b01,extended,1,0,,no,0,43.2014823,27.8672075,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,4,3,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x14c01,extended,1,0,,no,0,43.2069111,27.9118609,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,2,1,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x14d1f,extended,1,0,,no,0,42.5163817,27.6553559,,02235056,,,,,,,,,,,,,,,,,,,,extended_unverified,2,1,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x14e1e,extended,1,0,,no,0,42.4459577,27.6790023,,02235056,,,,,,,,,,,,,,,,,,,,extended_unverified,2,1,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x15200,extended,1,0,,no,0,43.2048941,27.7857113,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,4,3,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x15303,extended,1,0,,no,0,43.2014179,27.8711987,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,5,4,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1541d,extended,1,0,,no,0,42.4657202,27.6436615,,02235056,,,,,,,,,,,,,,,,,,,,extended_unverified,1,0,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x15501,extended,1,0,,no,0,43.2052588,27.8956819,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,4,3,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x15800,extended,1,0,,no,0,43.2052588,27.9370308,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,3,2,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x15a00,extended,1,0,,no,0,43.2053447,27.8867555,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,6,5,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x15e01,extended,1,0,,no,0,42.6091433,27.6586604,,02235056,,,,,,,,,,,,,,,,,,,,extended_unverified,5,4,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x16103,extended,1,0,,no,0,43.1455421,28.0770850,,02235033,,,,,,,,,,,,,,,,,,,,extended_unverified,5,4,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x16201,extended,1,0,,no,0,43.2000232,27.9100585,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,4,3,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x16701,extended,1,0,,no,0,43.1955171,27.9348421,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,5,4,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1681c,extended,1,1,,no,0,42.6561785,27.8976774,Тюлен,02235056,,,,,,,,,,,,,,,,,,,,extended_unverified,2,1,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1681d,extended,1,0,,no,0,43.2166100,28.0465937,,02235033,,,,,,,,,,,,,,,,,,,,extended_unverified,3,2,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x16a00,extended,1,0,,no,0,43.2054305,27.8999090,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,3,2,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x16b1c,extended,1,0,,no,0,42.6562428,27.9021621,,02235056,,,,,,,,,,,,,,,,,,,,extended_unverified,1,0,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x16e1f,extended,1,0,,no,0,42.6637101,27.7445555,,02235056,,,,,,,,,,,,,,,,,,,,extended_unverified,1,0,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x17000,extended,1,0,,no,0,42.5416589,27.6806760,,02235056,,,,,,,,,,,,,,,,,,,,extended_unverified,3,2,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1711d,extended,1,0,,no,0,43.2069111,27.9155731,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,2,1,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x17303,extended,1,0,,no,0,42.5860977,27.6886582,,02235056,,,,,,,,,,,,,,,,,,,,extended_unverified,6,5,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1731e,extended,1,0,,no,0,43.1925559,27.8419733,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,1,0,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1751f,extended,1,0,,no,0,43.2048941,27.7850676,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,2,1,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1771e,extended,1,0,,no,0,42.4598193,27.7104378,,02235056,,,,,,,,,,,,,,,,,,,,extended_unverified,2,1,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1791e,extended,1,0,,no,0,43.2051516,27.8927636,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,1,0,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x17d1e,extended,1,0,,no,0,43.2051086,27.9474807,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,2,1,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x17e03,extended,1,0,,no,0,43.1967616,27.6618361,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,18,17,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x18003,extended,1,0,,no,0,43.1717634,27.9500127,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,10,9,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1811e,extended,1,0,,no,0,42.5413799,27.6878858,,02235056,,,,,,,,,,,,,,,,,,,,extended_unverified,5,4,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x18302,extended,1,0,,no,0,43.2048941,27.7903032,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,2,1,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1861d,extended,1,0,,no,0,43.2015252,27.8606415,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,2,1,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1861f,extended,1,0,,no,0,43.2055807,27.8994370,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,3,2,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x18901,extended,1,0,,no,0,42.6384759,27.8675079,,02235056,,,,,,,,,,,,,,,,,,,,extended_unverified,3,2,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x18a1f,extended,2,1,,no,0,43.2052374,27.8961754,ставена,02235032,43.2015467,27.8710055,,02235032,,,,,,,,,,,,,,,,extended_unverified,2,0,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x18c1e,extended,1,0,,no,0,43.2053876,27.8944159,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,2,1,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x18d01,extended,1,0,,no,0,42.6413083,27.7646613,,02235056,,,,,,,,,,,,,,,,,,,,extended_unverified,5,4,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x19001,extended,1,0,,no,0,42.6142931,27.7507782,,02235056,,,,,,,,,,,,,,,,,,,,extended_unverified,5,4,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1921f,extended,1,0,,no,0,43.1928349,27.8456640,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,1,0,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x19a00,extended,1,0,,no,0,43.0997944,27.9608488,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,3,2,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x19d03,extended,1,0,,no,0,42.8070259,27.9287481,,02235044,,,,,,,,,,,,,,,,,,,,extended_unverified,2,1,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1a11f,extended,1,0,,no,0,42.6562643,27.9072046,,02235056,,,,,,,,,,,,,,,,,,,,extended_unverified,2,1,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1a401,extended,1,0,,no,0,43.1839085,27.9244995,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,3,2,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1a501,extended,1,0,,no,0,42.6584101,27.8624225,,02235056,,,,,,,,,,,,,,,,,,,,extended_unverified,4,3,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1a51c,extended,1,0,,no,0,43.2050872,27.9406786,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,2,1,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1a800,extended,1,0,,no,0,42.5856042,27.6471162,,02235056,,,,,,,,,,,,,,,,,,,,extended_unverified,1,0,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1a81c,extended,1,0,,no,0,43.2015252,27.7040648,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,1,0,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1a91c,extended,1,0,,no,0,43.2051516,27.9386616,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,1,0,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1a91f,extended,1,0,,no,0,43.1954098,27.9332972,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,2,1,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1ab1f,extended,1,0,,no,0,42.5952172,27.7136993,,02235056,,,,,,,,,,,,,,,,,,,,extended_unverified,6,5,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1b101,extended,1,0,,no,0,43.1928992,27.8481531,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,3,2,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1b31f,extended,1,0,,no,0,43.2052374,27.9455066,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,4,3,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1b402,extended,2,0,,no,0,42.5443196,27.5562000,,02235056,43.1732011,27.9486609,,02235032,,,,,,,,,,,,,,,,extended_unverified,4,2,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1b41c,extended,2,0,,no,0,43.1952381,27.7601337,,02235032,43.2049155,27.7816987,,02235032,,,,,,,,,,,,,,,,extended_unverified,2,0,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1b703,extended,1,0,,no,0,42.7092648,27.8581309,,02235044,,,,,,,,,,,,,,,,,,,,extended_unverified,1,0,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1ba03,extended,1,0,,no,0,43.2014394,27.8686452,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,5,4,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1be1c,extended,1,0,,no,0,43.2013321,27.7118969,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,2,1,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1c11e,extended,1,0,,no,0,43.1928992,27.8475738,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,2,1,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1c31d,extended,1,0,,no,0,43.1954956,27.9373097,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,1,0,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1c500,extended,1,0,,no,0,43.2015681,27.8681087,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,2,1,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1c71f,extended,1,0,,no,0,43.2048726,27.7903676,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,3,2,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1c81e,extended,1,0,,no,0,43.1928992,27.8485823,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,1,0,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1cb1f,extended,1,0,,no,0,43.2015681,27.8663921,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,7,6,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1ce02,extended,1,0,,no,0,43.2049799,27.7835441,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,2,1,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1d501,extended,1,0,,no,0,42.4691319,27.6782942,,02235056,,,,,,,,,,,,,,,,,,,,extended_unverified,4,3,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1d51e,extended,1,1,,no,0,43.2054305,27.8993511,вец,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,1,0,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1d61f,extended,1,0,,no,0,43.2015681,27.8704262,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,3,2,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1d71c,extended,1,0,,no,0,43.2011819,27.8677869,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,2,1,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1d800,extended,1,0,,no,0,43.2052159,27.8855324,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,5,4,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1da01,extended,1,0,,no,0,42.5940800,27.8528523,,02235056,,,,,,,,,,,,,,,,,,,,extended_unverified,4,3,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1da1e,extended,1,0,,no,0,42.4458933,27.5304723,,02235056,,,,,,,,,,,,,,,,,,,,extended_unverified,1,0,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1db01,extended,1,0,,no,0,43.1839299,27.9252076,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,2,1,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1db1e,extended,1,0,,no,0,43.2012463,27.8598905,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,1,0,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1db1f,extended,1,0,,no,0,43.1928563,27.8472519,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,3,2,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1dc01,extended,1,0,,no,0,43.1860757,27.8722286,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,2,1,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1de1f,extended,1,0,,no,0,43.2052588,27.9385757,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,3,2,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1e101,extended,1,0,,no,0,43.1975555,27.8627014,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,1,0,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1e21f,extended,2,0,,no,0,43.2048941,27.7844238,,02235032,42.4360442,27.6796460,,02235056,,,,,,,,,,,,,,,,extended_unverified,4,2,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1ea00,extended,1,0,,no,0,43.1715059,27.9508066,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,2,1,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1ec1d,extended,1,0,,no,0,43.2013321,27.7051377,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,3,2,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1f401,extended,1,0,,no,0,43.1708193,28.0719352,,02235033,,,,,,,,,,,,,,,,,,,,extended_unverified,4,3,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1f501,extended,1,0,,no,0,42.5145793,27.5918198,,02235056,,,,,,,,,,,,,,,,,,,,extended_unverified,3,2,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1fb01,extended,1,0,,no,0,43.2013750,27.7114248,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,1,0,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1ff00,extended,1,0,,no,0,43.2054734,27.8981280,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,20,19,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1ff11,extended,1,0,,no,0,42.4699044,27.4409509,,02235055,,,,,,,,,,,,,,,,,,,,extended_unverified,5,4,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
0x1ff18,extended,1,0,,no,0,43.1953454,27.9564929,,02235032,,,,,,,,,,,,,,,,,,,,extended_unverified,148,147,Extended feature lacks icon: independently verify whether meaningful point or malformed record
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+1872
-264
File diff suppressed because it is too large
Load Diff
@@ -1,68 +0,0 @@
|
||||
code,legend_en,legend_bg,reviewed_semantics,occurrences_in_img_v05,confidence,evidence,status
|
||||
0x200,Capital City,Столица,place=city;capital=yes,2,visual_exact,Exact concentric capital icon,present
|
||||
0x800,Large City,Град >75 000,place=city,51,visual_exact,Exact medium city circle icon,present
|
||||
0x900,Town,Град <75 000,place=town,283,visual_exact,Exact small city circle icon,present
|
||||
0x2c05,School,Училище,amenity=school,2481,visual_exact,Exact yellow school icon,present
|
||||
0x2c0b,Church,Църква,amenity=place_of_worship,1606,visual_exact,Exact yellow church icon,present
|
||||
0x2d04,Casino,Казино,amenity=casino,0,visual_exact,Exact dice/cards casino icon,icon_defined_not_seen_in_IMG
|
||||
0x2d08,Ice Rink,Пързалка,leisure=ice_rink,0,visual_exact,Exact yellow ice-skating icon,icon_defined_not_seen_in_IMG
|
||||
0x2e05,Pharmacy,Аптека,amenity=pharmacy,487,visual_exact,Exact yellow pharmacy cup icon,present
|
||||
0x2e07,Clothes shop,Магазин за дрехи,shop=clothes,105,visual_exact,Exact clothes-on-hanger icon,present
|
||||
0x2f0a,Synagogue,Синагога,amenity=place_of_worship;religion=jewish,4,visual_exact,Exact yellow star icon,present
|
||||
0x2f0c,Mosque,Джамия,amenity=place_of_worship;religion=muslim,320,visual_exact,Exact crescent icon,present
|
||||
0x2f0e,Car Wash,Автомивка,amenity=car_wash,4,visual_exact,Exact blue/red carwash icon,present
|
||||
0x3004,Courthouse,Съд,amenity=courthouse,0,visual_exact,Exact grey courthouse icon,icon_defined_not_seen_in_IMG
|
||||
0x3008,Fire Station,Пожарна,amenity=fire_station,37,visual_exact,Exact firefighter icon,present
|
||||
0x4700,Port,Пристанище,industrial=port,101,visual_exact,Exact anchor; functional port use not independently confirmed,present
|
||||
0x6400,Quarry,Кариера,landuse=quarry,465,visual_exact,Exact crossed mining tools icon; point vs area geometry still to assess,present
|
||||
0x6401,Bridge,Мост,man_made=bridge,1679,visual_exact,Exact bridge-icon depiction; original route connectivity not established,present
|
||||
0x6402,Building,Сграда,building=yes,6186,visual_exact,Exact yellow building icon; original building footprint not present,present
|
||||
0x6403,Graveyard/Tombstone,"Гробище, оброк",,1729,visual_exact,Exact grave cross; ambiguous between graveyard and religious votive feature,present
|
||||
0x6404,Church,Църква,amenity=place_of_worship,1507,visual_exact,Exact church icon,present
|
||||
0x6405,Hunting Lodge,Ловна хижа,,260,visual_exact,Exact hunting lodge icon; do NOT infer tourist/alpine hut,present
|
||||
0x6406,Barrier/Gate,Бариера,barrier=gate,854,visual_exact,Exact black/red barrier icon,present
|
||||
0x6407,Picnic Site,Пикник,tourism=picnic_site,2861,visual_exact,Exact picnic bench icon,present
|
||||
0x6408,Mountain Rescue,ПСС,emergency=mountain_rescue,12,visual_exact,Exact shield with red cross,present
|
||||
0x6409,Monument,Паметник,historic=monument,1235,visual_exact,Exact obelisk icon,present
|
||||
0x640a,Danger,Опасност,,2095,visual_exact,"Exact danger triangle, but specific hazard is unspecified",present
|
||||
0x640b,Chapel,Параклис,amenity=place_of_worship,1128,visual_exact,Exact small chapel icon,present
|
||||
0x640c,Mine Shaft,Мина,man_made=mine_shaft,1353,visual_exact,Exact crossed tools icon,present
|
||||
0x640d,Lift,Лифт,,137,visual_exact,Exact chairlift icon; unknown whether point is aerialway station or line,present
|
||||
0x640e,Bus Stop/Station,Спирка,highway=bus_stop,977,visual_exact,Exact bus stop icon; may be terminal rather than stop,present
|
||||
0x640f,Graveyard/Tombstone,"Гробище, оброк",,2766,visual_exact,Exact two-cross marker; ambiguous cemetery versus religious site,present
|
||||
0x6411,Tower,Кула,man_made=tower,875,visual_exact,Exact tower icon,present
|
||||
0x6412,Trailhead,Начало пътека,highway=trailhead,0,visual_exact,Exact walking-person trailhead icon; corrects former guidepost,icon_defined_not_seen_in_IMG
|
||||
0x6413,Tunnel,Тунел,,76,visual_exact,Exact tunnel portal icon; avoid tunnel=yes on standalone node,present
|
||||
0x6414,Drinking Water,Чешма,amenity=drinking_water,32922,visual_exact,Exact tap/fountain icon; source may include dry fountains,present
|
||||
0x6415,Camp Site,Място за бивакуване,tourism=camp_site,264,visual_exact,Exact blue tent icon; corrects shelter,present
|
||||
0x6416,Ruins,Руини,historic=ruins,2886,visual_exact,Exact ruin block icon,present
|
||||
0x6417,Well,Кладенец,man_made=water_well,8868,visual_exact,Exact turquoise well-circle icon; no automatic drinking-water claim,present
|
||||
0x641a,Church,Църква,amenity=place_of_worship,62,visual_exact,Exact yellow church icon,present
|
||||
0x641b,Church,Църква,amenity=place_of_worship,0,visual_exact,Exact yellow church icon,icon_defined_not_seen_in_IMG
|
||||
0x641c,Bus Stop/Station,Спирка,highway=bus_stop,3120,visual_exact,Exact blue bus station icon,present
|
||||
0x6500,Reservoir,Каптаж,,31214,visual_exact,"Exact solid blue square; legend means catchment/reservoir, not waterworks",present
|
||||
0x6501,Restaurant,Ресторант,amenity=restaurant,2412,visual_exact,Exact fork+knife icon; corrects name-based cafe inference,present
|
||||
0x6502,River Passage,Брод,,1864,visual_exact,Exact blue river crossing; need to verify whether it is ford=yes,present
|
||||
0x6503,Crossroad,Кръстопът,,760,visual_exact,Exact black crossroad icon; corrects guidepost assumption,present
|
||||
0x6505,Shop,Магазин,shop=yes,0,visual_exact,Exact shopfront icon,icon_defined_not_seen_in_IMG
|
||||
0x6506,Museum,Музей,tourism=museum,424,visual_exact,Exact museum icon,present
|
||||
0x650b,Winter Marking,Зимна маркировка,,8767,visual_exact,Exact winter red/yellow marker; corrects information=board,present
|
||||
0x650c,Dead End,Задънена улица,noexit=yes,0,visual_exact,Exact blue square T sign; point is dead-end indicator,icon_defined_not_seen_in_IMG
|
||||
0x6511,Spring,Извор,natural=spring,50308,visual_exact,Exact blue water spring drop; no automatic potable-water claim,present
|
||||
0x6600,Triangulation,Кота,,66206,visual_exact,Exact square survey icon; preserve any independently parsed numeric elevation,present
|
||||
0x6601,Natural Phenomenon,Природен феномен,,165,visual_exact,Exact natural-phenomenon hiking silhouette; subtype unknown,present
|
||||
0x6602,Viewpoint,Гледка,tourism=viewpoint,891,visual_exact,Exact black camera icon,present
|
||||
0x6603,Triangulation,Кота,man_made=survey_point,26366,visual_exact,Exact black square survey-point icon,present
|
||||
0x6608,Hotel,Хотел,tourism=hotel,2644,visual_exact,Exact hotel/bed icon; corrects viewpoint,present
|
||||
0x6609,Hut,Хижа,tourism=alpine_hut,372,visual_exact,Exact mountain hut icon,present
|
||||
0x660a,Refuge,Заслон,amenity=shelter;shelter_type=basic_hut,275,visual_exact,Exact refuge icon; shelter type provisional,present
|
||||
0x660b,Mark,Маркировка,,2612,visual_exact,Exact black circle mark icon; corrects information=board,present
|
||||
0x6610,Meadow,Поляна,,15,visual_exact,Exact green meadow/flag icon; point geometry not polygon,present
|
||||
0x6613,Waterfall,Водопад,waterway=waterfall,1746,visual_exact,Exact three blue streams icon,present
|
||||
0x6614,Rock,Скала,,15289,visual_exact,Exact black rock silhouette; many numerical labels require additional checking,present
|
||||
0x6615,Cave,Пещера,natural=cave_entrance,942,visual_exact,Exact yellow cave icon,present
|
||||
0x6617,Peak,Връх,natural=peak,112,visual_exact,Exact triangular mountain icon,present
|
||||
0x6618,Tree,Дърво,natural=tree,10176,visual_exact,Exact green pine icon,present
|
||||
0x6619,Prehistoric site,Праисторически обект,historic=archaeological_site,195,visual_exact,Exact yellow prehistoric icon,present
|
||||
0x661a,Antiquity site,Античен обект,historic=archaeological_site,384,visual_exact,Exact yellow antiquity icon,present
|
||||
0x661b,Medieval site,Средновековен обект,historic=archaeological_site,319,visual_exact,Exact yellow medieval icon,present
|
||||
|
@@ -1,118 +0,0 @@
|
||||
mapset,code,lat,lon,previous_name,new_name,strict_retained,note
|
||||
02235021,0x10100,43.4110165,28.3561635,,LFl W 5s 5M,yes,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1001f,42.5125623,27.2854257,,ика,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x10100,43.1701112,27.9448843,,LFl(3) 15s 26M Fog(n),yes,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x10100,43.1873202,27.9218388,,LFl W 10s 10M,yes,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x10100,43.1913543,27.9202938,,Iso G 4s 2M,yes,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x10101,43.1972551,27.3595619,,рска приказка,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x10107,43.2118893,27.3650122,,азсадника,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1010d,43.1999588,27.2827220,,а,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x10110,43.1816769,27.3898816,,Байрямходжа,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x10209,43.1984782,27.8729796,,Fl R,yes,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x10209,43.1995296,27.8640532,,Fl R,yes,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x10209,43.1999803,27.8736019,,Fl G (2+1) 10s,yes,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x10209,43.2022333,27.8879142,,Fl R,yes,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x10209,43.2039928,27.8854036,,Fl R,yes,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1020a,43.1873417,27.9283190,,Fl G 3s 4M,yes,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1020a,43.1929851,27.7361441,,Fl G,yes,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1020a,43.1951952,27.7179480,,Fl G,yes,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1020a,43.1970191,27.7040434,,Fl G,yes,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1020b,43.1872773,27.8926563,,Y Fl 5s 4M,yes,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1041d,43.5910678,27.7808833,ка,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1081f,42.7471161,27.8701687,дичката,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x10a1e,43.2076192,27.9695392, Дебелянов А:9,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1161e,43.5382390,27.9140496,а чешма тече,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1381c,43.2196784,27.7099657,аслон ЛРД Гроздьово(закл.),,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x13d1e,43.2068896,27.9138136,,я припек,yes,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1451f,43.2791591,27.8135848, (196),,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x14e1e,43.4941864,27.8600621,ес,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x15d1e,43.4057808,27.7575803,Геров',,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1681f,43.3688521,27.6615357,олявания,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x16a1f,43.7723422,27.7879000,ка,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1701f,43.8288403,27.9363227, - Варна“,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x17a1e,42.5776649,28.4707046,ero,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x18a1e,42.5776649,28.2399917,Iso G 4s 2M,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x18a1f,43.2052374,27.8961754,,ставена,yes,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x18b1f,43.8247848,27.6633596,,ва чешма,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x18f1f,43.7823415,27.9808688,нц Банк,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1901f,42.5457573,27.9449272,Павлов,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1951c,43.4540176,27.9401207,частно у-ще Юрий Гагарин,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1971f,43.5492253,27.9103589,мир,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x19e1d,43.2855964,27.7119613,ладост,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1a01f,42.5457573,28.1428528,ека,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1a41e,43.2681727,27.8133273,,ва чешма,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1a91d,43.3990860,27.9460645,янка,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1ad1c,42.6961327,27.8991795, Кирил и Методий,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1b31e,42.5776649,27.9816413,ибите,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1b71d,43.6789584,27.7872133,ия,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1b91e,42.5776649,28.1960464,улар,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1bb1f,43.5775924,27.6611495,дичката,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1bc1d,42.5383759,27.8599763,– Горна махала,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1c41f,42.9374027,27.9581237,,овачев чучур,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1cb1d,43.7515712,27.8164387,я припек,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1cb1f,43.5310936,27.8975701,ев,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1cd1f,43.6151433,27.9139209, Крали Марко,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1cf1f,43.2135201,27.7617216,Геров',,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1d51e,43.2054305,27.8993511,,вец,yes,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1d71f,43.2176614,27.6753974,пе (247),,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1db1d,43.3505058,27.8923774,и Кочовото,ва чешма,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1e11e,43.3231044,27.8128767, Крали Марко,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1e41f,42.5117254,27.9763198,формационен център,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1ea1f,42.5860977,27.9441977,t-атракционен к-с,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1f31f,42.5421524,27.9463005,пин,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1f61f,42.4895167,27.4341702,юпрю,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1f61f,42.4913406,28.6044717,осеняк,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1f81f,43.6141133,27.9245639,дония,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1fb1f,43.2299137,27.9362583,дов,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1fc0e,43.1847239,28.3298993,"а А:9,60,55",,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1fc11,43.1847024,27.3301649,ската чешма,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1fc13,43.1785226,27.5834513,"а А:9,60,55",,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1fd1c,43.1948948,27.3650336,,да,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1fd1e,43.2076836,27.3123980,,ставена,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1fd1f,43.1785440,27.3747110,ската чешма,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1fd1f,43.2176614,27.6763201,рево дере,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1fe04,42.4892592,27.7805829,ски,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1fe0d,43.1885004,27.5156236,ската чешма,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1ff16,43.1785440,27.3747110,ската чешма,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235032,0x1ff1f,43.6459565,27.9016256,,not for sale,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235033,0x11d1f,42.5101376,27.8002381,а,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235033,0x1fe1f,42.5162959,27.7108026,ена,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235044,0x13e1f,42.7236843,27.7475381,трап,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235044,0x1b31e,42.1718574,27.2740746,лото кладенче,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235044,0x1dd1c,42.7140284,27.7933073,,iner,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235055,0x10100,42.4783373,27.4493837,,LFl 4.5s W 4M,yes,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235055,0x10100,42.4815774,27.4833083,,LFl W 3s 10M Horn(n),yes,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235055,0x10209,42.4596262,27.4533534,,R,yes,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235055,0x10209,42.4733591,27.4699187,,Fl 3s,yes,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235055,0x10209,42.4790454,27.4806905,,Fl 3s,yes,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235055,0x1020a,42.4593043,27.4570227,,G,yes,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235055,0x1020a,42.4602699,27.4538684,,G,yes,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235055,0x1020a,42.4753761,27.4862909,,Fl 3s,yes,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235055,0x1020b,42.4769211,27.4610353,,Fl 4s W,yes,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235056,0x10100,42.4683380,27.5529599,,LFl8s 8/4M,yes,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235056,0x10204,42.5164247,27.6434898,,LFl(3) W 10s Horn,yes,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235056,0x10204,42.6573801,27.7476025,,Fl(3) W 10s,yes,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235056,0x1020a,42.4481034,27.5333905,,Fl 3s G,yes,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235056,0x1020a,42.4743032,27.5255370,,Fl 3s G 7.6M,yes,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235056,0x10d1f,43.0592179,27.7399421,есебър,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235056,0x1401f,42.0054746,27.9379106,тво на Пресвета Богородица,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235056,0x1511d,42.9270601,27.5779152,ра,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235056,0x1681c,42.6561785,27.8976774,,Тюлен,yes,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235056,0x1721f,41.8052316,27.2527027,кия път,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235056,0x1801f,42.2969770,27.6732945,,к,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235056,0x1801f,42.2969770,27.6735735,,к,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235056,0x1811f,42.2969770,27.6737022,,к,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235056,0x18b16,42.4416447,27.2098732,, Волов,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235056,0x1a31f,41.9548130,27.5373173,ва Парадайз Резорт,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235056,0x1a31f,41.9610357,28.0307364,sto,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235056,0x1c31c,43.1126475,27.6588106,айряк,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235056,0x1c71d,42.6243782,27.8401279,,оргиев,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235056,0x1e21f,41.9545984,27.8767347,ch Resort,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235056,0x1f51f,42.0065045,27.7718925,ака,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235056,0x1fe1e,43.0608487,27.5399780,Баливата поляна,,no,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235068,0x10100,42.2332907,27.7816129,,LFl W 4.5s 2M,yes,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235068,0x10100,42.2633958,27.7585888,,Iso W 6s 6M,yes,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235081,0x10100,41.8847537,28.0560136,,Fl(2) W 5s 20M,yes,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235081,0x1020b,41.8699050,28.0232477,,Fl(2) 6s,yes,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235093,0x10100,41.6336131,28.0994225,,Fl W 10s 12M,yes,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
02235094,0x10100,41.3474965,28.6828995,,Fl W 5s 15M,yes,"Corrected extended POI label byte offset (before, some strings accidentally decoded from wrong LBL address)"
|
||||
|
@@ -1,61 +0,0 @@
|
||||
code,raw_count,legend_en,legend_bg,old_default_tags,previous_override_mode,new_override_mode,new_override_tags,evidence,reason,example_lat,example_lon,example_name
|
||||
0x200,2,Capital City,Столица,,append,replace,garmin:legend=capital_city;place=city;capital=yes,exact TYP icon match + provided BGMountains legend,Exact concentric capital icon,41.0612941,28.8116670,Истанбул
|
||||
0x800,51,Large City,Град >75 000,,append,replace,garmin:legend=large_city;place=city,exact TYP icon match + provided BGMountains legend,Exact medium city circle icon,41.4337349,22.0119452,Кавадарци
|
||||
0x900,283,Town,Град <75 000,,append,replace,garmin:legend=town;place=town,exact TYP icon match + provided BGMountains legend,Exact small city circle icon,43.4656477,24.8692060,Славяново
|
||||
0x2c05,2481,School,Училище,,append,replace,garmin:legend=school;amenity=school,exact TYP icon match + provided BGMountains legend,Exact yellow school icon,42.6968622,23.3169794,91-ва НЕГ
|
||||
0x2c0b,1606,Church,Църква,amenity=place_of_worship,append,replace,garmin:legend=church;amenity=place_of_worship,exact TYP icon match + provided BGMountains legend,Exact yellow church icon,42.2740817,27.4773002,Свети Атанасий
|
||||
0x2e05,487,Pharmacy,Аптека,,append,replace,garmin:legend=pharmacy;amenity=pharmacy,exact TYP icon match + provided BGMountains legend,Exact yellow pharmacy cup icon,42.2891879,22.6976037,Аполон
|
||||
0x2e07,105,Clothes shop,Магазин за дрехи,,append,replace,garmin:legend=clothes_shop;shop=clothes,exact TYP icon match + provided BGMountains legend,Exact clothes-on-hanger icon,43.5691166,27.8283262,На Тъмно
|
||||
0x2f0a,4,Synagogue,Синагога,,append,replace,garmin:legend=synagogue;amenity=place_of_worship;religion=jewish,exact TYP icon match + provided BGMountains legend,Exact yellow star icon,41.5711713,23.7286234,Синагога
|
||||
0x2f0c,320,Mosque,Джамия,,append,replace,garmin:legend=mosque;amenity=place_of_worship;religion=muslim,exact TYP icon match + provided BGMountains legend,Exact crescent icon,41.7266321,24.6736193,Джамия
|
||||
0x2f0e,4,Car Wash,Автомивка,,append,replace,garmin:legend=car_wash;amenity=car_wash,exact TYP icon match + provided BGMountains legend,Exact blue/red carwash icon,42.2939301,22.7035904,Олимпия
|
||||
0x3008,37,Fire Station,Пожарна,,append,replace,garmin:legend=fire_station;amenity=fire_station,exact TYP icon match + provided BGMountains legend,Exact firefighter icon,42.6372099,24.3618178,Пожарна команда
|
||||
0x4700,101,Port,Пристанище,,append,replace,garmin:legend=port;industrial=port,exact TYP icon match + provided BGMountains legend,Exact anchor; functional port use not independently confirmed,42.0604706,27.9666424,Пристан разходки
|
||||
0x6400,465,Quarry,Кариера,,append,replace,garmin:legend=quarry;landuse=quarry,exact TYP icon match + provided BGMountains legend,Exact crossed mining tools icon; point vs area geometry still to assess,41.5047598,23.8884187,баластерна (Кам.)
|
||||
0x6401,1679,Bridge,Мост,,append,replace,garmin:legend=bridge;man_made=bridge,exact TYP icon match + provided BGMountains legend,Exact bridge-icon depiction; original route connectivity not established,41.2652493,25.2744985,Разрушен мост!
|
||||
0x6402,6186,Building,Сграда,,append,replace,garmin:legend=building;building=yes,exact TYP icon match + provided BGMountains legend,Exact yellow building icon; original building footprint not present,42.1432757,27.3156166,Бункер
|
||||
0x6403,1729,Graveyard/Tombstone,"Гробище, оброк",,append,replace,garmin:legend=graveyard_tombstone,exact TYP icon match + provided BGMountains legend,Exact grave cross; ambiguous between graveyard and religious votive feature,42.9402995,23.2433367,Св. Богородица
|
||||
0x6404,1507,Church,Църква,amenity=place_of_worship,append,replace,garmin:legend=church;amenity=place_of_worship,exact TYP icon match + provided BGMountains legend,Exact church icon,42.5159526,24.8802352,църква Св. Троица
|
||||
0x6405,260,Hunting Lodge,Ловна хижа,tourism=alpine_hut,append,replace,garmin:legend=hunting_lodge,exact TYP icon match + provided BGMountains legend,Exact hunting lodge icon; do NOT infer tourist/alpine hut,41.9273901,24.6181726,Ловен дом
|
||||
0x6406,854,Barrier/Gate,Бариера,,append,replace,garmin:legend=barrier_gate;barrier=gate,exact TYP icon match + provided BGMountains legend,Exact black/red barrier icon,42.9346991,24.3904638,Ловно стопанство
|
||||
0x6407,2861,Picnic Site,Пикник,tourism=picnic_site,append,replace,garmin:legend=picnic_site;tourism=picnic_site,exact TYP icon match + provided BGMountains legend,Exact picnic bench icon,42.0027494,27.7377534,Пейки
|
||||
0x6408,12,Mountain Rescue,ПСС,emergency=mountain_rescue,append,replace,garmin:legend=mountain_rescue;emergency=mountain_rescue,exact TYP icon match + provided BGMountains legend,Exact shield with red cross,42.7656770,25.5035806,ПСС
|
||||
0x6409,1235,Monument,Паметник,,append,replace,garmin:legend=monument;historic=monument,exact TYP icon match + provided BGMountains legend,Exact obelisk icon,41.5322685,23.4290528,Яне Сандански
|
||||
0x640a,2095,Danger,Опасност,,append,replace,garmin:legend=danger,exact TYP icon match + provided BGMountains legend,"Exact danger triangle, but specific hazard is unspecified",42.7237058,24.8196387,3-то въже
|
||||
0x640b,1128,Chapel,Параклис,amenity=place_of_worship,append,replace,garmin:legend=chapel;amenity=place_of_worship,exact TYP icon match + provided BGMountains legend,Exact small chapel icon,42.1218395,24.7316194,Св. Николай Чудотворец
|
||||
0x640c,1353,Mine Shaft,Мина,,append,replace,garmin:legend=mine_shaft;man_made=mine_shaft,exact TYP icon match + provided BGMountains legend,Exact crossed tools icon,41.4886451,24.9193740,lead
|
||||
0x640d,137,Lift,Лифт,aerialway=station,append,replace,garmin:legend=lift,exact TYP icon match + provided BGMountains legend,Exact chairlift icon; unknown whether point is aerialway station or line,41.6450930,24.6898842,Лифт Студенец 3 едноседалков (горна)
|
||||
0x640e,977,Bus Stop/Station,Спирка,,append,replace,garmin:legend=bus_stop_station;highway=bus_stop,exact TYP icon match + provided BGMountains legend,Exact bus stop icon; may be terminal rather than stop,42.6942873,23.3665466,Подуяне разпр.
|
||||
0x640f,2766,Graveyard/Tombstone,"Гробище, оброк",,append,replace,garmin:legend=graveyard_tombstone,exact TYP icon match + provided BGMountains legend,Exact two-cross marker; ambiguous cemetery versus religious site,41.4929795,24.6545863,гробище
|
||||
0x6411,875,Tower,Кула,man_made=tower,append,replace,garmin:legend=tower;man_made=tower,exact TYP icon match + provided BGMountains legend,Exact tower icon,41.6357160,24.3137312,Наблюдателница
|
||||
0x6413,76,Tunnel,Тунел,,append,replace,garmin:legend=tunnel,exact TYP icon match + provided BGMountains legend,Exact tunnel portal icon; avoid tunnel=yes on standalone node,42.6872063,23.3418703,Подлез
|
||||
0x6414,32922,Drinking Water,Чешма,amenity=drinking_water,append,replace,garmin:legend=drinking_water;amenity=drinking_water,exact TYP icon match + provided BGMountains legend,Exact tap/fountain icon; source may include dry fountains,41.5237284,24.6429133,(пресъхва)
|
||||
0x6415,264,Camp Site,Място за бивакуване,amenity=shelter,append,replace,garmin:legend=camp_site;tourism=camp_site,exact TYP icon match + provided BGMountains legend,Exact blue tent icon; corrects shelter,41.7062902,23.4892845,Бивак
|
||||
0x6416,2886,Ruins,Руини,,append,replace,garmin:legend=ruins;historic=ruins,exact TYP icon match + provided BGMountains legend,Exact ruin block icon,41.7404509,24.5439506,Овчарник
|
||||
0x6417,8868,Well,Кладенец,,append,replace,garmin:legend=well;man_made=water_well,exact TYP icon match + provided BGMountains legend,Exact turquoise well-circle icon; no automatic drinking-water claim,43.1815052,27.0594978,92
|
||||
0x641a,62,Church,Църква,amenity=place_of_worship,append,replace,garmin:legend=church;amenity=place_of_worship,exact TYP icon match + provided BGMountains legend,Exact yellow church icon,42.6823997,23.1001067,Дивотински ман. Св. Троица 805м
|
||||
0x641c,3120,Bus Stop/Station,Спирка,,append,replace,garmin:legend=bus_stop_station;highway=bus_stop,exact TYP icon match + provided BGMountains legend,Exact blue bus station icon,42.6686668,23.4124231,А:10
|
||||
0x6500,31214,Reservoir,Каптаж,man_made=water_works,append,replace,garmin:legend=reservoir,exact TYP icon match + provided BGMountains legend,"Exact solid blue square; legend means catchment/reservoir, not waterworks",42.0388198,24.2291665,шах.
|
||||
0x6501,2412,Restaurant,Ресторант,amenity=cafe,append,replace,garmin:legend=restaurant;amenity=restaurant,exact TYP icon match + provided BGMountains legend,Exact fork+knife icon; corrects name-based cafe inference,43.7800884,23.7217569,Механа Банята
|
||||
0x6502,1864,River Passage,Брод,,append,replace,garmin:legend=river_passage,exact TYP icon match + provided BGMountains legend,Exact blue river crossing; need to verify whether it is ford=yes,41.8396497,24.9647784,Брод
|
||||
0x6503,760,Crossroad,Кръстопът,tourism=information;information=guidepost,append,replace,garmin:legend=crossroad,exact TYP icon match + provided BGMountains legend,Exact black crossroad icon; corrects guidepost assumption,42.1621370,23.7036037,Рзкл х.Венетица
|
||||
0x6506,424,Museum,Музей,,append,replace,garmin:legend=museum;tourism=museum,exact TYP icon match + provided BGMountains legend,Exact museum icon,42.5559711,27.6403785,Худ. Галерия Дечко Стоев
|
||||
0x650b,8767,Winter Marking,Зимна маркировка,tourism=information;information=board,append,replace,garmin:legend=winter_marking,exact TYP icon match + provided BGMountains legend,Exact winter red/yellow marker; corrects information=board,42.7436614,24.7850704,47
|
||||
0x6511,50308,Spring,Извор,amenity=drinking_water,append,replace,garmin:legend=spring;natural=spring,exact TYP icon match + provided BGMountains legend,Exact blue water spring drop; no automatic potable-water claim,42.7327180,22.7021098,Балканджийски кладенец
|
||||
0x6600,66206,Triangulation,Кота,,append,append,garmin:legend=triangulation,exact TYP icon match + provided BGMountains legend,Exact square survey icon; preserve any independently parsed numeric elevation,41.6710138,25.2657866,341
|
||||
0x6601,165,Natural Phenomenon,Природен феномен,,append,replace,garmin:legend=natural_phenomenon,exact TYP icon match + provided BGMountains legend,Exact natural-phenomenon hiking silhouette; subtype unknown,42.0306444,23.9876390,Детски кът
|
||||
0x6602,891,Viewpoint,Гледка,tourism=viewpoint,append,replace,garmin:legend=viewpoint;tourism=viewpoint,exact TYP icon match + provided BGMountains legend,Exact black camera icon,41.5811491,24.7859502,Гледка
|
||||
0x6603,26366,Triangulation,Кота,,append,replace,garmin:legend=triangulation;man_made=survey_point,exact TYP icon match + provided BGMountains legend,Exact black square survey-point icon,42.5338054,23.5568118,912
|
||||
0x6608,2644,Hotel,Хотел,tourism=viewpoint,append,replace,garmin:legend=hotel;tourism=hotel,exact TYP icon match + provided BGMountains legend,Exact hotel/bed icon; corrects viewpoint,42.0398927,24.5189953,Вила Юстина-винарна
|
||||
0x6609,372,Hut,Хижа,tourism=alpine_hut,append,replace,garmin:legend=hut;tourism=alpine_hut,exact TYP icon match + provided BGMountains legend,Exact mountain hut icon,41.7704916,23.4612608,З.Караманица
|
||||
0x660a,275,Refuge,Заслон,tourism=wilderness_hut,append,replace,garmin:legend=refuge;amenity=shelter;shelter_type=basic_hut,exact TYP icon match + provided BGMountains legend,Exact refuge icon; shelter type provisional,42.6021266,23.3073664,Колиба
|
||||
0x660b,2612,Mark,Маркировка,tourism=information;information=board,append,replace,garmin:legend=mark,exact TYP icon match + provided BGMountains legend,Exact black circle mark icon; corrects information=board,42.2340202,22.5802732,табела за с.Вратца
|
||||
0x6610,15,Meadow,Поляна,,append,replace,garmin:legend=meadow,exact TYP icon match + provided BGMountains legend,Exact green meadow/flag icon; point geometry not polygon,41.8730593,23.3056498,Поляна с каптаж(2 бели камъка)
|
||||
0x6613,1746,Waterfall,Водопад,waterway=waterfall,append,replace,garmin:legend=waterfall;waterway=waterfall,exact TYP icon match + provided BGMountains legend,Exact three blue streams icon,42.7368593,24.6472049,Водопад Джафар дере
|
||||
0x6614,15289,Rock,Скала,garmin:marker=distance_or_index,append,replace,garmin:legend=rock,exact TYP icon match + provided BGMountains legend,Exact black rock silhouette; many numerical labels require additional checking,41.6530752,23.8123512,3
|
||||
0x6615,942,Cave,Пещера,,append,replace,garmin:legend=cave;natural=cave_entrance,exact TYP icon match + provided BGMountains legend,Exact yellow cave icon,43.0111957,23.7462187,Водната пещ
|
||||
0x6617,112,Peak,Връх,natural=peak,append,replace,garmin:legend=peak;natural=peak,exact TYP icon match + provided BGMountains legend,Exact triangular mountain icon,42.1792388,23.5853076,Мусала (2925)
|
||||
0x6618,10176,Tree,Дърво,,append,replace,garmin:legend=tree;natural=tree,exact TYP icon match + provided BGMountains legend,Exact green pine icon,43.2255578,26.1123776,Летен дъб
|
||||
0x6619,195,Prehistoric site,Праисторически обект,,append,replace,garmin:legend=prehistoric_site;historic=archaeological_site,exact TYP icon match + provided BGMountains legend,Exact yellow prehistoric icon,41.9197297,25.2343297,Тракийски скални ниши
|
||||
0x661a,384,Antiquity site,Античен обект,,append,replace,garmin:legend=antiquity_site;historic=archaeological_site,exact TYP icon match + provided BGMountains legend,Exact yellow antiquity icon,41.4625525,25.3149462,Тракийска крепост
|
||||
0x661b,319,Medieval site,Средновековен обект,,append,replace,garmin:legend=medieval_site;historic=archaeological_site,exact TYP icon match + provided BGMountains legend,Exact yellow medieval icon,43.2418871,23.1252766,Берковско кале
|
||||
|
@@ -1,404 +0,0 @@
|
||||
{
|
||||
"0x200": {
|
||||
"label_en": "Capital City",
|
||||
"label_bg": "Столица",
|
||||
"reviewed_tags": "place=city;capital=yes",
|
||||
"evidence": "Exact concentric capital icon"
|
||||
},
|
||||
"0x800": {
|
||||
"label_en": "Large City",
|
||||
"label_bg": "Град >75 000",
|
||||
"reviewed_tags": "place=city",
|
||||
"evidence": "Exact medium city circle icon"
|
||||
},
|
||||
"0x900": {
|
||||
"label_en": "Town",
|
||||
"label_bg": "Град <75 000",
|
||||
"reviewed_tags": "place=town",
|
||||
"evidence": "Exact small city circle icon"
|
||||
},
|
||||
"0x2c05": {
|
||||
"label_en": "School",
|
||||
"label_bg": "Училище",
|
||||
"reviewed_tags": "amenity=school",
|
||||
"evidence": "Exact yellow school icon"
|
||||
},
|
||||
"0x2c0b": {
|
||||
"label_en": "Church",
|
||||
"label_bg": "Църква",
|
||||
"reviewed_tags": "amenity=place_of_worship",
|
||||
"evidence": "Exact yellow church icon"
|
||||
},
|
||||
"0x2d04": {
|
||||
"label_en": "Casino",
|
||||
"label_bg": "Казино",
|
||||
"reviewed_tags": "amenity=casino",
|
||||
"evidence": "Exact dice/cards casino icon"
|
||||
},
|
||||
"0x2d08": {
|
||||
"label_en": "Ice Rink",
|
||||
"label_bg": "Пързалка",
|
||||
"reviewed_tags": "leisure=ice_rink",
|
||||
"evidence": "Exact yellow ice-skating icon"
|
||||
},
|
||||
"0x2e05": {
|
||||
"label_en": "Pharmacy",
|
||||
"label_bg": "Аптека",
|
||||
"reviewed_tags": "amenity=pharmacy",
|
||||
"evidence": "Exact yellow pharmacy cup icon"
|
||||
},
|
||||
"0x2e07": {
|
||||
"label_en": "Clothes shop",
|
||||
"label_bg": "Магазин за дрехи",
|
||||
"reviewed_tags": "shop=clothes",
|
||||
"evidence": "Exact clothes-on-hanger icon"
|
||||
},
|
||||
"0x2f0a": {
|
||||
"label_en": "Synagogue",
|
||||
"label_bg": "Синагога",
|
||||
"reviewed_tags": "amenity=place_of_worship;religion=jewish",
|
||||
"evidence": "Exact yellow star icon"
|
||||
},
|
||||
"0x2f0c": {
|
||||
"label_en": "Mosque",
|
||||
"label_bg": "Джамия",
|
||||
"reviewed_tags": "amenity=place_of_worship;religion=muslim",
|
||||
"evidence": "Exact crescent icon"
|
||||
},
|
||||
"0x2f0e": {
|
||||
"label_en": "Car Wash",
|
||||
"label_bg": "Автомивка",
|
||||
"reviewed_tags": "amenity=car_wash",
|
||||
"evidence": "Exact blue/red carwash icon"
|
||||
},
|
||||
"0x3004": {
|
||||
"label_en": "Courthouse",
|
||||
"label_bg": "Съд",
|
||||
"reviewed_tags": "amenity=courthouse",
|
||||
"evidence": "Exact grey courthouse icon"
|
||||
},
|
||||
"0x3008": {
|
||||
"label_en": "Fire Station",
|
||||
"label_bg": "Пожарна",
|
||||
"reviewed_tags": "amenity=fire_station",
|
||||
"evidence": "Exact firefighter icon"
|
||||
},
|
||||
"0x4700": {
|
||||
"label_en": "Port",
|
||||
"label_bg": "Пристанище",
|
||||
"reviewed_tags": "industrial=port",
|
||||
"evidence": "Exact anchor; functional port use not independently confirmed"
|
||||
},
|
||||
"0x6400": {
|
||||
"label_en": "Quarry",
|
||||
"label_bg": "Кариера",
|
||||
"reviewed_tags": "landuse=quarry",
|
||||
"evidence": "Exact crossed mining tools icon; point vs area geometry still to assess"
|
||||
},
|
||||
"0x6401": {
|
||||
"label_en": "Bridge",
|
||||
"label_bg": "Мост",
|
||||
"reviewed_tags": "man_made=bridge",
|
||||
"evidence": "Exact bridge-icon depiction; original route connectivity not established"
|
||||
},
|
||||
"0x6402": {
|
||||
"label_en": "Building",
|
||||
"label_bg": "Сграда",
|
||||
"reviewed_tags": "building=yes",
|
||||
"evidence": "Exact yellow building icon; original building footprint not present"
|
||||
},
|
||||
"0x6403": {
|
||||
"label_en": "Graveyard/Tombstone",
|
||||
"label_bg": "Гробище, оброк",
|
||||
"reviewed_tags": "",
|
||||
"evidence": "Exact grave cross; ambiguous between graveyard and religious votive feature"
|
||||
},
|
||||
"0x6404": {
|
||||
"label_en": "Church",
|
||||
"label_bg": "Църква",
|
||||
"reviewed_tags": "amenity=place_of_worship",
|
||||
"evidence": "Exact church icon"
|
||||
},
|
||||
"0x6405": {
|
||||
"label_en": "Hunting Lodge",
|
||||
"label_bg": "Ловна хижа",
|
||||
"reviewed_tags": "",
|
||||
"evidence": "Exact hunting lodge icon; do NOT infer tourist/alpine hut"
|
||||
},
|
||||
"0x6406": {
|
||||
"label_en": "Barrier/Gate",
|
||||
"label_bg": "Бариера",
|
||||
"reviewed_tags": "barrier=gate",
|
||||
"evidence": "Exact black/red barrier icon"
|
||||
},
|
||||
"0x6407": {
|
||||
"label_en": "Picnic Site",
|
||||
"label_bg": "Пикник",
|
||||
"reviewed_tags": "tourism=picnic_site",
|
||||
"evidence": "Exact picnic bench icon"
|
||||
},
|
||||
"0x6408": {
|
||||
"label_en": "Mountain Rescue",
|
||||
"label_bg": "ПСС",
|
||||
"reviewed_tags": "emergency=mountain_rescue",
|
||||
"evidence": "Exact shield with red cross"
|
||||
},
|
||||
"0x6409": {
|
||||
"label_en": "Monument",
|
||||
"label_bg": "Паметник",
|
||||
"reviewed_tags": "historic=monument",
|
||||
"evidence": "Exact obelisk icon"
|
||||
},
|
||||
"0x640a": {
|
||||
"label_en": "Danger",
|
||||
"label_bg": "Опасност",
|
||||
"reviewed_tags": "",
|
||||
"evidence": "Exact danger triangle, but specific hazard is unspecified"
|
||||
},
|
||||
"0x640b": {
|
||||
"label_en": "Chapel",
|
||||
"label_bg": "Параклис",
|
||||
"reviewed_tags": "amenity=place_of_worship",
|
||||
"evidence": "Exact small chapel icon"
|
||||
},
|
||||
"0x640c": {
|
||||
"label_en": "Mine Shaft",
|
||||
"label_bg": "Мина",
|
||||
"reviewed_tags": "man_made=mine_shaft",
|
||||
"evidence": "Exact crossed tools icon"
|
||||
},
|
||||
"0x640d": {
|
||||
"label_en": "Lift",
|
||||
"label_bg": "Лифт",
|
||||
"reviewed_tags": "",
|
||||
"evidence": "Exact chairlift icon; unknown whether point is aerialway station or line"
|
||||
},
|
||||
"0x640e": {
|
||||
"label_en": "Bus Stop/Station",
|
||||
"label_bg": "Спирка",
|
||||
"reviewed_tags": "highway=bus_stop",
|
||||
"evidence": "Exact bus stop icon; may be terminal rather than stop"
|
||||
},
|
||||
"0x640f": {
|
||||
"label_en": "Graveyard/Tombstone",
|
||||
"label_bg": "Гробище, оброк",
|
||||
"reviewed_tags": "",
|
||||
"evidence": "Exact two-cross marker; ambiguous cemetery versus religious site"
|
||||
},
|
||||
"0x6411": {
|
||||
"label_en": "Tower",
|
||||
"label_bg": "Кула",
|
||||
"reviewed_tags": "man_made=tower",
|
||||
"evidence": "Exact tower icon"
|
||||
},
|
||||
"0x6412": {
|
||||
"label_en": "Trailhead",
|
||||
"label_bg": "Начало пътека",
|
||||
"reviewed_tags": "highway=trailhead",
|
||||
"evidence": "Exact walking-person trailhead icon; corrects former guidepost"
|
||||
},
|
||||
"0x6413": {
|
||||
"label_en": "Tunnel",
|
||||
"label_bg": "Тунел",
|
||||
"reviewed_tags": "",
|
||||
"evidence": "Exact tunnel portal icon; avoid tunnel=yes on standalone node"
|
||||
},
|
||||
"0x6414": {
|
||||
"label_en": "Drinking Water",
|
||||
"label_bg": "Чешма",
|
||||
"reviewed_tags": "amenity=drinking_water",
|
||||
"evidence": "Exact tap/fountain icon; source may include dry fountains"
|
||||
},
|
||||
"0x6415": {
|
||||
"label_en": "Camp Site",
|
||||
"label_bg": "Място за бивакуване",
|
||||
"reviewed_tags": "tourism=camp_site",
|
||||
"evidence": "Exact blue tent icon; corrects shelter"
|
||||
},
|
||||
"0x6416": {
|
||||
"label_en": "Ruins",
|
||||
"label_bg": "Руини",
|
||||
"reviewed_tags": "historic=ruins",
|
||||
"evidence": "Exact ruin block icon"
|
||||
},
|
||||
"0x6417": {
|
||||
"label_en": "Well",
|
||||
"label_bg": "Кладенец",
|
||||
"reviewed_tags": "man_made=water_well",
|
||||
"evidence": "Exact turquoise well-circle icon; no automatic drinking-water claim"
|
||||
},
|
||||
"0x641a": {
|
||||
"label_en": "Church",
|
||||
"label_bg": "Църква",
|
||||
"reviewed_tags": "amenity=place_of_worship",
|
||||
"evidence": "Exact yellow church icon"
|
||||
},
|
||||
"0x641b": {
|
||||
"label_en": "Church",
|
||||
"label_bg": "Църква",
|
||||
"reviewed_tags": "amenity=place_of_worship",
|
||||
"evidence": "Exact yellow church icon"
|
||||
},
|
||||
"0x641c": {
|
||||
"label_en": "Bus Stop/Station",
|
||||
"label_bg": "Спирка",
|
||||
"reviewed_tags": "highway=bus_stop",
|
||||
"evidence": "Exact blue bus station icon"
|
||||
},
|
||||
"0x6500": {
|
||||
"label_en": "Reservoir",
|
||||
"label_bg": "Каптаж",
|
||||
"reviewed_tags": "",
|
||||
"evidence": "Exact solid blue square; legend means catchment/reservoir, not waterworks"
|
||||
},
|
||||
"0x6501": {
|
||||
"label_en": "Restaurant",
|
||||
"label_bg": "Ресторант",
|
||||
"reviewed_tags": "amenity=restaurant",
|
||||
"evidence": "Exact fork+knife icon; corrects name-based cafe inference"
|
||||
},
|
||||
"0x6502": {
|
||||
"label_en": "River Passage",
|
||||
"label_bg": "Брод",
|
||||
"reviewed_tags": "",
|
||||
"evidence": "Exact blue river crossing; need to verify whether it is ford=yes"
|
||||
},
|
||||
"0x6503": {
|
||||
"label_en": "Crossroad",
|
||||
"label_bg": "Кръстопът",
|
||||
"reviewed_tags": "",
|
||||
"evidence": "Exact black crossroad icon; corrects guidepost assumption"
|
||||
},
|
||||
"0x6505": {
|
||||
"label_en": "Shop",
|
||||
"label_bg": "Магазин",
|
||||
"reviewed_tags": "shop=yes",
|
||||
"evidence": "Exact shopfront icon"
|
||||
},
|
||||
"0x6506": {
|
||||
"label_en": "Museum",
|
||||
"label_bg": "Музей",
|
||||
"reviewed_tags": "tourism=museum",
|
||||
"evidence": "Exact museum icon"
|
||||
},
|
||||
"0x650b": {
|
||||
"label_en": "Winter Marking",
|
||||
"label_bg": "Зимна маркировка",
|
||||
"reviewed_tags": "",
|
||||
"evidence": "Exact winter red/yellow marker; corrects information=board"
|
||||
},
|
||||
"0x650c": {
|
||||
"label_en": "Dead End",
|
||||
"label_bg": "Задънена улица",
|
||||
"reviewed_tags": "noexit=yes",
|
||||
"evidence": "Exact blue square T sign; point is dead-end indicator"
|
||||
},
|
||||
"0x6511": {
|
||||
"label_en": "Spring",
|
||||
"label_bg": "Извор",
|
||||
"reviewed_tags": "natural=spring",
|
||||
"evidence": "Exact blue water spring drop; no automatic potable-water claim"
|
||||
},
|
||||
"0x6600": {
|
||||
"label_en": "Triangulation",
|
||||
"label_bg": "Кота",
|
||||
"reviewed_tags": "",
|
||||
"evidence": "Exact square survey icon; preserve any independently parsed numeric elevation"
|
||||
},
|
||||
"0x6601": {
|
||||
"label_en": "Natural Phenomenon",
|
||||
"label_bg": "Природен феномен",
|
||||
"reviewed_tags": "",
|
||||
"evidence": "Exact natural-phenomenon hiking silhouette; subtype unknown"
|
||||
},
|
||||
"0x6602": {
|
||||
"label_en": "Viewpoint",
|
||||
"label_bg": "Гледка",
|
||||
"reviewed_tags": "tourism=viewpoint",
|
||||
"evidence": "Exact black camera icon"
|
||||
},
|
||||
"0x6603": {
|
||||
"label_en": "Triangulation",
|
||||
"label_bg": "Кота",
|
||||
"reviewed_tags": "man_made=survey_point",
|
||||
"evidence": "Exact black square survey-point icon"
|
||||
},
|
||||
"0x6608": {
|
||||
"label_en": "Hotel",
|
||||
"label_bg": "Хотел",
|
||||
"reviewed_tags": "tourism=hotel",
|
||||
"evidence": "Exact hotel/bed icon; corrects viewpoint"
|
||||
},
|
||||
"0x6609": {
|
||||
"label_en": "Hut",
|
||||
"label_bg": "Хижа",
|
||||
"reviewed_tags": "tourism=alpine_hut",
|
||||
"evidence": "Exact mountain hut icon"
|
||||
},
|
||||
"0x660a": {
|
||||
"label_en": "Refuge",
|
||||
"label_bg": "Заслон",
|
||||
"reviewed_tags": "amenity=shelter;shelter_type=basic_hut",
|
||||
"evidence": "Exact refuge icon; shelter type provisional"
|
||||
},
|
||||
"0x660b": {
|
||||
"label_en": "Mark",
|
||||
"label_bg": "Маркировка",
|
||||
"reviewed_tags": "",
|
||||
"evidence": "Exact black circle mark icon; corrects information=board"
|
||||
},
|
||||
"0x6610": {
|
||||
"label_en": "Meadow",
|
||||
"label_bg": "Поляна",
|
||||
"reviewed_tags": "",
|
||||
"evidence": "Exact green meadow/flag icon; point geometry not polygon"
|
||||
},
|
||||
"0x6613": {
|
||||
"label_en": "Waterfall",
|
||||
"label_bg": "Водопад",
|
||||
"reviewed_tags": "waterway=waterfall",
|
||||
"evidence": "Exact three blue streams icon"
|
||||
},
|
||||
"0x6614": {
|
||||
"label_en": "Rock",
|
||||
"label_bg": "Скала",
|
||||
"reviewed_tags": "",
|
||||
"evidence": "Exact black rock silhouette; many numerical labels require additional checking"
|
||||
},
|
||||
"0x6615": {
|
||||
"label_en": "Cave",
|
||||
"label_bg": "Пещера",
|
||||
"reviewed_tags": "natural=cave_entrance",
|
||||
"evidence": "Exact yellow cave icon"
|
||||
},
|
||||
"0x6617": {
|
||||
"label_en": "Peak",
|
||||
"label_bg": "Връх",
|
||||
"reviewed_tags": "natural=peak",
|
||||
"evidence": "Exact triangular mountain icon"
|
||||
},
|
||||
"0x6618": {
|
||||
"label_en": "Tree",
|
||||
"label_bg": "Дърво",
|
||||
"reviewed_tags": "natural=tree",
|
||||
"evidence": "Exact green pine icon"
|
||||
},
|
||||
"0x6619": {
|
||||
"label_en": "Prehistoric site",
|
||||
"label_bg": "Праисторически обект",
|
||||
"reviewed_tags": "historic=archaeological_site",
|
||||
"evidence": "Exact yellow prehistoric icon"
|
||||
},
|
||||
"0x661a": {
|
||||
"label_en": "Antiquity site",
|
||||
"label_bg": "Античен обект",
|
||||
"reviewed_tags": "historic=archaeological_site",
|
||||
"evidence": "Exact yellow antiquity icon"
|
||||
},
|
||||
"0x661b": {
|
||||
"label_en": "Medieval site",
|
||||
"label_bg": "Средновековен обект",
|
||||
"reviewed_tags": "historic=archaeological_site",
|
||||
"evidence": "Exact yellow medieval icon"
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
Binary file not shown.
|
Before Width: | Height: | Size: 34 KiB |
Binary file not shown.
File diff suppressed because it is too large
Load Diff
@@ -1,12 +0,0 @@
|
||||
{
|
||||
"source_pois": 3986,
|
||||
"expected_after_drops": 3986,
|
||||
"declared_drops": 0,
|
||||
"osm_pois": 3986,
|
||||
"missing": 0,
|
||||
"extra": 0,
|
||||
"rule_tag_violations": {},
|
||||
"examples": [],
|
||||
"status": "PASS",
|
||||
"limitation": "Same IMG decoder is used for manifest and OSM: this validates export fidelity, not ground truth or OBF persistence."
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,12 +0,0 @@
|
||||
{
|
||||
"source_pois": 2424,
|
||||
"expected_after_drops": 2424,
|
||||
"declared_drops": 0,
|
||||
"osm_pois": 2424,
|
||||
"missing": 0,
|
||||
"extra": 0,
|
||||
"rule_tag_violations": {},
|
||||
"examples": [],
|
||||
"status": "PASS",
|
||||
"limitation": "Same IMG decoder is used for manifest and OSM: this validates export fidelity, not ground truth or OBF persistence."
|
||||
}
|
||||
Binary file not shown.
@@ -1,303 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
"""One-command BGMountains IMG -> reviewed OSM -> custom indexed OsmAnd OBF.
|
||||
|
||||
Only Python 3 stdlib needed for orchestration; CMake/C++/OsmAndMapCreator are external.
|
||||
"""
|
||||
from __future__ import annotations
|
||||
import argparse
|
||||
import csv
|
||||
import datetime as dt
|
||||
import hashlib
|
||||
import json
|
||||
import os
|
||||
from pathlib import Path
|
||||
import shutil
|
||||
import subprocess
|
||||
import sys
|
||||
import urllib.request
|
||||
import xml.etree.ElementTree as ET
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
UPSTREAM = {
|
||||
'poi': 'https://raw.githubusercontent.com/osmandapp/OsmAnd-resources/master/poi/poi_types.xml',
|
||||
'rendering': 'https://raw.githubusercontent.com/osmandapp/OsmAnd-resources/master/obf_creation/rendering_types.xml'
|
||||
}
|
||||
|
||||
def call(argv, cwd=None, log=None, env=None):
|
||||
argv = [str(s) for s in argv]
|
||||
print('+', ' '.join(shlex_quote(s) for s in argv), flush=True)
|
||||
if log:
|
||||
with Path(log).open('w', encoding='utf-8') as output:
|
||||
r = subprocess.run(argv, cwd=cwd, env=env, stdout=output, stderr=subprocess.STDOUT)
|
||||
if r.returncode:
|
||||
print('Command failed; last log lines:', file=sys.stderr)
|
||||
print('\n'.join(Path(log).read_text(errors='replace').splitlines()[-35:]), file=sys.stderr)
|
||||
raise SystemExit(r.returncode)
|
||||
else:
|
||||
subprocess.run(argv, cwd=cwd, env=env, check=True)
|
||||
|
||||
def shlex_quote(s):
|
||||
import shlex
|
||||
return shlex.quote(s)
|
||||
|
||||
def base_xml(provided, creator, key, cache, offline):
|
||||
if provided:
|
||||
p = Path(provided).expanduser().resolve()
|
||||
if not p.is_file(): raise SystemExit('Upstream XML not found: '+str(p))
|
||||
return p
|
||||
names = ['poi_types.xml'] if key == 'poi' else ['rendering_types.xml']
|
||||
if creator:
|
||||
for prefix in [creator, creator/'resources', creator/'config', creator/'poi', creator/'obf_creation']:
|
||||
for name in names:
|
||||
candidate = prefix/name
|
||||
if candidate.is_file(): return candidate.resolve()
|
||||
target = cache/names[0]
|
||||
if target.is_file(): return target
|
||||
if offline:
|
||||
raise SystemExit('Missing upstream '+names[0]+': pass --'+key+'-base FILE or allow download')
|
||||
target.parent.mkdir(parents=True,exist_ok=True)
|
||||
print('Fetching official OsmAnd '+names[0]+' (first run only) ...', flush=True)
|
||||
try:
|
||||
with urllib.request.urlopen(UPSTREAM[key], timeout=50) as u, target.open('wb') as out:
|
||||
shutil.copyfileobj(u,out)
|
||||
except Exception as ex:
|
||||
target.unlink(missing_ok=True)
|
||||
raise SystemExit('Cannot fetch official OsmAnd '+names[0]+': '+str(ex)+'\nProvide --'+key+'-base FILE manually.')
|
||||
return target
|
||||
|
||||
def catalog_rows(p):
|
||||
with Path(p).open('r',encoding='utf-8-sig',newline='') as f:
|
||||
rows=list(csv.DictReader(f))
|
||||
if not rows or not {'code','count','has_typ_icon'}.issubset(rows[0]):
|
||||
raise SystemExit('Invalid POI catalog (expected code,count,has_typ_icon): '+str(p))
|
||||
out=[]
|
||||
seen=set()
|
||||
for r in rows:
|
||||
code='0x'+format(int(r['code'],0),'x')
|
||||
if code in seen:raise SystemExit('Duplicate code in catalog: '+code)
|
||||
seen.add(code)
|
||||
out.append(dict(r,code=code,count=int(r['count'])))
|
||||
return sorted(out,key=lambda r:(-r['count'],int(r['code'],0)))
|
||||
|
||||
def write_xml(tree,path):
|
||||
ET.indent(tree,space=' ')
|
||||
tree.write(path,encoding='utf-8',xml_declaration=True)
|
||||
ET.parse(path)
|
||||
|
||||
def make_configs(poi_base,render_base,catalog,folder,threshold,frequent_zoom=15,rare_zoom=17):
|
||||
# Keep entire upstream definitions! Replacing with a standalone tiny XML is
|
||||
# precisely what used to make ordinary semantic POIs disappear.
|
||||
poi=ET.parse(poi_base); proot=poi.getroot()
|
||||
if proot.tag!='poi_types':raise SystemExit('Not an OsmAnd poi_types.xml: '+str(poi_base))
|
||||
if any(c.get('name')=='bgmountains_raw' for c in proot.findall('poi_category')):
|
||||
raise SystemExit('Input poi_types.xml already has a bgmountains_raw category')
|
||||
cat=ET.SubElement(proot,'poi_category',name='bgmountains_raw', default_tag='bgm_poi', no_edit='true')
|
||||
for r in catalog:
|
||||
code=r['code']
|
||||
ET.SubElement(cat,'poi_type',name='bgm_'+code.replace('0x',''),tag='bgm_poi',value='type_'+code,no_edit='true')
|
||||
pa=folder/'poi_types.bgmountains.xml'
|
||||
write_xml(poi,pa)
|
||||
|
||||
rendering=ET.parse(render_base); rroot=rendering.getroot()
|
||||
if rroot.tag != 'osmand_types':
|
||||
# OsmAnd resources use the tag 'rendering_types'; fail instead of dropping all built-in types.
|
||||
raise SystemExit('Unexpected OsmAnd rendering_types.xml root: '+rroot.tag)
|
||||
cats=[c for c in rroot.iter('category') if c.get('name')=='user_defined']
|
||||
target=cats[0] if cats else ET.SubElement(rroot,'category',name='user_defined')
|
||||
for r in catalog:
|
||||
code=r['code']
|
||||
ET.SubElement(target,'type',tag='bgm_poi',value='type_'+code,
|
||||
minzoom=str(frequent_zoom) if r['count']>=threshold else str(rare_zoom))
|
||||
rp=folder/'rendering_types.bgmountains.xml'
|
||||
write_xml(rendering,rp)
|
||||
summary={
|
||||
'catalog_types':len(catalog),
|
||||
'poi_count_in_catalog':sum(r.get('sample_count',r['count']) for r in catalog),
|
||||
'types_at_or_above_threshold':sum(r['count']>=threshold for r in catalog),
|
||||
'frequent_index_minzoom':frequent_zoom, 'rare_index_minzoom':rare_zoom,
|
||||
'items_at_or_above_threshold':sum(r.get('sample_count',r['count']) for r in catalog if r['count']>=threshold),
|
||||
'types_with_extracted_icon':sum(r['has_typ_icon']=='yes' for r in catalog),
|
||||
'poi_base_sha256':hashlib.sha256(Path(poi_base).read_bytes()).hexdigest(),
|
||||
'rendering_base_sha256':hashlib.sha256(Path(render_base).read_bytes()).hexdigest(),
|
||||
'note':'All Garmin hex POI types indexed; high-frequency raw types inserted into OBF map index from selected frequent zoom; low-frequency from selected rare zoom. Rendering exact Garmin icon PNGs requires installing compatible icons/style in OsmAnd, not merely compiling an OBF.'
|
||||
}
|
||||
(folder/'type-index-summary.json').write_text(json.dumps(summary,ensure_ascii=False,indent=2)+'\n',encoding='utf-8')
|
||||
return pa,rp,summary
|
||||
|
||||
def make_style(icon_csv, folder, catalog):
|
||||
"""Optional addon for otherwise unclassified types using preinstalled OsmAnd icons.
|
||||
|
||||
This cannot install Garmin bitmap icons and must be enabled in OsmAnd.
|
||||
"""
|
||||
known={r['code'] for r in catalog}
|
||||
with Path(icon_csv).open(encoding='utf-8-sig',newline='') as f:
|
||||
rows=list(csv.DictReader(f))
|
||||
visible=[]
|
||||
for r in rows:
|
||||
code='0x'+format(int(r['code'],0),'x')
|
||||
if code not in known:continue # bbox builds are smaller than national config
|
||||
if r['show_in_custom_style'].strip().lower() not in ('yes','true','1'):continue
|
||||
name=r['osmand_builtin_icon'].strip()
|
||||
if not name or not name.replace('_','').replace('-','').isalnum():
|
||||
raise SystemExit('Invalid OsmAnd icon in '+str(icon_csv)+' for '+code)
|
||||
zoom=int(r['minzoom'])
|
||||
if not 1<=zoom<=21:raise SystemExit('Invalid icon zoom for '+code)
|
||||
visible.append((code,name,zoom))
|
||||
root=ET.Element('renderingStyle',name='BGMountains custom POIs',depends='default',
|
||||
defaultColor='#fff8ee',version='1')
|
||||
order=ET.SubElement(root,'order')
|
||||
points=ET.SubElement(root,'point')
|
||||
for code,name,zoom in visible:
|
||||
ET.SubElement(order,'case',tag='bgm_poi',value='type_'+code,minzoom=str(zoom),
|
||||
point='true',objectType='1',order='128')
|
||||
ET.SubElement(points,'case',tag='bgm_poi',value='type_'+code,minzoom=str(zoom),
|
||||
icon=name,iconOrder='10',iconVisibleSize='12')
|
||||
path=folder/'BGMountains-custom.render.xml'
|
||||
write_xml(ET.ElementTree(root),path)
|
||||
return path,len(visible)
|
||||
|
||||
def obtain_creator(cache, offline=False):
|
||||
"""Opt-in download from official OsmAnd nightly build (large file)."""
|
||||
import zipfile
|
||||
link='https://download.osmand.net/latest-night-build/OsmAndMapCreator-main.zip'
|
||||
target=cache/'OsmAndMapCreator-main.zip'
|
||||
extracted=cache/'unpacked'
|
||||
found=list(extracted.rglob('utilities.sh')) if extracted.is_dir() else []
|
||||
if found:return found[0].parent
|
||||
if offline:raise SystemExit('Cannot download MapCreator with --offline; pass --creator')
|
||||
cache.mkdir(parents=True,exist_ok=True)
|
||||
if not target.is_file():
|
||||
print('Downloading official OsmAndMapCreator (~150 MB) ...',flush=True)
|
||||
try:
|
||||
with urllib.request.urlopen(link,timeout=180) as src,target.open('wb') as dest:
|
||||
shutil.copyfileobj(src,dest,length=2**20)
|
||||
except Exception as ex:
|
||||
target.unlink(missing_ok=True)
|
||||
raise SystemExit('Cannot download OsmAndMapCreator: '+str(ex)+'\nDownload manually: '+link)
|
||||
print('Extracting MapCreator...',flush=True)
|
||||
extracted.mkdir(parents=True,exist_ok=True)
|
||||
with zipfile.ZipFile(target) as z:
|
||||
for m in z.infolist():
|
||||
rel=Path(m.filename)
|
||||
if rel.is_absolute() or '..' in rel.parts:
|
||||
raise SystemExit('Unsafe file in MapCreator archive: '+m.filename)
|
||||
z.extract(m,extracted)
|
||||
found=list(extracted.rglob('utilities.sh'))
|
||||
if not found:raise SystemExit('MapCreator ZIP extracted but utilities.sh not found')
|
||||
for name in ('utilities.sh','inspector.sh'):
|
||||
for f in extracted.rglob(name):f.chmod(f.stat().st_mode|0o111)
|
||||
return found[0].parent
|
||||
|
||||
def resolve_creator(path):
|
||||
name = path or os.environ.get('OSMAND_MAPCREATOR')
|
||||
if not name:return None
|
||||
creator=Path(name).expanduser().resolve()
|
||||
if creator.is_file() and creator.name=='utilities.sh':creator=creator.parent
|
||||
if not (creator/'utilities.sh').is_file():
|
||||
raise SystemExit('Cannot find utilities.sh under '+str(creator))
|
||||
return creator
|
||||
|
||||
def main():
|
||||
p=argparse.ArgumentParser(description=__doc__,formatter_class=argparse.ArgumentDefaultsHelpFormatter)
|
||||
inp=p.add_mutually_exclusive_group(required=True)
|
||||
inp.add_argument('--img',help='Original Garmin IMG; converter is compiled and executed')
|
||||
inp.add_argument('--osm',help='Already converted OSM XML; must contain bgm_poi=type_0x... tags (v0.7+)')
|
||||
p.add_argument('--creator',help='OsmAndMapCreator directory containing utilities.sh (or OSMAND_MAPCREATOR env)')
|
||||
p.add_argument('--download-creator',action='store_true',help='Download official OsmAndMapCreator ZIP automatically (~150 MB) when no --creator is set')
|
||||
p.add_argument('--out',default='build/bgmountains-output',help='Output folder')
|
||||
p.add_argument('--jobs',type=int,default=1,help='C++ IMG reader threads (opt-in)')
|
||||
p.add_argument('--bbox',help='Optional W,S,E,N bounds for small-area test')
|
||||
p.add_argument('--threshold',type=int,default=100,help='Frequent-type occurrence threshold')
|
||||
p.add_argument('--frequent-zoom',type=int,default=15,help='Store frequent raw map icons at zoom N and above')
|
||||
p.add_argument('--rare-zoom',type=int,default=17,help='Store rare raw map icons at zoom N and above')
|
||||
p.add_argument('--icons-config',default=str(ROOT/'config/osmand-icons.csv'),help='OsmAnd built-in icon choices for custom addon style')
|
||||
p.add_argument('--poi-overrides',default=str(ROOT/'config/poi-overrides-all-types.csv'))
|
||||
p.add_argument('--poi-name-fixes',default=str(ROOT/'config/poi-name-fixes.csv'))
|
||||
p.add_argument('--poi-additions',default=str(ROOT/'config/poi-additions.csv'))
|
||||
p.add_argument('--poi-base',help='Official upstream poi_types.xml; if omitted use cache/download')
|
||||
p.add_argument('--rendering-base',help='Official upstream rendering_types.xml; if omitted use cache/download')
|
||||
p.add_argument('--offline',action='store_true',help='Never download upstream XML')
|
||||
p.add_argument('--prepare-only',action='store_true',help='Do not run OsmAndMapCreator, but generate OSM and XMLs')
|
||||
p.add_argument('--skip-qa',action='store_true',help='Skip OSM comparison for faster repeat runs')
|
||||
p.add_argument('--java-opts',default='-Xms512M -Xmx8192M',help='JAVA_OPTS for OsmAndMapCreator')
|
||||
p.add_argument('--skip-cpp-build',action='store_true')
|
||||
p.add_argument('--catalog',help='Preexisting POI catalog when supplying --osm (otherwise use packaged nationwide catalog)')
|
||||
p.add_argument('--frequency-catalog',default=str(ROOT/'data/BGMountains-unique-poi-types.csv'),help='Reference nationwide counts for map index zoom decisions even in --bbox builds')
|
||||
args=p.parse_args()
|
||||
if args.jobs<1 or args.jobs>64 or args.threshold<1 or not 1<=args.frequent_zoom<=21 or not 1<=args.rare_zoom<=21: p.error('--jobs 1..64; threshold >=1; zoom 1..21')
|
||||
dest=Path(args.out).expanduser().resolve();dest.mkdir(parents=True,exist_ok=True)
|
||||
creator=resolve_creator(args.creator)
|
||||
if not creator and args.download_creator and not args.prepare_only:
|
||||
creator=obtain_creator(ROOT/'build'/'mapcreator-download',args.offline)
|
||||
if not creator and not args.prepare_only:p.error('Supply --creator /path/to/OsmAndMapCreator (or OSMAND_MAPCREATOR env) or use --prepare-only')
|
||||
if args.img:
|
||||
if not Path(args.img).is_file():p.error('IMG file missing: '+args.img)
|
||||
binary=ROOT/'build'/'garmin2osm'
|
||||
if not args.skip_cpp_build or not binary.is_file():
|
||||
call(['cmake','-S',ROOT,'-B',ROOT/'build','-DCMAKE_BUILD_TYPE=Release'])
|
||||
call(['cmake','--build',ROOT/'build','--config','Release','-j','2'])
|
||||
osm=dest/'BGMountains.osm'
|
||||
cmd=[binary,'--input',Path(args.img).resolve(),'--output',osm,'--poi-overrides',Path(args.poi_overrides).resolve(),
|
||||
'--poi-name-fixes',Path(args.poi_name_fixes).resolve(),'--poi-additions',Path(args.poi_additions).resolve(),
|
||||
'--poi-manifest',dest/'source-pois.csv','--poi-types-out',dest/'poi-types.csv','--jobs',args.jobs]
|
||||
if args.bbox:cmd+=['--bbox',args.bbox]
|
||||
call(cmd,log=dest/'converter.log')
|
||||
catalog=dest/'poi-types.csv'
|
||||
if not args.skip_qa:
|
||||
call([sys.executable,ROOT/'tools/validate_pois.py','compare','--source',dest/'source-pois.csv','--osm',osm,
|
||||
'--rules',Path(args.poi_overrides).resolve(),'--report',dest/'validation.json','--mismatches',dest/'mismatches.csv'],
|
||||
log=dest/'validator.log')
|
||||
else:
|
||||
osm=Path(args.osm).expanduser().resolve()
|
||||
if not osm.is_file():p.error('OSM file missing: '+str(osm))
|
||||
catalog=Path(args.catalog).expanduser().resolve() if args.catalog else ROOT/'data'/'BGMountains-unique-poi-types.csv'
|
||||
rows=catalog_rows(catalog)
|
||||
nationwide={r['code']:r['count'] for r in catalog_rows(args.frequency_catalog)} if args.frequency_catalog else {}
|
||||
for row in rows:
|
||||
row['sample_count']=row['count']
|
||||
row['count']=nationwide.get(row['code'],row['count'])
|
||||
# A separately supplied legacy OSM might lack our new classifier.
|
||||
# For --img, the v0.7 converter above just generated it by construction.
|
||||
if args.osm:
|
||||
import gzip
|
||||
opener=gzip.open if osm.suffix=='.gz' else open
|
||||
with opener(osm,'rt',encoding='utf-8',errors='replace') as f:
|
||||
found=any('k="bgm_poi"' in line for line in f)
|
||||
if not found:
|
||||
raise SystemExit('Existing OSM lacks bgm_poi; re-extract with v0.7 C++ converter.')
|
||||
folder=dest/'osmand-config';folder.mkdir(exist_ok=True)
|
||||
poi_base=base_xml(args.poi_base,creator,'poi',dest/'upstream',args.offline)
|
||||
rendering_base=base_xml(args.rendering_base,creator,'rendering',dest/'upstream',args.offline)
|
||||
poi_cfg,render_cfg,summary=make_configs(poi_base,rendering_base,rows,folder,args.threshold,args.frequent_zoom,args.rare_zoom)
|
||||
style,nicons=make_style(args.icons_config,folder,rows)
|
||||
print('Indexed POI types:',summary['catalog_types'],'frequent:',summary['types_at_or_above_threshold'],'custom style icons:',nicons,flush=True)
|
||||
if args.prepare_only:
|
||||
print('PREPARED (no OBF generated). Files at:',dest)
|
||||
return 0
|
||||
before={str(i.resolve()) for i in dest.glob('*.obf')}
|
||||
# Save Java logs, and preserve OsmAndMapCreator temp data inside user-selected output dir.
|
||||
env=os.environ.copy();env['JAVA_OPTS']=args.java_opts
|
||||
program=creator/'utilities.sh'
|
||||
cmd=[str(program),'generate-obf-no-address',str(osm),
|
||||
'--poi-types='+str(poi_cfg),'--rendering-types='+str(render_cfg)]
|
||||
call(cmd,cwd=dest,log=dest/'mapcreator.log',env=env)
|
||||
after=[i for i in dest.glob('*.obf') if str(i.resolve()) not in before]
|
||||
if not after:
|
||||
# Creator sometimes writes next to the .osm source, even with cwd changed.
|
||||
alt=list(osm.parent.glob('*.obf'))
|
||||
after=[i for i in alt if i.is_file()]
|
||||
if not after:raise SystemExit('MapCreator returned success but no .obf was found; see '+str(dest/'mapcreator.log'))
|
||||
built=max(after,key=lambda p:p.stat().st_mtime)
|
||||
print('OBF created:',built,'bytes:',built.stat().st_size)
|
||||
if (creator/'inspector.sh').is_file():
|
||||
call([str(creator/'inspector.sh'),'-vpoi',str(built)],cwd=dest,log=dest/'obf-poi-index.txt',env=env)
|
||||
(dest/'build-manifest.json').write_text(json.dumps({
|
||||
'created_at_utc':dt.datetime.now(dt.timezone.utc).isoformat(),
|
||||
'obf':str(built),'obf_bytes':built.stat().st_size,
|
||||
'input_osm':str(osm),'poi_types':str(poi_cfg),'rendering_types':str(render_cfg),
|
||||
'custom_style':str(style), 'custom_style_icon_rules':nicons,
|
||||
'summary':summary
|
||||
},ensure_ascii=False,indent=2)+'\n',encoding='utf-8')
|
||||
return 0
|
||||
if __name__=='__main__':
|
||||
sys.exit(main())
|
||||
+16
-13
@@ -1,15 +1,18 @@
|
||||
#!/usr/bin/env bash
|
||||
# Compatibility shim. No manually supplied POI XML files are required anymore.
|
||||
# Preferred: python3 scripts/build_bgmountains.py --img gmapsupp.img --download-creator --out ./build/out
|
||||
set -euo pipefail
|
||||
if (( $# < 2 )); then
|
||||
echo "Usage: $0 CREATOR_DIR INPUT_v0.7.osm[.gz] [OUTPUT_DIR]" >&2
|
||||
echo "Recommended instead: python3 scripts/build_bgmountains.py --img gmapsupp.img --download-creator --out ./build/out" >&2
|
||||
exit 2
|
||||
fi
|
||||
creator="$1"; osm="$2"; out="${3:-$(dirname "$osm")/rebuilt-obf}"
|
||||
root="$(cd "$(dirname "$0")/.." && pwd)"
|
||||
source_dir="$(dirname "$osm")"
|
||||
args=(--osm "$osm" --creator "$creator" --out "$out")
|
||||
if [[ -f "$source_dir/poi-types.csv" ]]; then args+=(--catalog "$source_dir/poi-types.csv"); fi
|
||||
exec python3 "$root/scripts/build_bgmountains.py" "${args[@]}"
|
||||
# Usage: build_obf.sh /path/OsmAndMapCreator map.osm[.gz] [--poi-types full-poi_types.xml] [--rendering-types full-rendering_types.xml]
|
||||
if (( $# < 2 )); then echo "Usage: $0 CREATOR_DIR MAP.osm[.gz] [--poi-types FILE] [--rendering-types FILE]" >&2;exit 2;fi
|
||||
creator="$1"; input="$2";shift 2
|
||||
[[ -f "$creator/utilities.sh" && -f "$input" ]] || { echo 'Missing OsmAnd utilities.sh or map input' >&2;exit 1; }
|
||||
args=(generate-obf-no-address "$input")
|
||||
while (( $# > 0 )); do
|
||||
case "$1" in
|
||||
--poi-types|--rendering-types)
|
||||
(( $# >= 2 )) || { echo "Missing file after $1" >&2;exit 2; }
|
||||
[[ -f "$2" ]] || { echo "Config not found: $2" >&2;exit 2; }
|
||||
args+=("$1=$2");shift 2;;
|
||||
*) echo "Unknown option: $1" >&2;exit 2;;
|
||||
esac
|
||||
done
|
||||
export JAVA_OPTS="${JAVA_OPTS:--Xms256M -Xmx4096M}"
|
||||
"$creator/utilities.sh" "${args[@]}"
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
export JAVA_OPTS="-Xms256M -Xmx25G"; ./build_obf.sh ../compiling-obf/ ../BGMountains-legend-reviewed.osm
|
||||
+12
-134
@@ -17,9 +17,9 @@ std::string code(int t){char b[20];std::snprintf(b,sizeof(b),"0x%x",t);return b;
|
||||
std::string hexColor(U32 c){char b[16];std::snprintf(b,sizeof(b),"#%02x%02x%02x",(c>>24)&255,(c>>16)&255,(c>>8)&255);return b;}
|
||||
void tag(Tags&ts,std::string k,std::string v){if(!v.empty())ts.emplace_back(std::move(k),std::move(v));}
|
||||
std::string makeTags(const Tags&tags){std::string out;for(auto&[k,v]:tags)out+="<tag k=\""+xmlEscape(k)+"\" v=\""+xmlEscape(v)+"\"/>";return out;}
|
||||
struct Options{std::string input,output,temp,poiOverrides,poiTypesOut,poiManifest,iconsDir,poiAdditions,poiNameFixes;BBox bbox;bool clip=false,inspect=false,contours=false,allLevels=false,keepTemp=false;int limitMaps=0,jobs=1,examples=5;};
|
||||
struct Options{std::string input,output,temp,poiOverrides,poiTypesOut,poiManifest,iconsDir,poiAdditions;BBox bbox;bool clip=false,inspect=false,contours=false,allLevels=false,keepTemp=false;int limitMaps=0,jobs=1,examples=5;};
|
||||
Options parse(int argc,char**argv){Options o;for(int i=1;i<argc;i++){std::string a=argv[i];auto next=[&](){if(i+1>=argc)fail("Missing value for "+a);return std::string(argv[++i]);};
|
||||
if(a=="--help"||a=="-h"){std::cout<<"garmin2osm v0.6 --input MAP.img [--output map.osm] [--inspect] [--poi-overrides rules.csv] [--poi-name-fixes fixes.csv] [--poi-additions additions.csv] [--poi-types-out unique-poi-types.csv] [--poi-manifest source-pois.csv] [--poi-examples N] [--icons-dir path] [--jobs N] [--bbox W,S,E,N] [--contours] [--keep-temp]\n";std::exit(0);}else if(a=="--input")o.input=next();else if(a=="--output")o.output=next();else if(a=="--temp")o.temp=next();else if(a=="--inspect")o.inspect=true;else if(a=="--contours")o.contours=true;else if(a=="--all-levels")o.allLevels=true;else if(a=="--keep-temp")o.keepTemp=true;else if(a=="--limit-maps")o.limitMaps=std::stoi(next());else if(a=="--poi-overrides")o.poiOverrides=next();else if(a=="--poi-name-fixes")o.poiNameFixes=next();else if(a=="--poi-additions")o.poiAdditions=next();else if(a=="--poi-types-out")o.poiTypesOut=next();else if(a=="--poi-manifest")o.poiManifest=next();else if(a=="--icons-dir")o.iconsDir=next();else if(a=="--poi-examples")o.examples=std::stoi(next());else if(a=="--jobs")o.jobs=std::stoi(next());else if(a=="--bbox"){std::string s=next();std::replace(s.begin(),s.end(),',',' ');double w,ss,e,n;if(std::sscanf(s.c_str(),"%lf%lf%lf%lf",&w,&ss,&e,&n)!=4)fail("Bad bbox");o.bbox={w,ss,e,n};o.clip=true;}else fail("Unknown argument: "+a);}
|
||||
if(a=="--help"||a=="-h"){std::cout<<"garmin2osm v0.5 --input MAP.img [--output map.osm] [--inspect] [--poi-overrides rules.csv] [--poi-additions additions.csv] [--poi-types-out unique-poi-types.csv] [--poi-manifest source-pois.csv] [--poi-examples N] [--icons-dir path] [--jobs N] [--bbox W,S,E,N] [--contours] [--keep-temp]\n";std::exit(0);}else if(a=="--input")o.input=next();else if(a=="--output")o.output=next();else if(a=="--temp")o.temp=next();else if(a=="--inspect")o.inspect=true;else if(a=="--contours")o.contours=true;else if(a=="--all-levels")o.allLevels=true;else if(a=="--keep-temp")o.keepTemp=true;else if(a=="--limit-maps")o.limitMaps=std::stoi(next());else if(a=="--poi-overrides")o.poiOverrides=next();else if(a=="--poi-additions")o.poiAdditions=next();else if(a=="--poi-types-out")o.poiTypesOut=next();else if(a=="--poi-manifest")o.poiManifest=next();else if(a=="--icons-dir")o.iconsDir=next();else if(a=="--poi-examples")o.examples=std::stoi(next());else if(a=="--jobs")o.jobs=std::stoi(next());else if(a=="--bbox"){std::string s=next();std::replace(s.begin(),s.end(),',',' ');double w,ss,e,n;if(std::sscanf(s.c_str(),"%lf%lf%lf%lf",&w,&ss,&e,&n)!=4)fail("Bad bbox");o.bbox={w,ss,e,n};o.clip=true;}else fail("Unknown argument: "+a);}
|
||||
if(o.input.empty())fail("--input required");if(o.output.empty()&&!o.inspect&&o.poiTypesOut.empty()&&o.poiManifest.empty()&&o.iconsDir.empty())fail("--output, --inspect or an inventory output required");if(!o.poiAdditions.empty()&&o.output.empty())fail("--poi-additions requires --output");if(o.jobs<1||o.jobs>64)fail("--jobs must be 1..64");if(o.examples<1||o.examples>20)fail("--poi-examples must be 1..20");if(o.clip&&(!o.bbox.valid()||o.bbox.w< -180||o.bbox.e>180||o.bbox.s< -90||o.bbox.n>90))fail("Invalid bbox");return o;}
|
||||
|
||||
Tags lineTags(int t,bool ext,const std::string&name){Tags v;tag(v,"garmin:type",code(t));tag(v,"garmin:feature",ext?"extended_polyline":"polyline");tag(v,"name",name);
|
||||
@@ -95,93 +95,6 @@ Tags poiTags(int t,const std::string&name){Tags v;tag(v,"garmin:type",code(t));t
|
||||
}
|
||||
}
|
||||
// Unknown Garmin categories retain original code, not falsely assigned to an OSM POI class.
|
||||
|
||||
// BGMountains v0.6: the published legend is authoritative for types with an
|
||||
// extracted TYP bitmap match. Unknown codes remain unclassified, never guessed.
|
||||
static const std::unordered_map<int,std::pair<std::string,std::string>> legendVerified = {
|
||||
{0x200,{"capital_city","place=city;capital=yes"}},
|
||||
{0x800,{"large_city","place=city"}},
|
||||
{0x900,{"town","place=town"}},
|
||||
{0x2c05,{"school","amenity=school"}},
|
||||
{0x2c0b,{"church","amenity=place_of_worship"}},
|
||||
{0x2d04,{"casino","amenity=casino"}},
|
||||
{0x2d08,{"ice_rink","leisure=ice_rink"}},
|
||||
{0x2e05,{"pharmacy","amenity=pharmacy"}},
|
||||
{0x2e07,{"clothes_shop","shop=clothes"}},
|
||||
{0x2f0a,{"synagogue","amenity=place_of_worship;religion=jewish"}},
|
||||
{0x2f0c,{"mosque","amenity=place_of_worship;religion=muslim"}},
|
||||
{0x2f0e,{"car_wash","amenity=car_wash"}},
|
||||
{0x3004,{"courthouse","amenity=courthouse"}},
|
||||
{0x3008,{"fire_station","amenity=fire_station"}},
|
||||
{0x4700,{"port","industrial=port"}},
|
||||
{0x6400,{"quarry","landuse=quarry"}},
|
||||
{0x6401,{"bridge","man_made=bridge"}},
|
||||
{0x6402,{"building","building=yes"}},
|
||||
{0x6403,{"graveyard_tombstone",""}},
|
||||
{0x6404,{"church","amenity=place_of_worship"}},
|
||||
{0x6405,{"hunting_lodge",""}},
|
||||
{0x6406,{"barrier_gate","barrier=gate"}},
|
||||
{0x6407,{"picnic_site","tourism=picnic_site"}},
|
||||
{0x6408,{"mountain_rescue","emergency=mountain_rescue"}},
|
||||
{0x6409,{"monument","historic=monument"}},
|
||||
{0x640a,{"danger",""}},
|
||||
{0x640b,{"chapel","amenity=place_of_worship"}},
|
||||
{0x640c,{"mine_shaft","man_made=mine_shaft"}},
|
||||
{0x640d,{"lift",""}},
|
||||
{0x640e,{"bus_stop_station","highway=bus_stop"}},
|
||||
{0x640f,{"graveyard_tombstone",""}},
|
||||
{0x6411,{"tower","man_made=tower"}},
|
||||
{0x6412,{"trailhead","highway=trailhead"}},
|
||||
{0x6413,{"tunnel",""}},
|
||||
{0x6414,{"drinking_water","amenity=drinking_water"}},
|
||||
{0x6415,{"camp_site","tourism=camp_site"}},
|
||||
{0x6416,{"ruins","historic=ruins"}},
|
||||
{0x6417,{"well","man_made=water_well"}},
|
||||
{0x641a,{"church","amenity=place_of_worship"}},
|
||||
{0x641b,{"church","amenity=place_of_worship"}},
|
||||
{0x641c,{"bus_stop_station","highway=bus_stop"}},
|
||||
{0x6500,{"reservoir",""}},
|
||||
{0x6501,{"restaurant","amenity=restaurant"}},
|
||||
{0x6502,{"river_passage",""}},
|
||||
{0x6503,{"crossroad",""}},
|
||||
{0x6505,{"shop","shop=yes"}},
|
||||
{0x6506,{"museum","tourism=museum"}},
|
||||
{0x650b,{"winter_marking",""}},
|
||||
{0x650c,{"dead_end","noexit=yes"}},
|
||||
{0x6511,{"spring","natural=spring"}},
|
||||
{0x6600,{"triangulation",""}},
|
||||
{0x6601,{"natural_phenomenon",""}},
|
||||
{0x6602,{"viewpoint","tourism=viewpoint"}},
|
||||
{0x6603,{"triangulation","man_made=survey_point"}},
|
||||
{0x6608,{"hotel","tourism=hotel"}},
|
||||
{0x6609,{"hut","tourism=alpine_hut"}},
|
||||
{0x660a,{"refuge","amenity=shelter;shelter_type=basic_hut"}},
|
||||
{0x660b,{"mark",""}},
|
||||
{0x6610,{"meadow",""}},
|
||||
{0x6613,{"waterfall","waterway=waterfall"}},
|
||||
{0x6614,{"rock",""}},
|
||||
{0x6615,{"cave","natural=cave_entrance"}},
|
||||
{0x6617,{"peak","natural=peak"}},
|
||||
{0x6618,{"tree","natural=tree"}},
|
||||
{0x6619,{"prehistoric_site","historic=archaeological_site"}},
|
||||
{0x661a,{"antiquity_site","historic=archaeological_site"}},
|
||||
{0x661b,{"medieval_site","historic=archaeological_site"}},
|
||||
};
|
||||
const auto hit=legendVerified.find(t);
|
||||
if(hit!=legendVerified.end()){
|
||||
Tags corrected;
|
||||
for(const auto&kv:v){
|
||||
if(kv.first=="garmin:type"||kv.first=="garmin:feature"||kv.first=="name" ||
|
||||
(t==0x6600 && kv.first=="ele"))corrected.push_back(kv);
|
||||
}
|
||||
tag(corrected,"garmin:legend",hit->second.first);
|
||||
std::stringstream rules(hit->second.second);std::string item;
|
||||
while(std::getline(rules,item,';')){
|
||||
auto eq=item.find('=');if(eq!=std::string::npos&&eq>0)
|
||||
tag(corrected,item.substr(0,eq),item.substr(eq+1));
|
||||
}
|
||||
return corrected;
|
||||
}
|
||||
return v;
|
||||
}
|
||||
|
||||
@@ -211,45 +124,15 @@ void loadOverrides(const std::string&file){if(file.empty())return;std::ifstream
|
||||
overrides[rule.type].push_back(std::move(rule));}
|
||||
size_t nRules=0;for(auto&kv:overrides)nRules+=kv.second.size();std::cerr<<"Loaded "<<nRules<<" POI override rules from "<<file<<"\n";
|
||||
}
|
||||
// Coordinate-specific name fixes are deliberately opt-in and never inferred from
|
||||
// similar-looking strings. A wrong-coordinate phantom POI must NOT be renamed.
|
||||
using NameFixKey=std::tuple<std::string,int,int32_t,int32_t,std::string>;
|
||||
std::map<NameFixKey,std::string> nameFixes;
|
||||
void loadNameFixes(const std::string&file){if(file.empty())return;
|
||||
std::ifstream in(file);if(!in)fail("Cannot open name corrections file: "+file);
|
||||
std::string line;size_t n=0;while(std::getline(in,line)){
|
||||
++n;if(!line.empty()&&line.back()=='\r')line.pop_back();
|
||||
if(line.empty()||line[0]=='#')continue;
|
||||
auto col=csvParse(line);if(col.size()!=7)fail("Name fixes: expected 7 columns at line "+std::to_string(n));
|
||||
if(col[0]=="mapset")continue;
|
||||
int t=parseType(col[1]);double lat=std::stod(col[2]),lon=std::stod(col[3]);
|
||||
if(!std::isfinite(lat)||!std::isfinite(lon)||std::abs(lat)>90||std::abs(lon)>180)
|
||||
fail("Bad name-fix coordinates at line "+std::to_string(n));
|
||||
if(col[0].empty()||col[5].empty())fail("Name fix needs mapset and replacement at line "+std::to_string(n));
|
||||
NameFixKey key{col[0],t,int32_t(std::llround(lat*1e7)),int32_t(std::llround(lon*1e7)),col[4]};
|
||||
if(!nameFixes.emplace(key,col[5]).second)fail("Duplicate name-fix row at line "+std::to_string(n));
|
||||
}
|
||||
std::cerr<<"Loaded "<<nameFixes.size()<<" coordinate-specific POI name fixes\n";
|
||||
}
|
||||
std::string resolveNameFix(const std::string&map,int type,double lat,double lon,const std::string&old){
|
||||
auto it=nameFixes.find({map,type,int32_t(std::llround(lat*1e7)),int32_t(std::llround(lon*1e7)),old});
|
||||
return it==nameFixes.end()?old:it->second;
|
||||
}
|
||||
|
||||
std::optional<Tags> configuredPoi(int type,const std::string&name){
|
||||
Tags result=poiTags(type,name);
|
||||
auto hit=overrides.find(type);
|
||||
if(hit!=overrides.end())for(const auto&rule:hit->second){
|
||||
if(!rule.nameContains.empty()&&name.find(rule.nameContains)==std::string::npos)continue;
|
||||
auto hit=overrides.find(type);if(hit==overrides.end())return result;
|
||||
for(const auto&rule:hit->second){if(!rule.nameContains.empty()&&name.find(rule.nameContains)==std::string::npos)continue;
|
||||
if(rule.mode=="drop")return std::nullopt;
|
||||
if(rule.mode=="replace"||rule.mode=="keep_raw"){
|
||||
result.erase(std::remove_if(result.begin(),result.end(),[](const auto&kv){return kv.first!="garmin:type"&&kv.first!="garmin:feature"&&kv.first!="name";}),result.end());}
|
||||
for(const auto&[k,v]:rule.tags){result.erase(std::remove_if(result.begin(),result.end(),[&](const auto&kv){return kv.first==k;}),result.end());if(!v.empty())result.emplace_back(k,v);}
|
||||
}
|
||||
// BGM-specific stable classifier: register in custom OsmAnd POI and map indexes.
|
||||
// Never disguise unknown objects as a fake OSM tourism/amenity category.
|
||||
result.erase(std::remove_if(result.begin(),result.end(),[](const auto&kv){return kv.first=="bgm_poi";}),result.end());
|
||||
tag(result,"bgm_poi","type_"+code(type));
|
||||
return result;
|
||||
}
|
||||
struct Sample{std::string map,name;double lat=0,lon=0;};
|
||||
@@ -338,7 +221,7 @@ struct Store{
|
||||
}
|
||||
void commit(){sql("COMMIT");sql("BEGIN");}
|
||||
void output(const std::string&file){sql("COMMIT");std::ofstream out(file,std::ios::binary);if(!out)fail("Cannot write "+file);
|
||||
out<<"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<osm version=\"0.6\" generator=\"garmin2osm-cpp-0.6\" upload=\"never\">\n";
|
||||
out<<"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<osm version=\"0.6\" generator=\"garmin2osm-cpp-0.4\" upload=\"never\">\n";
|
||||
sqlite3_stmt*st=nullptr;
|
||||
if(sqlite3_prepare_v2(db,"SELECT id,lat,lon,tags FROM nodes ORDER BY id",-1,&st,nullptr)!=SQLITE_OK)fail(sqlite3_errmsg(db));
|
||||
while(sqlite3_step(st)==SQLITE_ROW){auto id=sqlite3_column_int64(st,0);double lat=sqlite3_column_int(st,1)/10000000.,lon=sqlite3_column_int(st,2)/10000000.;const char*tags=(const char*)sqlite3_column_text(st,3);
|
||||
@@ -357,11 +240,10 @@ struct Store{
|
||||
}
|
||||
};
|
||||
|
||||
struct Stats{std::map<std::pair<int,int>,uint64_t> byType;uint64_t lines=0,areas=0,points=0,skipped=0,extendedOutsideBounds=0;std::map<int,PoiTypeInfo> poiTypes;};
|
||||
struct Stats{std::map<std::pair<int,int>,uint64_t> byType;uint64_t lines=0,areas=0,points=0,skipped=0;std::map<int,PoiTypeInfo> poiTypes;};
|
||||
void processMap(const Map&m,Store*db,Stats&stats,const Options&o,std::ostream*poiManifest=nullptr){
|
||||
const auto&r=m.sections.at("RGN");
|
||||
auto recordPoi=[&](int typ,double lon,double lat,const std::string&rawName,bool extended){
|
||||
const std::string name=resolveNameFix(m.name,typ,lat,lon,rawName);
|
||||
auto recordPoi=[&](int typ,double lon,double lat,const std::string&name,bool extended){
|
||||
stats.byType[{3,typ}]++;stats.points++;
|
||||
auto&info=stats.poiTypes[typ];info.count++;if(!name.empty())info.named++;
|
||||
addSample(info,{m.name,name,lat,lon},o.examples);
|
||||
@@ -428,12 +310,8 @@ void processMap(const Map&m,Store*db,Stats&stats,const Options&o,std::ostream*po
|
||||
else for(size_t at=0;at+6<=ext.size();){const U8*p=ext.data()+at;int sub=p[1];size_t len=6+bool(sub&0x80)+3*bool(sub&0x20);if(at+len>ext.size())break;
|
||||
int typ=0x10000+(int(p[0])<<8)+(sub&31);
|
||||
double lon=geo(s.cx+s16(p+2)*(1<<s.shift)),lat=geo(s.cy+s16(p+4)*(1<<s.shift));
|
||||
// Avoid malformed extended records that escape their actual TRE subdivision.
|
||||
// A small ~5-metre tolerance accommodates quantization at Garmin zoom levels.
|
||||
if(lon < s.bounds.w-0.00005 || lon > s.bounds.e+0.00005 ||
|
||||
lat < s.bounds.s-0.00005 || lat > s.bounds.n+0.00005){stats.extendedOutsideBounds++;at+=len;continue;}
|
||||
if(!o.clip || (lon>=o.bbox.w&&lon<=o.bbox.e&&lat>=o.bbox.s&&lat<=o.bbox.n)){
|
||||
std::string name; if(sub&0x20){U32 inf=u24(p+6);name=(inf&0x400000)?m.poiLabel(inf&0x3fffff):m.label(inf&0x3fffff);}
|
||||
std::string name; if(sub&0x20){U32 inf=u24(p+len-3);name=(inf&0x400000)?m.poiLabel(inf&0x3fffff):m.label(inf&0x3fffff);}
|
||||
recordPoi(typ,lon,lat,name,true);}
|
||||
at+=len;}
|
||||
}}
|
||||
@@ -446,7 +324,7 @@ void processMap(const Map&m,Store*db,Stats&stats,const Options&o,std::ostream*po
|
||||
// nodes before all OSM ways. Node IDs are offset by 10^10 per worker, including refs.
|
||||
void outputStages(const std::string&outFile,const std::vector<std::string>&paths){
|
||||
std::ofstream out(outFile,std::ios::binary);if(!out)fail("Cannot open "+outFile);
|
||||
out<<"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<osm version=\"0.6\" generator=\"garmin2osm-cpp-0.6\" upload=\"never\">\n";
|
||||
out<<"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<osm version=\"0.6\" generator=\"garmin2osm-cpp-0.5\" upload=\"never\">\n";
|
||||
auto walk=[&](int pass){for(size_t k=0;k<paths.size();k++){
|
||||
sqlite3*db=nullptr;if(sqlite3_open_v2(paths[k].c_str(),&db,SQLITE_OPEN_READONLY,nullptr)!=SQLITE_OK)fail("Cannot read parallel stage");
|
||||
const int64_t delta=int64_t(k)*10000000000LL;
|
||||
@@ -496,7 +374,7 @@ void injectManualPois(const std::string&file,const std::string&dbPath){
|
||||
}
|
||||
|
||||
int run(int argc,char**argv){
|
||||
auto o=parse(argc,argv);loadOverrides(o.poiOverrides);loadNameFixes(o.poiNameFixes);MapSet set(o.input);
|
||||
auto o=parse(argc,argv);loadOverrides(o.poiOverrides);MapSet set(o.input);
|
||||
for(const auto&[n,parts]:set.parts){auto it=parts.find("TYP");if(it!=parts.end()){gStyles.load(it->second);break;}}
|
||||
std::cerr<<"Maps="<<set.maps.size()<<" TYP icons="<<gStyles.pointStyles<<" jobs="<<o.jobs<<"\n";
|
||||
saveIcons(o.iconsDir);
|
||||
@@ -518,7 +396,7 @@ int run(int argc,char**argv){
|
||||
}catch(...){std::lock_guard<std::mutex>guard(errorLock);if(!error)error=std::current_exception();}};
|
||||
if(jobs==1)worker(0);else {std::vector<std::thread>threads;for(int k=0;k<jobs;k++)threads.emplace_back(worker,k);for(auto&t:threads)t.join();}
|
||||
if(error)std::rethrow_exception(error);
|
||||
Stats total;for(const auto&st:stats){total.lines+=st.lines;total.areas+=st.areas;total.points+=st.points;total.skipped+=st.skipped;total.extendedOutsideBounds+=st.extendedOutsideBounds;
|
||||
Stats total;for(const auto&st:stats){total.lines+=st.lines;total.areas+=st.areas;total.points+=st.points;total.skipped+=st.skipped;
|
||||
for(const auto&[k,v]:st.byType)total.byType[k]+=v;
|
||||
for(const auto&[k,v]:st.poiTypes){auto&dest=total.poiTypes[k];dest.count+=v.count;dest.named+=v.named;
|
||||
for(const auto&ex:v.examples)addSample(dest,ex,o.examples);}}
|
||||
@@ -528,7 +406,7 @@ int run(int argc,char**argv){
|
||||
out<<"mapset,kind,code,lat,lon,name\n";
|
||||
for(const auto&p:manifestPaths){std::ifstream in(p);if(in.peek()!=std::char_traits<char>::eof())out<<in.rdbuf();in.close();fs::remove(p);}
|
||||
}
|
||||
std::cerr<<"Finished "<<selected.size()<<" maps; lines="<<total.lines<<" areas="<<total.areas<<" rawPOIs="<<total.points<<" uniquePOItypes="<<total.poiTypes.size()<<" parseStops="<<total.skipped<<" extendedOutsideBounds="<<total.extendedOutsideBounds<<"\n";
|
||||
std::cerr<<"Finished "<<selected.size()<<" maps; lines="<<total.lines<<" areas="<<total.areas<<" rawPOIs="<<total.points<<" uniquePOItypes="<<total.poiTypes.size()<<" parseStops="<<total.skipped<<"\n";
|
||||
if(exporting){injectManualPois(o.poiAdditions,dbPaths[0]);outputStages(o.output,dbPaths);if(!o.keepTemp)for(auto&p:dbPaths)fs::remove(p);std::cerr<<"Wrote "<<o.output<<"\n";}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1,44 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
from pathlib import Path
|
||||
import csv,json,unittest
|
||||
ROOT=Path(__file__).resolve().parents[1]
|
||||
def load(file,comments=False):
|
||||
with file.open(encoding='utf-8-sig',newline='') as f:
|
||||
if comments: content=(line for line in f if not line.startswith('#'))
|
||||
else:content=f
|
||||
return list(csv.DictReader(content))
|
||||
class TestBGMLegend(unittest.TestCase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
cls.rules={r['code']:r for r in load(ROOT/'config/poi-overrides-legend-reviewed.csv',True)}
|
||||
cls.strict={r['code']:r for r in load(ROOT/'data/BGMountains-unique-poi-types-STRICT-reviewed.csv')}
|
||||
cls.legacy={r['code']:r for r in load(ROOT/'data/BGMountains-unique-poi-types-reviewed.csv')}
|
||||
cls.corrections=load(ROOT/'data/legend-corrections-log.csv')
|
||||
cls.names=load(ROOT/'data/extended-label-decoder-changes.csv')
|
||||
def test_catalog_counts(self):
|
||||
self.assertEqual(len(self.rules),1871)
|
||||
self.assertEqual(len(self.legacy),1871)
|
||||
self.assertEqual(len(self.strict),263)
|
||||
self.assertEqual(sum(int(x['count']) for x in self.strict.values()),410563)
|
||||
self.assertEqual(sum(int(x['outside_subdivision_count']) for x in self.legacy.values()),5602)
|
||||
self.assertEqual(int(self.strict['0x6608']['count']),2644)
|
||||
self.assertNotIn('0x10d1f',self.strict)
|
||||
def test_legend_exact_icons(self):
|
||||
self.assertEqual(len(self.corrections),60)
|
||||
self.assertEqual(len(json.loads((ROOT/"data/legend-mappings.json").read_text(encoding="utf-8"))),67)
|
||||
self.assertEqual(len(self.names),117)
|
||||
for c in self.corrections:
|
||||
rule=self.rules[c['code']]
|
||||
self.assertTrue(rule['tags'].startswith('garmin:legend='))
|
||||
self.assertEqual(rule['tags'],c['new_override_tags'])
|
||||
self.assertEqual(self.strict[c['code']]['review_status'],'icon_legend_verified')
|
||||
self.assertIn('tourism=hotel',self.rules['0x6608']['tags'])
|
||||
self.assertIn('natural=spring',self.rules['0x6511']['tags'])
|
||||
self.assertNotIn('information=guidepost',self.rules['0x6503']['tags'])
|
||||
self.assertIn('tourism=camp_site',self.rules['0x6415']['tags'])
|
||||
def test_false_nesebar_handled_correctly(self):
|
||||
one=self.legacy['0x10d1f']
|
||||
self.assertEqual(one['example1_name'],'есебър')
|
||||
self.assertEqual(one['strict_count'],'0')
|
||||
self.assertTrue(any(r['code']=='0x10d1f' and r['new_name']=='' for r in self.names))
|
||||
if __name__=='__main__':unittest.main()
|
||||
@@ -1,35 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Offline contract tests: upstream XML augmentation and frequent/rare type retention."""
|
||||
import importlib.util
|
||||
from pathlib import Path
|
||||
import tempfile
|
||||
import unittest
|
||||
import xml.etree.ElementTree as ET
|
||||
|
||||
S=Path(__file__).resolve().parents[1]/'scripts'/'build_bgmountains.py'
|
||||
spec=importlib.util.spec_from_file_location('build_bgmountains',S)
|
||||
mod=importlib.util.module_from_spec(spec);spec.loader.exec_module(mod)
|
||||
|
||||
class XmlPipelineTests(unittest.TestCase):
|
||||
def test_full_default_preserved_and_all_codes_indexed(self):
|
||||
with tempfile.TemporaryDirectory() as td:
|
||||
td=Path(td)
|
||||
pb=td/'upstream-poi.xml';rb=td/'upstream-render.xml'
|
||||
pb.write_text('<poi_types><poi_category name="food"><poi_type name="restaurant" tag="amenity" value="restaurant"/></poi_category></poi_types>')
|
||||
rb.write_text('<osmand_types><category name="roads"><type tag="highway" value="path" minzoom="11"/></category><category name="user_defined"/></osmand_types>')
|
||||
cc=[dict(code='0x6414',count=32922,has_typ_icon='yes'),dict(code='0x123',count=1,has_typ_icon='no')]
|
||||
a,b,s=mod.make_configs(pb,rb,cc,td,100)
|
||||
p=ET.parse(a).getroot();r=ET.parse(b).getroot()
|
||||
self.assertIsNotNone(p.find(".//poi_type[@name='restaurant']"))
|
||||
self.assertEqual(len(p.findall(".//poi_category[@name='bgmountains_raw']/poi_type")),2)
|
||||
self.assertIsNotNone(r.find(".//type[@tag='highway']"))
|
||||
self.assertEqual(r.find(".//type[@value='type_0x6414']").get('minzoom'),'15')
|
||||
self.assertEqual(r.find(".//type[@value='type_0x123']").get('minzoom'),'17')
|
||||
self.assertEqual(s['types_at_or_above_threshold'],1)
|
||||
def test_real_catalog(self):
|
||||
d=mod.catalog_rows(S.parents[1]/'data'/'BGMountains-unique-poi-types.csv')
|
||||
self.assertEqual(len(d),263)
|
||||
self.assertEqual(sum(x['count'] for x in d),410563)
|
||||
self.assertEqual(sum(x['count']>=100 for x in d),87)
|
||||
|
||||
if __name__=='__main__':unittest.main()
|
||||
Reference in New Issue
Block a user