Фильтровать поля и значения в слоях openmaptiles при создании карты - PullRequest
0 голосов
/ 13 февраля 2020

Я хотел бы создать свою собственную векторную карту из проекта 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 %%). Я полагаю, дело в том, что изображения значительно изменились. Я надеюсь, что все еще возможно редактировать и фильтровать слои.

Где я не прав? Каким образом я могу отфильтровать столбцы и значения слоев? (например, в случае, если я хотел бы использовать только прерывистый режим?) Любая помощь приветствуется!

...