qgis导出shp_【QGIS进阶】执行空间连接(QGIS3)

本文介绍了如何在QGIS中执行空间连接,通过纽约市自治市镇边界和街道等级数据,展示了如何创建过滤器、计算街道平均等级,并将自治市镇名称添加到街道图层。教程覆盖了使用QGIS的处理算法,包括矢量常规的按位置连接属性(摘要)和连接属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

空间连接是一个经典的GIS问题-根据属性之间的空间关系将属性从一层转移到另一层。在QGIS中,可以通过处理算法使用此功能。Join attributes by location

任务概述

我们将使用纽约市所有自治市镇边界的shapefile,以及纽约市所有街道的另一个Street Pavement Rating的shapefile。第一项任务是使用带有汇总算法的空间连接来找到每个行政区街道的平均等级。第二个任务是通过一对多空间连接将自治市镇的名称添加到街道要素中。你将学习以下内容:

  • 创建过滤器以从计算中暂时排除某些功能。

获取数据

纽约市开放数据门户网站是纽约市免费数据的绝佳来源。

使用门户网站上的导出选项下载Borough Boundaries zip文件。

00087d7dee1153b2ee59a29b5ba95f6a.png

使用门户网站上的导出选项下载Street Pavement Rating zip文件。

e57c8309a150937b4bfae36b2fd01018.png

为了方便起见,您可以直接从以下链接下载数据集的副本:

nybb_19a.zip

V_SSS_SEGMENTRATING_1.zip

资料来源[CITYOFNY]

程序

  1. nybb_19a.zip在QGIS浏览器中找到文件,然后将其展开。选择nybb_19a/nybb.shp图层并将其拖到画布上。这是代表纽约市行政区域边界的多边形图层。

QGIS导出 Shapefile(shp)格式的数据是一个常见操作,通常用于将矢量图层保存为标准的地理空间文件格式。QGIS 提供了多种方式来完成此任务,以下是一种常用的方法: ### 使用“另存为”功能导出 Shapefile 1. 在 QGIS 地图视图中加载需要导出的矢量图层。 2. 右键点击左侧图层面板中的目标图层,选择“导出” -> “另存为…”。 3. 在弹出的对话框中,设置输出格式为 `ESRI Shapefile`。 4. 指定保存路径和文件名。 5. 选择适当的坐标参考系统(CRS),例如 WGS84(EPSG:4326)[^3]。 6. 点击“确定”按钮,开始导出过程。 ### 使用 Python 脚本进行自动化导出 如果需要批量处理或自动化导出流程,可以使用 QGIS 的 Python API。`QgsVectorFileWriter` 类是实现这一功能的核心工具之一,它支持多种输出格式,包括 Shapefile、GeoPackage 和 Postgres SQL[^1]。以下是一个简单的代码示例: ```python from qgis.core import QgsVectorFileWriter, QgsCoordinateTransform, QgsProject # 获取当前项目中的矢量图层 layer = iface.activeLayer() # 定义输出文件路径和格式 output_path = "/path/to/output.shp" format = "ESRI Shapefile" # 设置目标坐标参考系统(如 WGS84) crs = layer.crs() if crs.authid() != "EPSG:4326": transform_context = QgsProject.instance().transformContext() coordinate_transform = QgsCoordinateTransform(crs, QgsCoordinateReferenceSystem("EPSG:4326"), QgsProject.instance()) # 写入文件 error = QgsVectorFileWriter.writeAsVectorFormat(layer, output_path, "utf-8", coordinate_transform, format) ``` ### 注意事项 - Shapefile 格式实际上由多个文件组成,包括 `.shp`、`.shx`、`.dbf` 和 `.prj` 文件,这些文件必须一起移动或复制以保持数据完整性。 - 导出时应确保选择正确的编码(如 UTF-8)以避免属性表中的字符乱码问题。 - 如果图层包含复杂的几何类型或多部分要素,请检查导出后的数据是否正确保留了这些特性。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值