PostGIS导入shp数据
其实写了有两三篇了关于解决PostGIS导入数据的问题,包括安装过程,以及安装过程中出现的问题,这篇问题作为一切准备就绪的情况下,PostGIS安装成功了,进行数据库的建立和数据的导入操作步骤。
1.PostGIS Shape GUI
1.新建数据库
这一步就省略好了。
2.为数据库添加扩展
打开数据库pgAdming4管理工具,选择新建的数据,选择Extensions,右键单击,选择创建extension
打开创建扩展窗口,填入Name为postgis
新建成功
3.打开开始菜单postgis自带的shp导入工具
打开导入工具
4.连接数据库
输入用户密码和数据库名称
5.添加shp文件
打开Add File
6.修改SRID
将SRID修改为shp文件的坐标
7.修改Options
将Options选项中的UTF-8改为GBK
8.选择导入
点击导入按钮Import
结果成功了。
2.Linux命令行导入数据
linux上安装完postgis,要想使用shp2pgsql,要安装:sudo apt install postgis,然后使用sudo su postgres登录postgres,输入的密码是切换时的用户密码,而不是postgres的密码,而且你用命令安装完之后,也没有地方设置postgres用户的密码,这个postgres的密码不是数据库用户postgres的密码。然后执行下面的命令。
1 | shp2pgsql -c 路径/shp数据文件名 新建的数据表名 数据库名|psql -d 数据库名 |
导入成功:
注意上面的命令其实没有执行成功,数据库里根本没有插进去,后来我换了方法
先把shp转成sql文件,然后通过sql文件导入到数据库中,具体内容参考文章3
1 | ## 第一条命令(windows下执行) |
(中文乱码问题)
如果加-W GBK 还是没解决中文乱码的问题,那就先用shp-gui导入数据(这种方式没有乱码问题),然后在从数据库使用pg_dump命令导出数据表。
1.shp2pgsql命令将shp数据导入postgis数据库
2.PostGIS导入导出ESRI Shapefile数据
3.shp2pgsql向postgresql导入shape数据
4.利用shp2pgsql将shape文件导入到postgresql中
再次运行的时候,出现了权限禁止这个问题,这个问题没有解决,就换了另一个方法。
1.windows生成sql文件
先在window上转成了sql文件,然后上传服务器,导入到数据库中。我在windows上执行了下面的命令,由shp文件生成了sql文件
1 | .\shp2pgsql.exe -s 4326 -c D:\zlc\hdxs\geodata\station_20190821_1834.shp >station.sql |
2.修改sql文件的编码
用nodepade++打开生成的sql文件,然后将sql文件的编码改为utf-8编码。
3.上传sql文件到服务器
生成了station.sql文件,通过xsell的rz命令上传到服务器,执行导入数据到数据库,结果出现了编码问题,解决方式就是在windows上用nodepade++打开生成的sql文件,然后将sql文件的编码改为utf-8编码。
4.导入数据
执行数据导入命令
1 | ## shp2pgsqldemo数据库名,gisdb用户名 |
如果在使用psql -d shp2pgsqldemo -U gisdb -f /tmp/shp/CLLX.sql 时需要输入密码,我输入了切换postgres用户之前的用户的密码,也成功了。
这里我输入了gis用户的密码,也能成功导入。