Пакетное геокодирование в QGIS: различия между версиями

Материал из GIS-Lab
Перейти к навигации Перейти к поиску
(не в курсе: сколько из них поддерживается QGIS плагинами сейчас (и какими плагинами))
 
(не показаны 23 промежуточные версии 3 участников)
Строка 1: Строка 1:
{{Статья|Черновик}}
{{Статья|Опубликована|rugeocoder}}
{{Аннотация|Геокодирование в QGIS с помощью сервисов Google, Yandex, OSM(Nominatim).}}
{{Аннотация|Геокодирование в QGIS с помощью сервисов Google, Yandex, OSM Nominatim.}}
 
== Введение ==
== Введение ==
Одним из способов получения геоданных является операция геокодирования. Она позволяет получить координаты объектов, у которых заранее известны адреса. В связи с большим объемом адресных БД, эту операцию обычно производят сервисы геокодирования. Наиболее известные сервисы на данный момент - [http://developers.google.com/maps/documentation/geocoding/?hl=ru Google Geocoding], [http://api.yandex.ru/maps/doc/geocoder/desc/concepts/About.xml Яндекс.Карты Геокодирование] и [http://wiki.openstreetmap.org/wiki/Nominatim OSM Nominatim].<br />
Одним из способов получения геоданных из адресной информации является операция геокодирования. Геокодирование позволяет получить координаты объектов, адреса которых известны. В связи с большим объемом адресных БД, эту операцию обычно производят сервисы геокодирования. Наиболее известные сервисы на данный момент - [http://developers.google.com/maps/documentation/geocoding/?hl=ru Google Geocoding], [http://api.yandex.ru/maps/doc/geocoder/desc/concepts/About.xml Яндекс.Карты Геокодирование] и [http://wiki.openstreetmap.org/wiki/Nominatim OSM Nominatim].
 
QGIS не имеет встроенной возможности пользоваться сервисами геокодирования. Но гибкая система расширений позволяет добавлять практически любые функции. Для выполнения пакетного геокодирования можно использовать расширение [http://plugins.qgis.org/plugins/ru_geocoder/ RuGeocoder].
QGIS не имеет встроенной возможности пользоваться сервисами геокодирования. Но гибкая система расширений позволяет добавлять практически любые функции. Для выполнения пакетного геокодирования можно использовать расширение [http://plugins.qgis.org/plugins/ru_geocoder/ RuGeocoder].


Строка 10: Строка 12:
* Расширение RuGeocoder (Присутствует в [http://plugins.qgis.org/plugins/ru_geocoder/ официальном репозитории])
* Расширение RuGeocoder (Присутствует в [http://plugins.qgis.org/plugins/ru_geocoder/ официальном репозитории])
* Соединение с Интернетом (желательно быстрое)
* Соединение с Интернетом (желательно быстрое)
При подготовке данных так же может понадобиться расширенный калькулятор атрибутивных полей. В примерах будет использоваться расширение [http://gis-lab.info/qa/fieldpyculator.html FieldPyculator].<br />
 
Процесс установки QGIS подробно описан в статье [http://gis-lab.info/qa/qgis-osgeo4w.html Установка QGIS/GRASS с помощью OSGeo4W].<br />
При подготовке данных также может понадобиться расширенный калькулятор атрибутивных полей. В примерах будет использоваться расширение [http://gis-lab.info/qa/fieldpyculator.html FieldPyculator].
 
Процесс установки QGIS подробно описан в статье [http://gis-lab.info/qa/qgis-osgeo4w.html Установка QGIS/GRASS с помощью OSGeo4W].
 
Более подробно об установке расширений можно прочитать [http://gis-lab.info/qa/qgis-install-plugin.html тут].
Более подробно об установке расширений можно прочитать [http://gis-lab.info/qa/qgis-install-plugin.html тут].


== Подготовка данных ==
== Подготовка данных ==
Для работы геокодер требует точечный слой, с адресами, находящимися в одном или нескольких атрибутивных полях. Компонентная форма записи адреса (название города, название улицы, номер дома и т.д. находятся в отдельных полях) более предпочтительна, и обычно позволяет добиться лучшего результата при геокодировании.
Для работы геокодер требует точечный слой с адресами, находящимися в одном или нескольких атрибутивных полях. Компонентная форма записи адреса (название города, название улицы, номер дома и т.д. находятся в отдельных полях) более предпочтительна и обычно позволяет добиться '''значительно лучшего''' результата при использовании любого геокодера.


=== Преобразование таблицы в SHP файл ===
=== Преобразование таблицы в SHP файл ===
Достаточно часто, входные данные представлены в виде обычных таблиц. Наиболее удобный формат для обработки - CSV. С данным форматом могут работать практически все современные табличные редакторы: MS Excel, OpenOffice Calc и другие.<br />
Достаточно часто входные данные представлены в виде обычных таблиц. Наиболее удобный формат для обработки - CSV. С данным форматом могут работать практически все современные табличные редакторы: MS Excel, OpenOffice Calc и другие.
Для геокодирования таблицы её необходимо конвертировать в любой формат геоданных, которые можно редактировать в QGIS - SHP, sqlite, mapinfo и тд. Это преобразование можно сделать с помощью ogr2ogr, подробное описание можно прочитать в статье [http://gis-lab.info/qa/csv2shp.html Конвертация данных из CSV в SHP и обратно с OGR]. Но данный метод требует создания vrt файла и использование командной строки. <br />
 
Для удобства RuGeocoder имеет встроенную функцию, с подобным преобразованием. На панели "Модули" необходимо нажать кнопку "Конвертировать CSV в SHP" [[Файл:RuGeocoder Convert.png]]. Тоже действие можно выполнить через меню "Модули" -> "RuGeocoder" -> "Конвертировать CSV в SHP". В открывшейся форме нужно выбрать входной CSV файл и указать путь, по которому будет сохранен результирующий SHP файл.
Для геокодирования таблицы её необходимо конвертировать в любой формат геоданных, которые можно редактировать в QGIS - SHP, sqlite, mapinfo и тд. Это преобразование можно сделать с помощью ogr2ogr (подробное описание можно прочитать в статье [http://gis-lab.info/qa/csv2shp.html Конвертация данных из CSV в SHP и обратно с OGR]). Но данный метод требует создания vrt файла и использование командной строки.
 
Для удобства RuGeocoder имеет встроенную функцию с подобным преобразованием. На панели "Модули" необходимо нажать кнопку "Конвертировать CSV в SHP" [[Файл:RuGeocoder Convert.png]]. То же действие можно выполнить через меню "Модули" -> "RuGeocoder" -> "Конвертировать CSV в SHP". В открывшейся форме нужно выбрать входной CSV файл и указать путь, по которому будет сохранен результирующий SHP файл.
<center>[[Файл:RuGeocoder Converter form.png]]</center>
<center>[[Файл:RuGeocoder Converter form.png]]</center>
В результате конвертации, будет получен точечный shp файл с той же самой атрибутикой, и нулевыми координатами. Так же к атрибутике будут добавлены пустые поля типа string: settlement, street, house_num и geocoded. Данные поля можно будет использовать в целях подготовки адреса для геокодера.<br />
В результате конвертации, будет получен точечный shp файл с той же самой атрибутикой и нулевыми координатами.  
Если включена соответствующая опция, то к атрибутике будут добавлены пустые поля типа string: settlement, street, building_n и geocoded. Данные поля можно будет использовать в целях подготовки адреса для геокодера.
 
'''Кодировка данных выходного слоя будет такой же, как у входного.''' Если CSV файл был сохранен в UTF-8, то SHP будет иметь ту же кодировку. Возможно, после добавление слоя на карту у него будет выставлена неверная кодировка (зависит от настроек по умолчанию). Изменить кодировку можно в свойствах слоя на вкладке ''Общие'', ''Параметры источника''.
 
Рассмотрим для примера CSV файл ([[Файл:RuGeocoder_Ufa-leninsky_utf8.zip]]), содержащий адреса УИК Ленинского района г. Уфы. После конвертирования получаем следующий SHP файл: [[Файл:Ufa-leninsky utf8 shp.zip]].
Рассмотрим для примера CSV файл ([[Файл:RuGeocoder_Ufa-leninsky_utf8.zip]]), содержащий адреса УИК Ленинского района г. Уфы. После конвертирования получаем следующий SHP файл: [[Файл:Ufa-leninsky utf8 shp.zip]].


=== Подготовка адреса ===
=== Подготовка адреса ===
Для повышения качества геокодирования необходимо разбить адрес на составные части: населенный пункт, улица, строение. Каждая из частей должна находиться в отдельном поле (поле с названием населенного пункта можно не помещать в отдельное поле, а указать вручную, если все адреса в слое принадлежат этому населенному пункту). Если исходные данные изначально были в такой форме, то этот пункт обработки можно пропустить.<br />
Для повышения качества геокодирования необходимо разбить адрес на составные части: населенный пункт, улица, строение. Каждая из частей должна находиться в отдельном поле (название населенного пункта можно не помещать в отдельное поле, а указать вручную, если все адреса в слое принадлежат этому населенному пункту). Если исходные данные изначально были в такой форме, то этот пункт обработки можно пропустить.
Как примером воспользуемся ранее подготовленным SHP файлом. Добавим его в проект и с помощью FieldPyculator подготовим необходимые поля. Как видно по полю ''addr_vote'', адреса указаны единообразно, но содержат лишнюю информацию - номера школ, название организаций и тд. Выделим название улиц, использовав следующее выражение для Pyculator:
 
<pre>
Как примером воспользуемся ранее подготовленным SHP файлом. Добавим его в проект и с помощью [http://gis-lab.info/qa/fieldpyculator.html FieldPyculator] подготовим необходимые поля. Как видно по полю ''addr_vote'', адреса указаны единообразно, но содержат лишнюю информацию: номера школ, название организаций и тд. Выделим название улиц, используя следующее выражение для Pyculator:
value =  <addr_vote>.split(',')[1].replace(u'ул.','').strip()
 
</pre>
<pre>value =  <addr_vote>.split(',')[1].replace(u'ул.','').strip()</pre>
 
Для получения номеров строений используем следующий код:
Для получения номеров строений используем следующий код:
<pre>
 
value =  <addr_vote>.split(',')[2].strip().split(' ')[0]
<pre>value =  <addr_vote>.split(',')[2].strip().split(' ')[0]</pre>
</pre>
 
В результате, получаем SHP файл ([[Файл:Ufa-leninsky utf8 shp attr.zip]]) с заполненными полями ''street'' и ''house_num''. Исключением является одна запись (УИК с номером 187), в поле ''street'' которой попало название поселка. Данный недостаток легко исправить вручную.<br />
В результате, получаем SHP файл ([[Файл:Ufa-leninsky utf8 shp attr.zip]]) с заполненными полями ''street'' и ''building_n''. Исключением является одна запись (УИК с номером 187), в поле ''street'' которой попало название поселка. Данный недостаток легко исправить вручную.
 
Больше примеров обработки адресов можно найти на странице в вики: [[Проект_УИК_Республики_Башкортостан]].
Больше примеров обработки адресов можно найти на странице в вики: [[Проект_УИК_Республики_Башкортостан]].


== Геокодирование ==
== Геокодирование ==
После предварительной подготовки адресов можно приступать к самому геокодированию. Слой для обработки должен быть добавлен в проект и открыт на редактирование.
После предварительной подготовки адресов можно приступать к самому геокодированию. Геокодировать можно любой точечный слой, редактирование которого возможно в QGIS (PostGIS, sqlite, MSSQL и т.д.). Слой для обработки должен быть добавлен в проект и открыт на редактирование.
Форма обработки вызывается нажатием кнопки "Пакетное геокодирование" [[Файл:RuGeocoder_Geocode.png]] на панели "Модули". Тоже действие можно выполнить через меню "Модули". <br />
 
В открывшейся форме необходимо выбрать слой для геокодирования и регион. Если в слое присутствуют адреса из нескольких населенных пунктов, то необходимо выбрать поле, содержащее название поселения. Если все адреса относятся к одному населенному пункту, то его название можно указать вручную. Аналогичная ситуация с районам, с той лишь разницей, что это поле необязательное.<br />
Форма обработки вызывается нажатием кнопки "Пакетное геокодирование" [[Файл:RuGeocoder_Geocode.png]] на панели "Модули". Тоже действие можно выполнить через меню "Модули".
Указание адреса несколько отличается. Если адрес записан в одном поле, то достаточно выбрать это поле.
 
В открывшейся форме прежде всего необходимо выбрать слой для геокодирования. Если адрес записан в одном поле, то достаточно выбрать это поле.
<center>[[Файл:RuGeocoder_AddrMerge.png]]</center>
<center>[[Файл:RuGeocoder_AddrMerge.png]]</center>
Если же адрес компонентный, то необходимо включить переключатель "Номер здания", и соответственно указать поле содержащее название улицы, и поле содержащее номер строения.
Для улучшения результатов геокодирования крайне желательно указать регион, включив соответствующий переключатель и выбрав из списка необходимый субъект. Если в слое присутствуют адреса из нескольких населенных пунктов, то необходимо выбрать поле, содержащее название поселения. Если же все адреса относятся к одному населенному пункту, то его название можно указать вручную. Аналогичная ситуация с районам.
 
<center>[[Файл:RuGeocoder_AddrPartialSplit.png]]</center>
Идеальным случаем является вариант, когда адрес компонентный. Включив переключатель "Улица", можно указать поле содержащее название улицы и поле содержащее номер строения.
<center>[[Файл:RuGeocoder AddrSplit.png]]</center>
<center>[[Файл:RuGeocoder AddrSplit.png]]</center>
Выбрав геокодер, можно запускать процесс обработки. Время выполнения геокодирования зависит от количества записей в слое, скорости соединения и загруженности выбранного сервиса.
 
Выбрав геокодер, можно запускать процесс обработки. Время выполнения геокодирования зависит от количества записей в слое, скорости соединения и загруженности выбранного сервиса. Геометрии записей, для которых геокодирование прошло успешно, будут изменены в соответствии с полученными результатами. В случае, когда геокодер не смог найти необходимое здание, будут возвращены координаты улицы, а при невозможности определить улицу - координаты населенного пункта. Для записей, адреса которых не распознаны геокодером, будут записаны нулевые координаты. Также, если в слое присутствует поле "geocoded", то в него будет записан адрес, который вернул геокодер. Данное поле удобно использовать для анализа результатов обработки.
 
Если после геокодирования в слое много точек с нулевыми координатами (поле "geocoded" содержит много значений "Not found") или точки попадают в центр населенного пункта ("geocoded" содержит название поселения), то либо неудачно подобран геокодер, либо адреса подготовлены плохо и не могут быть распознаны.
 
В первом случае можно попробовать выбрать другой сервис из списка доступных. Следует учесть, что для больших и средних городов наиболее подходящим является Yandex. Для малых населенных пунктов чаще подходит OSM, хотя в некоторых случаях Yandex не отстает. Google хорошо справляется с задачей в основном в крупных городах.
 
Если смена геокодера не приводит к значительным изменениям результата, то следует приложить больше усилий для подготовки компонентного адреса.


==После геокодирования==
==После геокодирования==
Результатом геокодирования является изменение геометрии. Координаты точки в таблицу не дописываются. Если вам необходимо табличное представление координат, выберите в меню Вектор->Обработка геометрии->Экспортировать\добавить поле геометрии
Результатом геокодирования является изменение геометрии. Координаты точек в таблицу не записываются. Если вам необходимо табличное представление координат, выберите в меню "Вектор->Обработка геометрии" пункт "Экспортировать / добавить поле геометрии".
 
==Ограничения в использовании геокодеров==
Коммерческие сервисы геокодирования (такие как Yandex или Google) имеют строгие лицензионные ограничения как на использование сервисов, так и на использование данных, полученных с помощью этих сервисов. '''Плагин предполагает использование этих сервисов только в ознакомительных целях. Пользователь сам отвечает за соблюдение этих ограничений!'''
 
=== Google ===
[https://developers.google.com/maps/documentation/geocoding/?hl=ru#Limits Ограничение на использование]
 
''Использование службы Google Geocoding API ограничено. Максимальное количество запросов геопозиционирования в день – 2500. Службу Geocoding API можно использовать только в совокупности с картой Google. Геокодирование без отображения результатов на карте не разрешается. Полная информация о допустимом использовании содержится в разделе [https://developers.google.com/maps/terms?hl=ru#section_10_12 Ограничения лицензии на использование Maps API].''
 
=== Yandex ===
[http://legal.yandex.ru/maps_api/ Пользовательское соглашение сервиса «API Яндекс.Карты»]
 
''2.3.5. Геокодирование. Функция геокодирования может быть использована только для сайтов, использующих Сервис. Пользователь имеет право обрабатывать полученные координаты исключительно для отображения их посредством Сервиса. Количество обращений к функции геокодирования ограничено 25000 запросов для одного сайта в сутки.''
 
''Пользователь не имеет права:''
 
''2.3.6.5. Сохранять, обрабатывать и видоизменять полученные через Сервис Данные (включая результаты геокодирования), за исключением случаев временного хранения (кэширования) результатов геокодирования исключительно для целей улучшения функциональности и работоспособности Сервиса и только для использования в рамках возможностей, предоставляемых Сервисом.''
 
=== Nominatim ===
[http://wiki.openstreetmap.org/wiki/Nominatim_usage_policy Политики использования сервиса Nominatim]
 
Обратите внимание, что данные, возвращаемые Nominatim, основаны на данных OpenStreetMap и попадают под действия лицензии [http://www.openstreetmap.org/copyright ODbL], хотя небольшие выгрузки могут быть использованы при условии честного использования (fair use/fair dealing).
 
=== openstreetmap.ru ===
В данный момент конкретной лицензии нет. Предполагается лицензионное соглашение, аналогичное Nominatim.
 
== Возможные альтернативы ==
По ссылками ниже можно найти ещё не описанные варианты:
* http://gis.stackexchange.com/questions/6530/choosing-geocoding-service
* http://gis.stackexchange.com/questions/18871/is-there-an-open-source-geocoding-tool-which-can-be-used-commercially
* http://gis.stackexchange.com/questions/21382/bulk-geocode-20-million-records
* http://wiki.openstreetmap.org/wiki/Search_engines - на основе OSM, далеко не полный список

Текущая версия от 08:52, 21 сентября 2016

Эта страница опубликована в основном списке статей сайта
по адресу http://gis-lab.info/qa/rugeocoder.html


Геокодирование в QGIS с помощью сервисов Google, Yandex, OSM Nominatim.

Введение

Одним из способов получения геоданных из адресной информации является операция геокодирования. Геокодирование позволяет получить координаты объектов, адреса которых известны. В связи с большим объемом адресных БД, эту операцию обычно производят сервисы геокодирования. Наиболее известные сервисы на данный момент - Google Geocoding, Яндекс.Карты Геокодирование и OSM Nominatim.

QGIS не имеет встроенной возможности пользоваться сервисами геокодирования. Но гибкая система расширений позволяет добавлять практически любые функции. Для выполнения пакетного геокодирования можно использовать расширение RuGeocoder.

Подготовка к работе

Для выполнения геокодирования понадобятся:

При подготовке данных также может понадобиться расширенный калькулятор атрибутивных полей. В примерах будет использоваться расширение FieldPyculator.

Процесс установки QGIS подробно описан в статье Установка QGIS/GRASS с помощью OSGeo4W.

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

Подготовка данных

Для работы геокодер требует точечный слой с адресами, находящимися в одном или нескольких атрибутивных полях. Компонентная форма записи адреса (название города, название улицы, номер дома и т.д. находятся в отдельных полях) более предпочтительна и обычно позволяет добиться значительно лучшего результата при использовании любого геокодера.

Преобразование таблицы в SHP файл

Достаточно часто входные данные представлены в виде обычных таблиц. Наиболее удобный формат для обработки - CSV. С данным форматом могут работать практически все современные табличные редакторы: MS Excel, OpenOffice Calc и другие.

Для геокодирования таблицы её необходимо конвертировать в любой формат геоданных, которые можно редактировать в QGIS - SHP, sqlite, mapinfo и тд. Это преобразование можно сделать с помощью ogr2ogr (подробное описание можно прочитать в статье Конвертация данных из CSV в SHP и обратно с OGR). Но данный метод требует создания vrt файла и использование командной строки.

Для удобства RuGeocoder имеет встроенную функцию с подобным преобразованием. На панели "Модули" необходимо нажать кнопку "Конвертировать CSV в SHP" RuGeocoder Convert.png. То же действие можно выполнить через меню "Модули" -> "RuGeocoder" -> "Конвертировать CSV в SHP". В открывшейся форме нужно выбрать входной CSV файл и указать путь, по которому будет сохранен результирующий SHP файл.

RuGeocoder Converter form.png

В результате конвертации, будет получен точечный shp файл с той же самой атрибутикой и нулевыми координатами. Если включена соответствующая опция, то к атрибутике будут добавлены пустые поля типа string: settlement, street, building_n и geocoded. Данные поля можно будет использовать в целях подготовки адреса для геокодера.

Кодировка данных выходного слоя будет такой же, как у входного. Если CSV файл был сохранен в UTF-8, то SHP будет иметь ту же кодировку. Возможно, после добавление слоя на карту у него будет выставлена неверная кодировка (зависит от настроек по умолчанию). Изменить кодировку можно в свойствах слоя на вкладке Общие, Параметры источника.

Рассмотрим для примера CSV файл (Файл:RuGeocoder Ufa-leninsky utf8.zip), содержащий адреса УИК Ленинского района г. Уфы. После конвертирования получаем следующий SHP файл: Файл:Ufa-leninsky utf8 shp.zip.

Подготовка адреса

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

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

value =  <addr_vote>.split(',')[1].replace(u'ул.','').strip()

Для получения номеров строений используем следующий код:

value =  <addr_vote>.split(',')[2].strip().split(' ')[0]

В результате, получаем SHP файл (Файл:Ufa-leninsky utf8 shp attr.zip) с заполненными полями street и building_n. Исключением является одна запись (УИК с номером 187), в поле street которой попало название поселка. Данный недостаток легко исправить вручную.

Больше примеров обработки адресов можно найти на странице в вики: Проект_УИК_Республики_Башкортостан.

Геокодирование

После предварительной подготовки адресов можно приступать к самому геокодированию. Геокодировать можно любой точечный слой, редактирование которого возможно в QGIS (PostGIS, sqlite, MSSQL и т.д.). Слой для обработки должен быть добавлен в проект и открыт на редактирование.

Форма обработки вызывается нажатием кнопки "Пакетное геокодирование" RuGeocoder Geocode.png на панели "Модули". Тоже действие можно выполнить через меню "Модули".

В открывшейся форме прежде всего необходимо выбрать слой для геокодирования. Если адрес записан в одном поле, то достаточно выбрать это поле.

RuGeocoder AddrMerge.png

Для улучшения результатов геокодирования крайне желательно указать регион, включив соответствующий переключатель и выбрав из списка необходимый субъект. Если в слое присутствуют адреса из нескольких населенных пунктов, то необходимо выбрать поле, содержащее название поселения. Если же все адреса относятся к одному населенному пункту, то его название можно указать вручную. Аналогичная ситуация с районам.

RuGeocoder AddrPartialSplit.png

Идеальным случаем является вариант, когда адрес компонентный. Включив переключатель "Улица", можно указать поле содержащее название улицы и поле содержащее номер строения.

RuGeocoder AddrSplit.png

Выбрав геокодер, можно запускать процесс обработки. Время выполнения геокодирования зависит от количества записей в слое, скорости соединения и загруженности выбранного сервиса. Геометрии записей, для которых геокодирование прошло успешно, будут изменены в соответствии с полученными результатами. В случае, когда геокодер не смог найти необходимое здание, будут возвращены координаты улицы, а при невозможности определить улицу - координаты населенного пункта. Для записей, адреса которых не распознаны геокодером, будут записаны нулевые координаты. Также, если в слое присутствует поле "geocoded", то в него будет записан адрес, который вернул геокодер. Данное поле удобно использовать для анализа результатов обработки.

Если после геокодирования в слое много точек с нулевыми координатами (поле "geocoded" содержит много значений "Not found") или точки попадают в центр населенного пункта ("geocoded" содержит название поселения), то либо неудачно подобран геокодер, либо адреса подготовлены плохо и не могут быть распознаны.

В первом случае можно попробовать выбрать другой сервис из списка доступных. Следует учесть, что для больших и средних городов наиболее подходящим является Yandex. Для малых населенных пунктов чаще подходит OSM, хотя в некоторых случаях Yandex не отстает. Google хорошо справляется с задачей в основном в крупных городах.

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

После геокодирования

Результатом геокодирования является изменение геометрии. Координаты точек в таблицу не записываются. Если вам необходимо табличное представление координат, выберите в меню "Вектор->Обработка геометрии" пункт "Экспортировать / добавить поле геометрии".

Ограничения в использовании геокодеров

Коммерческие сервисы геокодирования (такие как Yandex или Google) имеют строгие лицензионные ограничения как на использование сервисов, так и на использование данных, полученных с помощью этих сервисов. Плагин предполагает использование этих сервисов только в ознакомительных целях. Пользователь сам отвечает за соблюдение этих ограничений!

Google

Ограничение на использование

Использование службы Google Geocoding API ограничено. Максимальное количество запросов геопозиционирования в день – 2500. Службу Geocoding API можно использовать только в совокупности с картой Google. Геокодирование без отображения результатов на карте не разрешается. Полная информация о допустимом использовании содержится в разделе Ограничения лицензии на использование Maps API.

Yandex

Пользовательское соглашение сервиса «API Яндекс.Карты»

2.3.5. Геокодирование. Функция геокодирования может быть использована только для сайтов, использующих Сервис. Пользователь имеет право обрабатывать полученные координаты исключительно для отображения их посредством Сервиса. Количество обращений к функции геокодирования ограничено 25000 запросов для одного сайта в сутки.

Пользователь не имеет права:

2.3.6.5. Сохранять, обрабатывать и видоизменять полученные через Сервис Данные (включая результаты геокодирования), за исключением случаев временного хранения (кэширования) результатов геокодирования исключительно для целей улучшения функциональности и работоспособности Сервиса и только для использования в рамках возможностей, предоставляемых Сервисом.

Nominatim

Политики использования сервиса Nominatim

Обратите внимание, что данные, возвращаемые Nominatim, основаны на данных OpenStreetMap и попадают под действия лицензии ODbL, хотя небольшие выгрузки могут быть использованы при условии честного использования (fair use/fair dealing).

openstreetmap.ru

В данный момент конкретной лицензии нет. Предполагается лицензионное соглашение, аналогичное Nominatim.

Возможные альтернативы

По ссылками ниже можно найти ещё не описанные варианты: