地理空间的 Hello World

在此示例中,我们将设置地理空间数据库,从 2 个不同的源导入数据,并在名为 QGIS 的应用程序中查看结果。本指南是为 linux-machines 明确编写的,如果你在另一个平台上运行,某些命令或路径可能无法按预期工作。

为了查看导入的数据,我们将使用名为 QGIS 的应用程序。如果你没有此应用程序,请先安装它 ,如果你想使用其他查看器或地理应用程序(如 ArcGIS),则可以跳过安装 QGIS。

我们的消息来源将是纽约市州议会区纽约市 LION 街道地图数据库 。请从链接的位置下载相应的文件。你还应该查看材料的元数据部分,因为它为你提供了这些文件使用的坐标参考系统的信息。

首先,创建一个工作文件夹 nycgis,将下载的文件复制到该位置并解压缩存档。

mkdir nycgis
cd nycgis
cp ~/Downloads/nyad_16d.zip .
unzip ~/Downloads/nyad_16d.zip
cp ~/Downloads/nylion_16d.zip .
unzip  ~/Downloads/nylion_16d.zip

nycgis 文件夹中,你现在应该有 2 个文件夹:“nyad_16d”,lion,包含多个文件。

使用地理数据时,了解源数据的坐标参照系(CRS)和最终输出数据至关重要。在链接位置的元数据部分( 元数据:汇编区元数据:LION 数据库 )中,你会发现两个文件的 CRS 是 EPSG:2263,一个用于引用美国东北部的坐标系。

让我们假设我们想在数据库中使用不同的 CRS。这可能有不同的原因,例如,我们可能希望在数据库上使用基于 Web 的地理应用程序。这种应用的常见 CRS 是 WGS:84(EPSG:4326)。

要转换坐标系,我们使用名为 ogr2ogr 的工具,它是 GDAL 包的一部分。在工作文件夹中,我们首先创建 2 个表示重新投影数据的文件夹,然后转换我们的数据。

mkdir nyad_16d_proj_4326
ogr2ogr -f "ESRI Shapefile" ./nyad_16d_proj_4326/nyad_4326.shp ./nyad_16d/nyad_16d.shp -s_srs EPSG:2263 -t_srs EPSG:4326

mkdir nylion_16d_proj_4326
ogr2ogr -f "ESRI Shapefile" ./nylion_16d_proj_4326/ny_str_4326.shp ./nylion_16d/lion/lion.gdb/a0000000d.gdbtable -s_srs EPSG:2263 -t_srs EPSG:4326

请注意,出于我们的目的,我们只使用 LION-Database 的名为“a0000000d.gdbtable”的文件。ogr2ogr-command 的语法如下:

ogr2ogr -f [output-format] [output-file] [input-file] -s_srs [source crs] -t_srs [target crs]

我们现在有 2 个 shapefile,投影在正确的 CRS 中。为了使用我们数据库中的数据,我们必须将 shapefile 转换为 sql-statemens。为此,我们使用名为 shp2pgsql 的工具。在工作目录中运行以下命令:

shp2pgsql ./nyad_16d_proj_4326/nyad_4326.shp > nyad_4326.sql
shp2pgsql ./nylion_16d_proj_4326/ny_str_4326.shp > ny_streets_4326.sql

文件 nyad_4326.sqlny_streets_4326.sql 现在可以在 postgis 中使用了。要继续,并导入数据,请创建一个空间启用的数据库。

sudo su - postgres
createdb nycgis
psql -d nycgis

在 psql-session 中,运行:

CREATE EXTENSION postgis;
CREATE EXTENSION postgis_topology;

用(CTRL + D)退出 psql-和 postgres-user-sessions。并导入文件:

psql -f nyad_4326.sql -d nycgis
psql -f ny_streets_4326.sql -d nycgis

数据库 nycgis 现在有 2 个表,其中成功导入了重新投影的源。

要验证这一点:打开 QGIS

  1. 使用图层 > 添加图层 > PostGIS-Layer
  2. 连接到你的数据库
  3. 选择你的表格
  4. (可选)设置新创建的图层的样式。

https://i.stack.imgur.com/ZAyht.jpg

Etvoilà:你现在拥有一个空间启用的数据库,其中包含导入的重新投影的地理数据。