13 | Документация

Подготовка проекта в QGIS

Для публикации сервиса геокодирования в CoGIS Server необходимо создать картографический проект с данными геокодера.
Для этого необходимо добавить в картографический проект слои зданий и улиц (или с другими данными), созданные на предыдущем этапе (см. Рисунок 202 ).
Рисунок 202 - Добавление слоев для геокодера в картографический проект QGIS
Далее для каждого слоя необходимо задать наличие и правильный порядок полей. Для этого из контекстного меню слоя нужно открыть таблицу атрибутов (см. Рисунок 203 ).
Рисунок 203 - Таблица атрибутов слоя
Далее в таблице атрибутов из контекстного меню для заголовков колонок необходимо выбрать пункт Organize Columns (см. Рисунок 204 ).
Рисунок 204 - Настройка состава полей
И затем в появившемся окне Organize Table columns необходимо оставить включёнными только поле primary_key и те поля, которые будут использованы в геокодировании (см. Рисунок 205 ), нажать ОК.
Рисунок 205 - Выбор полей слоя для использования в сервисе геокодирования
Таким образом в таблице будет настроен порядок полей. Эти действия необходимо повторить для всех остальных слоёв.
Затем нужно задать каждому слою поле, которое будет использоваться в качестве вывода для поиска ( Display Field ). Для этого в свойствах слоя необходимо выбрать пункт Вывод и задать в нем соответствующее поле (см. Рисунок 206 ).
Рисунок 206 - Настройка поля для вывода
Если необходимо сделать вывод по нескольким полям, то можно задать Display expression . Например для слоя зданий выражение может выглядеть следующим образом : concat("postcode", ' ', "city",' ',"street",' ',"number") , см. Рисунок 207 .
Рисунок 207 - Вывод по нескольким полям
Примечание: поддерживаются только следующие функции "sin", "cos", "tan", "atan", "abs", "asin", "acos", "log", "log10", "cailing", "floor", "round", "exp", "sqrt", "ltrim", "rtrim", "substr", "substring", "concat", "lower", "upper", "pow", "power", "andbits", "len", "length", "coalesce", "mod", "scale_exp", "scale_linear", "to_string", "tostring", "var", "min", "max", "now", "interval", "date_part","format_date"
По умолчанию freetext-поиск происходит по полю, указанному в параметре Отображаемое имя (DisplayField).
Если там указано выражение, freetext-поиск работать не будет. В таком случае необходимо отдельным свойством в настройках слоя указать поле, по которому выполнять поиск (см. далее).
Дополнительные переменные для тонкой настройки геокодирования:
  • elitegis_geocode_search_fields - cписок полей для поиска.
    По умолчанию freetext-поиск выполняется по полю, указанному в DisplayField. Если там указано выражение, freetext работать не будет. В таком случае необходимо данным свойством указать поля, по которым будет производиться поиск (т. е. которые были указаны при создании freetext-индекса и в том же порядке).
  • elitegis_geocode_replacement_exact - строка из набора пар по формуле <что_заменить>=<на_что_заменить>; для замены символов или групп символов в поисковом запросе на то, как они встречаются в атрибутах.
    По умолчанию ничего не меняется. Используется до обращения к поиску в базе данных, чтобы убрать особые символы (точки и запятые), развернуть слэш под данные и прочие "точные" замены символа или набора символов, где бы они ни встретились в исходной строке.
    Например, ‘\=/;,= ;.= ;’ - запись обозначает, что в поисковом запросе обратные слеши будут заменены на прямые, запятые и точки будут заменены на пробелы (пары записываются без пробелов, точка с запятой используется как разделитель между парами для замены).
  • elitegis_geocode_replacement_words - строка из набора пар по формуле <что_заменить>=<на_что_заменить>; для замены слов или части слов в поисковом запросе на то, как они встречаются в атрибутах.
    По умолчанию ничего не меняется. Используется до обращения к поиску в базе данных, чтобы заменить сокращённый вариант " ул " на " улица ", вариант " м-ль " на " магистраль " и т. д., чтобы запрос соответствовал данным и работал fulltext-поиск.
    Например, ‘б-р=бульвар;ж/м=жилмассив;м-ль=магистраль;’
  • elitegis_geocode_score - минимальный показатель, который будет использован при поиске через fulltext-индекс, целочисленное число, по умолчанию 100 .
  • elitegis_geocode_score_bonuses - возможность повысить показатель сравнением значений в полях найденного кандидата с искомой строкой (без учета регистра), строка из набора пар "<имя_поля>=<бонус_за_содержит_в_слове>/<бонус_за_слово_начинается_с>/<бонус_за_совпадение_слов>;"
  • elitegis_geocode_coordinates_search - переменная указывается у специальных (одного или нескольких) полигональных слоев, которые через геометрию своих объектов, будут задавать область поиска по координатам.
    Задайте одно из значений:
    • full_search (значение по умолчанию);
      Если в строке поиска распознаны координаты, поиск осуществляется по распознанным координатам, иначе - запустится обычный поиск по строке.
      Если по распознанным координатам объект не найден, после завершения поиска по координатам запустится обычный поиск по строке.
    • coordinate_search_only .
      Поиск осуществляется только по распознанным координатам.
      Если значение переменной не задано, то используется значение по умолчанию - full_search .
      Переменная может быть указана как слою, так и проекту в целом. В случае указания переменной для проекта в целом поиск по координатам будет осуществляться в пределах всего мира.
  • elitegis_geocode_coordinates_spatial_reference - через переменную определяется система координат для поиска по координатам.
    По умолчанию (если параметр не задан) это система координат проекта.
    Систему координат можно указать в форматах WKID, WKT или proj4.
  • elitegis_geocode_replacement_regexes_ <пара> _from - переменная позволяет подстроить строку поиска под шаблон; в качестве значения переменной задается с помощью выражения (regex), какую часть строки поиска надо заменить.
    Переменная используется в паре с переменной elitegis_geocode_replacement_regexes_ <пара> _to . При этом <пара> выступает в качестве идентификатора пары. Идентификатором пары может быть число или строка, не содержащая знака подчеркивания.
  • elitegis_geocode_replacement_regexes_ <пара> _to - переменная позволяет подстроить строку поиска под шаблон; в качестве значения переменной задается с помощью выражения (regex), на какую строку надо заменить часть строки поиска.
    Переменная используется в паре с переменной elitegis_geocode_replacement_regexes_ <пара> _from . При этом <пара> выступает в качестве идентификатора пары. Идентификатором пары может быть число или строка, не содержащая знака подчеркивания.
Данные свойства указываются на вкладке Переменные (см. Рисунок 208 ).
Рисунок 208 - Настройка «тонкого» поиска адреса
Таблица 20 - Пример значений для свойств геокодера
Параметр
Пример значения
elitegis_geocode_replacement_exact
\=/;,= ;.= ;
elitegis_geocode_replacement_words
б-р=бульвар;ж/м=жилмассив;м-ль=магистраль;пер=переулок;пл=площадь;пос=поселок;пр-д=проезд;пр-т=проспект;сп=спуск;ул=улица;ш=шоссе;
elitegis_geocode_score
65
elitegis_geocode_score_bonuses
street_type=0/0/5;street_name=0/5/10;house_number=0/0/20;
elitegis_geocode_search_fields
district_name,full_address
elitegis_geocode_coordinates_search
full_search
elitegis_geocode_replacement_regexes_korpus_from
([ ,0-9])[ ]?к([0-9])
elitegis_geocode_replacement_regexes_korpus_to
\1 корпус \2
Далее необходимо сохранить созданный QGS-проект (см. Рисунок 209 ).
Рисунок 209 - Сохранение QGS-проекта
Подготовка данных и проекта для публикации сервиса геокодирования завершена.