执行空间查询(QGIS3)

空间查询是许多类型的 GIS 分析的核心。通过空间查询,您可以通过图层与另一图层的要素之间的空间关系(相交,包含,接触等)选择图层中的要素。 在 QGIS 中,可以通过 按位置选择按位置提取 处理工具使用此功能。

内容说明

我们将为澳大利亚墨尔本市处理2个数据层。给定城市中酒吧和酒吧的数据层以及所有地铁站的位置,我们希望找出地铁站500米以内的所有酒吧和酒馆。

你还会学到这些

  • 选择适当的投影并重新投影矢量数据。

  • 创建缓冲区。

  • 使用geopackage(.gpkg)数据格式。

获取数据

墨尔本市的 Open Data Platform 提供了该市的许多GIS就绪数据集。

从 Metro Metros Melbourne 下载 https://data.melbourne.vic.gov.au/Transport-Movement/Metro-Train-Stations-with-Accessibility-Informatio/mgkp-67ad 具有可访问性信息的 Metro Train Stations 数据集。 以 原始 格式导出数据。

../../_images/data12.png

下载 Bars and pubs, with patron capacity <https://data.melbourne.vic.gov.au/Economy/Bars-and-pubs-with-patron-capacity/mffi-m9yn> 的酒吧和酒馆土地使用和就业普查(CLUE)数据集 。 将数据导出为 CSV

../../_images/data21.png

为了方便起见,你可以直接用下边的链接下载这方面的数据集:

metro_stations_accessbility.zip

Bars_and_pubs__with_patron_capacity

数据来源: [CITYOFMELBOURNE]

操作流程

  1. 在 QGIS 浏览器中找到 metro_stations_accessbility.zip 文件并将其展开。选择 metro_stations_accessbility.shp 文件并将其拖到画布上。 一个新的 metro_stations_accessbility 层将在 Layers 面板中加载。

../../_images/1103.png
  1. 酒吧和酒馆的数据层为 CSV 格式。要将其加载到 QGIS 中,请转到 Layer ‣ Add Layer ‣ Add Delimited Text Layer… 。 (有关导入CSV文件的更多详细信息,请参阅 导入电子表格或CSV文件(QGIS3)

../../_images/250.png
  1. Data Source Manager | Delimited Text 对话框中,浏览并选择下载的 Bars_and_pubs__with_patron_capacity.csv 文件作为 File nameX字段Y字段 应该分别自动选择为 x坐标y坐标 。点击 Add

../../_images/334.png
  1. 您将看到一个新的 Bars_and_pubs__with_patron_capacity 图层添加到 Layers 面板中。 这两个输入层都在地理坐标参考系统(CRS) EPSG:436 WGS84 中。为了执行空间分析,建议使用投影坐标参考系统(CRS)。因此,我们现在将这两层都重新投影到适当的区域 CRS ,以最大程度地减少失真,并允许我们以距离为单位(例如米)而不是度数进行工作。转到 Processing ‣ Toolbox

../../_images/419.png
  1. 搜索并找到 Vector general ‣ Reproject layer 工具。双击以启动它。

../../_images/519.png
  1. 选择 Bars_and_pubs__with_patron_capacity 作为输入层。点击 Target CRS 旁边的 Select CRS 按钮。

../../_images/619.png
  1. 为分析选择投影坐标系时,首先要寻找的是感兴趣区域的区域CRS。对于澳大利亚, Map Grid of Australia (MGA) 2020 是基于UTM的网格用于本地和区域映射的系统。 墨尔本位于UTM区域55,因此我们可以选择 GDA 2020 / MGA区域55 EPSG:7855 CRS 。

../../_images/718.png

注解

如果不确定所工作区域的本地 CRS ,则基于WGS84基准为UTM区域选择CRS是安全的选择。您可以使用 UTM Grid of Worlds 找到您所在地区的UTM区域号。

  1. 接下来,点击 Reprojected 旁边的 按钮,然后选择 保存到GeoPackageGeopackage 是建议的开放数据格式空间数据,并且是QGIS3的默认数据交换格式。单个 GeoPackage .gpkg 文件可以包含多个矢量和栅格图层。

../../_images/818.png
  1. 将地理包命名为 spatialquery 并单击 Save

../../_images/918.png
  1. 当提示您输入图层名称时,输入 bars_and_pubs ,然后单击 OK 。单击 Run 以重新投影图层。

../../_images/1018.png
  1. 窗口将切换到 Log 标签,您将看到算法运行并创建新的输出层 bars_and_pubs

../../_images/1121.png
  1. 现在,我们将重新投影 metro_stations_accessbility 层。 在 Reproject layer 窗口中,切换回 Paramters 标签。选择 metro_stations_accessbility 作为输入层。保持相同的目标 CRS 。接下来,点击 Reprojected 旁边的 按钮,然后选择 保存到GeoPackage 。选择相同的输出文件 spatialquery (请记住,单个地理包文件可以包含多个图层,因此我们将新图层保存到相同的地理包文件中)。 输入 metro_stations 作为 Layer name 。点击 Run

../../_images/1219.png
  1. 回到 QGIS 主窗口中,您会在 Layers 面板中看到两个新图层 : bars_and_pubsmetro_stations 。您可以关闭原始图层的可见性。现在,我们准备进行空间查询。由于我们有兴趣在距离地铁站500m的地方选择酒吧和酒馆,因此第一步是在地铁站周围创建一个代表我们搜索区域的缓冲区。在 Processing Toolbox 中搜索并找到 Vector geometry ‣ Buffer 工具,然后双击以启动它。

../../_images/1318.png
  1. Buufer 对话框中,选择 metro_stations 作为 Input layer 。将 500 米设置为 Distance 。将输出保存到相同的 spatialquery 地理包中,然后输入 metro_stations_buffers 作为 Layer name 。点击 Run

../../_images/1417.png
  1. 您会在 Layers 面板中看到一个新的 metro_stations_buffers 图层。现在,我们可以找出 bars_and_pubs 层中的哪些点落入了 metro_stations_buffers 层中的多边形内。从 Processing Toolbox 中找到 Vector selection ‣ Extract by Location 工具,然后双击以启动它。

../../_images/1516.png

注解

按位置提取 将使用空间查询中的匹配要素创建一个新图层。如果只想选择功能,请使用 按位置选择 工具。

  1. Extract by location 对话框中,选择 bars_and_pubs 作为 Extract features from 。检查 相交 作为几何谓词。通过与的功能进行比较,将 metro_stations_buffers 设置为 By comparing to the features from 。将输出保存到 spatialquery 地理包中,作为 selected 层。点击 Run

../../_images/1615.png
  1. 处理完成后,您将看到 选定的 图层添加到 Layers 面板。请注意,该层仅包含来自 bars_and_pubs 的点,它们位于缓冲区多边形内。

../../_images/1716.png
  1. 我们的分析已经完成。您可能会注意到缓冲区多边形看起来是椭圆形的。这是因为我们的 Project CRS 仍设置为 EPSG:4326 WGS84 。为了更好地可视化结果,您可以转到 Project-> Properties-> CRS 并选择我们用于分析的 GDA 2020 / MGA zone 55 EPSG:7855 。设置为此 CRS 后,缓冲区将以正确的形状显示。

../../_images/1815.png