当前位置: 首页 > article >正文

QGIS将OSM道路数据可视化

1. 首先,打开QGIS软件并加载OSM道路数据。可以通过点击“Layer”菜单栏中的“Add Layer”选项来加载数据,或者使用快捷键“Ctrl+Shift+T”。

2. 接着,选择要按照属性分类的道路数据。可以通过点击图层列表中的道路图层,或者选择图层列表中的道路图层并右键单击来选择“Properties”选项。

3. 在“Properties”对话框的左侧菜单栏中,选择“Symbology”选项卡。在这里,您可以为道路数据选择符号,例如线条颜色、宽度和样式。

4. 选择“Categorized”符号类型,并选择您要按照其属性分类的属性字段。例如,您可以选择“highway”属性字段,这将使道路按照其类型进行分类,例如主干道、次干道、小路等等。

5. 点击“Classify”按钮,这将基于您选择的属性字段为道路数据创建不同的分类。您可以为每个分类选择不同的线条颜色、宽度和样式。

6. 点击“OK”按钮以应用符号设置,并将道路数据按照其属性分类进行可视化。

7. 如果您想要进一步自定义符号设置,可以返回到“Properties”对话框中的“Symbology”选项卡,并更改符号设置。

# 导入必要的库
from qgis.core import (
    QgsApplication,
    QgsVectorLayer,
    QgsCategorizedSymbolRenderer,
    QgsSymbol,
    QgsRendererCategory,
    QgsField,
    QgsVectorFileWriter
)

# 初始化QGIS应用程序
qgs = QgsApplication([], False)
qgs.initQgis()

# 加载OSM道路数据
layer_path = 'path/to/your/OSM/road/data.shp'
layer_name = 'OSM Road Data'
layer = QgsVectorLayer(layer_path, layer_name, 'ogr')

# 按照属性字段分类
category_field = 'highway'
categories = []
for category_value in layer.uniqueValues(layer.fields().indexFromName(category_field)):
    symbol = QgsSymbol.defaultSymbol(layer.geometryType())
    symbol.setColor(QColor('red')) # 更改颜色属性
    symbol.setWidth(0.5) # 更改线条宽度
    category = QgsRendererCategory(category_value, symbol, str(category_value))
    categories.append(category)

# 创建符号渲染器
renderer = QgsCategorizedSymbolRenderer(category_field, categories)

# 应用符号渲染器并更新图层风格
layer.setRenderer(renderer)
layer.triggerRepaint()

# 保存渲染后的图层
output_path = 'path/to/your/output/file.shp'
QgsVectorFileWriter.writeAsVectorFormat(layer, output_path, 'utf-8', layer.crs(), 'ESRI Shapefile')

# 退出QGIS应用程序
qgs.exitQgis()
这段代码将按照“highway”属性字段分类OSM道路数据,并为每个分类设置红色颜色和0.5宽度的线条。您可以根据需要更改这些符号设置。最后,代码将保存渲染后的图层到指定的输出路径中。


http://www.kler.cn/a/37237.html

相关文章:

  • Antd的Select组件二次封装
  • STM32 10个工程篇:1.IAP远程升级(五)
  • 【计算机网络】第三章 数据链路层(虚拟机与局域网)
  • ES6 Day01
  • 开源堡垒机Guacamole二次开发记录之一
  • java SE -- enum 的使用
  • 网络安全与防范
  • 使用组合模式实现权限验证的例子
  • 【数据分析 - 基础入门之pandas篇③】- pandas数据结构——DataFrame
  • 决策树(Decision Tree)
  • 【接口/性能测试】Jmeter引用 jar包的三种方式(详细)
  • 进程和线程的区别
  • Linux下软件安装的命令
  • 简化生活之让AI以指定格式输出
  • 添加gitee的SSH公钥
  • 山东农信:走好“三农”数字化转型的最后一公里
  • Android 生成pdf文件
  • 基于scrcpy的Android群控项目重构,获取Android屏幕元素信息并编写自动化事件
  • Spring中事务传播机制的理解与简单试用
  • 短视频抖音账号矩阵系统源码---功能架构示例1