Как импортировать в базу только нужные данные из OSM?
Сразу оговорюсь: с нарезкой по регионам – ясно. В частности, пока сервер у нас пробный и еле тянет взял береговую линию и Москву с гислаба, залил, исправил стили мапника как требовалось (задача - карта без подписей), всё рендерится – хорошо.
Но вот теперь хотелось бы чтобы на карте присутствовали границы государств (сейчас они есть почему-то только для нескольких зумов), а еще лучше – регионов и областей (хотя бы РФ).
Как это вынуть из OSM-данных, пока не понял. Импортировать весь мир и потом самому вынуть нужные по тегам типы данных? Подскажите хороший материал.
Попробую, спасибо. Но в таком случае для границ государств мне нужно тащить весь мир и конвертировать и фильтровать его локально перед загрузкой на сервер? Пункт 3 конечно знаком.
Если не хотите грузить весь мир, а вам нужна только Россия, можете воспользоваться Overpass API, обойдя все интересующие вас субъекты федерации и модифицировав запрос под нужный вам уровень административного деления.
Пример запроса через Overpass Turbo overpass-turbo.eu/s/lIW (осторожно, тормозит)
Документация https://wiki.openstreetmap.org/wiki/Overpass_API
Разумеется, я именно с гислаба и для пробы брал регион (только Москва). Проблем в том, что мне нужны данные именно по всему миру, но очень мало - только границы государств. Карта у нас типа "контурной" для учебных заданий. Собственно свой тайловый сервер поднят из-за того, что нам надо удалять подписи.
Ага, получается с гислаба я могу еще и в виде шейпфалов забрать данные именно по специфическим типам - т.е. только границы, например? Это хорошо, спасибо. Попробую разобраться.
Павел Китьян: Да, шейпы с гислаба можно брать по отдельным слоям. Другой вариант - использовать готовые векторные тайлы https://openmaptiles.org/docs/ и стилизовать их изображение под собственные нужды.
Хм! Так у них там границы отдельным векторным слоем. С одной стороны это хорошо, значит данные просто вытащить. С другой стороны у нас векторный слой для данных карты не предусмотрен. Планируем позже, но для пользовательских данных. Ну и главное, дело же не только в границах. Началось с того, что нужна была OSM карта, но без подписей. Я нашёл одну, но она строго для нужд wiki-сообщества.
Вот пример: c.tiles.wmflabs.org/osm-no-labels/10/549/335.png
Стал поднимать свою, пока частично, только Московой. И вот когда брал регион Москвы с гислаба в OSM-формате и шейпы береговой линии в составе openstreetmap-carto, откуда-то на несколько зумов попали границы государств. Но, к сожалению, не на все. И еще странность в том, что хотя я брал только Москвы, на РФ попали многоугольники городов. Ничего конечно, но странно - почему.
Вот пример: https://etreniki.ru/DRGRR55U4L
Где-то с 4-го зума границы пропадают.
Павел Китьян: Ну вы же сами скачали границы ne_110m_admin_0_boundary_lines_land, а в land-polygons скорей всего лежат контуры городов, качать проверять не стал, слишком много.
freeExec: Согласен, сам скачал :) Я действовал первый раз, по инструкции и запускал get-shapefiles.sh, предполагая что он тянет только береговую линию. А туда вон значит сколько всего попало. Я правильно понимаю, что я вот так же могу добавить шейпы границ стран и административных единиц, например, отсюда - gis-lab.info/qa/osmshp.html или откуда еще их смогу экспортировать/скачать.
Павел Китьян: Да, в вашем случае можно вообще обойтись без базы только на одних шейпах с границами и морями, если я правильно понял и вам ближе 6 зума не нужно.
freeExec: Нет-нет, база нужна, потому что основная задача - вся карта, только без подписей. Просто сервер пока пробный и не потянет даже импорт всего мира, не то что рендеринг. Поэтому я начал с Москвы, отредактировал стиль мапника (над было конечно в карто делать, но как смог) - убрал маркеры магазинов, все подписи, шиелды с дорог и т.п. В целом - нормально, однако пользователи по всей России и СНГ, одной Москвы на карте мало, поэтому я хотел бы пока попробовать быстро добавить границы - это уже было бы хорошо. Но, видимо отложу, пока не смогу поднять целиком весь мир на сервере. Вот у нас один из тренажёров например - https://etreniki.ru/GFQSQUV45Y
Там и зум большой, и шейпы не помогут.