我能够创建一个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,所以有命令可以这样做吗?

#1 楼

请尝试shp2pgsql
基本语法如下:


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


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

希望对您有所帮助。

评论


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

– Sam007
2012年11月21日23:30



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

–user8723
2012年11月21日23:37



感谢您的回复@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
2012年11月21日23:52

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

–user8723
2012年11月21日23:59

是的尝试创建扩展消息。要将文件导入到的数据库中。

– Stophface
17年9月11日在8:38

#2 楼

啊!

Haziq发表的内容将是正确的命令行方式Sam,

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

如果您像我一样懒,我只是使用QGIS插件提供的出色SPIT(Shapefile到PostGIS导入工具)立即导入我所有的shapefile。假设您正在使用QuantumGIS,就像之前所说的那样使用OpenGeo。

评论


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

– Sam007
2012年11月21日23:53

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

–罗马
2012年11月21日23:55

我该如何执行

– Sam007
2012年11月21日23:59

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

–罗马
2012年11月22日,0:21

我所有的shp文件都在服务器上

– Sam007
2012年11月22日,0:39