前期准备
工具:PgAdmin,postgis-bundle
Postgres安装和postgis安装可以百度别的教程。
创建数据库添加扩展
如图,使用PgAdmin创建名为shp的数据库,并在扩展item中添加postgis扩展。
添加扩展方法可以用查询工具输入以下sql语句:
CREATE EXTENSION postgis;
或者在扩展item右键 ->创建->扩展,然后在弹出界面选择postgis,如图:
导入数据
打开postgis-bundle工具(全称应该是PostGIS PostGIS Bundle 1 for PostgreSQL x64 15 Shapefile and DBF Loader Exporter类似的名称)
点击上面的View connection details,指定连接参数。
连接成功后会有Connection succeeded相关提示,如下:
点击Add File,选择需要上传的shp文件,然后主要修改SRID(即EPSG,常用有4326和3857)
如果是Arcgis导出的数据,并且属性字段表没有乱码的情况下,直接点击Import应该没有什么问题,如果有乱码可能需要设置编码。
设置编码
点击Options
修改UTF-8为你的字段编码。
数据导入异常处理
如果按照前面的流程还是导入失败可以使用QGIS重新导出一份UTF-8编码的数据,再次导入即可。
用QGIS打开shp文件,先打开属性表检查是否乱码。
如果出现乱码则在图层上右键属性->源->数据源编码,如图:
选择正确的编码,一般常用的编码为GB2323,GBK,GB18030,UTF-8等都试一下,再次检查属性表,如果不乱码则编码设置正确。如下:
然后图层右键导出->要素另存为,在弹出的界面格式选择ESRI Shapefile文件,然后设置文件名称,编码就默认UTF-8即可。如下:
不放心可以再用ArcMap打开导出的shp文件,然后检查属性表看看是否有乱码(ArcMap使用UTF-8编码),然后再用postgis-bundle工具导入,Options编码设置为UTF-8,导入成功会有Shapefile import completed字样,如下:
路径和文件名不能有中文,不然可能出现不能读取*.dbf的错误,如果出现导入失败Shapefile type:Point类似字样,应该是数据库没有添加postgis扩展。
导入成功后可以再PgAdmin中进行查看,如下:
在有魔法的情况可以点击geom列左侧的图标在osm底图下预览,如下: