2

After invoking:

shp2pgsql -W "latin1" theshape.shp > thesql.sql

My console responds with:

Shapefile type: PolygonZ
Postgis type: MULTIPOLYGON[2]

Note the shapefile type is PolygonZ. The result is, I have to manually edit the thesql.sql file and wrap the geometry column in ST_Force_2D() before executing the SQL, otherwise, Postgres complains I'm trying to import a 3D shape into a 2D column.

How can I force dimensionality to 2 with shp2pgsql? Alternatively, can I force it in QGIS?

1 Answer 1

5
shp2pgsql -t 2D theshape.shp > thesql.sql

For a full list of options you can run

shp2pgsql --help

Edit:

You'll probably also want to define the projection and throw in a spatial index. You can do so with

shp2pgsql -t 2D -s 4326 -I theshape.shp > thesql.sql

Just replace 4326 with the EPSG code of your coordinate reference system.

2
  • man shp2pgsql makes no mention of this parameter, whereas shp2pgsql --help does. Thanks. The output from the console is still PolygonZ... which is confusing -- nevertheless, Postgres doesn't complain. Cheers. Commented Apr 12, 2013 at 21:50
  • Nevermind, the PolygonZ indicates the Shapefile type... which makes sense. ;) Commented Apr 12, 2013 at 21:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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