Загрузка улиц из 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 'улица ' ''

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