Господа, подскажите по "упрощению" данных

Необходимо вытянуть из дампа следующие данные:

  • Граница страны
  • Граница областей и пр. административных единиц (все, что есть)
  • Населенные пункты (координаты, названия, принадлежность к району/области и пр. доп. инфо.)

Нужны только эти данные.

При помощи osmosys не получается отфильтровать (не могу придумать критерии отсева, чтобы получить только то, что нужно), т.к. “вытягивается” не только граница, но все остальное (слишком много мегабайт, чтобы выяснять, что именно).

У кого есть какие идеи?

Взять эти шейп-файлы на http://gis-lab.info

Границы стран и областей - это отношения boundary=administrative с соответствующими уровнями (ну и все элементы, которые в этих отношениях участвуют).
Описание уровней тут: http://wiki.openstreetmap.org/wiki/RU:Key:boundary

Населённые пункты - это элементы с тегами place=city/town/village/hamlet
Для них принято ставить точку (условный центр) + область/отношение, показывающие границы населённого пункта.

Всё это вроде довольно просто задаётся в условиях фильтрации osmosis.

ЗЫ. На будущее - давайте темам осмысленные название. Например “Критерии фильтрации границ”, а не просто “Подскажите мне”.

Тут не совсем понятно:

я так понял, что граница может быть area или way, связанный при помощи отношений. При вытягивании boundary=administrative получаются слишком большие файлы. Однозначно, что там не только данные об оласти и ее границе.

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

Если границы слишком детальные, то они будут “упрощаться” в дальнейшем, т.к. высокая точность мне не нужна.

Я знаю про этот источник, но, к сожалению, там нет всех данных, которые мне нужны.

Речь о покрытиии или о наборе полей данных?

Если нужны данные только о каком-то конкретном уровне границ - нужна дополнительная фильтрация по admin_level

В отношении может участвовать линия с любыми тегами (не только с boundary). Например, линия границы может проходить по реке/дороге/краю леса и т.п. - в этих случаях в отношение включаются соответствующие линии. Поэтому правильный способ фильтрации такой - оставляются только отношения с тегами boundary=administrative и нужными admin_level и все элементы (линии и их точки), которые в них включены. Фильтрация по тегам делается через параметр –tag-filter, фильтрация по использованию - параметрами –used-way и --used-node

Можно, конечно, и с нуля написать. Многие программисты страдают этим заболеванием - изобретательством велосипедов.
Но я бы порекомендовал таки попробовать разобраться с osmosis. Если чего будет не хватать в его стандартных тасках - всегда можно написать к нему небольшой плугин, который будет делать именно то, что нужно.

Такое тоже бывает.