Стоит задача сделать следующий функционал: из клиента загрузить файл слоя в GeoServer, новый или существующий.
Что есть: Geoserver, PostGis, некий слой-файл на сервере, в общепринятом формате
Его нужно загрузить, автоматом.
Что частично работает - Geoserver через плагин импорта. Ручной режим, не подходит. Создает дубли слоя и таблиц, если слой уже существует.
Что не работает - утилита ogr2ogr, а хотелось бы понять, можно ли ей так сделать.
Выполняю команду на сервере ogr2ogr -f "PostgreSQL" PG:"host=localhost dbname=xxx user=xxx password=xxx" "xxx.kml" -overwrite
Таблица слоя перезаписывается (или создается, если её не было), но поля в ней называются немного по-другому, скажем "ogc_fid" вместо "fid", и Geoserver этот слой не видит. Вопрос, что можно сделать, чтобы это корректно воспринялось Геосервером, в случае существующего слоя или при создании нового, как Геосерверу указать, что это новый слой для него?
UPDATE: Так, попробовал на абсолютно новом слое, вроде заработало, просто проблема , что ogr2ogr дает немного другие имена колонкам. Если они будут те же - всё будет хорошо.
"-lco GEOMETRY_NAME=the_geom -lco FID=fid"
Вопрос теперь такой. Как Geoserver заставить принудительно обновить состав колонок в каком-то слое. В Вебинтерфейсе есть кнопка "Обновить тип объекта"

Как можно эту функцию вызвать в командной строке или как-то еще?
Как можно в командной строке добавить новый слой в Геосервер?
И еще вопрос. Ogr2ogr при чтении, например KML-файлов записывает в таблицу поля, которых в исходном файле не было. tessellate, visibility и так далее. Можно этого как-то избежать?