Получение внешнего пути региона

Я хочу получить формы области через эстакаду, которая определяется первыми двумя буквами почтового индекса. Этот запрос:

rel["boundary"="postal_code"][postal_code~"32..."];
out geom;

дает мне ряд областей, которые я хочу объединить. Меня интересует путь внешней границы, то есть просто одна большая область вместо множества маленьких.

Вы можете увидеть результат на http://overpass-turbo.eu/s/8il.

Можно ли добиться этого только через запрос эстакады? Если нет, то каким может быть наиболее эффективный способ предоставить приложению JavaScript желаемый результат?


person JanoschZacha    schedule 19.03.2015    source источник


Ответы (1)


Overpass API не поддерживает это из коробки. После получения всех соответствующих почтовых индексов из Overpass API вам нужно что-то вроде шага постобработки вогнутого корпуса. Как вы указали в комментарии ниже, одним из примеров выполнения этого в Javascript может быть http://andriiheonia.github.io/hull/. Вы также можете взглянуть на gis.stackexchange для поиска альтернативных подходов (https://gis.stackexchange.com/questions/tagged/concave-hull).

Если вы просто хотите настроить внешний вид в Overpass Turbo, чтобы полигоны выглядели как одна большая область, вам следует взглянуть на включенные функции MapCSS. Вот небольшой пример, который можно использовать в качестве отправной точки: http://overpass-turbo.eu/s/8la

введите здесь описание изображения

Кстати: я бы рекомендовал ограничить ваш запрос определенной областью/блоком, так как ваш исходный запрос также возвращает некоторые данные из России.

person mmd    schedule 20.03.2015
comment
Я полностью согласен с тем, что ограничение запроса необходимо. Однако лучшее, что я смог придумать, это {{geocodeArea:Germany}}->.searchArea; ( rel["boundary"="postal_code"][postal_code~"32..."](area.searchArea); ); out geom; Кажется, что этот запрос даже не завершается. По крайней мере, теперь это занимает минуты, а не секунды. Как исправить? - person JanoschZacha; 21.03.2015
comment
Я только что повторил попытку. Мой первый подход занимает около 5 секунд. Включение geocodeArea означает, что это занимает примерно 1 минуту. Подход bbox также требует 1 минуты - и в его текущей версии дает пустой результат. Меня действительно озадачивает, что ограничение запроса должно занимать больше времени, чем неограниченный поиск. - person JanoschZacha; 21.03.2015
comment
Я обновил свой предыдущий ответ, см. новый запрос выше. Время отклика: 5 с. - person mmd; 21.03.2015
comment
Большое спасибо, я могу подтвердить время ответа на этот раз. Подход, заключающийся в том, чтобы просто сделать небольшие области похожими на одну область, удалив визуальные границы, может работать для меня на данный момент. Давайте добавим к вашему ответу несколько подсказок, как можно продвинуться дальше в будущем. На следующем этапе нам может понадобиться вычислить вогнутую оболочку. Для этого существует JavaScript-реализация быстрого алгоритма на github. При необходимости мы могли бы вывести данные эстакады в формате json для этого, добавив [out:json]; в первой строке. - person JanoschZacha; 22.03.2015
comment
Ок, отлично. Я добавил еще несколько указателей в свой ответ. Если вы удовлетворены, не забудьте проголосовать / принять ответ. Спасибо - person mmd; 22.03.2015
comment
Идеальный. Большое тебе спасибо. - person JanoschZacha; 22.03.2015