4

i had this php code :

$geom1='{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[-32514.400906806848,4810093.013501738],[-32877.47679116143,4809500.626532529],[-34473.099756614494,4810026.131101989],[-33412.535989157666,4811124.913383588],[-32514.400906806848,4810093.013501738]]]},"properties":null}';
$geom_poly=explode('Polygon',$geom1);
$geom_def=$geom_poly[0]."MultiPolygon".$geom_poly[1];
$geom2=explode('{',$geom_def);
$geom3=explode('}',$geom2[2]);
$CRS='"crs":{"type":"name","properties":{"name":"EPSG:3857"}}';
$geometria1=$geom3[0];
$geom4='{'.$geometria1.'},'.$CRS;




$uso_edit = $_POST['uso'];
$afeccion_edit = $_POST['afeccion'];
$retablo_edit = $_POST['retablo'];
$proteccion_edit = $_POST['proteccion'];
$altura_edit = $_POST['altura'];
$query = "INSERT INTO prueba(geom,prueba) VALUES  ( ST_SetSRID(ST_GeomFromGeoJSON('".$geom4."'),3857) , 'jsadfjlasd') ";
pg_exec($query); 

I had this error :

pg_exec(): Query failed: ERROR: Geometry has Z dimension but column does not in

My PostgreSQL version is 9.4: and my table code is :

CREATE TABLE prueba
(
   id_0 serial NOT NULL,
   geom geometry(MultiPolygon,3857),
   id integer,
   prueba character varying(80),
   CONSTRAINT prueba_pkey PRIMARY KEY (id_0)
 )
 WITH (
 OIDS=FALSE
 );
 ALTER TABLE prueba
 OWNER TO postgres;

I try change the dimension with :

ALTER TABLE urbana_prueba  
ALTER COLUMN geom TYPE geometry(MultiPolygon, 3857) 
USING ST_Force_3D(geom);

but dosen't work......

4

You were almost there...

MultiPolygonZ should do the trick:

ALTER TABLE urbana_prueba  
ALTER COLUMN geom TYPE geometry(MultiPolygonZ, 3857) 
USING ST_Force_3D(geom);

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.