geosolutions-it/MapStore

Error when editing 3D geometries

Opened this issue · 0 comments

nmco commented

When updating 3D geometries the WFS transaction needs to include the srsDimension="3" attribute. MapStore is also not sending the elevation coordinates.

To reproduce this issue just tried to edit a 3D geometry with MapStore feature editor.

Currently MapStore is sending this POST data:

<?xml version="1.0" encoding="UTF-8"?>
<wfs:Transaction service="WFS" version="1.1.0" xmlns:wfs="http://www.opengis.net/wfs" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd">
	<wfs:Update typeName="feature:ASTE" xmlns:feature="http://sit.comune.genova.it/CORSO_1">
		<wfs:Property>
			<wfs:Name>GEOMETRY</wfs:Name>
			<wfs:Value>
				<gml:LineString srsName="EPSG:900913" xmlns:gml="http://www.opengis.net/gml">
					<gml:posList>990625.37934894 5529428.0925571 990670.88825339 5529319.98398187 990660.85541699 5529292.51595793 990656.22027412 5529275.78706304 990606.54237449 5529288.84293073 990563.04271315 5529303.00052165</gml:posList>
				</gml:LineString>
			</wfs:Value>
		</wfs:Property>
		<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
			<ogc:FeatureId fid="ASTE.555560219"/>
		</ogc:Filter>
	</wfs:Update>
</wfs:Transaction>

GeoServer will not accept the transaction request.

The correct POST data should be similar to this one:

<?xml version="1.0" encoding="UTF-8"?>
<wfs:Transaction service="WFS" version="1.1.0" xmlns:wfs="http://www.opengis.net/wfs" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd">
	<wfs:Update typeName="feature:ASTE" xmlns:feature="http://sit.comune.genova.it/CORSO_1">
		<wfs:Property>
			<wfs:Name>GEOMETRY</wfs:Name>
			<wfs:Value>
				<gml:LineString srsDimension="3" srsName="EPSG:900913" xmlns:gml="http://www.opengis.net/gml">
					<gml:posList>991442.21178071 5530360.55012233 106.3 991443.53181047 5530380.01284852 107.36 991475.45471724 5530380.34419275 106.62</gml:posList>
				</gml:LineString>
			</wfs:Value>
		</wfs:Property>
		<ogc:Filter xmlns:ogc="http://www.opengis.net/ogc">
			<ogc:FeatureId fid="ASTE.555560219"/>
		</ogc:Filter>
	</wfs:Update>
</wfs:Transaction>

This can be tried with CURL (add the correct authentication token):

curl --request POST --url 'http://vm-linuxgeofetest.comune.genova.it/geoserver-test/wfs?authkey=<PUT AUTH TOKEN>' --header 'content-type: application/xml' --data '<?xml version="1.0" encoding="UTF-8"?><wfs:Transaction service="WFS" version="1.1.0" xmlns:wfs="http://www.opengis.net/wfs" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.1.0/wfs.xsd"><wfs:Update typeName="feature:ASTE" xmlns:feature="http://sit.comune.genova.it/CORSO_1"><wfs:Property> <wfs:Name>GEOMETRY</wfs:Name> <wfs:Value> <gml:LineString srsDimension="3" srsName="EPSG:900913" xmlns:gml="http://www.opengis.net/gml"> <gml:posList>991442.21178071 5530360.55012233 106.3 991443.53181047 5530380.01284852 107.36 991475.45471724 5530380.34419275 106.62</gml:posList> </gml:LineString> </wfs:Value> </wfs:Property> <ogc:Filter xmlns:ogc="http://www.opengis.net/ogc"> <ogc:FeatureId fid="ASTE.555560219"/> </ogc:Filter> </wfs:Update></wfs:Transaction>'