UNOFFICIAL

Hello Andrea & Geoserver team,

I’ve seen a somewhat related WMS rendering error with our Oracle and App-Shema 
service when we switched from 2D GDA94 to the 3D GDA2020 EPSG 7843.

06 023 22:23:41 ERROR  [geoserver.ows] -
org.opengis.geometry.MismatchedDimensionException: Argument "GDA2020" has 3 
dimensions, while 2 was expected.
                at 
org.geotools.geometry.jts.ReferencedEnvelope.checkCoordinateReferenceSystemDimension(ReferencedEnvelope.java:316)
                at 
org.geotools.geometry.jts.ReferencedEnvelope.<init>(ReferencedEnvelope.java:278)
                at org.geoserver.wms.GetMap.executeInternal(GetMap.java:230)
                at org.geoserver.wms.GetMap.run(GetMap.java:203)
                at org.geoserver.wms.GetMap.run(GetMap.java:113)
                at 
org.geoserver.wms.DefaultWebMapService.getMap(DefaultWebMapService.java:250)
                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
                at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
                at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown 
Source)
                at java.lang.reflect.Method.invoke(Unknown Source)


Switching to the 2D GDA2020 EPSG 7844 code resolved the issue, so I never 
really looked into it much further.

A few things I observed at the time…
At first I thought it might be due to an issue interpreting the 3D ellipsoid 
axis values from the updated EPSG database work done in GeoServer v2.16, but 
then noticed app schema was having issues encoding the geometries in WFS.

This example oracle geometry  MDSYS.SDO_GEOMETRY(3001, 7843, 
MDSYS.SDO_POINT_TYPE(132.1435042, -30.8517789, 78.487), NULL, NULL)
Encodes ok as WFS 1.1.0
<gsmlp:shape>
<gml:Point srsDimension="3" srsName=http://www.opengis.net/def/crs/EPSG/0/7843>
<gml:pos>-30.8517789 132.1435042 78.487</gml:pos>
</gml:Point>
</gsmlp:shape>

But looks like this in WFS 2.0.0, just a XY  (Looking at this now I realise 
there is no dimension or epsg info for 2.0.0, another bug?)
<gsmlp:shape>POINT (-30.8517789 132.1435042)</gsmlp:shape>


And to further complicate things, I did have some missing elevations, so some 
geoms had a null Z  - ie MDSYS.SDO_GEOMETRY(3001, 7843, 
MDSYS.SDO_POINT_TYPE(128.9389034, -26.0539556, NULL), NULL, NULL)
And they were encoding to NaN
<gsmlp:shape>
<gml:Point srsDimension="1" srsName=http://www.opengis.net/def/crs/EPSG/0/7843>
<gml:pos>NaN NaN</gml:pos>
</gml:Point>
</gsmlp:shape>
&
<gsmlp:shape>POINT (NaN NaN)</gsmlp:shape>

If app schema was able to handle the odd null elevation, I’m not sure that the 
null is allowed in GML, so in the end I just reverted back to 2D points using 
EPSG 7844 and all works ok with just the XY.

Not sure if this helps with Hans’ issue though.

Kind regards,
Ursula

From: Andrea Aime <andrea.a...@geosolutionsgroup.com>
Sent: Tuesday, 6 December 2022 7:14 PM
To: Hans Yperman <hans.yper...@vliz.be>
Cc: Geoserver-users <geoserver-users@lists.sourceforge.net>
Subject: Re: [Geoserver-users] Output dimension must be 2 or 3

Hi,
looks like it's happening as the code is preparing to write a geometry literal 
for a filter in a prepared statement...
and it does not work because the WKB writer for it does not know how to write 
geometries with 4 dimensions.
Maybe it would be ok to lower the geometry used for the filter to 2 or 3 
dimensions but... not sure how PostGIS would
react to that.

Cheers
Andrea

On Mon, Dec 5, 2022 at 1:57 PM Hans Yperman 
<hans.yper...@vliz.be<mailto:hans.yper...@vliz.be>> wrote:
Hello everybody,

after upgrading from geoserver 2.11 to geoserver 2.22, we have a few postgis 
layers that refuse to render in the preview.

Here is a simplified example, in postgis:

create table testhy(
    geometry   geometry constraint enforce_dims_the_geom check 
(st_ndims(geometry) = 4)
);

We get this exception:
Caused by: java.lang.IllegalArgumentException: Output dimension must be 2 or 3
        at org.locationtech.jts.io.WKBWriter.<init>(WKBWriter.java:291)
        at org.locationtech.jts.io.WKBWriter.<init>(WKBWriter.java:270)
        at org.locationtech.jts.io.WKBWriter.<init>(WKBWriter.java:240)
        at 
org.geotools.data.postgis.PostGISPSDialect.setGeometryValue(PostGISPSDialect.java:253)
        at 
org.geotools.jdbc.JDBCDataStore.setPreparedFilterValues(JDBCDataStore.java:3810)
        at org.geotools.jdbc.JDBCDataStore.selectSQLPS(JDBCDataStore.java:3728)
        at 
org.geotools.jdbc.JDBCFeatureSource.getReaderInternal(JDBCFeatureSource.java:609)

I browsed the code.  geoserver gets dimension 4 based on a variant of this 
query (PostGISDialect.java):

SELECT *  FROM GEOMETRY_COLUMNS WHERE coord_dimension not in (2,3);

but the query generated by geoserver to fetch the data is :
SELECT ST_AsBinary(ST_Force2D("geometry")) as "geometry" FROM "public"."testhy" 
WHERE […]

Note the ST_Force2D that removes the Z and M dimension, so there are only 2 
dimensions, not 4.




Hans Yperman
Department IT
[cid:image001.png@01D909C2.3B9842C0]
Vlaams Instituut voor de Zee vzw
InnovOcean Campus, Jacobsenstraat 1
8400 Oostende, België

☎+32 (0) 59 33 61 13
📧 hans.yper...@vliz.be<mailto:hans.yper...@vliz.be>
www.vliz.be<https://aus01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.vliz.be%2F&data=05%7C01%7Cursula.michael%40sa.gov.au%7C67f0eb9687ca43a6c73308dad766b06c%7Cbda528f7fca9432fbc98bd7e90d40906%7C1%7C0%7C638059133304916556%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=iaOisPH6mrZIQyunkUnhf9vVoPKXbJ5mHa1it7D%2BmuM%3D&reserved=0>


_______________________________________________
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#/<https://aus01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fwww.ianturton.com%2Ftalks%2Ffoss4g.html%23%2F&data=05%7C01%7Cursula.michael%40sa.gov.au%7C67f0eb9687ca43a6c73308dad766b06c%7Cbda528f7fca9432fbc98bd7e90d40906%7C1%7C0%7C638059133304916556%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=%2BY2KHMQrPyukf3UN6etZriIVa%2BnyxXwiXvR08HRvlw8%3D&reserved=0>
- The GeoServer user list posting guidelines: 
http://geoserver.org/comm/userlist-guidelines.html<https://aus01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fgeoserver.org%2Fcomm%2Fuserlist-guidelines.html&data=05%7C01%7Cursula.michael%40sa.gov.au%7C67f0eb9687ca43a6c73308dad766b06c%7Cbda528f7fca9432fbc98bd7e90d40906%7C1%7C0%7C638059133304916556%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=TdCztnDGwrVZxRCrs0nL0bIu%2BnmHooVibDp73t06OSE%3D&reserved=0>

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<https://aus01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fgeoserver%2Fgeoserver%2Fwiki%2FSuccessfully-requesting-and-integrating-new-features-and-improvements-in-GeoServer&data=05%7C01%7Cursula.michael%40sa.gov.au%7C67f0eb9687ca43a6c73308dad766b06c%7Cbda528f7fca9432fbc98bd7e90d40906%7C1%7C0%7C638059133304916556%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=mz6xmZX0zkBO6LiCwImvUasdGuuV4CCcxRt6RftdOhk%3D&reserved=0>


Geoserver-users@lists.sourceforge.net<mailto:Geoserver-users@lists.sourceforge.net>
https://lists.sourceforge.net/lists/listinfo/geoserver-users<https://aus01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.sourceforge.net%2Flists%2Flistinfo%2Fgeoserver-users&data=05%7C01%7Cursula.michael%40sa.gov.au%7C67f0eb9687ca43a6c73308dad766b06c%7Cbda528f7fca9432fbc98bd7e90d40906%7C1%7C0%7C638059133304916556%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=YSvmqJnmoZRf9Cnz9d4aOFz8Z5joJolKZNPI0IcQ6N4%3D&reserved=0>


--

Regards,

Andrea Aime

==
GeoServer Professional Services from the experts!

Visit 
http://bit.ly/gs-services-us<https://aus01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fbit.ly%2Fgs-services-us&data=05%7C01%7Cursula.michael%40sa.gov.au%7C67f0eb9687ca43a6c73308dad766b06c%7Cbda528f7fca9432fbc98bd7e90d40906%7C1%7C0%7C638059133304916556%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=0eKjH85MGfNY%2BnNaGLY6ueU%2BJ1GsVcIEGSElB0PzINo%3D&reserved=0>
 for more information.
==

Ing. Andrea Aime
@geowolf
Technical Lead

GeoSolutions Group
phone: +39 0584 962313

fax:     +39 0584 1660272

mob:   +39  339 8844549


https://www.geosolutionsgroup.com/<https://aus01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.geosolutionsgroup.com%2F&data=05%7C01%7Cursula.michael%40sa.gov.au%7C67f0eb9687ca43a6c73308dad766b06c%7Cbda528f7fca9432fbc98bd7e90d40906%7C1%7C0%7C638059133304916556%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=AgfCrTlVs3oH7nsA7cb7HwvPEMl0L0ymQs7eP2Bw0sE%3D&reserved=0>

http://twitter.com/geosolutions_it<https://aus01.safelinks.protection.outlook.com/?url=http%3A%2F%2Ftwitter.com%2Fgeosolutions_it&data=05%7C01%7Cursula.michael%40sa.gov.au%7C67f0eb9687ca43a6c73308dad766b06c%7Cbda528f7fca9432fbc98bd7e90d40906%7C1%7C0%7C638059133304916556%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=%2BvKMDggB0j7CfNlizNyNN6J1JPQSS92M2YitE3xmOzg%3D&reserved=0>

-------------------------------------------------------

Con riferimento alla normativa sul trattamento dei dati personali (Reg. UE 
2016/679 - Regolamento generale sulla protezione dei dati “GDPR”), si precisa 
che ogni circostanza inerente alla presente email (il suo contenuto, gli 
eventuali allegati, etc.) è un dato la cui conoscenza è riservata al/i solo/i 
destinatario/i indicati dallo scrivente. Se il messaggio Le è giunto per 
errore, è tenuta/o a cancellarlo, ogni altra operazione è illecita. Le sarei 
comunque grato se potesse darmene notizia.

This email is intended only for the person or entity to which it is addressed 
and may contain information that is privileged, confidential or otherwise 
protected from disclosure. We remind that - as provided by European Regulation 
2016/679 “GDPR” - copying, dissemination or use of this e-mail or the 
information herein by anyone other than the intended recipient is prohibited. 
If you have received this email by mistake, please notify us immediately by 
telephone or e-mail
_______________________________________________
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