将shapefile添加到PostGIS数据库


30

我能够创建一个Postgresql数据库,然后执行

createlang plpgsql geospecies
psql -d geospecies -f postgis.sql
psql -d geospecies -f spatial_ref_sys.sql

现在可以直接导入shapefile了吗?这是正确的命令吗?

ogr2ogr -f PostgreSQL PG:"host=server_ip user=username dbname=dbname password=password" yourshapefile.shp;

我不确定如何构建数据库,是否不需要表?我最终将需要添加一堆shapefile,因此是否有执行此操作的命令?

Answers:


49

尝试shp2pgsql。基本语法如下:

shp2pgsql -s SRID SHAPEFILE.shp SCHEMA.TABLE | psql -h主机-d数据库-U用户

我总是从http://www.bostongis.com上找到该备忘单很有用。如果向下滚动一点,您将找到有关如何加载数据的简单示例。

希望能帮助到你。


但是我没有桌子。我应该创建什么表和模式?
Sam007

1
如果您看一下备忘单(-d|-a|-c|-p)则是表的标志。如果您未指定任何内容,则-c默认情况下它将选择(创建一个新表并填充它)。至于SRID,我不知道-这取决于您数据的投影。如果您有.projshapefile随附的文件,则可以在prj2epsg.org/search上检查其投影。希望它可以帮助...

感谢您的回复@Haziq。我只是对哪里-c来感到困惑?我尝试过,shp2pgsql -s 4326 /var/www/geo/shapefile/PimaPine.shp -c public.Pima | psql -h localhost -d geospecies -U smaranh但收到错误dpaste.com/834563
Sam007

我认为-c应该在之后-s 4326和之前/var/www/geo/shapefile/PimaPine.shp。语法是shp2pgsql [OPTIONS] shapefile [schema.]table。更改-c静止位置是否会产生错误?


4

啊!无法发表评论!

Haziq发布的内容将是Sam正确的命令行方式。

TABLE就是您要命名的名称,它将是从查询中调用它时要使用的名称,该表将在导入时生成。

如果您像我一样懒惰,我现在可以使用作为QGIS插件提供的超棒SPIT(Shapefile到PostGIS导入工具)现在导入我的所有shapefile。假设您正在使用QuantumGIS,就像您之前使用OpenGeo一样。


1
问题是我没有GUI。我正在远程使用Ubuntu Server。
Sam007

SPIT可以远程工作,从工作到我的主数据库,我一直都在工作,您只需像登录psql一样填写连接信息。
罗玛

我要如何执行
Sam007

好吧,我假设您正在获取本地的shp文件,并将它们放在远程服务器上。您将启动QGIS并在本地计算机上使用SPIT插件,连接远程服务器并上传。
RomaH 2012年

我所有的shp文件都在服务器上
Sam007
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.