Бенчмарки Osmosis и наборы POLY-файлов по регионам РФ

Коллеги,

по многочисленным просьбам, выкладываю использованные нами для ежедневных обрезок файлы границ обрезки по всем субъектам РФ в трех вариантах + источники данных и расширение для их генерации в QGIS.
http://gis-lab.info/qa/osm-poly.html

А здесь результаты резки РФ регионами осмосисом с кучей всяких параметров, может кому-то будет интересно.
http://gis-lab.info/qa/osmosis-bm.html

Результаты очень интересные. Правда, есть небольшие комментарии:

  1. В тексте не описан режим Р, хотя он есть в табличке и упоминается в описании режима М.

  2. В режиме РС у некоторых областей (Иркутской, Карелии и т.д.) время генерации измеряется тысячами минут. Это действительно так? Заметно, что у них гораздо больше узлов, но в то же время есть области с близким их числом - Коми и Карелия, а время генерации отличается в 50 раз. Или там ошибка (потому что число узлов совпадает до единицы у них и еще у Марий Эл).

  3. Вы не пробовали сначала разделить Россию еще на прямогугольные блоки (например, по Федеральным округам) и вырезать уже из них? Теоретически, должно получиться быстрее, чем каждый раз брать весь файл.

  4. Распаковывается ли planet.osm, если да, то включено ли время на это и на запаковку результатов?

  5. Что критичнее для процесса обрезки - мощность процессора или объем памяти?

Рекомендую добавить эти бенчмарки в вики, там есть отдельная страничка для Osmosis’а. И спасибо за описание.

  1. Опечатка, поправил
  2. Да, с completeways все занимает именно столько. количество узлов в Марий Эл и Коми - странная ошибка, пардон. Исправлено.
  3. Не поможет, проверено на отдельном регионе. Размер входного блока не имеет значения при резке с completeways. Не хочется повторять такой бенчмарк, так как опять придется ждать выполнения 4 дня :slight_smile: Добавил в выводы.
  4. Да, распакован и обрезан, это было указано выше.
  5. Процессор.

Про вики, если кто добавит - я не против, чуть-чуть занят сейчас.
Спасибо, что внимательно посмотрел! Закон Линуса в действии :slight_smile:

А нельзя ли сделать файлы из кучки “20 км от границы” с меньшим числом узлов. Мне кажется что для них такое большое число узлов избыточно.

Zkir, можно, но если ты думаешь, что это сильно замедляет работу Osmosis, то это не так. Или ты еще из каких-то соображений?

Нет, только из соображений скорости обрезки.

тогда не стоит менять, наверное, посмотри в бенчмарках как меняется скорость при использовании Mbr и сложного полигона, сильно это не помогает.

Ладно, будет время сравню со своими (грубыми, максимум 20 вершин) поли-файлами.

ок, сообщай, если я что-то пропустил, упрощу границы.

woidrick, я добавил в архив poly/russia_full.poly - это граница РФ, т.е. общий poly для всех в этой папке.

Границу евразии пока не делал, если хочешь я объясню из чего и как именно она делается. Суть в том, что там куча островов, которые по хорошему надо включить в общую границу, я это сделал для РФ, но мне влом сидеть и это делать, это ручная работа.

sim, спасибо скачал.

за инструкцию - буду благодарен

пока нет смысла муторно включать все острова, я планирую это просто про запас, когда эти детали кто-нибудь попросит. евразию мне достаточно приблизительно, просто она мне нужна по задуманной логике вложений территорий. можно даже грубо прямоугольниками до северного полюса, обойдя гренландию, поаккуратнее по границе с африкой, хотя что там аккуратничать - суэцкий канал, далее все острова около малазии - нахрен, японию включать если включена англия (она ничем её не хуже :slight_smile: тоже грубо прямоугольниками (просто инструкцию я пока осилю, а резать планирую в пятницу, когда планета скачается.

Я немного расширил описание на странице.
Дополнительно в твоем случае нужно:

  1. Загрузить вимэп, например здесь: http://gis-lab.info/qa/vmap0.html
  2. Выбрать нужный слой (например bnd-political-boundary-a из EUR и SAS)
  3. Дальше по инструкции в QGIS
  4. Создать новый слой - нарисовать большой полигон (сильно точно не надо, прото границу континента по морю с захватом нужных областей)
  5. Ну и наконец расширением выкинуть полик.

sim: спасибо, буду разбираться, а вы пробовали одновременную резку и сократит ли это время, примерно так, как описано http://lists.openstreetmap.org/pipermail/dev/2008-September/011635.html ?

-tee помогает, но не с completeways, там ничего не помогает
наверное стоит еще всю страну на 6 областей разделить и с помощью -tee прогнать, но так непонятно как время выполнение конкретного региона посчитать, можно только общее.

sim: насчёт qgis - решил попробовать упростить себе жизнь и не рисовать вручную границу, а попробовать объединить полигоны средствами qgis. но что но не вижу ничего похожего на эту функцию
upd: всё же удалось применить geoprocessing функцию dissolve

удалось

использовать плагин split shapefile для вырезания группы полигонов по признаку принадлежности к стране, но они остаются раздельными полигонами, и на всём administrative boundary a падает от нехватки ресурсов, успев вырезать десятка три стран.

склеить eur и sas плагином geoprocessing функция union

удалить из получившегося всё кроме относящегося к европе и азии, выделив расширенным поиском a_NA3_DESC != ‘Asia’ AND a_NA3_DESC != ‘Europe’ AND b_NA3_DESC != ‘Asia’ AND b_NA3_DESC != ‘Europe’ и удалив то, что выделилось. сохранить в файле это не получается

я специально не стал советовать идти по пути геопроцессинга, по нескольким причинам

  1. результирующий полигон будет включать массу узлов
  2. нарисовать границу гораздо быстрее
  3. dissolve с отдельными островами приведет к появлению мультиполигонов - лишний геморой

если ты все же хочешь пойти по этому пути, то попробуй не удалять все кроме выделенного, а наоборот выделить то что тебе необходимо и сохранить в отдельный новый слой, для этого после выделения надо щелкнуть правой по слою в списке и выбрать Save selection as shapefile.

sim, простите, ещё вопрос, не совсем по теме

я практически уверен что вы где то упоминали, что режете осмозисом в режиме исполнения на нескольких ядрах, но я никак не могу найти этот пост

не подскажете командную строку/опции явы для запуска резки на нескольких ядрах?

имхо не умеет осмосис несколько ядер юзать…

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

это смотря что делать… если апдейт базы делаешь, то несколько потоков не запускаются одновременно :frowning:

Кстати. интересно, а что быстрее на не очень производительной машине - ежечасные обновления или суточные? Я имею в виду в абсолютных затратах процессорного времени?