I can only speculate about the sources of all our data.  But I dropped the M 
values, so this is resolved.

Note that I can reproduce the problem with an empty table:
create table testhy(
    geometry   geometry constraint enforce_dims_the_geom check 
(st_ndims(geometry) = 4)
);
Thanks for all your help.  I really should spend some time to learn postgis and 
geoserver (and basic mapping theory) soon.  Oh well, I'll ask my wife for a 
good book on the topic for christmas.


Hans Yperman
Department IT
[cid:image001.png@01D90A22.969E1A90]
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<http://www.vliz.be>


From: Ian Turton <ijtur...@gmail.com>
Sent: woensdag 7 december 2022 9:40
To: Hans Yperman <hans.yper...@vliz.be>
Cc: Jody Garnett <jody.garn...@gmail.com>; Geoserver-users 
<geoserver-users@lists.sourceforge.net>
Subject: Re: [Geoserver-users] Output dimension must be 2 or 3

Was the data originally (or at some point in its journey) a shapefile - 
-1.797693134862316e+308 looks like the sentinel used by Shapefiles for NaN in M 
values.

Ian

On Tue, 6 Dec 2022 at 20:32, Hans Yperman 
<hans.yper...@vliz.be<mailto:hans.yper...@vliz.be>> wrote:
Hi,

I just found out all the M values are identical, and some huge negative value 
(-1.797693134862316e+308) which seems to be the lowest value that fits in a 
Double .  So I'll ask the business if I am allowed to just drop the M 
coordinate.

I don't know enough GIS to answer this question: What does the SRID number say 
in PostGIS?

I don't see anything SRID-ish in ST_ASTEXT, it's just  MULTIPOLYGON ZM 
(((numbers)))   with numbers a list of 4 values , comma, 4 values, comma, …  
But the last constraint says check (st_srid(the_geom) = 4326)  and I verified 
it complains if I try to violate it.

Oh well, feel free to drop the question as the M values are probably invalid.  
Thanks for your help.



Hans Yperman
Department IT
[cid:image001.png@01D90A22.969E1A90]
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<http://www.vliz.be>


From: Jody Garnett <jody.garn...@gmail.com<mailto:jody.garn...@gmail.com>>
Sent: dinsdag 6 december 2022 17:34
To: Hans Yperman <hans.yper...@vliz.be<mailto:hans.yper...@vliz.be>>
Cc: Geoserver-users 
<geoserver-users@lists.sourceforge.net<mailto:geoserver-users@lists.sourceforge.net>>
Subject: Re: [Geoserver-users] Output dimension must be 2 or 3

Interesting, well that may be your issue?  4326 is a two-dimensional SRS, 
please make use of a three dimensional SRS.

What does the SRID number say in PostGIS? It should be baked into each geometry 
(and should not work if if set to 4326). I guess it could be that you have a 
two dimensional XY geometry, with two measures depends how you have encoded it.

-=
Jody

On Tue, Dec 6, 2022 at 12:35 AM Hans Yperman 
<hans.yper...@vliz.be<mailto:hans.yper...@vliz.be>> wrote:
Thanks for your help, Jody

The data is indeed XYZM,  and the srid is 4326.


For reference: This is the full constraint on the column:
constraint enforce_dims_the_geom
    check (st_ndims(the_geom) = 4)
constraint enforce_geotype_the_geom
    check ((geometrytype(the_geom) = 'MULTIPOLYGON'::text) OR (the_geom IS 
NULL))
constraint enforce_srid_the_geom
    check (st_srid(the_geom) = 4326)

This is a small fragment of the data (note I get the crash even on an empty 
table):


SELECT st_astext(the_geom) FROM the_relevant_table LIMIT 1



MULTIPOLYGON ZM (((  .. numbers ..)))

Hans


Hans Yperman
Department IT
[cid:image001.png@01D90A22.969E1A90]
Vlaams Instituut voor de Zee vzw
InnovOcean Campus, Jacobsenstraat 
1<https://www.google.com/maps/search/Jacobsenstraat+1+%0D%0A+8400+Oostende,+Belgi%C3%AB?entry=gmail&source=g>
8400 Oostende, 
België<https://www.google.com/maps/search/Jacobsenstraat+1+%0D%0A+8400+Oostende,+Belgi%C3%AB?entry=gmail&source=g>

☎+32 (0) 59 33 61 13
📧 hans.yper...@vliz.be<mailto:hans.yper...@vliz.be>
www.vliz.be<http://www.vliz.be>


From: Jody Garnett <jody.garn...@gmail.com<mailto:jody.garn...@gmail.com>>
Sent: maandag 5 december 2022 14:45
To: Hans Yperman <hans.yper...@vliz.be<mailto:hans.yper...@vliz.be>>
Cc: Geoserver-users 
<geoserver-users@lists.sourceforge.net<mailto:geoserver-users@lists.sourceforge.net>>
Subject: Re: [Geoserver-users] Output dimension must be 2 or 3

We added support for dimensions and measures in that timeframe.  It looks like 
your geometry is setup with 4 dimensions - which is not supported.

What is your coordinate reference system or SRID?

Is your data XYZM?

Jody

On Mon, Dec 5, 2022 at 4:00 AM 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@01D90A22.969E1A90]
Vlaams Instituut voor de Zee vzw
InnovOcean Campus, Jacobsenstraat 
1<https://www.google.com/maps/search/Jacobsenstraat+1+%0D%0A+8400+Oostende,+Belgi%C3%AB?entry=gmail&source=g>
8400 Oostende, 
België<https://www.google.com/maps/search/Jacobsenstraat+1+%0D%0A+8400+Oostende,+Belgi%C3%AB?entry=gmail&source=g>

☎+32 (0) 59 33 61 13
📧 hans.yper...@vliz.be<mailto:hans.yper...@vliz.be>
www.vliz.be<http://www.vliz.be>


_______________________________________________
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<mailto:Geoserver-users@lists.sourceforge.net>
https://lists.sourceforge.net/lists/listinfo/geoserver-users
--
--
Jody Garnett
--
--
Jody Garnett
_______________________________________________
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<mailto:Geoserver-users@lists.sourceforge.net>
https://lists.sourceforge.net/lists/listinfo/geoserver-users


--
Ian Turton
_______________________________________________
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