Бештар

Навсозии OpenLayers 3.5 WFS-T ба GeoServer 2.7 StringIndexOutOfBoundsException -ро баланд мебардорад


Ман ol.format.WFS.writeTransaction () (OL3.5) -ро барои тавлиди изҳороти WFS-T истифода мебарам. Ин барои дохил ва нест кардан хуб кор мекунад. Масъала дар изҳороти навсозӣ аст.

Ҳар гуна изҳороти навсозӣ ба истиснои зерин аз GeoServer бармегардад:

 java.lang.StringIndexOutOfBoundsException: Индекси сатр берун аз ҳудуд: -1 Индекси сатр берун аз ҳудуд: -1

Таҳрирҳо тавассути QGIS тавре интизор мераванд.

Ин як мисоли POST мебошад, ки аз ҷониби OL3.5 сохта шудааст

   ҳудуди -9693316.43121855,2347365.748407976,-9692555.877885746,2347961.5151853375  геометрия     -9693072.420357607 2347961.5151853375 -9693316.43121855 2347628.7731022364 -9692822.071552228 2347365.748407976 -9692555.877885746 2347758.700963257 -9692555.877885746 2347758.700963257 -9692737.951605482 2347825.076779921 -9692893.214319186 2347748.042587353 -9693072.420357607 2347961.5151853375  

Ин он аст, ки boundedBy / bbox хосиятест, ки OpenLayers ҳангоми таҳлили GML эҷод мекунад, ин хусусияти воқеии воқеӣ нест. Пас, вақте ки шумо навсозӣ мекунед, шумо бояд хусусиятро клон кунед ва аз он халос шавед. Баъзе мисолҳо:

// амалиёти WFS анҷом диҳед, то геометрия var properties = feature.getProperties (); // аз bbox халос шавед, ки амволи ғайриманқул бошад. var clone = ol нав.Хусусият (хосиятҳо); clone.setId (fid);

Агар ба шумо коди бештар намуна лозим бошад, ин аст коди мо дар OpenGeo Suite SDK барои WFS-T: https://github.com/boundlessgeo/suite/blob/master/sdk/src/main/resources/client/ol3 -common / app / TransactionHandler.js # L105: L110


Гарчанде ки ҳалли @ bartvde кор мекунад, барои клонидани Хусусият ва эҷод кардани ID ва хосиятҳо каме душвор аст. Инчунин, хавфи дар хусусияти клондонӣ гум шудани ягон чизи дигар вуҷуд дорад.

Ман ҳалли дигаре пешниҳод кардан мехоҳам:

feature.unset ("boundedBy"); // ё "bbox", вобаста аз номи ин хусусият, ки мехоҳед аз он халос шавед

Ин ҳама чизро талаб мекунад!


Дар зер, шумо метавонед як ҳалли мукаммалтареро бинед, ки объект месозадВижагиҳоки дороиворидҳо,навсозӣваҳазф мекунад. Он истифода мебарадёфтан ()барои ба даст овардани хусусиятҳои ҳар се намуд азсарчашма. Он инчунин "тоза мекунад"навсозиҳоазҳудудиамвол.

const find = mode => this.vectorSource .getFeatures () .filter (feature => feature.modification === mode); хусусиятҳои const = {навсозӣ: ёфтан ("навсозӣ"). харита (feature => {feature.unset ("boundedBy"); хусусияти бозгаштан;}), иловаҳо: find ("иловашуда"), ҳузфҳо: ёфтан ("хориҷшуда") )};


Видеоро тамошо кунед: Geoserver for WebGIS development WMS, WFS, WFS-T Service, Feature editing on web. (Октябр 2021).