Мультитул#
Мультитул – это утилита для публикации слоёв и карт на основе CSV; удаления слоёв описанных в CSV (с возможностью удаления их стилей); проверки того, что папка содержит все необходимые SLD для слоёв описанных в CSV; валидации SLD уже опубликованных слоёв на предмет соответствия БД и требованиям легенды.
Для работы доступны консольная версия Мультитула и docker-версия. Docker-версия запускается на сервере с приложением. Консольная – запускается локально.
Особенности работы Мультитула#
мультитул плохо работает на проектах, в которых GeoServer создаётся не «с нуля», а с шаблона другого проекта;
необходимо учитывать, что при изменении геосеток, параметров геосетки и привязки слоя к геосеткам в приложениях и службах Geometa такие изменения применяются с задержкой. Подробнее читайте в разделе Обновление настроек GeoServer в приложениях и службах Geometa.
для работы Мультитула должны быть открыты все порты на GeoServer, нужные;
должна быть обновлена сетка;
доступ на папки куда сливаются слои должны иметь доступ на чтение;
в структуре GeoServer не должно было быть ложных геосерверов, которых физически не существует.
Важно
ВСЕ CSV-файлы (указанные ниже), которые используются для работы, должны иметь кодировку UTF-8 (без BOM).
Запускайте команды из той папки, в которой расположена папка GisMultitool, при запуске команд из консоли.
Если Мультитул запускается на сервере, то файлы разместите по пути, указанном в переменной
gvGISMULTITOOL_SHARE_DIR. При обращении к сервису, развернутому на сервере с приложением, в командах указывайте путь до этих файлов по типу/app/share/....
Установка#
Убедитесь в наличии модуля
GisMultitool.Service. Модуль уже присутствует, если вы получили пакет с дистрибутивами для проекта.Укажите следующие переменные в файле vars.yml.
Название переменной |
Значение по умолчанию |
Описание переменной |
|---|---|---|
vars.yml: |
||
gvGISMULTITOOL_INSTALL_DIR |
/opt/GisMultiTool |
Директория, в которую будет установлен Мультитул (GisMultiTool) |
gvGISMULTITOOL_SHARE_DIR |
/opt/GisMultiTool_Share |
Директория, в которую будут помещаться файлы для публикации |
gvGEOSERVERS_HOSTS |
name: "geoserver8080-devops.gemsdev.ru" ip: "10.1.5.34" name: "geoserver7080-devops.gemsdev.ru" ip: "10.1.5.34" |
Список названий и адресов геосерверов |
Обновите модуль с помощью тега
install_gismultitool.
Краткая справка по инструменту#
Чтобы получить список допустимых команд приложения, можно воспользоваться командой:
// Для локального выполнения dotnet ./GisMultitool/gistool.dll --help
// Для сервиса, развернутого на сервере с приложением docker exec gismultitool dotnet gistool.dll –help
Для получения справки по конкретной команде можно воспользоваться командой:
// Для локального выполнения dotnet ./GisMultitool/gistool.dll <название команды> --help
// Для сервиса, развернутого на сервере с приложением docker exec gismultitool dotnet gistool.dll <название команды> --help
Например, для получения справки по публикации слоёв команда будет выглядеть следующим образом:
dotnet ./GisMultitool/gistool.dll publish-layers --help
Публикация SLD#
Поместите необходимые SLD в одну папку.
Откройте консоль и выполните команду публикации SLD.
Для публикации SLD потребуются следующие параметры:
-d, --sld-dir-path– путь до папки с SLD стилями;-x, --skip-validation– игнорировать ошибки XSD;-n, --schema-names– список схем (указываются через пробел) или можно указать все-a, --all-schemas;-c, --connection– строка подключения к базе данных.
Примеры команд:
// Для локального выполнения
dotnet ./GisMultitool/gistool.dll publish-sld -d "D:\Мультитул\SLD" -n schema1 schema2 -c "Server=10.1.1.1;Port=5432;Database=ias;User Id=postgres;Password=password;"
// Для сервиса, развернутого на сервере с приложением
docker exec gismultitool dotnet gistool.dll publish-sld -d "/app/share/<название папки с sld>" -n schema1 schema2 -c
Публикация слоёв#
В файле layers.csv разместите список слоёв для публикации, для этого добавьте следующие столбцы:
PV слоя – значение Name PV из метаданных слоя. Например,
V_GEO_URBAN_ANALYTICS_SOCIAL_STANDARD_DOU;Стиль – стиль применяемый к слою. Стиль следует указывать без уточнения схемы перед именем слоя. Например, вместо:
tumenmr:V_GEO_GKN_PARCE, достаточно просто указатьV_GEO_GKN_PARCEL;Имя – наименование публикуемого слоя. Имя может быть пустым и не указываться в файле.
Пример структуры файла
PV слоя;Стиль;Имя
V_GEO_URBAN_ANALYTICS_SOCIAL_STANDARD_PEOPLE_NUMBER;V_GEO_URBAN_ANALYTICS_SOCIAL_STANDARD_PEOPLE_NUMBER;Численность жителей (расчетная)
V_GEO_URBAN_ANALYTICS_SOCIAL_STANDARD_DOU_MODEL;V_GEO_URBAN_ANALYTICS_SOCIAL_STANDARD_DOU_MODEL;Добавить объект дошкольного образования
Откройте консоль и выполните команду публикации слоёв.
Для публикации слоёв потребуются следующие параметры:
-c, --connection– строка подключения к базе данных;-g, --geoserver-name– геосервер (URL геосервера, ключ или отображаемое имя в БД geometa);-n, --schema-names– список схем (указываются через пробел) или можно указать все-a, --all-schemas;-l, --csv-layers– список слоёв в файле .csv.
Примеры команд:
// Для локального выполнения
dotnet ./GisMultitool/gistool.dll publish-layers -c "Server=10.1.1.1;Port=5432;Database=ias;User Id=postgres;Password=password;" -g geoserver80 -l layers.csv -n region mo1
// Для сервиса, развернутого на сервере с приложением
docker exec gismultitool dotnet gistool.dll publish-layers -c "Server=10.1.1.1;Port=5432;Database=ias;User Id=postgres;Password=password;" -g geoserver80 -l /app/share/layers.csv -n region mo1
Дождитесь сообщения о завершении работы приложения и нажмите любую кнопку.
Посмотреть возникшие при публикации слоя ошибки можно в log-файле. Он располагается в папке Мультитул/GisMultitool.
Публикация карт#
В файле maps.csv разместите список слоёв для публикации в карты, для этого добавьте следующие столбцы:
PV слоя – значение Name PV из метаданных слоя. Например,
V_GEO_URBAN_ANALYTICS_SOCIAL_STANDARD_DOU;Имя карты – наименование карты слоя (создаётся автоматически, если ранее не была создана);
Имя слоя – наименование слоя публикуемого в карте;
Центр – центр карты в координатах Х и Y. Указывается через «,» в целых числах. Например,
1303011,474984. Если для одной и той же карты в списке указаны разные координаты центра, то в качестве центра по умолчанию применяется координаты первой записи по списку;Масштаб по умолчанию – значение кратности масштаба (возможные значения с 1000000 до 100 с шагом значения 1/2 от предыдущего числа). Значение не должно быть больше значения указанного в качестве максимального масштаба;
Максимальный масштаб – значение кратности масштаба (возможные значения с 1000000 до 100 с шагом значения 1/2 от предыдущего числа). Значение не должно превышать значение масштаба по умолчанию и должно быть больше значения «масштаб приближения»;
Масштаб приближения – значение кратности масштаба (возможные значения с 1000000 до 100 с шагом значения 1/2 от предыдущего числа). Значение не должно быть больше значения указанного в качестве максимального масштаба.
Важно
Имена колонок и значения колонок пишутся через знак «;» без пробелов.
Имена колонок – обязательный атрибут. Если в заголовке файла не указано имя колонки, то публикация карт будет завершена с ошибкой.
Если какое-либо из значений колонки пустое, то оно не будет применено при публикации карты.
Пример структуры файла
PV слоя;Имя карты;Имя слоя;Центр;Масштаб по умолчанию;Максимальный масштаб;Масштаб приближения;
V_GEO_URBAN_ANALYTICS_SOCIAL_STANDARD_DOU;Текущее состояние;Дошкольные образовательные организации;1303011,474984;1000000;500000;2000
V_GEO_URBAN_ANALYTICS_SOCIAL_STANDARD_DOU_SUPPLY_NOT_MODEL;Текущее состояние;Обеспеченность дошкольными образовательными организациями;1303011,474984;1000000;500000;2000
Примечание
Чтобы опубликовать свободный слой (не привязанный к карте) необходимо оставить значение Имя карты пустым ;;
V_GEO_GISOGD_TERRITORY;;Произвольная территория запроса сведений ГИСОГД
Откройте консоль и выполните команду публикации карт.
Для выполнения команды потребуется следующие параметры:
-c, --connection– строка подключения к базе данных;-n, --schema-names– список схем (указываются через пробел) или можно указать все-a, --all-schemas;-l, --csv-layers– список слоёв и их карт в файле .csv.
Примеры команд:
// Для локального выполнения
dotnet ./GisMultitool/gistool.dll publish-maps -c "Server=10.1.1.1;Port=5432;Database=ias;User Id=postgres;Password=password;" -l maps.csv -n schema1 schema2
// Для сервиса, развернутого на сервере с приложением
docker exec gismultitool dotnet gistool.dll publish-maps -c "Server=10.1.1.1;Port=5432;Database=ias;User Id=postgres;Password=password;" -l /app/share/maps.csv -n schema1 schema2
Дождитесь сообщения о завершении работы приложения и нажмите любую кнопку.
Удаление слоёв#
Когда нужно удалить из средней панели ГИС-Конфигуратора и из левой.
В файле delete-layers.csv разместите список слоёв для удаления.
Откройте консоль и выполните команду удаления слоёв.
Для выполнения команды потребуется следующие параметры:
-c, --connection– строка подключения к базе данных;-n, --schema-names– список схем (указываются через пробел) или можно указать все-a, --all-schemas;-l, --csv-layers– список слоёв в файле .csv;-s, --clear-styles– по умолчанию удаляет ещё и стили, можно не удалять стили с помощью флага-S.
Примеры команд:
// Для локального выполнения
dotnet ./GisMultitool/gistool.dll clear-layers -c "Server=10.1.1.1;Port=5432;Database=ias;User Id=postgres;Password=password;" -l delete-layers.csv -n schema4 schema2
// Для сервиса, развернутого на сервере с приложением
docker exec gismultitool dotnet gistool.dll clear-layers -c "Server=10.1.1.1;Port=5432;Database=ias;User Id=postgres;Password=password;" -l /app/share/delete-layers.csv -n schema4 schema2
Дождитесь сообщения о завершении работы приложения и нажмите любую кнопку.
Удаление опубликованных слоёв карт и свободных слоёв#
Когда нужно удалить только из левой панели ГИС-Конфигуратора.
В файле deleteMapLayersAndFreeLayers.csv разместите список слоёв для удаления в формате: имя слоя (русское наименование из левой панели ГИС-Конфигуратора) и имя карты (русское наименование из левой панели ГИС-Конфигуратора).
Откройте консоль и выполните команду удаления слоёв.
Для выполнения команды потребуется следующие параметры:
-c, --connection– строка подключения к базе данных;-n, --schema-names– список схем (указываются через пробел) или можно указать все-a, --all-schemas;-l, --csv-layers– список слоёв в файле .csv.
Примеры команд:
// Для локального выполнения
dotnet ./GisMultitool/gistool.dll clear-published-layers -c "Server=10.1.1.1;Port=5432;Database=ias;User Id=postgres;Password=password;" -l deleteMapLayersAndFreeLayers.csv -n schema4 schema2
// Для сервиса, развернутого на сервере с приложением
docker exec gismultitool dotnet gistool.dll clear-published-layers -c "Server=10.1.1.1;Port=5432;Database=ias;User Id=postgres;Password=password;" -l /app/share/deleteMapLayersAndFreeLayers.csv -n schema4 schema2 schema2
Дождитесь сообщения о завершении работы приложения и нажмите любую кнопку.
Валидация SLD слоёв#
Откройте консоль и выполните команду валидации SLD.
Для валидации слоев потребуется следующие параметры:
-c, --connection– строка подключения к базе данных;-n, --schema-names– список схем (указываются через пробел) или можно указать все-a, --all-schemas;-x, --ignore-xsd– игнорировать ошибки XSD.
Примеры команд:
// Для локального выполнения
dotnet ./GisMultitool/gistool.dll validate-sld -с "Server=10.1.1.1;Port=5432;Database=ias;User Id=postgres;Password=password;" -a -x
// Для сервиса, развернутого на сервере с приложением
docker exec gismultitool dotnet gistool.dll validate-sld -с "Server=10.1.1.1;Port=5432;Database=ias;User Id=postgres;Password=password;" -a -x
Дождитесь сообщения о завершении работы приложения и нажмите любую кнопку.
Создастся файл формата sldValidation_{алиас_проекта}.xml. Информацию о результатах можно просмотреть в нём.
Добавление сортировки объектов слоя в SLD стили проекта#
Важно
Для корректного добавления сортировки необходимо обновить Мультитул.
Для добавления сортировки выполните команду:
// Для локального выполнения
dotnet ./GisMultitool/gistool.dll add-sorting-to-sld -с "Server=10.1.1.1;Port=5432;Database=ias;User Id=postgres;Password=password;" -a
// Для сервиса, развернутого на сервере с приложением
docker exec gismultitool dotnet gistool.dll add-sorting-to-sld -с "Server=10.1.1.1;Port=5432;Database=ias;User Id=postgres;Password=password;" -a
или
// Для локального выполнения
dotnet ./GisMultitool/gistool.dll add-sorting-to-sld -с "Server=10.1.1.1;Port=5432;Database=ias;User Id=postgres;Password=password;" -n schema1 schema2
// Для сервиса, развернутого на сервере с приложением
docker exec gismultitool dotnet gistool.dll add-sorting-to-sld -с "Server=10.1.1.1;Port=5432;Database=ias;User Id=postgres;Password=password;" -n schema1 schema2
При выполнении команды во все стили проектов будет добавлен блок для сортировки объектов слоя по ключу:
<sld:VendorOption name="sortBy">key A</sld:VendorOption></sld:FeatureTypeStyle>
Если в какой-то из SLD стиля слоя уже добавлен блок сортировки, то такой стиль будет пропущен.
Исправление ошибки сортировки объектов слоя в SLD стилях проекта#
Невалидно добавленная сортировка имеет вид:
<sld:VendorOption name="sortBy"><Function name="if_then_else"><Function name="PropertyExists"><Literal>date_insert</Literal></Function><Literal>date_insert A</Literal><Literal>key A</Literal></Function></sld:VendorOption></sld:FeatureTypeStyle>
В тэге <sld:VendorOption name="sortBy">, который описывает сортировку, не может быть вложенных тэгов – только текст.
Чтобы исправить невалидную сортировку:
Выполните бэкап геосервера командой в Linux:
zip -r gs_8077_030724.zip ./8060
Перейдите в директорию data_dir в консоли Linux на сервере, где развернут Geoserver. Например:
cd /opt/geoserver/2.23.2/8060/
Найдите все файлы с некорректным содержимым стиля и сохраните в файл info:
find . -type f -iname "*.sld" -exec grep -li '<sld:VendorOption name="sortBy"><Function name="if_then_else"><Function name="PropertyExists"><Literal>date_insert</Literal></Function><Literal>date_insert A</Literal><Literal>key A</Literal></Function></sld:VendorOption></sld:FeatureTypeStyle>' {} + > info.txt
Просмотрите список некорректных стилей:
less info.txt
Выполните замену:
find . -type f -iname "*.sld" -exec sed -i 's#<sld:VendorOption name="sortBy"><Function name="if_then_else"><Function name="PropertyExists"><Literal>date_insert</Literal></Function><Literal>date_insert A</Literal><Literal>key A</Literal></Function></sld:VendorOption></sld:FeatureTypeStyle>#<sld:VendorOption name="sortBy">key A</sld:VendorOption></sld:FeatureTypeStyle>#g' {} +
Проверьте, остались ли стили с некорректным содержимым, и сохраните их в файл info:
find . -type f -iname "*.sld" -exec grep -li '<sld:VendorOption name="sortBy"><Function name="if_then_else"><Function name="PropertyExists"><Literal>date_insert</Literal></Function><Literal>date_insert A</Literal><Literal>key A</Literal></Function></sld:VendorOption></sld:FeatureTypeStyle>' {} + > info.txt
Проверьте, что все стили исправлены:
less info.txt
Поиск SLD для слоёв в директории с SLD#
В файле layers.csv разместите список слоёв для публикации ввиде столбца имени PV слоя и столбца стиля, применяемого к слою. Стиль следует указывать без уточнения схемы перед именем слоя. Например, вместо
tumenmr:V_GEO_GKN_PARCEдостаточно просто указатьV_GEO_GKN_PARCEL.Откройте консоль и выполните команду поиска SLD.
Для поиска слоёв потребуется следующие параметры:
-c, --connection– строка подключения к базе данных;-l, --csv-layers– путь до .csv файла со слоями;-d, --sld-dir-path– папка с SLD стилями.
Примеры команд:
// Для локального выполнения
dotnet ./GisMultitool/gistool.dll find-sld -с "Server=10.1.1.1;Port=5432;Database=ias;User Id=postgres;Password=password;" -l layers.csv -d "D:\SVN\SLD\Эталон"
// Для сервиса, развернутого на сервере с приложением
docker exec gismultitool dotnet gistool.dll find-sld -с "Server=10.1.1.1;Port=5432;Database=ias;User Id=postgres;Password=password;" -l /app/share/layers.csv -d "/app/share"
Создастся файл foundSld.csv с результатами, где: 1 напротив имени слоя означает что его стиль был найден, 0 – что нет.
Публикация слоя с несуществующим стилем или перенос стиля с другого проекта/GeoServer#
В случае, если необходимо опубликовать слой с несуществующим стилем или перенести стиль с другого проекта/GeoServer, необходимо запустить публикацию слоя через мультитул.
Инструмент создаст стиль с необходимым названием и описанием «gold polygon» по умолчанию.
Далее можно править стиль через конфигуратор или перенести на сервер файл формата .sld с другого проекта/геосервера. Сменить права командой: sudo chown -R geoserver:geoserver /путь до файлов формата .sld/. Перезапустить GeoServer.
Регенерация слоёв#
Перед регенерацией слоев необходимо выполнить скрипт, который удалит информацию о кешированных векторных слоях, оставляя информацию о растровых слоях.
Примечание
В скрипте подставьте свои параметры.
Скрипт
#!/bin/bash
# =======================================================
# 🧹 Очистка кэша GWC только для заданного workspace
# Версия: 1.05
# Автор: Ненашев Иван
# =======================================================
# === Параметры ===
GEOSERVER_URL="http://10.4.2.4:8070/geoserver" # URL Geoserver
GWCLAYERS_DIR="/opt/geoserver/2.23.2/8070/data_dir/gwc-layers" # Путь до каталога GWC
WORKSPACE="yamal" # Рабочая область
USER="admin" # Логин
PASS="geoserver" # Пароль
# === Определяем доступную утилиту для HTTP-запросов ===
if command -v curl &>/dev/null; then
FETCH_TOOL="curl"
elif command -v wget &>/dev/null; then
FETCH_TOOL="wget"
else
echo "❌ Не найдено ни 'curl', ни 'wget'. Установите одну из них и повторите попытку."
exit 1
fi
# === Универсальная функция для получения данных ===
fetch() {
local url="$1"
local output="$2"
if [ "$FETCH_TOOL" = "curl" ]; then
curl -s -u "$USER:$PASS" "$url" -o "$output"
else
wget --quiet --http-user="$USER" --http-password="$PASS" -O "$output" "$url"
fi
}
# === 0. Спрашиваем про бэкап ===
read -p "📦 Создать бэкап удаляемых файлов? (Да/Нет): " CREATE_BACKUP
if [[ "$CREATE_BACKUP" =~ ^[ДдYy] ]]; then
BACKUP_DIR="$GWCLAYERS_DIR/backup_$(date +%Y%m%d_%H%M%S)"
mkdir -p "$BACKUP_DIR"
echo "Файлы будут копироваться в $BACKUP_DIR"
else
BACKUP_DIR=""
fi
# === 1. Получаем список слоёв workspace ===
echo "📡 Получаем список слоёв из workspace: $WORKSPACE ..."
fetch "$GEOSERVER_URL/rest/workspaces/$WORKSPACE/layers.xml" /tmp/layers.xml
if ! grep -q "<layer>" /tmp/layers.xml; then
echo "❌ Не удалось получить список слоёв для workspace '$WORKSPACE'."
exit 1
fi
# === 2. Извлекаем имена слоёв с префиксом workspace ===
LAYER_NAMES=($(grep -oP '(?<=<name>).*?(?=</name>)' /tmp/layers.xml | sed "s|^|$WORKSPACE:|"))
TOTAL=${#LAYER_NAMES[@]}
if [ $TOTAL -eq 0 ]; then
echo "⚠️ В workspace '$WORKSPACE' нет слоёв."
exit 0
fi
echo "🔍 Найдено $TOTAL слоёв. Проверяем типы (RASTER/VECTOR)..."
# === 3. Определяем растровые ===
RASLIST=()
COUNT=0
for LAYER in "${LAYER_NAMES[@]}"; do
((COUNT++))
PERCENT=$((COUNT*100/TOTAL))
printf "\r[%3d%%] Проверяется слой: %s" $PERCENT "$LAYER"
LAYER_URL="$GEOSERVER_URL/rest/layers/$LAYER.xml"
fetch "$LAYER_URL" /tmp/layer.xml
TYPE=$(grep -oP '(?<=<type>).*?(?=</type>)' /tmp/layer.xml)
if [ "$TYPE" == "RASTER" ]; then
RASLIST+=("$LAYER")
fi
done
echo
echo
# === 3.1. Определяем режим удаления ===
if [ ${#RASLIST[@]} -eq 0 ]; then
echo "⚠️ В workspace '$WORKSPACE' нет растровых слоёв."
DELETE_MODE="VECTOR_ONLY"
else
echo "🧾 Растровые слои (${#RASLIST[@]}):"
printf '%s\n' "${RASLIST[@]}"
DELETE_MODE="EXCEPT_RASTER"
fi
# === 4. Сканируем GWC и определяем файлы для удаления ===
cd "$GWCLAYERS_DIR" || { echo "❌ Не удалось перейти в $GWCLAYERS_DIR"; exit 1; }
TO_DELETE=()
TO_DELETE_NAMES=()
for FILE in *.xml; do
FILE_LAYER_FULL=$(grep -oP '(?<=<name>)[^<]+' "$FILE" | head -n1)
[[ -z "$FILE_LAYER_FULL" || "$FILE_LAYER_FULL" != "$WORKSPACE:"* ]] && continue
case "$DELETE_MODE" in
"VECTOR_ONLY")
# Растровых нет — удаляем все слои текущего workspace
TO_DELETE+=("$FILE")
TO_DELETE_NAMES+=("$FILE_LAYER_FULL")
;;
"EXCEPT_RASTER")
# Есть растровые — удаляем только нерастровые
IS_RASTER=false
for RL in "${RASLIST[@]}"; do
if [[ "$RL" == "$FILE_LAYER_FULL" ]]; then
IS_RASTER=true
break
fi
done
if [[ "$IS_RASTER" == false ]]; then
TO_DELETE+=("$FILE")
TO_DELETE_NAMES+=("$FILE_LAYER_FULL")
fi
;;
esac
done
if [ ${#TO_DELETE[@]} -eq 0 ]; then
echo
echo "✅ Нет файлов для удаления. Все растровые слои сохранены."
exit 0
fi
# === 5. Подтверждение удаления ===
echo
echo "🗑 Файлы, которые будут удалены (имя файла → слой):"
for i in "${!TO_DELETE[@]}"; do
echo "${TO_DELETE[$i]} → ${TO_DELETE_NAMES[$i]}"
done
read -p "🗑 Удалить перечисленные файлы? (Да/Нет): " CONFIRM_DELETE
if [[ "$CONFIRM_DELETE" =~ ^[ДдYy] ]]; then
for i in "${!TO_DELETE[@]}"; do
F="${TO_DELETE[$i]}"
if [ -n "$BACKUP_DIR" ]; then
cp "$F" "$BACKUP_DIR/"
fi
rm -f "$F"
echo "Удалён $F (слой: ${TO_DELETE_NAMES[$i]})"
done
echo
echo "✅ Удаление завершено."
else
echo
echo "🚫 Удаление отменено пользователем."
fi
Чтобы сделать регенерацию слоёв:
Подключитесь к серверу геосервера.
Запустите команду из каталога Мультитула для регенерации:
// Для локального выполнения
dotnet gistool.dll regenerate-layer -c "Server=10.1.1.1;Port=5432;Database=ias;User Id=postgres;Password=password;" -n schema1
// Для сервиса, развернутого на сервере с приложением
docker exec gismultitool dotnet gistool.dll regenerate-layer -c "Server=10.1.1.1;Port=5432;Database=ias;User Id=postgres;Password=password;" -n schema1
Где:
-l,или--layer-names– список слоёв;
-n, --schema-names– список схем (указываются через пробел) или можно указать все-a, --all-schemas;
-c,или--connection– строка подключения к базе данных (обязательная).
Дождитесь сообщения о завершении работы приложения и нажмите любую кнопку.
Синхронизация стилей между геосерверами#
Чтобы синхронизировать стили между геосерверами, запустите команду в bat файле:
dotnet Gems.Tools.Gis.CsvPublisher sync-styles -c "Server=10.4.1.67;Port=5432;Database=mrvl;User Id=ias;Password=yh?7JEE9GpZJ6aF;ApplicationName=Regenerator;" -n СХЕМА [-a] [-l [-g]]
В данной команде переменные являются:
-aили--all-schemas– признаком того, что выполнять нужно на все схемы;
-lили--only4layers– признаком того, что нужно выполнять синхронизацию только тех стилей, что связаны со слоями;
-gили--geoserver-of-layers-only– признаком того, что нужно восстановить стили только на том геосервере который используется слоями.
Запуск Мультитула через .bat файл#
Для запуска Мультитула с помощью .bat файла создайте .bat файл в той же директории, где расположена папка GisMultitool.
Пример содержимого .bat файла:
dotnet "%~dp0GisMultitool\gistool.dll" publish-layers -с "Server=10.1.1.1;Port=5432;Database=ias;User Id=postgres;Password=password;" -g geoserver80 -l layers.csv -n schema pause;