[Users] WFS-T problems with postGIS

Viggo Lunde viggo.lunde at gmail.com
Tue Sep 21 11:22:59 CEST 2010


Hi
I was in Foss4G Barcelona and got this great tutorial on GeoExt Editng.
And it works very well on shape-files in geoserver.
But we want to use postGIS and have tried to make a testtable like this.

 Column |         Type          |
Modifiers
--------+-----------------------+---------------------------------------
--------+-----------------------+-----------------------
 fid    | integer               | not null default
nextval('test.wfstrans2_fid_seq'::regclass)
 info   | character varying(40) |
 geo    | geometry              |
Indexes:
    "wfstrans2_pkey" PRIMARY KEY, btree (fid)
    "geoidx_test__wfstrans2" gist (geo)
Check constraints:
    "enforce_dims_geo" CHECK (st_ndims(geo) = 2)
    "enforce_geotype_geo" CHECK (geometrytype(geo) = 'POLYGON'::text OR geo
IS NULL)
    "enforce_srid_geo" CHECK (st_srid(geo) = 32632)


The client posts this:

<wfs:Transaction xmlns:wfs="http://www.opengis.net/wfs" service="WFS"
version="1.0.0" xsi:schemaLocation="http://www.opengis.net/wfs
http://schemas.opengis.net/wfs/1.0.0/WFS-transaction.xsd" xmlns:xsi="http://
www.w3.org/2001/XMLSchema-instance"><wfs:Insert><feature:wfstrans2
xmlns:feature="http://www.skogoglandskap.no"><feature:geo><gml:MultiPolygon
xmlns:gml="http://www.opengis.net/gml"
srsName="EPSG:32632"><gml:polygonMember><gml:Polygon><gml:outerBoundaryIs><gml:LinearRing><gml:coordinates
decimal="." cs="," ts=" ">523671.86,6839648 447847.86,6788196
558875.86,6790904 523671.86,6839648</gml:coordinates></gml
:LinearRing></gml:outerBoundaryIs></gml:Polygon></gml:polygonMember></gml:MultiPolygon></feature:geo
><feature:info>test1</feature:info></feature:wfstrans2></wfs:Insert></wfs:Transaction>


And i get this errormessage:

<?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://kartutv7:80/geoserver_intern/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>


My wfs_editor.html looks like this:


<html>
    <head>
        <title>GeoExt WFS Editor</title>

        <script type="text/javascript"
src="ext/adapter/ext/ext-base.js"></script>
        <script type="text/javascript" src="ext/ext-all.js"></script>
        <link rel="stylesheet" type="text/css"
href="ext/resources/css/ext-all.css" />
        <script src="openlayers/lib/OpenLayers.js"></script>

        <script type="text/javascript" src="geoext/lib/GeoExt.js"></script>

        <script type="text/javascript">
        Ext.BLANK_IMAGE_URL = "ext/resources/images/default/s.gif";

        Ext.onReady(function() {
							
			/*var saveStrategy = new OpenLayers.Strategy.Save({
				onCommit: function() {
					saveStrategy.layer.refresh();
				}
			});*/
			var saveStrategy = new OpenLayers.Strategy.Save();
			var baseLayer = new OpenLayers.Layer.WMS( "Gråtone",
"http://kart7.skogoglandskap.no/bakgrunn/wms.topo2.graatone",
					{layers: 'topo2_graatone_WMS', 'format':'image/png',
'transparent':'false' },
					{isBaseLayer: true, singleTile: true, buffer:0,ratio:1});

			var layer = new OpenLayers.Layer.Vector("vector", {
				strategies: [new OpenLayers.Strategy.Fixed(), saveStrategy],
				//strategies: [new OpenLayers.Strategy.Fixed()],
				protocol: new OpenLayers.Protocol.WFS({
					url: "/geoserver_intern/wms",
					version: "1.0.0",
					geometryName: "geo",
					featureType: "wfstrans2",
					featureNS: "http://www.skogoglandskap.no",
					srsName: "EPSG:32632"
				})
			});

            var store = new GeoExt.data.FeatureStore({
                fields: [
                    {name: "info", type: "string"}/*,
					{name: "fid", type: "int"}*/
                ],
                layer: layer,
				addFeatureFilter: function(feature) {
					return feature.state !== OpenLayers.State.DELETE;
				}

            });
			
			var drawControl = new OpenLayers.Control.DrawFeature(
				layer,
				OpenLayers.Handler.Polygon,
				{handlerOptions: {multi: true}}
			);

			
			var mapPanel = new GeoExt.MapPanel({
				title: "Map",
				region: "west",
				width: 400,
				layers: [baseLayer,layer],
				//extent: new OpenLayers.Bounds(234758, 6402776, 1339075, 8020511),
				map: {
					projection: new OpenLayers.Projection("EPSG:32632"),
					displayProjection: new OpenLayers.Projection("EPSG:32632"),
					maxExtent: new
OpenLayers.Bounds(-570684.15,6424344.35,1596363.87,7964447.65),
					units: "m",
					maxResolution: 2708.0,
  				        numZoomLevels: 15,
					controls: [  new OpenLayers.Control.PanZoomBar(),
                        new
OpenLayers.Control.MousePosition({'prefix':'UTM 32: ','numDigits':0})
					]
				},
				bbar: [
					new GeoExt.Action({
						control: drawControl,
						text: "Create",
						enableToggle: true
					}), {
						text: "Delete",
						handler: function() {
							gridPanel.getSelectionModel().each(function(rec) {
								var feature = rec.get("feature");
								modifyControl.unselectFeature(feature);
								store.remove(rec);
								if(feature.state !== OpenLayers.State.INSERT) {
									feature.state = OpenLayers.State.DELETE;
									layer.addFeatures([feature]);
								}
							});
						}
					}, "->", {
						text: "Save",
						handler: function() {
							store.commitChanges();
							saveStrategy.save();
						}
					}

				]
			});
			
			mapPanel.map.addControl(drawControl);

			
			var modifyControl = new OpenLayers.Control.ModifyFeature(layer);
			mapPanel.map.addControl(modifyControl);
			modifyControl.activate();



            var gridPanel = new Ext.grid.EditorGridPanel({
				title: "Feature Table - Manhattan (NY) landmarks",
				region: "center",
				viewConfig: {forceFit: true},
				store: store,
				listeners: {
					afteredit: function(e) {
						var feature = e.record.get("feature");
						if(feature.state !== OpenLayers.State.INSERT) {
							feature.state = OpenLayers.State.UPDATE;
						}
					}
				},
				sm: new GeoExt.grid.FeatureSelectionModel({
					selectControl: modifyControl.selectControl,
					singleSelect: true
				}),
				cm: new Ext.grid.ColumnModel({
					defaults: {
						sortable: true,
						editor: {xtype: "textfield"}
					},
					columns: [
						{header: "Info", dataIndex: "info"}/*,
						{header: "Id", dataIndex: "fid"}*/
					]
				})
			});


            var mainPanel = new Ext.Panel({
                renderTo: document.body,
                layout: "border",
                height: 450,
                width: 800,
                items: [gridPanel, mapPanel]
            });
        });
        </script>
    </head>
    <body>
    </body>
</html>




I am running geoserver 2.0.0

Anyone knows whats wrong.


Best regards

Viggo Lunde

Skog og landskap

Norway
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.geoext.org/pipermail/users/attachments/20100921/4b8376c1/attachment-0001.htm 


More information about the Users mailing list