Имя геометрии OpenLayers не сохраняется при загрузке из WFS

Я использую OpenLayers 6 и GeoServer 2.16 (плюс PostGIS); и когда я загружаю слои с GeoServer, функция загружается, но их геометрическое имя перезаписывается. В GeoServer имя геометрии (и столбец в PostGIS):geom. Возвращенный XML отражает это. Но тогда объект OpenLayers имеет геометрическое имяgeometry, игнорируя имя геометрии, возвращенное GeoServer.

Это кажется тривиальным, но вызывает проблемы, поскольку, когда я иду редактировать функцию, я получаю сообщение об ошибке org.geoserver.wfs.WFSException: No such property: geometry; поэтому, хотя я мог редактировать имя геометрии и соответствующее значение в моем коде, это похоже на плохой взлом.

Это ошибка или какая-то настройка, которую я просто не могу найти в документации?

Любая помощь будет принята с благодарностью! (Я не видел никаких вопросов, отражающих эту ошибку (я получаю WFS, все вопросы, похоже, касаются обратной отправки). Если у меня есть дубликат, дайте мне знать.)

2 ответа

Вы можете исправить это, попросив OpenLayers прочитать имя столбца геометрии из ввода. Для GeoJSON:

      source: new VectorSource({
    format: new GeoJSON({ extractGeometryName: true }),
    url: ...
}),

Не знаю, ошибка это или нет. Но это очень раздражает. к сожалению, в OpenLayers нет обновленного документа о функциях редактирования.

Есть какое-то решение для решения этой проблемы:

  1. Изменение имени поля PostGIS. Вы можете переименовать поле PostGIS или установить имя поля геометрии наgeometry при импорте в PostGIS.

  2. Также вы можете вручную изменить запрос на редактирование в OpenLayers. Обычный способ редактирования функций - это отправка XML или POST-запроса на GeoServer. Поэтому перед отправкой просто заменитеgeometry к geom! Что-то вроде этого:

var node = wfs.writeTransaction(null, [feature], null, gml);
var s = new XMLSerializer();
var str = s.serializeToString(node);
str = str.replace("geometry", "geom");
xhr.open('POST', 'http://localhost:8080/geoserver/wfs', true);
xhr.send(str);
Другие вопросы по тегам