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

Нашёл только это:
http://wiki.openstreetmap.org/wiki/Software_comparison/Import_a_shapefile

M@ster_dp
Чи немогли б ви трохи більше розповісти про свої наміри?

  • ви збираєтесь на поточний момент імпортувати власні дані в загальну БД чи в БД, яку встановлено на вашому комп’ютері (локально)?
  • у вас є точки з адресами та/або полігони будинків з адресами?

відповідно до цього інші учасникі зможуть вам щось порадити

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

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

Я локально настроил Tile Server. Выкачал карту Украины. Отделным слоем добавил свои данные. Визуально всё хорошо, но по ним нет адресного поиска, т.к. это отдельный слой.

Для работы адресного поиска, как я понимаю, мне необходимо вручную добавлять дома с адресными точками, в общую БД. Это довольно большой объем информации, и довольно трудоемко, как для одного человека.
Ищу способы это автоматизировать/импортировать.

Конечно, я не хочу чтобы получилось как с картой Харькова. По этому, если есть возможность импортировать в Локальную базу osm - это было бы замечательно.

У меня есть слой домов в виде полигонов в shape-формате, в сементике указаны номера и адреса.
Есть одельно слой адресных точек в shape-формате.
При необходимости, могу предоставить, для проверки.

PS. Может есть способы перенастроить адресный поиск на отдельный слой домов?

@M@ster_dp,
сколько у вас есть домов с номерами которых нет в ОСМ? приблизительно.

В районе 30000 домов

SviMik и/или Vitalts как-то полуавтомат для импорта номеров домиков с проверкой глазками мастерили на всю Эстонию.
http://osm.svimik.com/xgis2osm.php

Тогда навалились играть в эти игрушки, было прикольно.
http://osm.svimik.com/
Стали увлекаться, соревноваться…

Может что подскажут или помогут.

Я делал иструменты для JOSM для переноса номеров домов в полуручном режиме. Теоретически я мог бы помочь с импортом .shp фалов – для этого тоже есть готовый инструментарий. Всё зависит от качества данных.

Да, я готов предоставить данные.

Но у меня еще один вопрос:
Когда я в QGIS накладываю свои данные на карту OSM - мои данные имеют смещение по оси Y на 32 км.

Для Tile сервера я в ручную задаю для своего слоя “обратное смещение”, и всё накладывается ровно 1:1.
Читал, что это связанно с пересчетом проекций.
Пробовал разные варианты пересчета - смещение остается.

С проблемой смещения справился - при конвертации выбрал EPSG 3857.
И вот ссылка на данные https://www.dropbox.com/s/1ai716be1b2fun3/Dnipro%20-%20shp.rar?dl=0
Тут дома только на правом берегу Днепра.

Я посмотрел данные, есть пара проблем. Во-первых, смещение примерно на 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

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