Hello
I create a GeometryCollection as below
GeometryCollection coll = new GeometryCollection(
"SRID=-1;GEOMETRYCOLLECTIONM(POINTM(10 10 100),LINESTRINGM(0 50 100, 100 50 100),POLYGONM((25 25 100,75 25 100,75 75 100,25 75 100,25 25 100),(45 45 100,55 45 100,55 55 100,45 55 100,45 45 100)))"));
when I reprint the coll.toString() I see that my geom string is changed to below :
"SRID=-1;GEOMETRYCOLLECTIONM(POINT(10 10 100),LINESTRING(0 50 100, 100 50 100),POLYGON((25 25 100,75 25 100,75 75 100,25 75 100,25 25 100),(45 45 100,55 45 100,55 55 100,45 55 100,45 45 100)))"
As you can see GEOMETRYCOLLECTIONM is preserved but POINTM LINESTRINGM and POLYGONM is changed to POINT LINESTRING and POLYGON . And because of this I get cannot mix dimensionality when I am trying to insert this geom to database.
I have tried this with postgis jdbc driver 1.1.5; 1.3.3 and 2.0.1 versions.
This is a test written in datanucleus orm for geospatial extensions and the test is run against the below table (create script) in postgresql db.
CREATE TABLE public.samplepggeometrycollectionm
(
samplepggeometrycollectionm_id integer NOT NULL DEFAULT nextval('samplepggeometrycollectionm_samplepggeometrycollectionm_id_seq'::regclass),
geom geometry(GeometryCollectionM),
id bigint NOT NULL,
name character varying(255),
CONSTRAINT samplepggeometrycollectionm_pkey PRIMARY KEY (samplepggeometrycollectionm_id)
)
WITH (
OIDS=FALSE
);
ALTER TABLE public.samplepggeometrycollectionm
OWNER TO postgres;
Awaiting ur suggestions.
--