Как скачать/получить границы областей в стране?

как?

Не понятно что вы собираетесь увидеть в базе. Но файл pbf можно сконвертить в xml(.osm) osmconvert. И там структура будет куда более наглядней, чем в базе с гео-надстройкой. А .osm можно открыть в JOSM и уже увидеть совсем наглядно. Я так понял собственно границы вам и не нужны, а то ведь http://svn.openstreetmap.org/applications/utils/osm-extract/polygons/rel2poly.pl

Если нужны только границы областей, то возможно достаточно будет того что в готовых shp-файлах:
http://beryllium.gis-lab.info/project/osmshp/region/UA

Обычно там же, где лежат pbf рядом лежат и xml. А конвертировать можно и тем же osmosis-ом. Только разглядывать эти мегабайты что в двоичном виде, что в текстовом - всё равно толку немного.

Есть плугин, который позволяет открывать pbf в JOSM напрямую. Но, т.к. JOSM загружает всё в память, обычно это слишком большие файлы чтобы он нормально с ними смог работать, всё равно предварительная фильтрация нужна чтобы уменьшить объём до приемлемого.

Предлагаю вдумчиво покурить инструкцию на osmosis - там есть фильтр, есть выходной формат xml (он же - osm).

Получившийся файл можно открыть в редакторе OSM - JOSM (там же можно посмотреть все интересующие тэги).

Оба варианта реализуемы.

Структура данных следующая.
Есть точки id, lon, lat
Есть линии id, список айдишников точек
Есть отношения id, cсписок участников
Участник отношения представляет из себя: тип участника (на кого ссылаемся на точку, линию или другое отношение), id участника, роль в отношении

  • У каждого из объектов может быть произвольное число тэгов (пары ключ-значение)

В pg_snapshot это храниться примерно так:
3 таблицы отдельно для точек линий и отношений
Таблица “линия - точка линии”
Таблица с участниками отношений

Геометрия по умолчанию есть только у точек. Тэги записываются в hstore колонку.

В xml структура данных схожая. В начале записываются точки потом линии потом отношения.

//----------------------------------------------------------
Это примерное описание того как данные записываются в бд или в xml

Границы в осм в основном представлены либо отношениями с тегами

type=boundary
boundary=administrative
admin_level=*

Либо замкнутыми линиями с теми же тегами, за исключением

type=boundary

Чтобы получить границы в виде полигонов, вам надо:

Во втором варианте
Отфильтровать все отношения по тегам,
потом получить всех участников нужных вам отношений + все замкнутые линии с нужными тегами
потом получить все точки из которых они состоят.
После чего уже собрать линии и полигоны.
Между парсингом xml и pbf особой разницы не будет, за исключением, что понадобится чуток дополнительных либ для работы с pbf. В pbf упакована ровно та-же структура данных.

В первом варианте можно немного схалявить, осмозис умеет собирать линии из точек, соответсвенно дальше надо будет лишь собрать линии входящие в нужные отношения в полигоны.

А не проще пойти сюда http://taginfo.openstreetmap.org/keys/admin_level#values выбрать нужный уровень, оттуда перейти в Overpass turbo, там подправить настройки запроса и получить то что надо?

osmosis ^
  --read-pbf file="ua.osm.pbf" ^
  --tf accept-relations admin_level=* ^
  --used-way idTrackerType=Dynamic     ^
  --used-node idTrackerType=Dynamic    outPipe.0=borders ^
  --wx ua.boundaries.osm

для последнего osmosis ключ idTrackerType не нужен.

Не спортивно же :slight_smile: если человек хочет разобраться со структурой данных - ручной парсинг, отличная задачка.

dkiselev, а потом местная общественность удивляется, что все считают, что в osm все дико сложно и потому данные оттуда мало кто использует.

Для тех кто хочет попроще - уже привели ссылку на шэйпы. Скачивай и открывай в любой GIS программе - куда уж проще то?
А вот если кто захочет сам заниматься конвертацией - тут уж придётся разбираться в деталях, никуда от этого не уйти.

Проще всего написать запроc в overpass turbo, скачать geojson, и загрузить его в базу утилитой ogr2ogr.

http://forum.openstreetmap.org/viewtopic.php?pid=358582#p358582 даже запрос писать не придется.

Я не удивляюсь :slight_smile:

Я использовал getbound для получения границ областей Украины.