I have been getting "ERROR: Unknown geometry type: 12 - MultiSurface" on some operations since importing a File GeoDatabase containing curved geometries into PostGIS using a recent OGR (2.2.0dev trunk@37918). Using ST_CurveToLine(geom) instead or the original curved geometry is a work around, but it would be desirable to directly use the original geometry if possible. Is this the expected behavior?
I am running PostgreSQL 9.5.5/PostGIS 2.2.2 from http://apt.postgresql.org/pub/repos/apt/ on Ubuntu 12.04. It is unclear to me from the documentation if Curved geometries are generally supported or only with a few specific functions. I have found some references to "Unknown geometry type" errors from long ago that reference closed tickets against PostGIS 1.x and a Stack Exchange question "Smallworld > FME > PostGIS > QGIS" that seems similar but different. Steps to reproduce: SELECT version(); version ------------------------------------------------------------------------------------------------------- PostgreSQL 9.5.5 on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3, 64-bit (1 row) SELECT postgis_full_version(); postgis_full_version -------------------------------------------------------------------------------------------------------------------------------------------------------------------- POSTGIS="2.2.2 r14797" GEOS="3.3.3-CAPI-1.7.4" PROJ="Rel. 4.7.1, 23 September 2009" GDAL="GDAL 1.9.0, released 2011/12/29" LIBXML="2.7.8" LIBJSON="UNKNOWN" RASTER (1 row) -- Operations fail with MultiSurface select ST_IsValid( ST_GeomFromEWKT( 'MULTISURFACE(((563145 151701,563144 151530, 563106 151523,563107 151701, 563145 151701)))' ) ); psql:postgis-multisurface.sql:12: ERROR: Unknown geometry type: 12 - MultiSurface select ST_Intersects( ST_GeomFromEWKT( 'MULTISURFACE(((563145 151701,563144 151530, 563106 151523,563107 151701, 563145 151701)))' ), ST_GeomFromEWKT( 'POLYGON((0 0, 600000 180000, 600000 0, 0 0))' ) ); psql:postgis-multisurface.sql:23: ERROR: Unknown geometry type: 12 - MultiSurface CONTEXT: SQL function "st_intersects" statement 1 -- It works with ST_CurveToLine select ST_IsValid( ST_CurveToLine(ST_GeomFromEWKT( 'MULTISURFACE(((563145 151701,563144 151530, 563106 151523,563107 151701, 563145 151701)))' )) ); st_isvalid ------------ t (1 row) select ST_Intersects( ST_CurveToLine(ST_GeomFromEWKT( 'MULTISURFACE(((563145 151701,563144 151530, 563106 151523,563107 151701, 563145 151701)))' )), ST_GeomFromEWKT( 'POLYGON((0 0, 600000 180000, 600000 0, 0 0))' ) ); st_intersects --------------- t (1 row)
_______________________________________________ postgis-users mailing list [email protected] https://lists.osgeo.org/mailman/listinfo/postgis-users
