Shapefile导入PostGIS的两种方法介绍及比较
前面一篇博文介绍了PostGIS的安装注意事项,接下来就涉及到Shapefile文件导入到PostGIS数据库的问题。导入主要有命令法和工具法两种,命令法的思路是先将shapefile生成sql脚本,然后执行脚本导入到数据库中,详见安装postgis,使用postgis导入shapefile的步骤总结。本篇博文主要介绍工具法:使用PostGIS自带工具(PostGIS
Shapefile and Dbf Loader Exporter)和QGIS 在入库时的区别及注意事项。
一、使用PostGIS自带工具入库
具体入库方式,以截图辅助文字的方式进行说明。
可以从程序目录或者pgAdmin III 的插件中打开,打开的界面如下图所示:
如下图所示,单击 Add File 可以选择需要入库的 Shapefile文件,可以设置数据库模式(Schema)、数据表的名称(Table,默认为Shapefile文件名称)、Geo Column名称(几何列名称,默认为geom,我尝试设置为geometry,但表中还是geom,还不知道原因)、空间参考ID(SRID,默认为0,可根据需要设置为
4326或3857等)、模式(Mode,如创建新表、在表后追加数据、删除数据等)。注意,表格名称最好为 小写字母,若出现大小写混合或全部为大写字母,则查询等操作时,需要将表名称用双引号(“”)引起来。
如下图,还可以设置入库时的其他选项,如dbf文件的字符编码方式,默认为 UTF-8。据一位高人讲,ArcGIS的默认编码方式为GBK,若Shapefile文件为ArcMap生成,且属性值含有中文,此处最好选择GBK编码,否则可能会出现乱码。(此种说法的真实性有待检验,我入库时都是用默认设置,还未出现中文乱码的现象)。从上到下,其他复选框的含义依次为:
(2)保持列名称的大小写;(3)不创建bigint类型的列;(4)加载后自动创建空间索引(默认勾选);(5)只加载dbf属性数据;(6)通过复制而不是插入的方式加载数据(默认勾选,尚不明白含义);(7)加载到GEOGRAPHY列;(8)生成简单几何代替MULTI几何(若几何要素本身为多部件,则还是会生成MULTI类型的几何要素,后面对进一步说明)。
以上设置完成后,点击Import即可完成数据的导入。导入后在Public模式下可以看到数据,如下图所示。从数据中可以看出:(1)几何的空间参考为 4326;(2)几何类型为MultiPolygon,因有多部件要素。
二、使用QGIS入库
连接PostGIS数据库后(具体连接方法自行搜索),在QGIS菜单如下操作:Database→DBManager,如下图所示。图中,PostGIS下面即为我的一个PostGIS数据库连接,单击箭头所指的 导入,即可打开导入矢量图层的对话框。
如下图所示,导入对话框主要分为三部分:(1)选择待导入的文件;(2)输出数据表:分别为模式和数据表名称; (3)其他选择,依次为: 1)主键, 2)几何字段名称,默认为geom,可自己定义其他名称; 3)数据文件SRID和目标SRID,可根据需要设置; 4)编码方式,默认为UTF-8; 5)如果数据表存在,是否替换; 6)用单部件要素代替多部件; 7)字段名称转为小写;
8)创建空间索引。可根据需要确定是否勾选。
如下图所示为导入PostGIS中的数据记录,可以看出几何字段的类型为 MultiLineString,空间参考为 4326。
三、两种入库方式的比较
两种方式均可以将Shapefile文件导入到PostGIS中,但也存在以下区别:
1. 几何要素数据类型的区别。在要素均为单部件(single-part)的条件下,默认情况下,PostGIS自带工具的几何类型依次为:Point、LineString和Polygon,QGIS入库的类型依次为MultiPoint、MultiLineString和MultiPolygon。若后期涉及WFS-T操作,则绘制几何的类型(TYPE)必须与数据表的类型一致,这一点务必注意!!!
2. 使用PostGIS自带工具入库方便快捷,而使用QGIS则需要额外安装,但可以在连接QGIS的基础上对入库前后的数据进行可视化编辑。
以上是对两种入库方式的详细介绍,具体使用哪种方式,需要根据情况确定,谢谢。
转载自:https://blog.csdn.net/shaxiaozilove/article/details/61615839