#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
Hors ligne
#3 Thu 01 July 2010 11:58
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