This adds a field called `official` to `highway={path,footway,cycleway,bridleway}` features in the `transportation` layer. The field's value is:
- `0` if the OSM element is tagged `informal=yes`
- `1` if the feature has an `operator` in OSM (or is tagged `informal=no`)
- unset otherwise (this is the large majority of cases in the data today, especially when considering sidewalks, bike lanes, etc that aren't typically tagged with an `operator`).
**Questions I have about whether this PR is correct:**
1. The `official` field is conceptually an optional boolean. I chose to make it an `int` because I saw that existing boolean fields in the tiles (e.g. `intermittent` on waterways, `toll` on roads) have been implemented as 0/1 integers. Is this the right type for this field?
2. I added `description` and `values` fields to the transportation layer's `mapping.yaml` file. Is there anything else I should do to document this new field? Not sure how the schema docs on opentrailmap.org are built, but I am assuming they're generated from these mapping files somehow.
Presently, swimming pool labels are rendered as lake points in the `water_name` layer. This produces absurd results as follows:
In #1321, we made a separate swimming pool class so that they could be differentiated from lakes. However, we did not adjust the labels.
In fact, we now have two nodes - a `water_name` node and a `poi` node:
To correct this, this PR simply removes swimming pool labels from the `water_name` layer, as labeling a swimming pool the same way as a lake is clearly wrong. If there is a need to put labels on swimming pools, styles can continue to use the nodes available in the `poi` layer.
Fixes the bad orientation of a letter reported in https://github.com/openmaptiles/openmaptiles/issues/1750. Fixes any other potential weird letter rendering from zoom level 17 to 20 by making the symbol-spacing bigger at these zooms.
I noticed that OpenMapTiles generate lake labels only when run for the first time. After that, it never recreates `osm_water_lakeline` and `osm_water_point` tables, so when I generate one region after another, only the first one has lake labels. This PR fixes that.
* Fix text-field expressions in POI
- Removed text-field expressions from transport, place of worship and accommodation.
- The language switcher wasn't able to parse them and they are not neccessary in the style.
- Added `"text-optional": true` to Accommodation - if both icon and text can't fit, only icon will be displayed, which simulates a bit the previous behaviour.
* Fix filter in City layer
Fixed filter, Istanbul was missing.
This PR addresses a pg_deadlock error that would cause an update to fail if a `select getmvt` was queried during update. The deadlock occurred due to an ALTER TABLE DROP COLUMN operation on temporary columns ( `new_source_ids` and `old_source_ids`) in some linestring tables.
**Changes:**
* instead of adding/dropping the columns during update, they are now updated and set to NULL.
* Added new indexes on the source_ids columns to speed up the UPDATE.
* Will refresh `osm_park_polygon_dissolve_z4` concurrently in `park_polygon.refresh()` to avoid blocking.
Co-authored-by: Patrik Sylve <patrik.sylve@t-kartor.com>
Some of the `update_osm_${LAYER}`-functions, which are executed by triggers on updates, execute an UPDATE statement on the same tables that have these triggers. This causes the trigger functions `flag` and `store` to run multiple times for one record.
For instance, if I add log in the trigger functions and run an INSERT on `osm_housenumber_point`, this output is generated:
```
NOTICE: Store
NOTICE: Flag
NOTICE: Refresh housenumber
NOTICE: Flag
NOTICE: Store
NOTICE: Flag
INSERT 0 1
```
If we limit the triggers from executing if they are called from another trigger using `pg_trigger_depth() < 1`, the triggers will only be triggered once per record:
```
NOTICE: Store
NOTICE: Flag
NOTICE: Refresh housenumber
INSERT 0 1
```
This will prevent redunant executions and might improve update performance.
Co-authored-by: Patrik Sylve <patrik.sylve@t-kartor.com>
I noticed slow performance in `getmvt` when generating tiles at zoom levels ~ 0-8.
The issue was due to CASE blocks in the `transportation` and `poi` layers, which were processing unneccessary rows at lower zoom levels. To optimize this I added a pre-filter on `zoom_level` to reduce the workload.
In my tests, I timed the query `select getmvt(0,0,0);`.
`area=europe/united-kingdom`:
* Before: ~17 seconds
* With this fix: ~80 ms
`area=planet`:
* Before: have not yet timed it, but i believe it was around 15min if i remember correctly
* With this fix: ~10 seconds
Co-authored-by: Patrik Sylve <patrik.sylve@t-kartor.com>
Removed update trigger on osm_boundary_polygon, which attempted to run `REFRESH MATERIALIZED VIEW` on the table `osm_boundary_polygon_gen_z5`, resulting in the error: "osm_boundary_polygon_gen_z5" is not a materialized view
The issue is transportation layer filter format not match maplibre style spec
it cause tileserver-gl errors when parse the style.json:
---------
Co-authored-by: Double Max <max@ground-map.com>
Some US roads were not included in tiles, because the `ST_AsMVTGeom` did not transform geometry (result was NULL). This PR is trying to fix the geometry for `ST_AsMVTGeom`, even if the geometry is marked as valid (`ST_IsValid`). The odd geometry was caused by simplification when it could create `LINESTRING(1 1, 2 2, 1 1)` linestring, which in some cases was not converted into MVT.
Also, for the US (on zoom 4) keeps just the network `us-interstate` and the `highway=motorway` or `osm_national_network(network)` for the rest of the world.
Drop the main table for layer `transportation_name` layer before creation.
For the first SQL import, it is OK, but for the second import (e.g. for a different country by `import-osm area=yyy`) without dropping the whole database it will keep `osm_transportation_name_network` filled with data from the first import (after first `import-sql` step)
This PR will drop the already-filled table from the first import and insert data from the reimported area.
Partial revert the `e-road` and `a-road` added in https://github.com/openmaptiles/openmaptiles/pull/1619.
This PR leads to breaking the change of `network` and `ref` attributes for roads, which are not included in `osm_route_member_network_type`.
This PR fixes two things:
- remove disputed name like `ne_*m_ogc_fid` from lines
- use South Sudan disputed boundary from `ne_10m_admin_0_boundary_lines_land_disputed` so there is no gap.
This PR reduces transportation_name layer fragmentation by ensuring the short brunnel segments are merged rather than dropped from view.
---------
Co-authored-by: Tomas Pohanka <TomPohys@gmail.com>
This PR fixes boundary layer at low zoom levels:
-z4 - remove maritime boundary (Peru, northern and southern end of boundary between Canada and Alaska).
-z1-z4 - do not mix disputed boundary from NE and OSM - linestrings got duplicated. Use only NE data (z0-z4), then OSM data (z5+)
Fixes#1640
This ensures that place and poi points computed from areas result in a point node that is actually inside the area that it's derived from. Unusual shaped areas (like a banana shape, for example) may produce points that aren't actually contained.
The main goal is to improve consistency and reduce the number of poi without an icon.
- Remove music from poi cultural, music has only two subclasses music and musical_instrument, both are styled as poi shop
- Remove arts_centre from poi shop, it's already styled as poi cultural
- Remove chocolate icon, chocolate uses confectionery icon (see: https://github.com/openmaptiles/openmaptiles/pull/1628)
- Remove references to ice_cream class from poi shop
- Add missing gallery icon and move it to poi cultural (see: https://wiki.openstreetmap.org/wiki/Tag:tourism%3Dgallery)
- Use the icons alcohol, newsagent, perfumery, trade respectively for wine, kiosk, perfume and wholesale.
- Add a generic fallback icon for shops
This PR replaces the `route_N` attribute scheme with individual attributes for name and colour on routes. Thus you will have:
* `route_N_network` to hold the route `network` value
* `route_N_ref` to hold the route `ref` value
* `route_N_name` to hold the route `name` value
* `route_N_colour` to hold the route `colour` or `ref:colour` value
According to [OpenMapTiles Schema](https://openmaptiles.org/schema/) ice_cream should be a class, not a subclass of the shop, so I think it makes more sense to remove ice_cream from the shop class. I tested this, and after the change, both amenity=ice_cream and shop=ice_cream OSM tags get class=ice_cream + subclass=ice_cream, which is fine, because both OSM tags shop=ice_cream and amenity=ice_cream represents the same thing
The next thing I did was to change the color of the ice_cream icon.
This is a follow-up on https://github.com/openmaptiles/openmaptiles/pull/1604 . Seminole Nation is shown in the screenshot there with rank 3 while based on area it should be 1. This PR fixes `area_rank()` function to handle areas greater than 160000000, e.g. this fixes#1622 .
Co-authored-by: Paul Norman <penorman@mac.com>
This PR adds indigenous lands to the `boundary` layer by adding new area features for these objects, along with generalization up to z4. It borrows heavily from the technical processing chain of the `park` layer.
I added new `class`, `name`, and `name:xx` attributes to the boundary layer, in order to support the new area features. Should we (or someone extending this schema) come up with new objects to place in the boundary layer in the future, `class` would support additional categories.
Adding source_ids column if not exist in the table
- osm_transportation_merge_linestring_gen_z11
- osm_transportation_merge_linestring_gen_z8
- osm_transportation_name_linestring
- osm_important_waterway_linestring
This PR is a **documentation change only**. It documents the fact that `name:xx` values are present in the tiles and documents that `name_de` and `name_en` will be removed in a future release in favor of `name:de` and `name:en` respectively.
Fixes#1606
Unblocks ZeLonewolf/openstreetmap-americana#1022
This PR is a bugfix which ensures that `amenity=university` is encoded as `class=college` rather than `class=office`. It's required because of a subclass collision for `university`, which exists under both class values.
#1313 added `expressway` tagging to the transportation layer. However, this also added the `expressway` attributes to ramps where it doesn't make sense (ramps by definition are controlled-access roads in all cases). This PR corrects this by dropping the `expressway` attribute from ramps where it doesn't make sense to do so.
See also ZeLonewolf/openstreetmap-americana#1017
Omitted values include:
* office=yes ... too generic
* office=vacant ... not really a POI
* deprecated values (like office=administrative)
* tags that don't have a clear meaning (like office=camping,
office=healthcare, office=transport, office=design)
* tags where another tag is used more often, e.g:
office=religion is used more often than office=parish
office=construction_company is used more often than office=construction
office=engineer is used more often than office=engineering
---------
Co-authored-by: Tomas Pohanka <TomPohys@gmail.com>
This PR removes the `oneway` attribute from ferry lines and rail lines. These attributes don't really make sense for these feature classes and they are not typically rendered in general-purpose maps.