Получение координат зданий в населенном пункте из источника OpenStreetMap
В открытой базе данных https://www.openstreetmap.org/ содержатся географические координаты множества зданий. Используя эту информацию можно получить базу соответствия:
Адрес Координаты.
Для стран СНГ данные в виде файлов PBF размещены на сайте https://needgeo.com/
Файлы разбиты по областям
Скачиваем себе на ПК файл, который содержит искомый данные нужного города. Я для примера возьму файл по Самарской области для получения координат домов для города Самара.
Создав на жестком диске папку «Координаты», положим туда файл RU-SAM.pbf.
Для извлечения из этого файла координат адресов понадобятся утилиты:
osmconvert (https://wiki.openstreetmap.org/wiki/RU:Osmconvert)
osmfilter (https://wiki.openstreetmap.org/wiki/Osmfilter)
Скачиваем их и помещаем в ту же созданную ранее папку «Координаты». Для ОС Windows 64x файлы будут такие: osmconvert64.exe и osmfilter.exe
Для начала вырезания из файла RU-SAM.pbf данных необходимо указать область координат, которую требуется вырезать. Область координат указывается в виде набор координат полигона. Область координат можно сформировать на сайте http://geojson.io/ с помощью инструмента «Draw a polygon»
Чтобы понять, что выделять можно воспользоваться картами от Яндекс. Здесь при поиске города (населенного пункта на карте выделяются его границы.
Для Самары:
Повторяем что-то подобное на сайте http://geojson.io/. Главное здесь – не захватить данные других городов, где могут повторятся адреса. Улица Ленина, например, есть везде, в каждом населенном пункте.
Набор получившихся координат справа необходимо преобразовать к виду, который поймет программа osmconvert. Для этого создается обычный текстовый файл city.poly в который вписываются координаты полигона города. Пример содержимого файла для Самары:
city
1
50.1416015625 53.373497900586855
50.17181396484375 53.30297979468481
50.15533447265625 53.238920640924974
50.05096435546875 53.19616119954287
50.020751953125 53.16324027106289
50.22125244140625 53.1335898292448
50.32012939453125 53.19122467094173
50.34759521484375 53.29641404214567
50.34210205078125 53.39479437775073
50.2130126953125 53.46516070239169
50.07843017578125 53.50438429010248
50.009765625 53.46025520362287
50.06744384765625 53.420990805007634
50.1416015625 53.373497900586855
END
END
Основное здесь – это координаты долготы и широты, взятые с сайта http://geojson.io/ после выделения полигона города.
Файл с координатами полигона города city.poly нужно положить в ту же папку «Координаты».
Переходим в режим командной строки и выполняем последовательно три команды:
osmconvert64.exe -B=city.poly --all-to-nodes RU-SAM.pbf -o=1samara.o5m
osmfilter.exe 1samara.o5m --keep="building AND addr*" --drop-author --drop-version -o=2samara.o5m
osmconvert64.exe 2samara.o5m -o=3samara.csv --csv-headline --csv-separator=; --csv="@id addr:street addr:housenumber @lat @lon"
После этого в папке «Координаты» будут созданы файлы: 1samara.o5m, 2samara.o5m и 3samara.csv
Первые два файла можно удалить. Они промежуточные. Третий файл 3samara.csv содержит нужные нам данные: Его можно открыть в EXCEL.
Для EXCEL 2016 переходим во вкладку «Данные» «Получение внешних данных» «Из текста». Выбираем наш итоговый файл (3samara.csv), Проходим мастер импорта текста. На втором этапе установить галочку «точка с запятой».
Получаем представление адресов и координат, которое можно использовать. В файле есть информация о ID адреса в базе OpenStreetMap, название улицы, номер дома и координаты.