Загрузка большего массива данных на карту из shp файлов

Я посмотрел данные, есть пара проблем. Во-первых, смещение примерно на 10 метров в юго-западном направлении, но это не суть важно. Во-вторых, домики в частном секторе нарисованы почти от фонаря. То есть, примерно в том месте на снимках дом виден, но вот нарисованная форма не имеет ничего общего с действительностью. И я бы понял, если бы был просто нарисован прямоугольник, так нет же – старательно вырисованы углы и пристройки, которых не существует.

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

Вот черновик конвертации, чтобы оценить. К использованию не готово: неверная кодировка, улицы в адресах не отделены от номеров домов, мусорные теги.

https://www.dropbox.com/s/tc9991uxthiksg5/Cities10_Building_AREAS.osm.bz2?dl=0

Я в своё время написал плагин для JOSM для переноса адресов в полуавтоматическом режиме, может помочь с инмпортом.

Просьба к andygol посмотреть на данные.

На мой взгляд получилось отлично. Правда смущает смещение, как оно отразится на импорте.

Какие поля shape важны (обязательны) для качественного импорта, а какие являются мусорными?

  1. Номер дома.
  2. Название улицы (обязательно ли это поле? будет ли работать поиск в Nominatim без него?)
  3. Тип здания
  4. Количество этажей
  5. Город

Если в доме прописан только номер (addr:housenumber), будет ли корректно работать адресный поиск в Nominatim?

Так, звісно, я подивлюсь…

  1. Номер дома - обязательно.

  2. Название улицы - обязательно. Без неё адресный поиск не будет работать нигде.
    Только нужно, чтобы названия были приведены к нашему стандарту:
    http://wiki.openstreetmap.org/wiki/Uk:Names#.D0.9F.D0.BE.D1.80.D1.8F.D0.B4.D0.BE.D0.BA_.D1.81.D0.BB.D1.96.D0.B2_.D1.83_.D0.BD.D0.B0.D0.B7.D0.B2.D0.B0.D1.85_.D0.B2.D1.83.D0.BB.D0.B8.D1.86.D1.8C
    Кроме того, привязка домика к улице должна осуществляться с помощью отношения associatedStreet (см. http://wiki.openstreetmap.org/wiki/Uk:%D0%90%D0%B4%D1%80%D0%B5%D1%81%D0%B0%D1%86%D1%96%D1%8F#.D0.92.D1.83.D0.BB.D0.B8.D1.86.D1.96 ). Правда, не знаю, возможно ли сделать это во время импорта. @_sev, умеет ли твой плагин делать это?

  3. Тип здания - не обязательно, но желательно. А можно ли узнать, какие значения бывают у этого поля? Возможно, их удастся использовать для более точного задания тега building=*.

  4. Количество этажей - не обязательно, но желательно. Указывается в теге building:levels=*

  5. Город - не нужно. Для адресного поиска название города берётся с полигона населённого пункта, в котором расположен домик.

@M@ster_dp @_sev
а яке кодування символів?
бо у мене ось таке


Address=Âîäîï'ÿíîâà âóëèöÿ, 25
City=Äí³ïðîïåòðîâñüê
LAYER=Unknown Area Type
Number=25

С першого заходу, можу сказати, що ось “так просто взяти і залити все в базу, нажаль, не вийде”.
Як сказав _sev всі будинки зі зміщенням, звісно в різних районах по різному. Ось на знімку можна отримати уявлення про те на скільки дані з шейпу зміщені порівняно з даними в ОСМ (зсув Бінгу з БД зміщень)

  • потрібно розібратись з кодуванням символів, воно не utf-8

  • треба брати невиликі ділянки і рухати їх так, щоб вони хоч трохи відповідали ОСМ

  • було б, добре, якщо буде щось подібне до того, що робили в Естонії SviMik та Vitalts, тоді можна буде швиденько все обклацати

… треба ще подумати, як все це зробити швидко та якісно.

Значить, здається, що дані подобаються. Добре.

Там нічого розбиратися, я писав, що це чорнова конвертація. Я виправлю кодування.

Можливо цього вдасться уникнути. Дивіться нижче.

Ні, то занадто, у мене інший підхід.

Я розробив плагін для JOSM. У ньому відкриваєш дані імпорту у окремому шарі, а на основному задаєш кольорування будинків без номера дому. Далі, мишою клацаєш по таких будинках, і воно дивиться на геометрію з нижнього шару, яка знаходиться за цими ж координатами, і копіює звідти всі теґи.

Таким чином у напівручному режимі можна досить швидко обклацати цілі райони.

Получається, що зсувати райони потрібно або для нового імпорту, або коли будинки вже занадто сильно зсунуто, що вони не перекриваються.

_sev, все ж цікаво, яке кодування?

я сам намагався конвертувати за допомогою ogr2osm - результат такий самий :frowning:
підстановка параметру --encoding cp1251 призводить до помилки конвертації.

Кодування виправив: https://www.dropbox.com/s/z99i1n40yo3ntjy/Cities10_Building_AREAS_dec.osm.bz2?dl=0

То і була cp1251, що в тебе не получилося, не знаю.

Забрав місто, LAYER, порожні теґи.

Наступний крок – розбити адресу на вулицю та будинок.

M@ster_dp казав, що у нього є ще шейп з адресними точками. Може простіше перенести адреси з них?

_sev

  • Якщо точка попадає (знаходиться поруч) в полігон будинка без адреси → переносимо адресу на будівлю
  • Якщо поруч немає полігона будівлі - імпортуємо цю точку з теґами *building=yes + addr:**. Для Nominantim’а цього буде достатньо, а геометрію потім за допомогою building_tools можна намалювати.

Тим більше, що building_tools автоматично переносить адресу з точки на полігон. А точки можна більш точніше пересунути на потрібне місце. Для того щоб нічого не пропустити скористатись втулком Todo list

Я разделил адрес и номер дома. Сделал в трех языках.
С кодировкой не справился. Пробовал dbf-encode, не вышло.

Выложил весь город.
https://www.dropbox.com/s/v5l8vqsmf2b4jw5/ShpDnipro.rar?dl=0

Есть ли смысл пододвигать кварталы, чтобы они ровно легли?

А ще забув написати в попередніх постах.

Назви вулиць! Їх також треба перевірити!
Якщо є можливість отримати оновлений перелік у міскьвиконкомі буде гарно ось те що є зараз - http://files.dniprorada.gov.ua/download.php?id=30020

Рішення від 19.06.2013 №263 Про затвердження переліків найменувань проїздів та об’єктів, розташованих на території міста Дніпропетровськ

Я же выше написал, что порешал вопрос с кодировкой, и выложил исправленный дамп. Адреса бы тоже я разделил, не проблема, но оригинал как источник исправления, несомненно лучше.

Я смогу обработать только на выходных.

Думаю, нет, много работы, да и не нужна она будет в ряде случаев.

Теперь нужно понять, как действовать дальше. Мне видится, что-то типа такого:

  1. Я делаю обработку данных, перевожу в конечный .osm с правильными тегами.
  2. Кто-то в параллели рисует пирог, крупными кусками. Только не квадратами, а по границе дорог.
  3. Я оформляю импорт по правилам, т.е. письмо в imports@, вики-страница, теги на объектах, недельная пауза для комментариев, рассказываю, что импорт в ручном режиме, пишу список участников.
  4. Перекомпилирую плагин для переноса тегов под новый JOSM
  5. Группа желающих, я в том числе, делаем импорт по кускам.

При этом, нам нужно делать примерно следующее:

  1. Выбирается кусок.
  2. Двигается по трекам.
  3. Копируются здания, которых нет в ОСМ, с геометрией и тегами
  4. Если здание в ОСМ есть, теги переносятся на него, при этом используется плагин JOSM

Не уверен, что делать сначала – пункт 3 или пункт 4.

Ещё я могу сделать пост-обработку для переноса всех адресов в отношения, как я это делал для предыдущих импортов. Но в связи с наличием частичной адресации в ОСМ, это можно будет сделать только после импорта, а не на этапе подготовки изначального дампа. Оставлять как есть, смешанно – отношения + теги, мне кажется не совсем правильно.

Что скажете?

Глянул поверхностно на новые данные. Floors местами сильно неправильный, заметил, что для многих многоэтажкек прописано Floors=1. Думаю, что имеет смысл не добавлять Floors=1, а только если указано больше единицы.

Также местами названия улиц отличаются порядком, к примеру, “Заводська Набережна вулиця”, тогда как в ОСМ это “Заводська Набережна вулиця”. Английские названия нужно будет перегенерировать: “Malyi side street” для “Малий провулок”.

переконвертований в UTF-8 shp - https://www.dropbox.com/s/vercjotzvhluglb/dnipro_addr_bld.shp.zip?dl=0
osm.gz з osm-теґами (без пустих теґів) - https://www.dropbox.com/s/35vnfdjnjhb2793/dnipro_addr_bld.osm.gz?dl=0

щодо building:levels=1 - навіть не знаю чи залишати чи відкидати його (в роздумах)

M@ster_dp - те що ви виклали посилання на shp тут на форумі - означає, що дані можуть вільно використовуватись спільнотою OSM? Як ви ставитесь до того, щоб імпортувати їх до http://openaddresses.io ?

andygol Да, я не против импорта в http://openaddresses.io, если это пойдет на пользу сообществу.

_sev Я не совсем понял, что означает, и каким образом это делать:

M@ster_dp Я знаю про що йдеться…

M@ster_dp
на http://openaddresses.io/contribute/ є така формочка для завантаження. У мене по ній кілька питань: основне - Ліцензія (все інше не так важливо)? на яких умовах надаються дані? - ODBl/CC0/PD/WTFPL?; Чи потрібно на когось посилатись використовуючи ці дані?

andygol Лицензия - ODbL. Ссылаться - нет необходимости.

Створив Pull Request - https://github.com/openaddresses/openaddresses/pull/1384 чекаємо коли закомітять