#1 Tue 13 April 2010 09:06
- Régis Longchamp
- Juste Inscrit !
- Date d'inscription: 24 Feb 2010
- Messages: 2
[openlayers -postgis]- enregistrement d'objets modifiés
Bonjour,
Que faut-il spécifier dans le code d'Openlayers afin qu'il puisse enregistrer des données WFS qui viennent d'être modifiées ?
En effet, j'arrive sans autre à supprimer et ajouter des features dans la base de données postgis, mais à les modifier.
Par ailleurs, l'enregistrement d'un élément modifié provenant d'un shapefile introduit directement dans GeoServer marche sans problème.
Le problème doit donc résider dans un update de la géométrie de l'objet dans postgis...
Voici le messages d'erreur de firebug :
<?xml version="1.0" encoding="UTF-8"?>
<wfs:WFS_TransactionResponse version="1.0.0" xmlns:wfs="http://www.opengis.net/wfs" xmlns:ogc="http://www.opengis.net/ogc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wfs http://localhost:8080/geoserver/schemas/wfs/1.0.0/WFS-transaction.xsd">
<wfs:InsertResult>
<ogc:FeatureId fid="none"/>
</wfs:InsertResult>
<wfs:TransactionResult>
<wfs:Status>
<wfs:FAILED/>
</wfs:Status>
<wfs:Message>update error</wfs:Message>
</wfs:TransactionResult>
</wfs:WFS_TransactionResponse>
Quelqu'un a-t-il déjà rencontré ce genre de problème ? Merci par avance pour votre aide.
Voici les éléments clés de mon code :
Code:
// la couche WFS qui va être modifiée : var saveStrategy = new OpenLayers.Strategy.Save(); var modify3 = new OpenLayers.Layer.WFS( "tig:modify3", "http://localhost:8080/geoserver/wfs", {typename: 'tig:modify3'}, // {styleMap: styleMap_rouge}, { strategies: [new OpenLayers.Strategy.BBOX(), saveStrategy], typename: 'modify3', srs: 'EPSG:21781', featureNS: 'http://opengeo.org/tig', schema: "http://localhost:8080/geoserver/wfs?service=WFS&version=1.1.0&request=DescribeFeatureType&typeName=tig:modify3", extractAttributes: false, commitReport: function(str) { OpenLayers.Console.log(str); }} ); modify3.setIsBaseLayer(false); // la fonction d'édition : var edit = new OpenLayers.Control.ModifyFeature(modify3, { title: "Modify Feature", displayClass: "olControlDrawFeaturePathbleux", }); // l'enregistrement s'effectue à l'extérieur du javascript : <a href="#" onclick="map.layers[5].commit();map.layers[3].commit();map.layers[4].commit();return false " >Save</a><br />
Hors ligne