Sorry for the crosspost from GIS Stackexchange 
(https://gis.stackexchange.com/questions/483890/unable-to-update-gml-multisurface-after-geoserver-upgrade),
 but the conversation there fizzled out.

We are testing a (much needed) upgrade from GeoServer 2.17.2 to 2.25.1. We are 
currently stumped as to why we can't seem to be able to update or insert a 
multisurface using the same WFS transaction as with 2.17. I'm sure there is 
something simple we are missing here, so I'm hoping someone can point us in the 
right direction.
Here is an example transaction that is failing:

<wfs:Transaction service="WFS" version="1.1.1" 
xmlns:ogc="http://www.opengis.net/ogc"; xmlns:wfs="http://www.opengis.net/wfs"; 
xmlns:gml="http://www.opengis.net/gml"; 
xmlns:MyWorkspace="http://mydomain.com/myworkspace";>
    <wfs:Update typeName="MyWorkspace:MyLayer">
        <wfs:Property>
            <wfs:Name>Item_Name</wfs:Name>
            <wfs:Value><![CDATA[Bob]]></wfs:Value>
        </wfs:Property>
        <!--other properties-->
        <wfs:Property>
            <wfs:Name>SHAPE</wfs:Name>
            <wfs:Value>
                <gml:MultiSurface 
srsName='http://www.opengis.net/gml/srs/epsg.xml#4326'>
                    <gml:surfaceMembers>
                        <gml:Polygon>
                            <gml:exterior>
                                <gml:LinearRing>
                                    <gml:posList>-92.6834743019173 
35.2264426107788 -92.6830394566101 35.2264555548522 -92.68301875 
35.2266209299999 -92.6834852899999 35.22663787 -92.6834743019173 
35.2264426107788</gml:posList>
                                </gml:LinearRing>
                            </gml:exterior>
                        </gml:Polygon>
                        <gml:Polygon>
                            <gml:exterior>
                                <gml:LinearRing>
                                    <gml:posList>-92.6830420474193 
35.2264347826591 -92.6827235345709 35.2264521083911 -92.68272353 
35.2266102100001 -92.68301873 35.22662093 -92.6830420474193 
35.2264347826591</gml:posList>
                                </gml:LinearRing>
                            </gml:exterior>
                        </gml:Polygon>
                    </gml:surfaceMembers>
                </gml:MultiSurface>
            </wfs:Value>
        </wfs:Property>
        <ogc:Filter>
            <PropertyIsEqualTo>
                <PropertyName>OBJECTID</PropertyName>
                <Literal><![CDATA[100832369]]></Literal>
            </PropertyIsEqualTo>
        </ogc:Filter>
    </wfs:Update>
</wfs:Transaction>




And here is what I feel is the relevant error logged in GeoServer:


ERROR  [geoserver.wfs] - Transaction failed
org.geoserver.wfs.WFSTransactionException: Update error: Error occured updating 
features
...
Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: A .NET Framework 
error occurred during execution of user-defined routine or aggregate "geometry":
System.FormatException: 24114: The label MULTISURFACE (((-92. in the input 
well-known text (WKT) is not valid. Valid labels are POINT, LINESTRING, 
POLYGON, MULTIPOINT, MULTILINESTRING, MULTIPOLYGON, GEOMETRYCOLLECTION, 
CIRCULARSTRING, COMPOUNDCURVE, CURVEPOLYGON and FULLGLOBE (geography Data Type 
only).

Developer level logging shows the following "info" log:


    INFO   [geoserver.wfs] -
Request: transaction
    service = WFS
    version = 1.1.1
    baseUrl = http://myurl:myport/geoserver/
    group[0] = wfs:update=net.opengis.wfs.impl.UpdateElementTypeImpl@2f8c1c44 
(filter: [[ OBJECTID = 100832369 ]], handle: null, inputFormat: <unset>, 
srsName: null, typeName: {http://myurl/myworkspace}mylayer)group[0] = 
wfs:delete=net.opengis.wfs.impl.DeleteElementTypeImpl@645e0daf (filter: [[ 
OBJECTID = 100832371 ]], handle: null, typeName: 
{http://myurl/myworkspace}mylayer)
    update[0]:
        property[0]:
            ... several redacted properties and values ...
            name = SHAPE
            value = MULTIPOLYGON (((-92.6834743019173 35.2264426107788, 
-92.6830394566101 35.2264555548522, -92.68301875 35.2266209299999, 
-92.6834852899999 35.22663787, -92.6834743019173 35.2264426107788)), 
((-92.6830420474193 35.2264347826591, -92.6827235345709 35.2264521083911, 
-92.68272353 35.2266102100001, -92.68301873 35.22662093, -92.6830420474193 
35.2264347826591)))
        filter = [[ OBJECTID = 100832369 ]]
        inputFormat = x-application/gml:3
        typeName = {http://myurl/myworkspace}mylayer
    delete[0]:
        filter = [[ OBJECTID = 100832371 ]]
        typeName = {http://myurl/myworkspace}mylayer
    releaseAction = ALL
INFO   [geoserver.servlets] - OutputStream was successfully aborted.

(Note, I am doing a delete in the same transaction here in this log which I'm 
not showing in the example transaction above, but it happens without it as 
well.)

Very interesting that the geometry is already converted to multipolygon here. 
Not sure why it isn't hitting SQL as a multipolygon.

I have tried altering the WFS version of the transaction and specifying GML 
version and even changing to explicitly using multipolygon instead of 
multisurface, but I'm to the point that I'm just shooting in the dark.

This is a bit of a showstopper for us with the upgrade, so any help would be 
very much appreciated.

Thanks,
Matt

_______________________________________________
Geoserver-users mailing list

Please make sure you read the following two resources before posting to this 
list:
- Earning your support instead of buying it, but Ian Turton: 
http://www.ianturton.com/talks/foss4g.html#/
- The GeoServer user list posting guidelines: 
http://geoserver.org/comm/userlist-guidelines.html

If you want to request a feature or an improvement, also see this: 
https://github.com/geoserver/geoserver/wiki/Successfully-requesting-and-integrating-new-features-and-improvements-in-GeoServer


Geoserver-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-users

Reply via email to