在各种库和应用程序的支持下,PostGIS提供了许多用于加载数据的选项。
本节将重点介绍使用PostGIS shapefile加载工具加载shapefile的基础知识。
一、PostGIS shapefile工具
1.1、首先,返回到选项板,并单击PostGIS部分中的PostGIS shapefile工具,PostGIS shapefile工具将启动。
1.2、填写PostGIS连接部分的连接详细信息,然后单击“ok”按钮。程序将测试连接并在日志窗口中报告。
如果安装时使用默认的信息,就如下所示:
1.3、接下来,打开“Add File”按钮并导航到数据目录文件(数据下载地址):\postgis-workshop-2018\data。选择nyc-census_block.shp文件。
1.4、将文件的的SRID(空间参考信息)值更改为26918。请注意,架构、表名和列名已经根据shapefile文件里的信息填充,但是你可以有选择地更改它们(不要这样做!在教程后面部分,还有一些步骤需要默认的名称)。
1.5、保持配置部分的详细信息如下
1.6、单击"Options"按钮查看加载选项。加载程序将使用快速“COPY(复制)"模式,并在加载数据后默认创建空间索引。
1.7、最后,单击"Import"按钮并观察导入过程。这可能需要几分钟的时间来加载,但这是教程数据中最大的一个文件。
1.8、重复数据目录中其余shapefile文件的导入。通过在按"Import"按钮之前添加多个文件,可以在一次导入中加载多个文件:
1.9、加载所有文件后,单击pgAdmin中的"Refresh"按钮更新树状视图。应该可以看到6个表显示在树结构:数据库>nyc>架构>public>数据表里。
二、什么是shapefile?
你可能会问自己 —— "shapefile是什么?"。
一个"shapefile"通常指带有.shp、.shx、.dbf和其他扩展名且前缀名称一致的文件集合。
例如上面的nyc_census_blocks由以下几个文件组成:
一个shapfile必需有的文件:
- .shp —— 存储地理要素的几何信息
- .shx —— 存储要素几何图形的索引信息
- .dbf —— 存储地理要素的属性信息(非几何信息)
可选文件包括:
- .prj —— 存储空间参考信息,即地理坐标系统信息和投影坐标系统信息。使用well-known文本格式进行描述。
PostGIS shapefile工具将shapefile数据从二进制转换为一系列的SQL命令,然后在数据库中运行以加载数据,从而使shapefile数据在PostGIS中可用。
三、什么是SRID 26918?
大多数导入过程都是不言自明的,但即使是经验丰富的GIS专业人员也可能被SRID难倒。
“SRID"表示“Spatial Reference IDentifier(空间参考标识符)"。它定义了我们数据的地理坐标系统和投影的所有参数。
SRID很方便,因为它将有关地图投影的所有信息(可能非常复杂)打包(更具体的说应该是映射)到一个数字中。
你可以在以下链接中查找我们在上面使用的投影的定义:
或直接在PostGIS内部使用对spatial_ref_sys表的查询:
SELECT srtext FROM spatial_ref_sys WHERE srid = 26918;
注意:PostGIS的spatial_ref_sys表是一个OGC标准表,用于定义数据库已知的所有空间参考系统。PostGIS附带的数据列出了3000多个已知的空间参考系统以及在它们之间进行转换/重新投影所需的详细信息。
在以上两种查看方式里,你都会看到26918对应的空间参考系统的文本表示(为了便于观看,此处格式化得很整齐):
-
PROJCS[
-
"NAD83 / UTM zone 18N",
-
GEOGCS[
-
"NAD83",
-
DATUM[
-
"North_American_Datum_1983",
-
SPHEROID[
-
"GRS 1980",6378137,298.257222101,AUTHORITY["EPSG","7019"]
-
],
-
AUTHORITY["EPSG","6269"]
-
],
-
PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],
-
UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],
-
AUTHORITY["EPSG","4269"]
-
],
-
UNIT["metre",1,AUTHORITY["EPSG","9001"]],
-
PROJECTION["Transverse_Mercator"],
-
PARAMETER["latitude_of_origin",0],
-
PARAMETER["central_meridian",-75],
-
PARAMETER["scale_factor",0.9996],
-
PARAMETER["false_easting",500000],
-
PARAMETER["false_northing",0],
-
AUTHORITY["EPSG","26918"],
-
AXIS["Easting",EAST],
-
AXIS["Northing",NORTH]
-
]
如果从data目录打开nyc_neighborhoods.prj文件,将看到相同的投影信息。
人们开始使用PostGIS的一个常见问题是弄清楚要使用哪个SRID号来使用他们的数据。他们只有一个.prj文件,但是应该如何将.prj文件转换成正确的SRID号呢?
最简单的答案就是使用电脑。将.prj文件的内容插入http://prj2epsg.org。这将为我们提供与投影定义最匹配的SRID编号(或编号列表)。
世界上并不是每个地图投影都有对应的SRID编号,但大多数常见的投影都有对应的且保存在prj2epsg数据库中的SRID编号。
你从当地机构收到的数据 —— 如纽约市 —— 通常是基于"洲际飞机“或"UTM"标出的地方投影。
四、使用QGIS查看数据
QGIS,是一个桌面端GIS查看器/编辑器,用于快速查看数据。
QGIS可以查看许多数据格式,包括shapefile和PostGIS数据库。
它的图形界面允许我们轻松探索我们的数据,以及快速的样式设置。
尝试使用QGIS连接PostGIS数据库,该应用程序可从http://qgis.org下载。