[GIS] Force dimensionality with shp2pgsql

postgispostgresqlshapefile

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?

Best Answer

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.