на главную страницу программы "Водяной"

Инструменты пользователя

Инструменты сайта


osm

Загрузка улиц из OpenStreetMap

Для городов за пределами России можно загрузить список улиц из карт OpenStreetMap (это лучший вариант, т.к. для геокодинга используется сервер nominatim, а также карты sputnik.ru, основанные на OSM).

1) Загружаем нужную страну с сайта geofabrik.de: http://download.geofabrik.de
Теперь из полученного файла, например: uzbekistan-latest.osm.pbf можем извлечь названия улиц.

2) создаем bat-файл следующего содержания:

osmconvert uzbekistan-latest.osm.pbf>strana.osm
osmfilter strana.osm –keep-nodes=«highway=* and addr:city=Ташкент» –keep-tags=«all name:ru=» –ignore-dependencies -o=str.osm
osmconvert str.osm -o=ulicy.csv –csv-headline –csv-separator=; –csv=«name:ru»

В приведенном примере будут выгружены названия улиц Ташкента на русском языке.
«Ташкент» надо изменить на требуемый город, uzbekistan-latest.osm.pbf на имя скачанного в первом пункте файла.
Если вы хотите загрузить названия не на русском, а на местном языке, удалите все строки«:ru» в приведенном примере.

3) полученный файл ulicy.csv открываем любым текстовым редактором, умеющим менять кодировку (например, notepad2, notepad++ и т.п.), вставляем в начало строку с текстом «Наименование», конвертируем из UTF-8 в ANSI. Результат сохраняем В ПАПКУ c:\Program Files (x86)\ctex\voda\csv\ (если прав на это нет, можно оставить в текущей папке, но ее придется указать вручную при импорте, на этапе подтверждения пути)

4) Загружаем в Водяной, выбрав Справочники - Транспорт - Улицы, затем нажав меню «действия» и выбрав импорт из csv:

5) на вопрос, пропускать ли повторяющиеся названия, отвечаем «да» (в файле ul.csv будет много повторов).

В результате будет заполнен справочник улиц.

6) создаем нужный город в Справочники - Транспорт - Города. Его же указываем в Справочники - Структура компании - Значения по умолчанию как основной.

7) в справочнике улиц вызываем действия - служебные - групповая обработка справочника, нажимаем «заполнить таблицу». Затем переходим на вкладку «замена» и, выбрав нужный реквизит и значение, нажимаем «заменить значение»

К сожалению, названия улиц вводятся в OSM в произвольном формате (Первая улица или Улица Первая и проч.). Если получено много записей вида «Улица …», можно убрать слово «улица» из начала названий, т.к. оно будет мешать поиску и вводу данных, а для геокодинга, за редкими исключениями (наличие одноименных площадей, переулков), не требуется.
Если хотите убрать «улица» из начала наименований, откройте обработки - служебные -выполнить произвольный SQL-запрос и вставьте следующий текст

UPDATE ULICY SET NAIMENOVANIE=TRIM(REPLACE(NAIMENOVANIE,'улица',)) WHERE lower(NAIMENOVANIE) starting with 'улица ' ''

(ВАЖНО! при вставке следите, чтобы весь запрос попал в окно обработки!!!)

osm.txt · Последние изменения: 2020/01/11 22:32 — timofeev