banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Sat 06 March 2010 16:40

Régis Longchamp
Juste Inscrit !
Date d'inscription: 24 Feb 2010
Messages: 2

Openlayer - GeoServer wfs-t ???

Bonjour,

Je suis étudiant et dans le cadre d'un projet je dois créer une interface cartographique avec laquelle les utilisateurs devront intégrer des données.

Je dispose d'un fichier shape que j'ai introduit dans PostGIS, puis intégré dans GeoServer (la procédure semble fonctionner, j'arrive à le visualiser).

Je me base sur cet exemple : http://apps.who.int/tools/geoserver/www/wfs-t.html pour développer l'application carto.

--------------
Objectif : Modifier ce fichier grâce à OpenLayers et ainsi enrichir la base de données PostGIS.

-------------
Problème : Je n'arrive pas à enregistrer les nouvelles géométries. Ce qui me semble étranger car si j'introduis directement le shape file dans GeoServer (sans passer par PostGIS), j'arrive à le modifier sans problème.


Quelqu'un a-t-il déjà rencontré ce genre de problème? ça fait des jours que je galère dessus...

Faut-il introduire des informations supplémentaires pour une base de donnée avec GeoServer ? featureNS ???

Auriez-vous d'autres exemples d'interfaces cartographiques wfs-t intervenant sur des bases de données (hormis les 2-3 sur le site de OpenLayers ) ? 



-------------
Message d'erreur :

WFS Transaction: FAILED <?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>Error performing insert</wfs:Message> </wfs:TransactionResult></wfs:WFS_TransactionResponse>


------------
Le code XML (firebug) :
<wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" version="1.0.0" service="WFS">
<wfs:Insert>
<feature:martina xmlns:feature="topp">
<feature:the_geom><gml:MultiLineString xmlns:gml="http://www.opengis.net/gml"><gml:lineStringMember><gml:LineString>
<gml:coordinates decimal="." cs="," ts=" ">522141.02245312,181948.19408594 562267.067375,131321.87572656</gml:coordinates>
</gml:LineString>
</gml:lineStringMember>
</gml:MultiLineString>
</feature:the_geom>
</feature:martina>
</wfs:Insert>
</wfs:Transaction>



------------
Mon Script :
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link rel="stylesheet" href="C:/Program Files/GeoServer 2.0.1/data_dir/www/openlayers/theme/default/style.css" type="text/css" />
    <style type="text/css">
        body {
            margin: 1em;
        }
        #map {
            width: 800px;
            height: 475px;
            border: 1px solid black;
        }
    </style>

     <script src="openlayers/OpenLayers.js"></script>
    <script type="text/javascript">
       
    OpenLayers.ProxyHost = "/cgi-bin/proxy.cgi?url=";
        OpenLayers.IMAGE_RELOAD_ATTEMPTS = 3;

        var map;
        function init(){
            
            
            var bounds = new OpenLayers.Bounds(
                    492438.349, 109542.453,
                    590094.692, 208227.734

                );

    var options = {
                   
                    maxExtent: bounds,
                    maxResolution: 1500.0390625,
                    projection: "EPSG:21781",
                    units: 'm'
                };
            
            
            map = new OpenLayers.Map('map',options);
           
           
            var political = new OpenLayers.Layer.WMS(
                "State",
                "http://localhost:8080/geoserver/wms",
                {layers: 'cite:cn500',
                 format: 'image/png'}
            );

           

            var roads = new OpenLayers.Layer.WFS(
                "Roads",
                "http://localhost:8080/geoserver/wfs",
                {typename: 'topp:martina'},
                {
                    typename: 'martina',
                    featureNS: 'topp',
                    extractAttributes: true,
                    srsName: "EPSG:21781",
                    url: "http://localhost/geoserver/wfs",
                    geometryName: "the_geom",
                    schema: "http://localhost:8080/geoserver/wfs/DescribeFeatureType?version=1.1.0&typename=topp:martina"
                   
                   
                }
            );
           
               
           
            roads.style = OpenLayers.Util.applyDefaults({strokeColor: "#ff0000"},
                    OpenLayers.Feature.Vector.style["default"]);

           

            map.addLayers([political,  roads]);


            var panel = new OpenLayers.Control.Panel(
                {displayClass: 'olControlEditingToolbar'}
            );
           
            var drawLine = new OpenLayers.Control.DrawFeature(
                roads, OpenLayers.Handler.Path,
                {displayClass: 'olControlDrawFeaturePath'}
            );
            drawLine.featureAdded = function(feature) {
                feature.layer.eraseFeatures([feature]);
                // cast to multilinestring
                feature.geometry = new OpenLayers.Geometry.MultiLineString(
                    feature.geometry
                );
                feature.style.strokeColor = "#ff0000";
                feature.state = OpenLayers.State.INSERT;
                feature.layer.drawFeature(feature);
            }

           

            panel.addControls(
                [new OpenLayers.Control.Navigation(), drawLine]
            );

            map.addControl(panel);
            map.addControl(new OpenLayers.Control.LayerSwitcher());

            map.zoomToMaxExtent();
        }
    </script>
  </head>
 
 

  <body onload="init()">
    <h3>OpenLayers WFS-T demo: Tasmania cities and roads</h3>
    <a href="#" onclick="map.layers[1].commit();return false">Save Roads</a><br />
        <div id="map"></div>
  </body>
</html>

Hors ligne

 

#2 Thu 01 July 2010 11:51

Satare
Juste Inscrit !
Lieu: Raismes
Date d'inscription: 30 Mar 2009
Messages: 2

Re: Openlayer - GeoServer wfs-t ???

Bonjour,
Vous avez trouvé un moyen ? Je suis dans un cas assez similaire, et j'avoue qu'on a vite fait de s'y perdre smile

Hors ligne

 

#3 Thu 01 July 2010 11:58

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9869
Site web

Re: Openlayer - GeoServer wfs-t ???

Bonjour,

L'erreur semble provenir côté serveur. Avez vous regardé les logs de PostGIS/PostgreSQL ?

Y.


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

Pied de page des forums

Powered by FluxBB