mirror of
https://github.com/osm-search/Nominatim.git
synced 2026-02-16 15:47:58 +00:00
Compare commits
75 Commits
b7d77b9b43
...
v5.2.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9a13b62fb9 | ||
|
|
3ecda751c4 | ||
|
|
5d4c29b84b | ||
|
|
f1fbc04f33 | ||
|
|
353c985b9f | ||
|
|
2dda9079f0 | ||
|
|
4c91a0bc8d | ||
|
|
31c8ec6db0 | ||
|
|
e2330ff4c1 | ||
|
|
589825d37e | ||
|
|
a93113bc44 | ||
|
|
b042eca382 | ||
|
|
d202a8f7d8 | ||
|
|
af6386bd68 | ||
|
|
862bfdf6fb | ||
|
|
28029edc8b | ||
|
|
d6e9196177 | ||
|
|
e0a750e089 | ||
|
|
93b2a0f194 | ||
|
|
aa3fce6852 | ||
|
|
535ffc1e3f | ||
|
|
77ed4635f2 | ||
|
|
7715a9d500 | ||
|
|
58d570ca8a | ||
|
|
5a8aa6cce4 | ||
|
|
72592da0cc | ||
|
|
193d6c4173 | ||
|
|
4fd881bcb2 | ||
|
|
54620f9566 | ||
|
|
42b687f545 | ||
|
|
43ffceff27 | ||
|
|
2fb03cd103 | ||
|
|
8d3d24a1e4 | ||
|
|
8efdab1d6f | ||
|
|
1d1d80e1e3 | ||
|
|
670cf98f93 | ||
|
|
433c40cd68 | ||
|
|
a049569020 | ||
|
|
bf49f6a46f | ||
|
|
45a44f1411 | ||
|
|
5a2bfd7a19 | ||
|
|
fd12d2e9f3 | ||
|
|
3d0867ff16 | ||
|
|
177b16b89b | ||
|
|
0b7bde2500 | ||
|
|
7ac3591433 | ||
|
|
07c2907064 | ||
|
|
355cbcc7b8 | ||
|
|
8339c2b928 | ||
|
|
341c09ee95 | ||
|
|
b0b909be93 | ||
|
|
bf604e36ee | ||
|
|
3a50f749dd | ||
|
|
563255202d | ||
|
|
94d22bbdac | ||
|
|
32d26f12c4 | ||
|
|
0f324c8cb2 | ||
|
|
1e3b56d215 | ||
|
|
e855552e01 | ||
|
|
79a1907c49 | ||
|
|
91e345f77f | ||
|
|
d0ad65f696 | ||
|
|
e916d27b7c | ||
|
|
823ad5d279 | ||
|
|
048d571e46 | ||
|
|
f5e4b74c38 | ||
|
|
c2a311e69c | ||
|
|
5968f7d646 | ||
|
|
4cdd2526b6 | ||
|
|
4ff7696ed3 | ||
|
|
247afe1f56 | ||
|
|
6f74141fa4 | ||
|
|
75ccf97de3 | ||
|
|
196de9e974 | ||
|
|
6b627df4fb |
4
.github/workflows/ci-tests.yml
vendored
4
.github/workflows/ci-tests.yml
vendored
@@ -47,7 +47,7 @@ jobs:
|
||||
python: '3.9'
|
||||
- flavour: ubuntu-24
|
||||
ubuntu: 24
|
||||
postgresql: 17
|
||||
postgresql: 18
|
||||
lua: '5.3'
|
||||
dependencies: apt
|
||||
python: 'builtin'
|
||||
@@ -326,7 +326,7 @@ jobs:
|
||||
|
||||
- uses: ./Nominatim/.github/actions/setup-postgresql
|
||||
with:
|
||||
postgresql-version: 17
|
||||
postgresql-version: 18
|
||||
|
||||
- name: Install Python dependencies
|
||||
run: |
|
||||
|
||||
36
ChangeLog
36
ChangeLog
@@ -1,3 +1,39 @@
|
||||
5.2.0
|
||||
* increase minimum required Python to 3.9
|
||||
* index and output entrances of buildings and areas (thanks @emlove)
|
||||
* name tags used for creating display names are now configurable
|
||||
(thanks @astridx)
|
||||
* new pattern-replacement query preprocessor (thanks @TuringVerified)
|
||||
* special phrases can now be filtered by presence of tags (thanks @anqixxx)
|
||||
* lua import style now always includes tags required by Nominatim
|
||||
* improved query time reporting and logging
|
||||
* improve word matching for languages with no word boundaries
|
||||
* POIs with addresses inherited from surrounding building are no
|
||||
longer returned in the address layer
|
||||
* avoid creating a directory for the tokenizer when not needed
|
||||
* replace behave with pytest-bdd for BDD testing
|
||||
* refactoring and performance improvements to query parsing
|
||||
* various smaller updates to styles
|
||||
* remove English as default language for South Korea
|
||||
* remove Japanese word variants
|
||||
* updated country names for Norwegians (thanks @Johannes-Andersen)
|
||||
* remove support for deprecated osm2pgsql gazetteer style
|
||||
* fix updating of importances (also needs to update search_name table)
|
||||
* fix query for deletable endpoint to use index again
|
||||
* fix reindexing of contained places when a boundary is deleted and reinstated
|
||||
* fix difference computation error when updating postcodes
|
||||
* bracket handling sanitizer no longer strips bracket terms in the middle of
|
||||
name
|
||||
* reduce precision of stored coordinates to 7-digits everywhere
|
||||
* avoid ST_Relate as it seems buggy on some systems
|
||||
* remove setting for logging queries in DB, no longer functional
|
||||
* postcode updates no longer require a project directory (needed for tests)
|
||||
* refactor locale handling code (thanks @anqixxx)
|
||||
* code updates for newer Python (thanks @emmanuel-ferdman)
|
||||
* better test coverage (thanks @asharmalik19)
|
||||
* various fixes and improvements to documentation
|
||||
(thanks @anqixxx, @dave-meyer, @hasandiwan)
|
||||
|
||||
5.1.0
|
||||
* replace datrie with simple internal trie implementation
|
||||
* add pattern-based postcode parser for queries,
|
||||
|
||||
@@ -9,11 +9,11 @@ versions.
|
||||
|
||||
| Version | End of support for security updates |
|
||||
| ------- | ----------------------------------- |
|
||||
| 5.2.x | 2027-10-29 |
|
||||
| 5.1.x | 2027-04-01 |
|
||||
| 5.0.x | 2027-02-06 |
|
||||
| 4.5.x | 2026-09-12 |
|
||||
| 4.4.x | 2026-03-07 |
|
||||
| 4.3.x | 2025-09-07 |
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
@@ -32,8 +32,7 @@ description of the nature and severity of the issue. **
|
||||
Patches for identified security issues are applied to all affected versions and
|
||||
new minor versions are released. At the same time we release a statement at
|
||||
the [Nominatim blog](https://nominatim.org/blog/) describing the nature of the
|
||||
incident. Announcements will also be published at the
|
||||
[geocoding mailinglist](https://lists.openstreetmap.org/listinfo/geocoding).
|
||||
incident.
|
||||
|
||||
## List of Previous Incidents
|
||||
|
||||
|
||||
@@ -17,6 +17,18 @@ breaking changes. **Please read them before running the migration.**
|
||||
and migrate to 4.3 first. Then you can migrate to the current
|
||||
version. It is strongly recommended to do a reimport instead.
|
||||
|
||||
## 5.1.0 -> 5.2.0
|
||||
|
||||
### Lua import style: required extratags removed
|
||||
|
||||
Tags that are required by Nominatim as extratags are now always included
|
||||
independent of what is defined in the style. The line
|
||||
|
||||
flex.add_for_extratags('required')
|
||||
|
||||
is no longer required in custom styles and will throw an error. Simply
|
||||
remove the line from your style.
|
||||
|
||||
## 4.5.0 -> 5.0.0
|
||||
|
||||
### PHP frontend removed
|
||||
|
||||
@@ -105,6 +105,13 @@ grouped by type.
|
||||
|
||||
Include geometry of result.
|
||||
|
||||
| Parameter | Value | Default |
|
||||
|-----------| ----- | ------- |
|
||||
| entrances | 0 or 1 | 0 |
|
||||
|
||||
When set to 1, include the tagged entrances in the result.
|
||||
|
||||
|
||||
### Language of results
|
||||
|
||||
| Parameter | Value | Default |
|
||||
|
||||
@@ -49,7 +49,7 @@ Only has an effect for JSON output formats.
|
||||
|
||||
| Parameter | Value | Default |
|
||||
|-----------| ----- | ------- |
|
||||
| addressdetails | 0 or 1 | 0 |
|
||||
| addressdetails | 0 or 1 | 1 |
|
||||
|
||||
When set to 1, include a breakdown of the address into elements.
|
||||
The exact content of the address breakdown depends on the output format.
|
||||
@@ -77,6 +77,12 @@ that is available in the database, e.g. wikipedia link, opening hours.
|
||||
When set to 1, include a full list of names for the result. These may include
|
||||
language variants, older names, references and brand.
|
||||
|
||||
| Parameter | Value | Default |
|
||||
|-----------| ----- | ------- |
|
||||
| entrances | 0 or 1 | 0 |
|
||||
|
||||
When set to 1, include the tagged entrances in the result.
|
||||
|
||||
|
||||
### Language of results
|
||||
|
||||
|
||||
@@ -60,6 +60,8 @@ The possible fields are:
|
||||
* `namedetails` - dictionary with full list of available names including ref etc.
|
||||
* `geojson`, `svg`, `geotext`, `geokml` - full geometry
|
||||
(only with the appropriate `polygon_*` parameter)
|
||||
* `entrances` - array of objects representing tagged entrances for the object, or
|
||||
null if none are found (only with `entrances=1`)
|
||||
|
||||
## JSONv2
|
||||
|
||||
@@ -87,6 +89,8 @@ The properties object has the following fields:
|
||||
* `extratags` - dictionary with additional useful tags like `website` or `maxspeed`
|
||||
(only with `extratags=1`)
|
||||
* `namedetails` - dictionary with full list of available names including ref etc.
|
||||
* `entrances` - array of objects representing tagged entrances for the object, or
|
||||
null if none are found (only with `entrances=1`)
|
||||
|
||||
Use `polygon_geojson` to output the full geometry of the object instead
|
||||
of the centroid.
|
||||
@@ -110,6 +114,8 @@ The following feature attributes are implemented:
|
||||
* `admin` - list of localised names of administrative boundaries (only with `addressdetails=1`)
|
||||
* `extra` - dictionary with additional useful tags like `website` or `maxspeed`
|
||||
(only with `extratags=1`)
|
||||
* `entrances` - array of objects representing tagged entrances for the object, or
|
||||
null if none are found (only with `entrances=1`)
|
||||
|
||||
|
||||
Use `polygon_geojson` to output the full geometry of the object instead
|
||||
@@ -162,8 +168,8 @@ The place information can be found in the `result` element. The attributes of th
|
||||
The full address of the result can be found in the content of the
|
||||
`result` element as a comma-separated list.
|
||||
|
||||
Additional information requested with `addressdetails=1`, `extratags=1` and
|
||||
`namedetails=1` can be found in extra elements.
|
||||
Additional information requested with `addressdetails=1`, `extratags=1`,
|
||||
`namedetails=1`, and `entrances=1` can be found in extra elements.
|
||||
|
||||
### Search and Lookup
|
||||
|
||||
@@ -224,9 +230,9 @@ be more than one. The attributes of that element contain:
|
||||
When `addressdetails=1` is requested, the localised address parts appear
|
||||
as subelements with the type of the address part.
|
||||
|
||||
Additional information requested with `extratags=1` and `namedetails=1` can
|
||||
be found in extra elements as sub-element of `extratags` and `namedetails`
|
||||
respectively.
|
||||
Additional information requested with `extratags=1`, `namedetails=1`, and
|
||||
`entrances=1` can be found in extra elements as sub-element of `extratags`,
|
||||
`namedetails`, and `entrances` respectively.
|
||||
|
||||
|
||||
## Notes on field values
|
||||
@@ -303,3 +309,78 @@ with a designation label. Per default the following labels may appear:
|
||||
|
||||
They roughly correspond to the classification of the OpenStreetMap data
|
||||
according to either the `place` tag or the main key of the object.
|
||||
|
||||
### entrances
|
||||
|
||||
Entrance details in the xml and json formats return the latitude and longitude
|
||||
of the entrance, the osm node ID, the [type of
|
||||
entrance](https://wiki.openstreetmap.org/wiki/Key:entrance), and any extra tags
|
||||
associated with the entrance node.
|
||||
|
||||
* osm_id
|
||||
* type
|
||||
* lat
|
||||
* lon
|
||||
* extratags
|
||||
|
||||
They roughly correspond to the classification of the OpenStreetMap data
|
||||
according to either the `place` tag or the main key of the object.
|
||||
|
||||
#### Example
|
||||
|
||||
##### JSON
|
||||
|
||||
[https://nominatim.openstreetmap.org/details?osmtype=W&osmid=32619803&entrances=1&format=json](https://nominatim.openstreetmap.org/details?osmtype=W&osmid=32619803&entrances=1&format=json)
|
||||
|
||||
|
||||
```json
|
||||
{
|
||||
"place_id": 124325848,
|
||||
"parent_place_id": 123936289,
|
||||
"osm_type": "W",
|
||||
"osm_id": 32619803,
|
||||
"category": "shop",
|
||||
"type": "supermarket",
|
||||
"admin_level": 15,
|
||||
"localname": "PENNY",
|
||||
...
|
||||
"entrances": [
|
||||
{
|
||||
"osm_id": 1733488238,
|
||||
"type": "yes",
|
||||
"lat": "51.0466704",
|
||||
"lon": "12.8077106",
|
||||
"extratags": {
|
||||
"foot": "yes"
|
||||
}
|
||||
},
|
||||
{
|
||||
"osm_id": 1733488256,
|
||||
"type": "main",
|
||||
"lat": "51.0467197",
|
||||
"lon": "12.8078448",
|
||||
"extratags": {
|
||||
"foot": "yes"
|
||||
}
|
||||
},
|
||||
{
|
||||
"osm_id": 1733498087,
|
||||
"type": "exit",
|
||||
"lat": "51.0467081",
|
||||
"lon": "12.8078131",
|
||||
"extratags": {
|
||||
"foot": "yes"
|
||||
}
|
||||
},
|
||||
{
|
||||
"osm_id": 7914950851,
|
||||
"type": "service",
|
||||
"lat": "51.0468487",
|
||||
"lon": "12.8075876",
|
||||
"extratags": {
|
||||
"access": "delivery"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
@@ -98,6 +98,12 @@ that is available in the database, e.g. wikipedia link, opening hours.
|
||||
When set to 1, include a full list of names for the result. These may include
|
||||
language variants, older names, references and brand.
|
||||
|
||||
| Parameter | Value | Default |
|
||||
|-----------| ----- | ------- |
|
||||
| entrances | 0 or 1 | 0 |
|
||||
|
||||
When set to 1, include the tagged entrances in the result.
|
||||
|
||||
|
||||
### Language of results
|
||||
|
||||
@@ -146,7 +152,7 @@ In terms of address details the zoom levels are as follows:
|
||||
|
||||
| Parameter | Value | Default |
|
||||
|-----------| ----- | ------- |
|
||||
| layer | comma-separated list of: `address`, `poi`, `railway`, `natural`, `manmade` | _unset_ (no restriction) |
|
||||
| layer | comma-separated list of: `address`, `poi`, `railway`, `natural`, `manmade` | `address,poi` |
|
||||
|
||||
The layer filter allows to select places by themes.
|
||||
|
||||
@@ -212,7 +218,7 @@ This overrides the specified machine readable format.
|
||||
|
||||
## Examples
|
||||
|
||||
* [https://nominatim.openstreetmap.org/reverse?format=xml&lat=52.5487429714954&lon=-1.81602098644987&zoom=18&addressdetails=1](https://nominatim.openstreetmap.org/reverse?format=xml&lat=52.5487429714954&lon=-1.81602098644987&zoom=18&addressdetails=1)
|
||||
* [https://nominatim.openstreetmap.org/reverse?format=xml&lat=52.5487429714954&lon=-1.81602098644987&zoom=18&addressdetails=1&layer=address](https://nominatim.openstreetmap.org/reverse?format=xml&lat=52.5487429714954&lon=-1.81602098644987&zoom=18&addressdetails=1&layer=address)
|
||||
|
||||
```xml
|
||||
<reversegeocode timestamp="Fri, 06 Nov 09 16:33:54 +0000" querystring="...">
|
||||
@@ -235,7 +241,7 @@ This overrides the specified machine readable format.
|
||||
|
||||
##### Example with `format=jsonv2`
|
||||
|
||||
* [https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=-34.44076&lon=-58.70521](https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=-34.44076&lon=-58.70521)
|
||||
* [https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=-34.44076&lon=-58.70521&layer=address](https://nominatim.openstreetmap.org/reverse?format=jsonv2&lat=-34.44076&lon=-58.70521&layer=address)
|
||||
|
||||
```json
|
||||
{
|
||||
@@ -267,7 +273,7 @@ This overrides the specified machine readable format.
|
||||
|
||||
##### Example with `format=geojson`
|
||||
|
||||
* [https://nominatim.openstreetmap.org/reverse?format=geojson&lat=44.50155&lon=11.33989](https://nominatim.openstreetmap.org/reverse?format=geojson&lat=44.50155&lon=11.33989)
|
||||
* [https://nominatim.openstreetmap.org/reverse?format=geojson&lat=44.50155&lon=11.33989&layer=address](https://nominatim.openstreetmap.org/reverse?format=geojson&lat=44.50155&lon=11.33989&layer=address)
|
||||
|
||||
```json
|
||||
{
|
||||
@@ -319,7 +325,7 @@ This overrides the specified machine readable format.
|
||||
|
||||
##### Example with `format=geocodejson`
|
||||
|
||||
[https://nominatim.openstreetmap.org/reverse?format=geocodejson&lat=60.2299&lon=11.1663](https://nominatim.openstreetmap.org/reverse?format=geocodejson&lat=60.2299&lon=11.1663)
|
||||
[https://nominatim.openstreetmap.org/reverse?format=geocodejson&lat=60.2299&lon=11.1663&layer=address](https://nominatim.openstreetmap.org/reverse?format=geocodejson&lat=60.2299&lon=11.1663&layer=address)
|
||||
|
||||
```json
|
||||
{
|
||||
|
||||
@@ -136,6 +136,12 @@ that is available in the database, e.g. wikipedia link, opening hours.
|
||||
When set to 1, include a full list of names for the result. These may include
|
||||
language variants, older names, references and brand.
|
||||
|
||||
| Parameter | Value | Default |
|
||||
|-----------| ----- | ------- |
|
||||
| entrances | 0 or 1 | 0 |
|
||||
|
||||
When set to 1, include the tagged entrances in the result.
|
||||
|
||||
|
||||
### Language of results
|
||||
|
||||
|
||||
@@ -68,15 +68,16 @@ When Nominatim processes an OSM object, it looks for four kinds of tags:
|
||||
The _main tags_ classify what kind of place the OSM object represents. One
|
||||
OSM object can have more than one main tag. In such case one database entry
|
||||
is created for each main tag. _Name tags_ represent searchable names of the
|
||||
place. _Address tags_ are used to compute the address hierarchy of the place.
|
||||
place. _Address tags_ are used to compute the address information of the place.
|
||||
Address tags are used for searching and for creating a display name of the place.
|
||||
_Extra tags_ are any tags that are not directly related to search but
|
||||
contain interesting additional information.
|
||||
contain interesting additional information. These are just saved in the database
|
||||
and may be returned with the result [on request](../api/Search.md#output-details).
|
||||
|
||||
!!! danger
|
||||
Some tags in the extratags category are used by Nominatim to better
|
||||
classify the place. You want to make sure these are always present
|
||||
in custom styles.
|
||||
classify the place. These tags will always be added, independent of
|
||||
any settings in the style.
|
||||
|
||||
Configuring the style means deciding which key and/or key/value is used
|
||||
in which category.
|
||||
@@ -266,11 +267,7 @@ in turn take precedence over prefix matches.
|
||||
|
||||
##### Presets
|
||||
|
||||
| Name | Description |
|
||||
| :----- | :---------- |
|
||||
| required | Tags that Nominatim will use for various computations when present in extratags. Always include these. |
|
||||
|
||||
In addition, all [presets from ignored tags](#presets_1) are accepted.
|
||||
Accepts all [presets from ignored tags](#presets_1).
|
||||
|
||||
### General pre-filtering
|
||||
|
||||
@@ -426,6 +423,56 @@ is added for extratags.
|
||||
already delete the tiger tags with `set_prefilters()` because that
|
||||
would remove tiger:county before the address tags are processed.
|
||||
|
||||
## Filling additional tables
|
||||
|
||||
Most of the OSM objects are saved in the main `place` table for further
|
||||
processing. In addition to that, there are some smaller tables that save
|
||||
specialised information. The content of these tables can be customized as
|
||||
well.
|
||||
|
||||
### Entrance table
|
||||
|
||||
The table `place_entrance` saves information about OSM nodes that represent
|
||||
an entrance. This data is later mingled with buildings and other areas and
|
||||
can be returned [on request](../api/Search.md#output-details). The table
|
||||
saves the type of entrance as well as a set of custom extra tags.
|
||||
|
||||
The function `set_entrance_filter()` can be used to customize the table's
|
||||
content.
|
||||
|
||||
When called without any parameter, then filling the entrance table will be
|
||||
disabled. When called with a preset name, the appropriate preset will be
|
||||
applied.
|
||||
|
||||
To create a custom configuration, call the function
|
||||
with a table with the following fields:
|
||||
|
||||
* __main_tags__ is a list of tags that mark an entrance node. The value of the
|
||||
first tag found in the list will be used as the entrance type.
|
||||
* __extra_include__ is an optional list of tags to be added to the extratags
|
||||
for this entrance. When left out, all tags except for the ones defined
|
||||
in 'main_tags' will be included. To disable saving of extra tags, set
|
||||
this to the empty list.
|
||||
* __extra_exclude__ defines an optional list of tags to drop before including
|
||||
the remaining tags as extratags. Note that the tags defined in 'main_tags'
|
||||
will always be excluded, independently of this setting.
|
||||
|
||||
To have even more fine-grained control over the output, you can also hand
|
||||
in a callback for processing entrance information. The callback function
|
||||
receives a single parameter, the
|
||||
[osm2pgsql object](https://osm2pgsql.org/doc/manual.html#processing-callbacks).
|
||||
This object itself must not be modified. The callback should return either
|
||||
`nil` when the object is not an entrance. Or it returns a table with a
|
||||
mandatory `entrance` field containing a string with the type of entrance
|
||||
and an optional `extratags` field with a simple key-value table of extra
|
||||
information.
|
||||
|
||||
##### Presets
|
||||
|
||||
| Name | Description |
|
||||
| :----- | :---------- |
|
||||
| default | Standard configuration used with `full` and `extratags` styles. |
|
||||
|
||||
## Customizing osm2pgsql callbacks
|
||||
|
||||
osm2pgsql expects the flex style to implement three callbacks, one process
|
||||
|
||||
@@ -648,21 +648,53 @@ See also [NOMINATIM_DEFAULT_LANGUAGE](#nominatim_default_language).
|
||||
| **Description:** | Log requests into a file |
|
||||
| **Format:** | path |
|
||||
| **Default:** | _empty_ (logging disabled) |
|
||||
| **After Changes:** | run `nominatim refresh --website` |
|
||||
|
||||
Enable logging of requests into a file with this setting by setting the log
|
||||
file where to log to. A relative file name is assumed to be relative to
|
||||
the project directory.
|
||||
the project directory. The format of the log output can be set
|
||||
with NOMINATIM_LOG_FORMAT.
|
||||
|
||||
#### NOMINATIM_LOG_FORMAT
|
||||
|
||||
The entries in the log file have the following format:
|
||||
| Summary | |
|
||||
| -------------- | --------------------------------------------------- |
|
||||
| **Description:** | Log requests into a file |
|
||||
| **Format:** | [Python String Format](https://docs.python.org/3/library/string.html#formatstrings) string |
|
||||
| **Default:** | `[{start}] {total_time:.4f} {results_total} {endpoint} "{query_string}"` |
|
||||
|
||||
<request time> <execution time in s> <number of results> <type> "<query string>"
|
||||
Describes the content of a log line for a single request. The format
|
||||
must be readable by Python's format function. Nominatim provides a number
|
||||
of metrics than can be logged. The default set of metrics is the following:
|
||||
|
||||
/// html | div.simple-table
|
||||
| name | type | Description |
|
||||
| --------------- | ------ | ------------|
|
||||
| start | time | Point in time when the request arrived. |
|
||||
| end | time | Point in time when the request was done. |
|
||||
| query_start | time | Point in time when processing started. |
|
||||
| total_time | float | Total time in seconds to handle the request. |
|
||||
| wait_time | float | Time in seconds the request waited for a database connection to be available. |
|
||||
| query_time | float | Total time in seconds to process the request once a connection was available. |
|
||||
| results_total | int | Number of results found. |
|
||||
| endpoint | string | API endpoint used. |
|
||||
| query_string | string | Raw query string received. |
|
||||
///
|
||||
|
||||
Variables of type 'time' contain a UTC timestamp string in ISO format.
|
||||
|
||||
Nominatim also exposes additional metrics to help with development. These
|
||||
are subject to change between versions:
|
||||
|
||||
/// html | div.simple-table
|
||||
| name | type | Description |
|
||||
| ------------------------- | ------ | ------------|
|
||||
| search_rounds | int | Total number of searches executed for the request. |
|
||||
| search_min_penalty | float | Minimal possible penalty for the request. |
|
||||
| search_first_result_round | int | Number of first search to yield any result. |
|
||||
| search_min_result_penalty | float | Minimal penalty by a result found. |
|
||||
| search_best_penalty_round | int | Search round that yielded the best penalty result. |
|
||||
///
|
||||
|
||||
Request time is the time when the request was started. The execution time is
|
||||
given in seconds and includes the entire time the query was queued and executed
|
||||
in the frontend.
|
||||
type contains the name of the endpoint used.
|
||||
|
||||
#### NOMINATIM_DEBUG_SQL
|
||||
|
||||
|
||||
@@ -39,3 +39,9 @@ th {
|
||||
filter: grayscale(100%);
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
.simple-table table:not([class]) th,
|
||||
.simple-table table:not([class]) td {
|
||||
padding: 2px 4px;
|
||||
background: white;
|
||||
}
|
||||
|
||||
@@ -268,13 +268,17 @@ name out of it:
|
||||
'Brugges'
|
||||
```
|
||||
|
||||
The `address_row` field has a helper function to apply the function to all
|
||||
its members and save the result in the `local_name` field. It also returns
|
||||
all the localized names as a convenient simple list. This list can be used
|
||||
to create a human-readable output:
|
||||
The `address_row` field has a helper function to compute the display name for each Address Line
|
||||
component based on its `local_name` field. This is then utilized by the overall `result` object,
|
||||
which has a helper function to apply the function to all its ‘address_row’ members and saves
|
||||
the result in the `locale_name` field.
|
||||
|
||||
However, in order to set this `local_name` field in a preferred language, you must use the `Locale`
|
||||
object which contains the function `localize_results`, which explicitly sets each `local_name field`.
|
||||
|
||||
``` python
|
||||
>>> address_parts = results[0].address_rows.localize(locale)
|
||||
>>> Locales().localize_results(results)
|
||||
>>> address_parts = results[0].address_rows
|
||||
>>> print(', '.join(address_parts))
|
||||
Bruges, Flandre-Occidentale, Flandre, Belgique
|
||||
```
|
||||
|
||||
@@ -49,7 +49,11 @@ its address.
|
||||
|
||||
## Localization
|
||||
|
||||
Results are always returned with the full list of available names.
|
||||
Results are always returned with the full list of available names. However, the
|
||||
default `locale_name` must be explicitly set using the `localize` function within
|
||||
`Locales`. This parses through the full list of available names to find the one
|
||||
most preferred by the user. Once this is set, the user can simply use the
|
||||
`display_name` field within a `Result` object to retrive the localized name.
|
||||
|
||||
### Locale
|
||||
|
||||
|
||||
@@ -29,7 +29,9 @@ local NAME_FILTER = nil
|
||||
local ADDRESS_TAGS = {}
|
||||
local ADDRESS_FILTER = nil
|
||||
local EXTRATAGS_FILTER
|
||||
local REQUIRED_EXTRATAGS_FILTER
|
||||
local POSTCODE_FALLBACK = true
|
||||
local ENTRANCE_FUNCTION = nil
|
||||
|
||||
-- This file can also be directly require'd instead of running it under
|
||||
-- the themepark framework. In that case the first parameter is usually
|
||||
@@ -40,37 +42,51 @@ if type(themepark) ~= 'table' then
|
||||
themepark = nil
|
||||
end
|
||||
|
||||
-- The single place table.
|
||||
local place_table_definition = {
|
||||
name = "place",
|
||||
ids = { type = 'any', id_column = 'osm_id', type_column = 'osm_type' },
|
||||
columns = {
|
||||
{ column = 'class', type = 'text', not_null = true },
|
||||
{ column = 'type', type = 'text', not_null = true },
|
||||
{ column = 'admin_level', type = 'smallint' },
|
||||
{ column = 'name', type = 'hstore' },
|
||||
{ column = 'address', type = 'hstore' },
|
||||
{ column = 'extratags', type = 'hstore' },
|
||||
{ column = 'geometry', type = 'geometry', projection = 'WGS84', not_null = true },
|
||||
-- The place tables carry the raw OSM information.
|
||||
local table_definitions = {
|
||||
place = {
|
||||
ids = { type = 'any', id_column = 'osm_id', type_column = 'osm_type' },
|
||||
columns = {
|
||||
{ column = 'class', type = 'text', not_null = true },
|
||||
{ column = 'type', type = 'text', not_null = true },
|
||||
{ column = 'admin_level', type = 'smallint' },
|
||||
{ column = 'name', type = 'hstore' },
|
||||
{ column = 'address', type = 'hstore' },
|
||||
{ column = 'extratags', type = 'hstore' },
|
||||
{ column = 'geometry', type = 'geometry', projection = 'WGS84', not_null = true },
|
||||
},
|
||||
indexes = {}
|
||||
},
|
||||
data_tablespace = os.getenv("NOMINATIM_TABLESPACE_PLACE_DATA"),
|
||||
index_tablespace = os.getenv("NOMINATIM_TABLESPACE_PLACE_INDEX"),
|
||||
indexes = {}
|
||||
place_entrance = {
|
||||
ids = { type = 'node', id_column = 'osm_id' },
|
||||
columns = {
|
||||
{ column = 'type', type = 'text', not_null = true },
|
||||
{ column = 'extratags', type = 'hstore' },
|
||||
{ column = 'geometry', type = 'geometry', projection = 'WGS84', not_null = true }
|
||||
},
|
||||
indexes = {}
|
||||
}
|
||||
}
|
||||
|
||||
local insert_row
|
||||
local insert_row = {}
|
||||
local script_path = debug.getinfo(1, "S").source:match("@?(.*/)")
|
||||
local PRESETS = loadfile(script_path .. 'presets.lua')()
|
||||
|
||||
if themepark then
|
||||
themepark:add_table(place_table_definition)
|
||||
insert_row = function(columns)
|
||||
themepark:insert('place', columns, {}, {})
|
||||
end
|
||||
else
|
||||
local place_table = osm2pgsql.define_table(place_table_definition)
|
||||
insert_row = function(columns)
|
||||
place_table:insert(columns)
|
||||
for table_name, table_definition in pairs(table_definitions) do
|
||||
table_definition.name = table_name
|
||||
table_definition.data_tablespace = os.getenv("NOMINATIM_TABLESPACE_PLACE_DATA")
|
||||
table_definition.index_tablespace = os.getenv("NOMINATIM_TABLESPACE_PLACE_INDEX")
|
||||
|
||||
if themepark then
|
||||
themepark:add_table(table_definition)
|
||||
insert_row[table_name] = function(columns)
|
||||
themepark:insert(table_name, columns, {}, {})
|
||||
end
|
||||
else
|
||||
local place_table = osm2pgsql.define_table(table_definition)
|
||||
insert_row[table_name] = function(columns)
|
||||
place_table:insert(columns)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -150,24 +166,6 @@ local function address_fallback(place)
|
||||
return place:clone{names=names}
|
||||
end
|
||||
|
||||
--------- Built-in extratags transformation functions ---------------
|
||||
|
||||
local function default_extratags_filter(p, k)
|
||||
-- Default handling is to copy over place tag for boundaries.
|
||||
-- Nominatim needs this.
|
||||
if k ~= 'boundary' or p.intags.place == nil then
|
||||
return p.extratags
|
||||
end
|
||||
|
||||
local extra = { place = p.intags.place }
|
||||
for kin, vin in pairs(p.extratags) do
|
||||
extra[kin] = vin
|
||||
end
|
||||
|
||||
return extra
|
||||
end
|
||||
EXTRATAGS_FILTER = default_extratags_filter
|
||||
|
||||
----------------- other helper functions -----------------------------
|
||||
|
||||
local function lookup_prefilter_classification(k, v)
|
||||
@@ -429,18 +427,25 @@ function Place:write_row(k, v)
|
||||
return 0
|
||||
end
|
||||
|
||||
local extratags = EXTRATAGS_FILTER(self, k, v)
|
||||
if not (extratags and next(extratags)) then
|
||||
extratags = nil
|
||||
end
|
||||
local extra = EXTRATAGS_FILTER(self, k, v) or {}
|
||||
|
||||
insert_row{
|
||||
for tk, tv in pairs(self.object.tags) do
|
||||
if REQUIRED_EXTRATAGS_FILTER(tk, tv) and extra[tk] == nil then
|
||||
extra[tk] = tv
|
||||
end
|
||||
end
|
||||
|
||||
if extra and next(extra) == nil then
|
||||
extra = nil
|
||||
end
|
||||
|
||||
insert_row.place{
|
||||
class = k,
|
||||
type = v,
|
||||
admin_level = self.admin_level,
|
||||
name = next(self.names) and self.names,
|
||||
address = next(self.address) and self.address,
|
||||
extratags = extratags,
|
||||
extratags = extra,
|
||||
geometry = self.geometry
|
||||
}
|
||||
|
||||
@@ -593,6 +598,16 @@ end
|
||||
|
||||
-- Process functions for all data types
|
||||
function module.process_node(object)
|
||||
if ENTRANCE_FUNCTION ~= nil then
|
||||
local entrance_info = ENTRANCE_FUNCTION(object)
|
||||
if entrance_info ~= nil then
|
||||
insert_row.place_entrance{
|
||||
type = entrance_info.entrance,
|
||||
extratags = entrance_info.extratags,
|
||||
geometry = object:as_point()
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
local function geom_func(o)
|
||||
return o:as_point()
|
||||
@@ -687,6 +702,15 @@ function module.process_tags(o)
|
||||
end
|
||||
end
|
||||
|
||||
--------- Extratags post-processing functions ---------------
|
||||
|
||||
local function default_extratags_filter(p, k)
|
||||
return p.extratags
|
||||
end
|
||||
|
||||
EXTRATAGS_FILTER = default_extratags_filter
|
||||
REQUIRED_EXTRATAGS_FILTER = module.tag_match(PRESETS.EXTRATAGS)
|
||||
|
||||
--------- Convenience functions for simple style configuration -----------------
|
||||
|
||||
function module.set_prefilters(data)
|
||||
@@ -717,7 +741,7 @@ end
|
||||
function module.add_for_extratags(data)
|
||||
if type(data) == 'string' then
|
||||
local preset = data
|
||||
data = PRESETS.EXTRATAGS[data] or PRESETS.IGNORE_KEYS[data]
|
||||
data = PRESETS.IGNORE_KEYS[data]
|
||||
if data == nil then
|
||||
error('Unknown preset for extratags: ' .. preset)
|
||||
end
|
||||
@@ -917,6 +941,99 @@ function module.set_relation_types(data)
|
||||
end
|
||||
end
|
||||
|
||||
function module.set_entrance_filter(data)
|
||||
if data == nil or type(data) == 'function' then
|
||||
ENTRANCE_FUNCTION = data
|
||||
return nil
|
||||
end
|
||||
|
||||
if type(data) == 'string' then
|
||||
local preset = data
|
||||
data = PRESETS.ENTRANCE_TABLE[data]
|
||||
if data == nil then
|
||||
error('Unknown preset for entrance table: ' .. preset)
|
||||
end
|
||||
end
|
||||
|
||||
ENTRANCE_FUNCTION = nil
|
||||
|
||||
if data.main_tags ~= nil and next(data.main_tags) ~= nil then
|
||||
if data.extra_include ~= nil and next(data.extra_include) == nil then
|
||||
-- shortcut: no extra tags requested
|
||||
ENTRANCE_FUNCTION = function(o)
|
||||
for _, v in ipairs(data.main_tags) do
|
||||
if o.tags[v] ~= nil then
|
||||
return {entrance = o.tags[v]}
|
||||
end
|
||||
end
|
||||
return nil
|
||||
end
|
||||
else
|
||||
if data.extra_include ~= nil then
|
||||
local tags = {}
|
||||
for _, v in pairs(data.extra_include) do
|
||||
tags[v] = true
|
||||
end
|
||||
if data.extra_exclude ~= nil then
|
||||
for _, v in pairs(data.extra_exclude) do
|
||||
tags[v] = nil
|
||||
end
|
||||
end
|
||||
for _, v in pairs(data.main_tags) do
|
||||
tags[v] = nil
|
||||
end
|
||||
|
||||
ENTRANCE_FUNCTION = function(o)
|
||||
for _, v in ipairs(data.main_tags) do
|
||||
if o.tags[v] ~= nil then
|
||||
local entrance = o.tags[v]
|
||||
local extra = {}
|
||||
for k, v in pairs(tags) do
|
||||
extra[k] = o.tags[k]
|
||||
end
|
||||
if next(extra) == nil then
|
||||
extra = nil
|
||||
end
|
||||
return {entrance = entrance, extratags = extra}
|
||||
end
|
||||
end
|
||||
|
||||
return nil
|
||||
end
|
||||
else
|
||||
local notags = {}
|
||||
if data.extra_exclude ~= nil then
|
||||
for _, v in pairs(data.extra_exclude) do
|
||||
notags[v] = 1
|
||||
end
|
||||
end
|
||||
for _, v in pairs(data.main_tags) do
|
||||
notags[v] = 1
|
||||
end
|
||||
|
||||
ENTRANCE_FUNCTION = function(o)
|
||||
for _, v in ipairs(data.main_tags) do
|
||||
if o.tags[v] ~= nil then
|
||||
local entrance = o.tags[v]
|
||||
local extra = {}
|
||||
for k, v in pairs(o.tags) do
|
||||
if notags[k] ~= 1 then
|
||||
extra[k] = v
|
||||
end
|
||||
end
|
||||
if next(extra) == nil then
|
||||
extra = nil
|
||||
end
|
||||
return {entrance = entrance, extratags = extra}
|
||||
end
|
||||
end
|
||||
|
||||
return nil
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function module.get_taginfo()
|
||||
return {main = MAIN_KEYS, name = NAMES, address = ADDRESS_TAGS}
|
||||
|
||||
@@ -200,6 +200,8 @@ module.MAIN_TAGS_POIS = function (group)
|
||||
leisure = {'always',
|
||||
nature_reserve = 'fallback',
|
||||
swimming_pool = 'named',
|
||||
garden = 'named',
|
||||
common = 'named',
|
||||
no = group},
|
||||
lock = {yes = lock_transform},
|
||||
man_made = {pier = 'always',
|
||||
@@ -362,7 +364,7 @@ module.IGNORE_KEYS.metatags = {'note', 'note:*', 'source', 'source:*', '*source'
|
||||
'tiger:cfcc', 'tiger:reviewed', 'nysgissam:*',
|
||||
'NHD:*', 'nhd:*', 'gnis:*', 'geobase:*', 'yh:*',
|
||||
'osak:*', 'naptan:*', 'CLC:*', 'import', 'it:fvg:*',
|
||||
'lacounty:*', 'ref:linz:*',
|
||||
'lacounty:*', 'ref:linz:*', 'survey:*',
|
||||
'ref:bygningsnr', 'ref:ruian:*', 'building:ruian:type',
|
||||
'type',
|
||||
'is_in:postcode'}
|
||||
@@ -373,10 +375,15 @@ module.IGNORE_KEYS.address = {'addr:street:*', 'addr:city:*', 'addr:district:*',
|
||||
'addr:province:*', 'addr:subdistrict:*', 'addr:place:*',
|
||||
'addr:TW:dataset'}
|
||||
|
||||
-- Extra tags (prefiltered away)
|
||||
-- INTERNAL: Required extra tags
|
||||
|
||||
module.EXTRATAGS = {}
|
||||
module.EXTRATAGS = {keys = {'wikipedia', 'wikipedia:*', 'wikidata', 'capital'}}
|
||||
|
||||
module.EXTRATAGS.required = {'wikipedia', 'wikipedia:*', 'wikidata', 'capital'}
|
||||
-- Defaults for the entrance table
|
||||
|
||||
module.ENTRANCE_TABLE = {}
|
||||
|
||||
module.ENTRANCE_TABLE.default = {main_tags = {'entrance', 'routing:entrance'},
|
||||
extra_exclude = module.IGNORE_KEYS.metatags}
|
||||
|
||||
return module
|
||||
|
||||
@@ -11,7 +11,6 @@ flex.set_address_tags('core')
|
||||
flex.modify_address_tags('houses')
|
||||
|
||||
flex.ignore_keys('metatags')
|
||||
flex.add_for_extratags('required')
|
||||
|
||||
if cfg.with_extratags then
|
||||
flex.set_unused_handling{delete_keys = {'tiger:*'}}
|
||||
|
||||
@@ -8,7 +8,6 @@ flex.set_address_tags('core')
|
||||
flex.set_postcode_fallback(false)
|
||||
|
||||
flex.ignore_keys('metatags')
|
||||
flex.add_for_extratags('required')
|
||||
|
||||
if cfg.with_extratags then
|
||||
flex.set_unused_handling{delete_keys = {'tiger:*'}}
|
||||
|
||||
@@ -20,7 +20,6 @@ flex.set_address_tags('core')
|
||||
flex.modify_address_tags('houses')
|
||||
|
||||
flex.ignore_keys('metatags')
|
||||
flex.add_for_extratags('required')
|
||||
|
||||
if cfg.with_extratags then
|
||||
flex.set_unused_handling{delete_keys = {'tiger:*'}}
|
||||
@@ -30,3 +29,5 @@ else
|
||||
flex.ignore_keys('name')
|
||||
flex.ignore_keys('address')
|
||||
end
|
||||
|
||||
flex.set_entrance_filter('default')
|
||||
|
||||
@@ -10,7 +10,6 @@ flex.set_address_tags('core')
|
||||
flex.set_postcode_fallback(false)
|
||||
|
||||
flex.ignore_keys('metatags')
|
||||
flex.add_for_extratags('required')
|
||||
|
||||
if cfg.with_extratags then
|
||||
flex.set_unused_handling{delete_keys = {'tiger:*'}}
|
||||
|
||||
@@ -338,6 +338,11 @@ BEGIN
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
-- When an existing way is updated, recalculate entrances
|
||||
IF existingplacex.osm_type = 'W' and (existingplacex.rank_search > 27 or existingplacex.class IN ('landuse', 'leisure')) THEN
|
||||
PERFORM place_update_entrances(existingplacex.place_id, existingplacex.osm_id);
|
||||
END IF;
|
||||
|
||||
-- Abort the insertion (we modified the existing place instead)
|
||||
RETURN NULL;
|
||||
END;
|
||||
|
||||
@@ -530,6 +530,7 @@ CREATE OR REPLACE FUNCTION insert_addresslines(obj_place_id BIGINT,
|
||||
AS $$
|
||||
DECLARE
|
||||
address_havelevel BOOLEAN[];
|
||||
place_min_distance FLOAT[];
|
||||
|
||||
location_isaddress BOOLEAN;
|
||||
current_boundary GEOMETRY := NULL;
|
||||
@@ -545,6 +546,7 @@ BEGIN
|
||||
nameaddress_vector := '{}'::int[];
|
||||
|
||||
address_havelevel := array_fill(false, ARRAY[maxrank]);
|
||||
place_min_distance := array_fill(1.0, ARRAY[maxrank]);
|
||||
|
||||
FOR location IN
|
||||
SELECT apl.*, key
|
||||
@@ -575,6 +577,10 @@ BEGIN
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
IF location.isguess and location.distance < place_min_distance[location.rank_address] THEN
|
||||
place_min_distance[location.rank_address] := location.distance;
|
||||
END IF;
|
||||
|
||||
INSERT INTO place_addressline (place_id, address_place_id, fromarea,
|
||||
isaddress, distance, cached_rank_address)
|
||||
VALUES (obj_place_id, location.place_id, not location.isguess,
|
||||
@@ -602,6 +608,16 @@ BEGIN
|
||||
-- If this is the first item in the rank, then assume it is the address.
|
||||
location_isaddress := not address_havelevel[location.rank_address];
|
||||
|
||||
-- Ignore guessed places when they are too far away compared to similar closer ones.
|
||||
IF location.isguess THEN
|
||||
CONTINUE WHEN not location_isaddress
|
||||
AND location.distance > 2 * place_min_distance[location.rank_address];
|
||||
|
||||
IF location.distance < place_min_distance[location.rank_address] THEN
|
||||
place_min_distance[location.rank_address] := location.distance;
|
||||
END IF;
|
||||
END IF;
|
||||
|
||||
-- Further sanity checks to ensure that the address forms a sane hierarchy.
|
||||
IF location_isaddress THEN
|
||||
IF location.isguess and current_node_area is not NULL THEN
|
||||
@@ -874,6 +890,11 @@ BEGIN
|
||||
-- Compute a preliminary centroid.
|
||||
NEW.centroid := get_center_point(NEW.geometry);
|
||||
|
||||
-- Record the entrance node locations
|
||||
IF NEW.osm_type = 'W' and (NEW.rank_search > 27 or NEW.class IN ('landuse', 'leisure')) THEN
|
||||
PERFORM place_update_entrances(NEW.place_id, NEW.osm_id);
|
||||
END IF;
|
||||
|
||||
-- recalculate country and partition
|
||||
IF NEW.rank_search = 4 AND NEW.address is not NULL AND NEW.address ? 'country' THEN
|
||||
-- for countries, believe the mapped country code,
|
||||
|
||||
@@ -623,3 +623,34 @@ BEGIN
|
||||
RETURN NULL;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
|
||||
|
||||
CREATE OR REPLACE FUNCTION place_update_entrances(placeid BIGINT, osmid BIGINT)
|
||||
RETURNS INTEGER
|
||||
AS $$
|
||||
DECLARE
|
||||
entrance RECORD;
|
||||
osm_ids BIGINT[];
|
||||
BEGIN
|
||||
osm_ids := '{}';
|
||||
FOR entrance in SELECT osm_id, type, geometry, extratags
|
||||
FROM place_entrance
|
||||
WHERE osm_id IN (SELECT unnest(nodes) FROM planet_osm_ways WHERE id=osmid)
|
||||
LOOP
|
||||
osm_ids := array_append(osm_ids, entrance.osm_id);
|
||||
INSERT INTO placex_entrance (place_id, osm_id, type, location, extratags)
|
||||
VALUES (placeid, entrance.osm_id, entrance.type, entrance.geometry, entrance.extratags)
|
||||
ON CONFLICT (place_id, osm_id) DO UPDATE
|
||||
SET type = excluded.type, location = excluded.location, extratags = excluded.extratags;
|
||||
END LOOP;
|
||||
|
||||
IF array_length(osm_ids, 1) > 0 THEN
|
||||
DELETE FROM placex_entrance WHERE place_id=placeid AND NOT osm_id=ANY(osm_ids);
|
||||
ELSE
|
||||
DELETE FROM placex_entrance WHERE place_id=placeid;
|
||||
END IF;
|
||||
|
||||
RETURN NULL;
|
||||
END;
|
||||
$$
|
||||
LANGUAGE plpgsql;
|
||||
|
||||
@@ -244,6 +244,25 @@ CREATE UNIQUE INDEX idx_postcode_id ON location_postcode USING BTREE (place_id)
|
||||
CREATE INDEX idx_postcode_geometry ON location_postcode USING GIST (geometry) {{db.tablespace.address_index}};
|
||||
GRANT SELECT ON location_postcode TO "{{config.DATABASE_WEBUSER}}" ;
|
||||
|
||||
-- Table to store location of entrance nodes
|
||||
DROP TABLE IF EXISTS placex_entrance;
|
||||
CREATE TABLE placex_entrance (
|
||||
place_id BIGINT NOT NULL,
|
||||
osm_id BIGINT NOT NULL,
|
||||
type TEXT NOT NULL,
|
||||
location GEOMETRY(Point, 4326) NOT NULL,
|
||||
extratags HSTORE
|
||||
);
|
||||
CREATE UNIQUE INDEX idx_placex_entrance_place_id_osm_id ON placex_entrance
|
||||
USING BTREE (place_id, osm_id) {{db.tablespace.search_index}};
|
||||
GRANT SELECT ON placex_entrance TO "{{config.DATABASE_WEBUSER}}" ;
|
||||
|
||||
-- Create an index on the place table for lookups to populate the entrance
|
||||
-- table
|
||||
CREATE INDEX IF NOT EXISTS idx_placex_entrance_lookup ON place
|
||||
USING BTREE (osm_id)
|
||||
WHERE class IN ('routing:entrance', 'entrance');
|
||||
|
||||
DROP TABLE IF EXISTS import_polygon_error;
|
||||
CREATE TABLE import_polygon_error (
|
||||
osm_id BIGINT,
|
||||
|
||||
@@ -67,6 +67,7 @@ markdown_extensions:
|
||||
- codehilite
|
||||
- admonition
|
||||
- pymdownx.superfences
|
||||
- pymdownx.blocks.html
|
||||
- pymdownx.tabbed:
|
||||
alternate_style: true
|
||||
- def_list
|
||||
|
||||
@@ -15,6 +15,7 @@ classifiers = [
|
||||
"Operating System :: OS Independent",
|
||||
]
|
||||
dependencies = [
|
||||
"async-timeout",
|
||||
"python-dotenv",
|
||||
"pyYAML>=5.1",
|
||||
"SQLAlchemy>=1.4.31",
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
"croft" : 20,
|
||||
"subdivision" : 22,
|
||||
"allotments" : 22,
|
||||
"neighbourhood" : [20, 22],
|
||||
"neighbourhood" : 24,
|
||||
"quarter" : [20, 22],
|
||||
"isolated_dwelling" : [22, 25],
|
||||
"farm" : [22, 25],
|
||||
@@ -48,17 +48,20 @@
|
||||
"" : [25, 0]
|
||||
},
|
||||
"landuse" : {
|
||||
"residential" : 22,
|
||||
"farm" : 22,
|
||||
"farmyard" : 22,
|
||||
"industrial" : 22,
|
||||
"commercial" : 22,
|
||||
"allotments" : 22,
|
||||
"retail" : 22,
|
||||
"" : [22, 0]
|
||||
"residential" : 24,
|
||||
"farm" : 24,
|
||||
"farmyard" : 24,
|
||||
"industrial" : 24,
|
||||
"commercial" : 24,
|
||||
"allotments" : 24,
|
||||
"retail" : 24,
|
||||
"" : [24, 0]
|
||||
},
|
||||
"leisure" : {
|
||||
"park" : [24, 0]
|
||||
"park" : [24, 0],
|
||||
"nature_reserve" : [24, 0],
|
||||
"garden": [25, 0],
|
||||
"common": [25, 0]
|
||||
},
|
||||
"natural" : {
|
||||
"peak" : [18, 0],
|
||||
@@ -236,6 +239,17 @@
|
||||
"administrative11" : 20
|
||||
}
|
||||
}
|
||||
},
|
||||
{ "countries" : ["jp"],
|
||||
"tags" : {
|
||||
"boundary" : {
|
||||
"administrative7" : 16,
|
||||
"administrative8" : 18,
|
||||
"administrative9" : 20,
|
||||
"administrative10" : 22,
|
||||
"administrative11" : 24
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
]
|
||||
|
||||
@@ -97,7 +97,6 @@ name:
|
||||
na: Andorra
|
||||
ne: एण्डोरा
|
||||
nl: Andorra
|
||||
nn: Andorra
|
||||
"no": Andorra
|
||||
nv: Andówa
|
||||
oc: Andòrra
|
||||
|
||||
@@ -74,6 +74,7 @@ name:
|
||||
mt: Emirati Għarab Magħquda
|
||||
my: အာရပ်စော်ဘွားများပြည်ထောင်စုနိုင်ငံ
|
||||
na: Emireitit Arabiya
|
||||
nb: De forente arabiske emirater
|
||||
ne: संयुक्त अरब इमिरेट्स
|
||||
nl: Verenigde Arabische Emiraten
|
||||
nn: Dei sameinte arabiske emirata
|
||||
|
||||
@@ -96,7 +96,6 @@ name:
|
||||
na: Apeganitan
|
||||
ne: अफगानिस्तान
|
||||
nl: Afghanistan
|
||||
nn: Afghanistan
|
||||
"no": Afghanistan
|
||||
oc: Afganistan
|
||||
om: Afgaanistaan
|
||||
|
||||
@@ -86,10 +86,8 @@ name:
|
||||
mt: Antigwa u Barbuda
|
||||
my: အင်တီဂွါနှင့် ဘာဘူဒါ
|
||||
na: Antigua me Barbuda
|
||||
nb: Antigua og Barbuda
|
||||
ne: एन्टिगुआ र बर्बुडा
|
||||
nl: Antigua en Barbuda
|
||||
nn: Antigua og Barbuda
|
||||
"no": Antigua og Barbuda
|
||||
nv: Antíígwa dóó Hashkʼaan Bikéyah Yázhí
|
||||
oc: Antigua e Barbuda
|
||||
|
||||
@@ -50,7 +50,6 @@ name:
|
||||
ms: Anguilla
|
||||
ne: एन्गुला
|
||||
nl: Anguilla
|
||||
nn: Anguilla
|
||||
"no": Anguilla
|
||||
oc: Anguilla
|
||||
pa: ਐਂਗੁਈਲਾ
|
||||
|
||||
@@ -101,7 +101,6 @@ name:
|
||||
na: Arbainiya
|
||||
ne: अल्बानिया
|
||||
nl: Albanië
|
||||
nn: Albania
|
||||
"no": Albania
|
||||
nv: Dziłigaii Bikéyah
|
||||
oc: Albania
|
||||
|
||||
@@ -99,7 +99,6 @@ name:
|
||||
na: Arminiya
|
||||
ne: आर्मेनिया
|
||||
nl: Armenië
|
||||
nn: Armenia
|
||||
"no": Armenia
|
||||
nv: Aooméénii Bikéyah
|
||||
oc: Armenia
|
||||
|
||||
@@ -90,7 +90,6 @@ name:
|
||||
na: Angora
|
||||
ne: अंगोला
|
||||
nl: Angola
|
||||
nn: Angola
|
||||
"no": Angola
|
||||
nv: Angóola
|
||||
ny: Angola
|
||||
|
||||
@@ -99,7 +99,6 @@ name:
|
||||
na: Ardjentina
|
||||
ne: अर्जेन्टिना
|
||||
nl: Argentinië
|
||||
nn: Argentina
|
||||
"no": Argentina
|
||||
nv: Béésh Łigaii Bikéyah
|
||||
oc: Argentina
|
||||
|
||||
@@ -93,6 +93,7 @@ name:
|
||||
mt: Awstrija
|
||||
my: သြစတြီးယားနိုင်ငံ
|
||||
na: Oteriya
|
||||
nb: Østerrike
|
||||
ne: अष्ट्रीया
|
||||
nl: Oostenrijk
|
||||
nn: Austerrike
|
||||
|
||||
@@ -94,7 +94,6 @@ name:
|
||||
na: Otereiriya
|
||||
ne: अष्ट्रेलिया
|
||||
nl: Australië
|
||||
nn: Australia
|
||||
"no": Australia
|
||||
nv: Nahatʼeʼiitsoh Bikéyah
|
||||
oc: Austràlia
|
||||
|
||||
@@ -96,10 +96,8 @@ name:
|
||||
mt: Ażerbajġan
|
||||
my: အဇာဘိုင်ဂျန်နိုင်ငံ
|
||||
na: Aderbaidjan
|
||||
nb: Aserbajdsjan
|
||||
ne: अजरबैजान
|
||||
nl: Azerbeidzjan
|
||||
nn: Aserbajdsjan
|
||||
"no": Aserbajdsjan
|
||||
nv: Azééwii Bikéyah
|
||||
ny: Azerbaijan
|
||||
|
||||
@@ -94,7 +94,6 @@ name:
|
||||
na: Boteniya me Erdegobina
|
||||
ne: बोस्निया र हर्जगोभिना
|
||||
nl: Bosnië en Herzegovina
|
||||
nn: Bosnia-Hercegovina
|
||||
"no": Bosnia-Hercegovina
|
||||
nv: Bosna dóó Hetsog Bikéyah
|
||||
oc: Bòsnia e Ercegovina
|
||||
|
||||
@@ -77,7 +77,6 @@ name:
|
||||
na: Barbadot
|
||||
ne: बार्बाडोस
|
||||
nl: Barbados
|
||||
nn: Barbados
|
||||
"no": Barbados
|
||||
oc: Barbados
|
||||
om: Baarbeedoos
|
||||
|
||||
@@ -29,6 +29,7 @@ name:
|
||||
lt: Bangladešas
|
||||
lv: Bangladeša
|
||||
mn: Бангладеш
|
||||
"no": Bangladesh
|
||||
pl: Bangladesz
|
||||
pt: Bangladesh
|
||||
ru: Бангладеш
|
||||
|
||||
@@ -95,10 +95,8 @@ name:
|
||||
mt: Belġju
|
||||
my: ဘယ်လ်ဂျီယမ်နိုင်ငံ
|
||||
na: Berdjiyum
|
||||
nb: Belgia
|
||||
ne: बेल्जियम
|
||||
nl: België
|
||||
nn: Belgia
|
||||
"no": Belgia
|
||||
oc: Belgica
|
||||
om: Beeljiyeem
|
||||
|
||||
@@ -88,7 +88,6 @@ name:
|
||||
na: Burkinabato
|
||||
ne: बुर्किना फासो
|
||||
nl: Burkina Faso
|
||||
nn: Burkina Faso
|
||||
"no": Burkina Faso
|
||||
oc: Burkina Faso
|
||||
om: Burkinaa Faasoo
|
||||
|
||||
@@ -93,7 +93,6 @@ name:
|
||||
na: Borgeriya
|
||||
ne: बुल्गेरिया
|
||||
nl: Bulgarije
|
||||
nn: Bulgaria
|
||||
"no": Bulgaria
|
||||
nv: Bálgaa Bikéyah
|
||||
oc: Bulgaria
|
||||
|
||||
@@ -91,7 +91,6 @@ name:
|
||||
na: Bahrain
|
||||
ne: बहराइन
|
||||
nl: Bahrein
|
||||
nn: Bahrain
|
||||
"no": Bahrain
|
||||
oc: Bahrayn
|
||||
om: Baahireen
|
||||
|
||||
@@ -88,7 +88,6 @@ name:
|
||||
na: Burundi
|
||||
ne: बुरूण्डी
|
||||
nl: Burundi
|
||||
nn: Burundi
|
||||
"no": Burundi
|
||||
oc: Burundi
|
||||
om: Buruundii
|
||||
|
||||
@@ -91,7 +91,6 @@ name:
|
||||
na: Benin
|
||||
ne: बेनिन
|
||||
nl: Benin
|
||||
nn: Benin
|
||||
"no": Benin
|
||||
oc: Benin
|
||||
om: Beeniin
|
||||
|
||||
@@ -25,6 +25,7 @@ name:
|
||||
lv: Bermudu salas
|
||||
mk: Бермуда
|
||||
mn: Бермудын Арал
|
||||
"no": Bermuda
|
||||
oc: Bermudas
|
||||
pl: Bermudy
|
||||
pt: Bermudas
|
||||
|
||||
@@ -91,7 +91,6 @@ name:
|
||||
na: Brunei
|
||||
ne: ब्रुनेई
|
||||
nl: Brunei
|
||||
nn: Brunei
|
||||
"no": Brunei
|
||||
ny: Brunei
|
||||
oc: Brunei
|
||||
|
||||
@@ -94,7 +94,6 @@ name:
|
||||
na: Boribiya
|
||||
ne: बोलिभिया
|
||||
nl: Bolivia
|
||||
nn: Bolivia
|
||||
"no": Bolivia
|
||||
nv: Bolíbiya
|
||||
oc: Bolívia
|
||||
|
||||
@@ -99,7 +99,6 @@ name:
|
||||
na: Bradir
|
||||
ne: ब्राजिल
|
||||
nl: Brazilië
|
||||
nn: Brasil
|
||||
"no": Brasil
|
||||
nv: Bwazííl
|
||||
oc: Brasil
|
||||
|
||||
@@ -85,7 +85,6 @@ name:
|
||||
na: Bahamat
|
||||
ne: बहामस
|
||||
nl: Bahama's
|
||||
nn: Bahamas
|
||||
"no": Bahamas
|
||||
oc: Las Bahamas
|
||||
om: Bahamaas
|
||||
|
||||
@@ -92,7 +92,6 @@ name:
|
||||
na: Butan
|
||||
ne: भूटान
|
||||
nl: Bhutan
|
||||
nn: Bhutan
|
||||
"no": Bhutan
|
||||
nv: Bikéyah
|
||||
oc: Botan
|
||||
|
||||
@@ -90,7 +90,6 @@ name:
|
||||
na: Botwana
|
||||
ne: बोत्स्वाना
|
||||
nl: Botswana
|
||||
nn: Botswana
|
||||
"no": Botswana
|
||||
nv: Tswana Dineʼé Bikéyah
|
||||
oc: Botswana
|
||||
|
||||
@@ -83,8 +83,7 @@ name:
|
||||
na: Berarut
|
||||
ne: बेलारुस
|
||||
nl: Wit-Rusland
|
||||
nn: Kviterussland
|
||||
"no": Hviterussland
|
||||
"no": Belarus
|
||||
oc: Bielorussia
|
||||
or: ବେଲାଋଷ
|
||||
os: Белорусси
|
||||
|
||||
@@ -85,7 +85,6 @@ name:
|
||||
na: Berij
|
||||
ne: बेलिज
|
||||
nl: Belize
|
||||
nn: Belize
|
||||
"no": Belize
|
||||
oc: Belize
|
||||
om: Beliiz
|
||||
|
||||
@@ -94,7 +94,6 @@ name:
|
||||
na: Kanada
|
||||
ne: क्यानाडा
|
||||
nl: Canada
|
||||
nn: Canada
|
||||
"no": Canada
|
||||
nv: Deeteel Bikéyah
|
||||
oc: Canadà
|
||||
|
||||
@@ -74,7 +74,6 @@ name:
|
||||
na: Ripubrikit Engame Kongo
|
||||
ne: प्रजातान्त्रिक गणतन्त्र कंगो
|
||||
nl: Democratische Republiek Congo
|
||||
nn: Den demokratiske republikken Kongo
|
||||
"no": Den demokratiske republikken Kongo
|
||||
nv: Kéyah Káango Shádiʼááhjí Siʼánígíí
|
||||
oc: Republica Democratica de Còngo
|
||||
|
||||
@@ -72,6 +72,7 @@ name:
|
||||
mt: Repubblika Ċentru-Afrikana
|
||||
my: ဗဟိုအာဖရိကသမ္မတနိုင်ငံ
|
||||
na: Ripubrikin Aprika Yugaga
|
||||
nb: Den sentralafrikanske republikk
|
||||
ne: मध्य अफ्रिकी गणतन्त्र
|
||||
nl: Centraal-Afrikaanse Republiek
|
||||
nn: Den sentralafrikanske republikken
|
||||
|
||||
@@ -70,7 +70,6 @@ name:
|
||||
na: Ripubrikin Kongo
|
||||
ne: कङ्गो
|
||||
nl: Congo-Brazzaville
|
||||
nn: Kongo-Brazzaville
|
||||
"no": Republikken Kongo
|
||||
nv: Kéyah Káango Náhookǫsjí Siʼánígíí
|
||||
oc: Republica de Còngo
|
||||
|
||||
@@ -84,7 +84,6 @@ name:
|
||||
na: Switzerland
|
||||
ne: स्विजरल्याण्ड
|
||||
nl: Zwitserland
|
||||
nn: Sveits
|
||||
"no": Sveits
|
||||
nv: Swis Bikéyah
|
||||
oc: Soïssa
|
||||
|
||||
@@ -75,6 +75,7 @@ name:
|
||||
mt: Kosta tal-Avorju
|
||||
my: အိုင်ဗရီကို့စ်နိုင်ငံ
|
||||
na: Aibori Kot
|
||||
nb: Elfenbenskysten
|
||||
ne: आइभरी कोस्ट
|
||||
nl: Ivoorkust
|
||||
nn: Elfenbeinskysten
|
||||
|
||||
@@ -79,6 +79,7 @@ name:
|
||||
ms: Kepulauan Cook
|
||||
mt: Gżejjer Cook
|
||||
my: ကွတ် ကျွန်းစု
|
||||
nb: Cookøyene
|
||||
ne: कुक टापु
|
||||
nl: Cookeilanden
|
||||
nn: Cookøyane
|
||||
|
||||
@@ -103,7 +103,6 @@ name:
|
||||
na: Tsire
|
||||
ne: चिली
|
||||
nl: Chili
|
||||
nn: Chile
|
||||
"no": Chile
|
||||
nv: Chíilii
|
||||
ny: Chile
|
||||
|
||||
@@ -79,7 +79,6 @@ name:
|
||||
na: Kamerun
|
||||
ne: क्यामेरून
|
||||
nl: Kameroen
|
||||
nn: Kamerun
|
||||
"no": Kamerun
|
||||
nv: Táłtłʼááh Chʼosh Daadánígíí Bitooh
|
||||
oc: Cameron
|
||||
|
||||
@@ -101,10 +101,8 @@ name:
|
||||
mt: Ċina
|
||||
my: တရုတ်
|
||||
na: Tsiene
|
||||
nb: Kina
|
||||
ne: चीन
|
||||
nl: China
|
||||
nn: Kina
|
||||
"no": Kina
|
||||
nv: Tsiiʼyishbizhí Dineʼé Bikéyah
|
||||
ny: China
|
||||
|
||||
@@ -82,7 +82,6 @@ name:
|
||||
na: Korombiya
|
||||
ne: कोलम्बिया
|
||||
nl: Colombia
|
||||
nn: Colombia
|
||||
"no": Colombia
|
||||
nv: Kolámbiya
|
||||
oc: Colómbia
|
||||
|
||||
@@ -81,7 +81,6 @@ name:
|
||||
na: Kosta Rika
|
||||
ne: कोस्टारिका
|
||||
nl: Costa Rica
|
||||
nn: Costa Rica
|
||||
"no": Costa Rica
|
||||
oc: Còsta Rica
|
||||
om: Kostaa Rikaa
|
||||
|
||||
@@ -78,7 +78,6 @@ name:
|
||||
na: Kiuba
|
||||
ne: क्युबा
|
||||
nl: Cuba
|
||||
nn: Cuba
|
||||
"no": Cuba
|
||||
nv: Kyóoba
|
||||
oc: Cuba
|
||||
|
||||
@@ -36,6 +36,7 @@ name:
|
||||
mk: Зелен ’Рт
|
||||
mn: Кабо-Верде
|
||||
nl: Kaapverdië
|
||||
"no": Kapp Verde
|
||||
pl: Republika Zielonego Przylądka
|
||||
pt: Cabo Verde
|
||||
ru: Кабо-Верде
|
||||
|
||||
@@ -77,10 +77,8 @@ name:
|
||||
mt: Ċipru
|
||||
my: ဆိုက်ပရပ်စ်နိုင်ငံ
|
||||
na: Taiprus
|
||||
nb: Kypros
|
||||
ne: साइप्रस
|
||||
nl: Cyprus
|
||||
nn: Kypros
|
||||
"no": Kypros
|
||||
nv: Béésh Łichíiʼii Bikéyah
|
||||
oc: Chipre
|
||||
|
||||
@@ -93,7 +93,6 @@ name:
|
||||
na: Ripubrikin Tsiek
|
||||
ne: चेक गणतन्त्र
|
||||
nl: Tsjechië
|
||||
nn: Tsjekkia
|
||||
"no": Tsjekkia
|
||||
nv: Chek Bikéyah
|
||||
oc: Republica Chèca
|
||||
|
||||
@@ -99,7 +99,6 @@ name:
|
||||
na: Djermani
|
||||
ne: जर्मनी
|
||||
nl: Duitsland
|
||||
nn: Tyskland
|
||||
"no": Tyskland
|
||||
nv: Béésh Bichʼahii Bikéyah
|
||||
oc: Alemanha
|
||||
|
||||
@@ -74,7 +74,6 @@ name:
|
||||
na: Djibuti
|
||||
ne: जिबुटी
|
||||
nl: Djibouti
|
||||
nn: Djibouti
|
||||
"no": Djibouti
|
||||
nv: Jibótii
|
||||
oc: Jiboti
|
||||
|
||||
@@ -85,7 +85,6 @@ name:
|
||||
na: Denemark
|
||||
ne: डेनमार्क
|
||||
nl: Denemarken
|
||||
nn: Danmark
|
||||
"no": Danmark
|
||||
nv: Déinish Dineʼé Bikéyah
|
||||
oc: Danemarc
|
||||
|
||||
@@ -28,6 +28,7 @@ name:
|
||||
lv: Dominika
|
||||
mn: Доминика
|
||||
nl: Dominica
|
||||
"no": Dominica
|
||||
pl: Dominika
|
||||
pt: Dominica
|
||||
ru: Доминика
|
||||
|
||||
@@ -69,6 +69,7 @@ name:
|
||||
mt: Repubblika Dominikana
|
||||
my: ဒိုမီနီကန်သမ္မတနိုင်ငံ
|
||||
na: Ripubrikin Dominika
|
||||
nb: Den dominikanske republikk
|
||||
ne: डोमिनिकन गणतन्त्र
|
||||
nl: Dominicaanse Republiek
|
||||
nn: Den dominikanske republikken
|
||||
|
||||
@@ -93,7 +93,6 @@ name:
|
||||
na: Ardjiriya
|
||||
ne: अल्जेरिया
|
||||
nl: Algerije
|
||||
nn: Algerie
|
||||
"no": Algerie
|
||||
nv: Aljííya
|
||||
ny: Algeria
|
||||
|
||||
@@ -77,7 +77,6 @@ name:
|
||||
na: Ekwador
|
||||
ne: इक्वेडर
|
||||
nl: Ecuador
|
||||
nn: Ecuador
|
||||
"no": Ecuador
|
||||
nv: Kéyah Nahasdzáán Ałníiʼgi Siʼánígíí
|
||||
oc: Eqüator
|
||||
|
||||
@@ -85,7 +85,6 @@ name:
|
||||
na: Etoniya
|
||||
ne: इस्टोनिया
|
||||
nl: Estland
|
||||
nn: Estland
|
||||
"no": Estland
|
||||
nv: Ééstii Bikéyah
|
||||
oc: Estònia
|
||||
|
||||
@@ -97,7 +97,6 @@ name:
|
||||
na: Idjipt
|
||||
ne: मिश्र
|
||||
nl: Egypte
|
||||
nn: Egypt
|
||||
"no": Egypt
|
||||
nv: Ííjip
|
||||
oc: Egipte
|
||||
|
||||
@@ -10,7 +10,10 @@ name:
|
||||
fr: République arabe sahraouie démocratique
|
||||
it: Repubblica Araba Democratica dei Sahrawi
|
||||
lt: Sacharos Arabų Demokratinė Respublika
|
||||
nb: Den saharawiske arabiske demokratiske republikk
|
||||
nl: Arabische Democratische Republiek Sahara
|
||||
nn: Den saharawiske arabiske demokratiske republikken
|
||||
"no": Den saharawiske arabiske demokratiske republikk
|
||||
pt: República Árabe Saaraui Democrática
|
||||
ru: Сахарская Арабская Демократическая Республика
|
||||
ur: صحراوی عرب عوامی جمہوریہ
|
||||
|
||||
@@ -77,7 +77,6 @@ name:
|
||||
na: Eritrea
|
||||
ne: एरिट्रिया
|
||||
nl: Eritrea
|
||||
nn: Eritrea
|
||||
"no": Eritrea
|
||||
oc: Eritrèa
|
||||
om: Eritrea
|
||||
|
||||
@@ -88,10 +88,8 @@ name:
|
||||
mt: Spanja
|
||||
my: စပိန်နိုင်ငံ
|
||||
na: Pain
|
||||
nb: Spania
|
||||
ne: स्पेन
|
||||
nl: Spanje
|
||||
nn: Spania
|
||||
"no": Spania
|
||||
nv: Dibé Diníí Bikéyah
|
||||
oc: Espanha
|
||||
|
||||
@@ -92,7 +92,6 @@ name:
|
||||
na: Itiyopiya
|
||||
ne: इथियोपिया
|
||||
nl: Ethiopië
|
||||
nn: Etiopia
|
||||
"no": Etiopia
|
||||
nv: Iithiyópya
|
||||
oc: Etiopia
|
||||
|
||||
@@ -92,7 +92,6 @@ name:
|
||||
na: Finland
|
||||
ne: फिनल्याण्ड
|
||||
nl: Finland
|
||||
nn: Finland
|
||||
"no": Finland
|
||||
nv: Nahoditsʼǫʼłání
|
||||
oc: Finlàndia
|
||||
|
||||
@@ -73,7 +73,6 @@ name:
|
||||
na: Bidji
|
||||
ne: फिजी
|
||||
nl: Fiji
|
||||
nn: Fiji
|
||||
"no": Fiji
|
||||
nv: Fííjii
|
||||
oc: Fiji
|
||||
|
||||
@@ -68,6 +68,7 @@ name:
|
||||
ms: Kepulauan Falkland (Islas Malvinas)
|
||||
mt: Falkland Islands
|
||||
my: ဖောက်ကလန် ကျွန်းစု
|
||||
nb: Falklandsøyene
|
||||
ne: फक्ल्याण्ड टापुहरू (इज्लास माल्भिनास)
|
||||
nl: Falklandeilanden
|
||||
nn: Falklandsøyane
|
||||
|
||||
@@ -31,7 +31,7 @@ name:
|
||||
lv: Mikronēzija
|
||||
mn: Микронези
|
||||
nl: Micronesia
|
||||
"no": Mikronesia
|
||||
"no": Mikronesiaføderasjonen
|
||||
oc: Estats Federats de Micronesia
|
||||
pl: Mikronezja
|
||||
ru: Федеративные Штаты Микронезии
|
||||
|
||||
@@ -63,6 +63,7 @@ name:
|
||||
mr: फेरो द्वीपसमूह
|
||||
ms: Kepulauan Faroe
|
||||
mt: Gżejjer Faroe
|
||||
nb: Færøyene
|
||||
ne: फरोइ टापु
|
||||
nl: Faeröer
|
||||
nn: Færøyane
|
||||
|
||||
@@ -96,7 +96,6 @@ name:
|
||||
na: Prant
|
||||
ne: फ्रान्स
|
||||
nl: Frankrijk
|
||||
nn: Frankrike
|
||||
"no": Frankrike
|
||||
nv: Dáághahii Dineʼé Bikéyah
|
||||
oc: França
|
||||
|
||||
@@ -77,7 +77,6 @@ name:
|
||||
na: Gabun
|
||||
ne: गाबोन
|
||||
nl: Gabon
|
||||
nn: Gabon
|
||||
"no": Gabon
|
||||
nv: Gabǫ́ǫ́
|
||||
oc: Gabon
|
||||
|
||||
@@ -98,7 +98,6 @@ name:
|
||||
na: Ingerand
|
||||
ne: संयुक्त अधिराज्य
|
||||
nl: Verenigd Koninkrijk
|
||||
nn: Storbritannia
|
||||
"no": Storbritannia
|
||||
nv: Tótaʼ Dineʼé Bikéyah
|
||||
oc: Reialme Unit
|
||||
|
||||
@@ -27,6 +27,7 @@ name:
|
||||
lv: Grenāda
|
||||
mn: Гренада
|
||||
nl: Grenada
|
||||
"no": Grenada
|
||||
pl: Granada
|
||||
pt: Granada
|
||||
ru: Гренада
|
||||
|
||||
@@ -78,7 +78,6 @@ name:
|
||||
na: Djiordjiya
|
||||
ne: जर्जिया (देश)
|
||||
nl: Georgië
|
||||
nn: Georgia
|
||||
"no": Georgia
|
||||
nv: Jóojah (Kéyah)
|
||||
oc: Georgia (Caucàs)
|
||||
|
||||
@@ -55,7 +55,6 @@ name:
|
||||
ms: Guernsey
|
||||
ne: गुर्न्जी
|
||||
nl: Guernsey
|
||||
nn: Guernsey
|
||||
"no": Guernsey
|
||||
oc: Guernesey
|
||||
os: Гернси
|
||||
|
||||
@@ -83,7 +83,6 @@ name:
|
||||
na: Gana
|
||||
ne: घाना
|
||||
nl: Ghana
|
||||
nn: Ghana
|
||||
"no": Ghana
|
||||
nv: Gáana
|
||||
oc: Ghana
|
||||
|
||||
@@ -63,7 +63,6 @@ name:
|
||||
my: ဂျီဘရော်လ်တာ
|
||||
ne: गिब्राल्टार
|
||||
nl: Gibraltar
|
||||
nn: Gibraltar
|
||||
"no": Gibraltar
|
||||
oc: Gibartar
|
||||
or: ଜିବ୍ରାଲେଟର
|
||||
|
||||
@@ -72,7 +72,6 @@ name:
|
||||
my: ဂရင်းလန်ကျွန်း
|
||||
ne: ग्रीनल्याण्ड
|
||||
nl: Groenland
|
||||
nn: Grønland
|
||||
"no": Grønland
|
||||
nv: Haʼaʼaahjí Hakʼaz Dineʼé Bikéyah
|
||||
oc: Groenlàndia
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user