Настройки GeoServer#

Чтобы перейти к настройкам GeoServer в конфигураторе перейдите в раздел «Настройки системы / Геосерверы».

В разделе «Геосерверы» можно добавлять и изменять описание геосервера для размещения и публикации геоинформационных ресурсов.

Примечание

Для установки проекта используется подключение к конкретному геосерверу.

Добавление описания GeoServer#

Для добавления GeoServer нажмите кнопку плюс.

Заполните поля со свойствами GeoServer и нажмите кнопку cохранить.

../../../_images/geo_set1.png

Когда на проекте несколько геосерверов, то в наименовании геосервера в скобках можно указывать последние цифры ip адреса и через «:»» порт геосервера. Например, если адрес геосервера http://172.16.1.10:8080/geoserver, то наименование может быть: Геосервер 1.1 (.10:8080).

Изменение описания GeoServer#

В разделе «Геосерверы» щелкните левой кнопкой мыши по названию геосервера для перехода к его настройкам.

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

Сброс настроек GeoServer#

Возврат к стартовым настройкам GeoServer для проекта выполняется в разделе «Проекты / Наименование проекта».

Выберите пункт «Сбросить Geoserver до стартовых настроек проекта».

Настройка систем координат#

В разделе «Настройки системы / Системы координат» можно просмотреть существующие системы координат и добавить новые.

Чтобы добавить систему координат, нажмите кнопку плюс и заполните поля с описанием системы координат. Нажмите кнопку ОK.

Примечание

При изменении поля [Wkt описание], поле [Proj4 описание] рассчитывается автоматически и наоборот.

../../../_images/sk.png

Чтобы изменить описание системы координат, в разделе «Настройки системы / Системы координат» левой кнопкой мыши щелкните по названию системы координат, в которую необходимо внести изменения.

Внесите изменения и сохраните их с помощью кнопки ОK.

Важно

Некоторые числовые коды могут совпадать с общепринятыми значениями, зарезервированными в EPSG и ESRI. Нельзя использовать такие коды для идентификации систем координат, создаваемых пользователем, так как программные библиотеки, используемые для пересчета между системами координат, не будут корректно обрабатывать пользовательские параметры пересчета. Вместо пользовательских параметров пересчёта будут использованы параметры общепринятые для этих идентификаторов. В случае создания или изменения системы координат с зарезервированным идентификатором будет выведено сообщение с информацией о невозможности использования данного идентификатора.

../../../_images/sk1.png

Для работы механизма проверки необходимо иметь в системе установленный компонент Common.ReservedSrids.1.1.sql. Установка компонента производится через утилиту Gems.Cli следующей командой:

dotnet /путь/до/папки/утилиты/Cli/gems.cli.dll db-migrate -f /путь/до/папки/установки/ИАС/AppServer -c "Username=пользовательБД;Password=парольПользоватеья;Host=хост;Database=имяБД" -o
Common.ReservedSrids

При отсутствии компонента Common.ReservedSrids.1.1.sql редактирование систем координат становится невозможным. На экране будет выведено сообщение с информацией об этом.

../../../_images/sk2.png

Кроме того, рекомендуется выполнить запрос на уже существующих базах данных для проверки наличия зарезервированных идентификаторов в пользовательских системах координат. Для корректной работы запроса необходимо наличие компонента Common.ReservedSrids.1.1.sql. Запрос выглядит так:

select code from regadm.d_gis_srs s
        where exists(select from regadm.spatial_ref_reserved_srids r where r.srid not in(3857,4326)
                        and r.srid=(regexp_replace(s.code,'EPSG:(\d+)','\1'))::integer);

Для найденных систем координат необходимо изменить идентификатор на незарезервированный EPSG/ESRI по данной инструкции.

Для изменения идентификаторов систем координат в данных рекомендуется воспользоваться следующим скриптом:

do
$$
declare
  -- Параметры скрипта
  tSchema text:='СхемаПроекта';   --Укажите схему базы данных в которой будет выполняться изменений srid
  tFindSrs integer:=8904;         --Укажите зарезервированный srid, который скрипт будет искать и исправлять
  tToSrs integer:=89041;          --Укажите новый незарезервированный srid на который будет изменяться зарезервированный
  --
  c bigint;
  rec record;
  tColumn text:='geoloc_orig';
begin
  for rec in(select c.table_schema,c.table_name,c.column_name
      from information_schema.columns c
        where table_schema=tSchema
          and column_name=tColumn and table_name!~'^v_'
          and not exists(select from information_schema.views v
              where v.table_schema=c.table_schema
                and v.table_name=c.table_name))
  loop
    execute 'select count(*) from '||rec.table_schema||'.'||rec.table_name||' where public.st_srid('||tColumn||')='||tFindSrs into c;
    if c!=0 then
      raise info '%.%:%',rec.table_schema,rec.table_name,c;
      if rec.table_name!~'^l_' then
        execute 'alter table '||rec.table_schema||'.'||rec.table_name||' disable trigger all';
        execute 'update '||rec.table_schema||'.'||rec.table_name||' set '||tColumn||'=public.st_setsrid('||tColumn||','||tToSrs||') where public.st_srid('||tColumn||')='||tFindSrs;
        execute 'alter table '||rec.table_schema||'.'||rec.table_name||' enable trigger all';
      else
        execute 'update '||rec.table_schema||'.'||rec.table_name||' set '||tColumn||'=public.st_setsrid('||tColumn||','||tToSrs||') where public.st_srid('||tColumn||')='||tFindSrs;
      end if;
    end if;
  end loop;
end$$;

Настройка геосетки#

Настройка геосетки выполняется в разделе «Настройки системы / Геосетки».

Описание геосетки используется для размещения и публикации геоинформационных ресурсов.

Чтобы добавить описание геосетки нажмите кнопку плюс и заполните поля с описанием.

В поле [Масштаб] нажмите кнопку + Добавить и введите значение масштаба. Выполните действие для каждого значения масштаба. Для масштабов реализован валидатор, который проверяет, что каждый уровень меньше следующего и больше предыдущего.

Сохраните, а затем нажмите Применить на GeoServer.

Чтобы изменить описание системы координат, в разделе «Настройки системы / Геосетки» левой кнопкой мыши щелкните по названию геосетки, в которую необходимо внести изменения.

Внесите изменения и нажмите кнопку cохранить.

../../../_images/setka.png

Обновление настроек GeoServer в приложениях и службах Geometa#

Для корректной работы Geometa требуется, чтобы у некоторых приложений и служб была актуальная информация о конфигурации GeoServer. Среди них служба сервера приложения, служба монитора кэша (CacheMonitor) и служба импортёра ЕГРН (EgrnImporter).

Для изменения интервала обновления необходимо отредактировать в файл appsettings.json в корневой директории сервера приложения. Секция выглядит следующим образом, интервал настраивается отдельно для WmtsCapabilities и geowebcache.xml:

"Gis": {
        "WmtsCapabilitiesRefreshInterval": 30,
        "GwcConfigurationRefreshInterval": 30
  }

При отсутствии настройки применяется значение по умолчанию в 5 минут. Значения настроек указываются в минутах.

К операциям, которые могут вызвать изменения в конфигурации GeoServer, относятся функции изменения геосеток, параметров геосетки и привязки слоя к Геосеткам. Если существует такая необходимость, изменения можно применить сразу после указанных операций, перезапустив Geometa с помощью команды:

systemctl restart Gems.Ias.ApplicationServer.service

Настройка крупноформатных изображений#

Чтобы настроить формирование крупноформатных изображений:

  1. Перейдите в веб-интерфейс GeoServer

  2. В меню слева в блоке «Службы» выберите «WMS». Откроется форма Web Map Service

../../../_images/geoserver_pic2.png
  1. В секции Ограничения потребления ресурсов укажите:

    • в поле «Макс память отрисовки (КБ)» значение «262144»

    • в поле «Макс время рендеринга (с)» значение «300»

  2. В секции Map Buffer Settings в поле «Max buffer size (pixels)» установите значение «512» вместо «25»

../../../_images/geoserver_pic3.png
  1. Нажмите кнопку Отправить

Настройка логирования#

Чтобы настроить логирование, необходимо:

  1. Перейти в веб-интерфейс GeoServer.

  2. В меню слева выбрать «Настройки → Глобальные».

../../../_images/geoserver_log.png
  1. В открывшейся форме из списка «Ведение журнала профиля» выберите «PRODUCTION_LOGGING.properties».

  2. Под этим же списком снимите флажок «Вывод в StdOut».

../../../_images/geoserver_log1.png
  1. Нажмите кнопку Отправить

Оптимизация работы с кэшем#

Для слоёв подложек, которые используют геосервер, допустимо выполнить следующую оптимизацию для ускорения генерации кэша:

  1. Пройдите аутентификацию на странице геосервера: http://адрес_геосервера:порт/geoserver/web/.

  2. Откройте настройки слоя:

2.1. Перейдите в список слоёв и найдите нужный слой:

2.2. Зайдите в настройки слоя, щёлкнув по имени найденного слоя и перейдите на вкладку Кеширование тайлов.

2.3. Измените настройку “Показатели метатайлов” с 4 на 4 до 1 на 1 и нажмите кнопку Сохранить.

Генерация кэша#

Если необходимо заранее подготовить кэш на Геосервере, то можно воспользоваться инструментом в составе Геосервера:

Примечание

В примерах используется протокол http, но возможен https.

  1. Пройдите аутентификацию на странице геосервера: http://адрес_геосервера:порт/geoserver/web/.

  2. Перейдите в список кэшируемых слоёв: http://адрес_геосервера:порт/geoserver/gwc/demo.

  3. Выберите нужный слой.

  4. Нажмите на ссылку “Seed this layer”.

  5. Укажите параметры:

  • Number of tasks to use – укажите количество одновременных процессов генерации кэша. Не рекомендуется устанавливать более 1 задачи.

  • Type of operations – выберите действие с кэшем, могут быть следующие значения:

    • Seed – генерировать кэш для еще несгенерированных тайлов;

    • Reseed – перегенерировать все тайлы;

    • Truncate – очистить тайлы.

  • Grid Set – укажите геосетку.

  • Format - укажите формат, как правило это «image/png».

  • Zoom start, Zoom stop - укажите масштабы, с какого по какой генерировать. Зависят от доступных масштабов геосетки. Рекомендация: не стоит использовать слишком большой диапазон масштабов, так как генерация может занять длительное время. Стоит начать с одного популярного масштаба.

  • Bounding box - укажите минимальный описывающий прямоугольник для используемой области карты.

После заполнения параметров нажмите кнопку Submit. Запустится генерация кэша. Чтобы видеть актуальный статус генерации, нажмите refresh list.

Сервис инвалидации кэша Geoserver#

Примечание

Данный сервис полноценно функционирует в приложении Импортёр данных (Emerald). В остальных модулях работает монитор кэша.

Сервис инвалидации кэша отвечает за очистку кэша в Системе. Очистка кэша – это удаление неактуальных данных в Geoserver.

Данный сервис представляет собой посредника между клиентами, изменяющими исходные пространственные данные, и тайловым кэшем Geoserver.

Тайловый кэш слоя GeoServer – это набор растровых изображений определённого размера, или тайлов (tiles), представляющих собой равные составные части всего изображения слоя. Тайловый кэш позволяет пропустить этап отрисовки изображения из источника и сразу предоставить готовое изображение по протоколу WMTS. Наличие тайлового кэша требует отслеживания и своевременного обновления тайлов в случае изменения данных источника. Иначе данные в тайловом кэше будут отличаться от данных источника и пользователь не увидит актуальные данные.

Клиент, изменяющий данные, отправляет событие в брокер сообщений RabbitMQ с указанием изменённого типа LogicalTable, LogicalView и областей изменения.

Инвалидатор кэша получает данное событие или набор событий и передаёт команду на Geoserver для удаления кэша в указанных областях для всех слоёв, основанных на указанном типе LogicalTable, LogicalView.

В сервисе инвалидатора доступен функционал монитора кэша, который проверяет с интервалом 30 секунд наличие изменений в БД по пространственным данным проектов, а также отсылает команду Geoserver на очистку изменённых областей.

Монитор кэша пропускает объекты, уже очищенные инвалидатором, избегая повторной очистки. Функционал монитора кэша добавлен как дополнительная возможность, которую можно отключать с помощью переменной gvCACHE_MON_ENABLED.

Установка

Примечание

Сервис инвалидации кэша Geoserver работает в контейнере Docker и устанавливается вместе с Geometa.

По умолчанию сервис устанавливается в директорию /opt/CacheInvalidator.

  1. Укажите следующие переменные в файле vars.yml. (См. vars_yml)

Важно

Файл vars_default.yml редактировать не нужно. Он содержит дефолтные значения переменных.

Чтобы изменить значение переменной из vars_default.yml, добавьте (продублируйте) переменную в vars.yml и укажите нужное значение – при установке оно будет перезаписано.

Название переменной

Значение по умолчанию

Описание переменной

vars.yml:

gvCACHE_INVALIDATOR_INSTALL_DIR

/opt/CacheInvalidator

Директория, в которую будет установлен сервис инвалидации кэша

vars_default.yml:

tv_CACHE_INVALIDATOR_RUNDIR

/home/{{ ansible_user }}/CacheInvalidator

gvCACHE_INVALIDATOR_EXTERNAL_PORT

5012

Порт, на котором доступен сервис инвалидации кэша

gvCACHE_MON_ENABLED

true

Флаг включения функционала монитора кэша, проверяющего БД на изменения

gvCACHE_MON_QUANTITY_OF_THREADS

2

Настройка монитора кэша - количество одновременных потоков

gvCACHE_MON_REVISION_DIFF_PARTITION

1000

Размер порции ревизий для обработки

gvCACHE_MON_PURGE_HOUR_OF_A_DAY

18

Интервал в часах, по истечению которого будет удален кэш отфильтрованных данных с помощью CQL_FILTER

  1. Проверьте и убедитесь в наличии следующих переменных:

    • gvCONNECTION_STRING – подключение БД Geometa;

    • gvRABBITMQ_PUBLIC_ORIGIN – адрес, по которому доступен RabbitMQ;

    • gvRABBITMQ_PORT – порт, по которому доступен RabbitMQ;

    • gvRABBITMQ_USER – имя учётной записи для доступа RabbitMQ;

    • gvRABBITMQ_PASSWORD – пароль учётной записи для доступа к RabbitMQ.

  2. Обновите основное приложение Geometa с помощью тегов install_ias, install_cache_invalidator. (См. ansible)

  3. Обновите компонент БД Common.CacheMonitor для работы монитора кэша. (См. Установка и обновление компонентов БД)