Я хотел бы создать свою собственную векторную карту из проекта openmaptiles и удалить ненужные поля, поэтому я пытаюсь фильтровать пользовательские слои.
например, для слоя WATER : мне нужен только столбец геометрии, поэтому в файле water.yaml я удаляю только другие столбцы из запроса, например
datasource:
query: (SELECT geometry FROM layer_water(!bbox!, z(!scale_denominator!))) AS t
~ 1 год go все было в порядке. Я не загружал новый .pbf, я использовал сохраненный, но docker изображения были извлечены и обновлены. Сейчас это не работает. Выдает ошибку
ValueError: Declared fields in layer 'water' do not match the fields received from a query:
These fields were declared, but not returned by the query: class
Поле действительно объявлено в water.yaml:
fields:
class:
description: |
All water polygons from [OpenStreetMapData](http://openstreetmapdata.com/) have the class `ocean`.
Water bodies are classified as `lake` or `river` for water bodies with the [`waterway`](http://wiki.openstreetmap.org/wiki/Key:waterway) tag.
values:
- ocean
- lake
- river
При удалении этого блока генерируется ошибка в
docker-compose run --rm openmaptiles-tools-latest generate-sql openmaptiles.yaml > build/tileset.sql
Makefile:68: recipe for target 'build/tileset.sql' failed
make: *** [build/tileset.sql] Error 1
Тогда я откройте файл water. sql и в функции layer_water (bbox geometry, zoom_level int) удалите поле класса:
CREATE OR REPLACE FUNCTION layer_water (bbox geometry, zoom_level int)
RETURNS TABLE(geometry geometry) AS $$
SELECT geometry FROM (
-- etldoc: water_z0 -> layer_water:z0
SELECT * FROM water_z0 WHERE zoom_level = 0
UNION ALL
...
Генерация сбоев в build / tileset. sql снова. Моя следующая попытка - я удалил поле класса в каждые VIEW (water_z0, water_z1, ... water_z14). Нет успеха При клонировании нового проекта openmaptiles, загрузки нового .pbf и создания карты по умолчанию - ОК. Но при попытке все мои шаги для фильтрации, безуспешно. Я заметил, что в запрос добавлено 2 новых поля (перемежающееся, brunnel) (water.yaml), и запросы изменились каким-то образом в воде. sql (%% FIELD_MAPPING: class %%). Я полагаю, дело в том, что изображения значительно изменились. Я надеюсь, что все еще возможно редактировать и фильтровать слои.
Где я не прав? Каким образом я могу отфильтровать столбцы и значения слоев? (например, в случае, если я хотел бы использовать только прерывистый режим?) Любая помощь приветствуется!