Suite

Insérer la mise à jour supprimer la couche wfs dans gesoerver sur openlayers3

Insérer la mise à jour supprimer la couche wfs dans gesoerver sur openlayers3


j'utilise geoserver 2.5.2 et openlayers3 je peux afficher les données geojson wfs de geoserver avec geojson et éditer avec des interactions sur la carte

(function () { showData= function () { var format = new ol.format.GeoJSON(); vectorLayer = new ol.layer.Vector({ source: new ol.source.StaticVector({ format: format, projection: ' EPSG:3857' }), //style: mapping.customStyleFunction }); var select = new ol.interaction.Select(); var modify = new ol.interaction.Modify({ features: select.getFeatures() }); // Créer la carte map = new ol.Map({ interactions: ol.interaction.defaults().extend([select, modifier]), target: 'map', // L'élément DOM qui contiendra le rendu de la carte : 'canvas', // Forcer le moteur de rendu à utiliser les calques : [ // Ajout d'un nouveau calque Tile obtenant les carreaux de la source OpenStreetMap new ol.layer.Tile({ source: new ol.source.MapQuest({ layer: 'osm' }) }), vectorLayer ], vue : new ol.View({ center : ol.proj.transform([28.86820725, 41.14670434], 'EPSG:4326', 'EPSG:3857'), zoom : 10, }) } ); //map.on("") }, setData= function (geojsondata) { var source = vectorLayer.getSource(); var text = geojsondata; if (text ===") { source.clear(); retur n; } var json = JSON.parse(text); var features = source.readFeatures(json); source.addFeatures(caractéristiques); } })

mais je ne sais pas comment enregistrer les données mises à jour sur geoserver en utilisant openlayers3 en d'autres termes comment publier les données mises à jour sur geoserver?


Personnellement, je n'ai pas pu faire fonctionner WFS-T dans OL3.
Au lieu de cela, je suis revenu à la création manuelle d'une déclaration XML et à son envoi à GeoServer.
Ma situation était un peu plus simple. J'ai dû insérer de nouvelles fonctionnalités, actuellement uniquement des points, au lieu de les modifier. Mais si vous connaissiez l'ID de la fonctionnalité que vous vouliez modifier, vous pouvez envoyer une déclaration XML de mise à jour. Essayez de regarder le Spécification de mise en œuvre WFS 1.1.0, également GéoServeur a quelques démos intégrées pour montrer comment créer et écrire des instructions XML.
Voici mon code d'insertion de fonction unique actuel,

function createInsertXML(){ var geomType; drawSource.addFeatures(dessiner); var a = drawSource.getFeatures(); var coords = a[0].f.Wc.p.geometry.j; if (coords.length == 2){ geomType = 'Point'; } else if (coords.length > 2) { if (coords.lastIndexOf(coords[1]) == (coords.length - 1)) { geomType = 'Polygon'; } else { geomType = 'LineString'; } } var featNS = 'VotreNS'; var featName = 'YourGeoServerLayer'; var featType = geomType; var featGeom = coords; var XMLCompleteString ="; var XMLInsertHeaderString = '' + ''; var XMLInsertContentHeaderString = '<' + featNS + ':' + featName + '>'; switch (featType) { case 'Point': var XMLInsertGeometryHeaderString = '<' + featNS + ':' + 'Geometry' + '>'; var XMLInsertFeatureTypeHeaderString = ''; var XMLInsertCoordinateString = '' + featGeom[0] + "," + featGeom[1] + ''; var XMLInsertFeatureTypeCloseString = ''; var XMLInsertGeometryCloseString = ''; Pause; case 'PolyLine': //TODO Implémenter PolyLines break; case 'Polygon' : //TODO Implémenter les polygones break ; } var XMLInsertJobNumberString = '<' + featNS + ':' + 'JobNumber' + '>' + $('#jobNumber').val() + ''; var XMLInsertContentCloseString = ''; var XMLInsertCloseString = '' + ''; XMLCompleteString = XMLCompleteString.concat( XMLInsertHeaderString, XMLInsertContentHeaderString, XMLInsertGeometryHeaderString, XMLInsertFeatureTypeHeaderString, XMLInsertCoordinateString, XMLInsertFeatureTypeCloseString, XMLInsertGeometryCloseString, XMLInsertGeometryCloseString, var xmlhttp = new XMLHttpRequest(); xmlhttp.open("POST",'http://' + GeoServerHost + GeoServerPort + GeoServerWFSPost,true); xmlhttp.send(XMLCompleteString);

}

C'est dur, mais ça marche pour moi.