【QGIS_Python】在QGIS的Python控制台生成SHP格式点数据并显示标注

参考文章: 「GIS教程」使用DeepSeek辅助QGIS快速制图 | 麻辣GIS

示例代码说明:使用参考文章中的省会城市坐标点,左侧增加一列城市序号code, 图层标注显示 code + 城市名称,同时在指定路径下生成对应SHP格式点数据。

import os
from qgis.core import QgsVectorLayer, QgsField, QgsFeature, QgsGeometry, QgsPointXY, QgsProject, QgsMarkerSymbol, QgsPalLayerSettings, QgsVectorLayerSimpleLabeling
from qgis.PyQt.QtCore import QVariant# 创建省会城市坐标字典(名称, 经度, 纬度)
capital_cities = {"北京": (116.4074, 39.9042), "天津": (117.1994, 39.0851), "石家庄": (114.4995, 38.0409),"太原": (112.5489, 37.8706), "呼和浩特": (111.7510, 40.8415), "沈阳": (123.4315, 41.8057),"长春": (125.3236, 43.8160), "哈尔滨": (126.5350, 45.8022), "上海": (121.4737, 31.2304),"南京": (118.7969, 32.0603), "杭州": (120.1551, 30.2741), "合肥": (117.2272, 31.8206),"福州": (119.2965, 26.0745), "南昌": (115.8581, 28.6829), "济南": (117.1205, 36.6510),"郑州": (113.6253, 34.7466), "武汉": (114.3054, 30.5928), "长沙": (112.9388, 28.2278),"广州": (113.2644, 23.1291), "南宁": (108.3663, 22.8176), "海口": (110.1999, 20.0440),"重庆": (106.5516, 29.5630), "成都": (104.0665, 30.5728), "贵阳": (106.6302, 26.6477),"昆明": (102.8329, 24.8801), "拉萨": (91.1406, 29.6455), "西安": (108.9398, 34.3416),"兰州": (103.8342, 36.0611), "西宁": (101.7778, 36.6173), "银川": (106.2309, 38.4872),"乌鲁木齐": (87.6168, 43.8256), "香港": (114.1694, 22.3193), "澳门": (113.5439, 22.1987),"台北": (121.5645, 25.0330)}# 定义输出 Shapefile 路径
output_dir = "C:/Users/QGIS/data/output"  # 修改为你的输出目录
output_shp = os.path.join(output_dir, "provincial_capitals.shp")# 创建点图层
layer = QgsVectorLayer("Point?crs=EPSG:4326", "Provincial Capitals", "memory")
provider = layer.dataProvider()# 添加字段
provider.addAttributes([QgsField("code", QVariant.Int),QgsField("city", QVariant.String),QgsField("longitude", QVariant.Double),QgsField("latitude", QVariant.Double)])
layer.updateFields()# 添加要素
code = 1  # 从1开始编号
for city, (lon, lat) in capital_cities.items():feat = QgsFeature()feat.setGeometry(QgsGeometry.fromPointXY(QgsPointXY(lon, lat)))feat.setAttributes([code, city, lon, lat])provider.addFeature(feat)code += 1  # 编号递增# 设置符号样式
symbol = QgsMarkerSymbol.createSimple({'name': 'circle', 'color': 'red', 'size': '5.0'})
layer.renderer().setSymbol(symbol)# 添加标注设置
label_settings = QgsPalLayerSettings()
label_settings.isExpression = True  # 启用表达式
label_settings.fieldName = "concat(code, ', ', city)"  # 使用表达式拼接 code 和 city
label_settings.placement = QgsPalLayerSettings.AroundPoint
label_settings.enabled = True
# 设置字体样式
text_format = QgsTextFormat()
text_format.setFont(QFont("Arial", 20))  # 设置字体为 Arial,大小为 20
text_format.setColor(QColor("black"))  # 设置字体颜色为黑色
label_settings.setFormat(text_format)labeler = QgsVectorLayerSimpleLabeling(label_settings)
layer.setLabeling(labeler)
layer.setLabelsEnabled(True)# 保存为 Shapefile
error = QgsVectorFileWriter.writeAsVectorFormat(layer, output_shp, "UTF-8", driverName="ESRI Shapefile")
if error[0] == QgsVectorFileWriter.NoError:print(f"Shapefile 已成功保存到: {output_shp}")
else:print(f"保存 Shapefile 时出错: {error[1]}")# 添加到地图(可选)
QgsProject.instance().addMapLayer(layer)
print(f"已成功加载 {len(capital_cities)} 个省会城市坐标点")

结果示例:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/72945.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

deepSpeed多机多卡训练服务器之间,和服务器内两个GPU是怎么通信

DeepSpeed 在多机多卡训练时,主要依赖 NCCL 和 PyTorch Distributed 进行通信。具体来说,分为服务器之间和服务器内两种情况: 1. 服务器之间的通信(跨节点通信) DeepSpeed 采用 NCCL(NVIDIA Collective Communications Library)作为主要的通信后端,结合 PyTorch Distr…

k8s-coredns-CrashLoopBackOff 工作不正常

本文作者: slience_me 问题描述 # 问题描述 # rootk8s-node1:/home/slienceme# kubectl get pods --all-namespaces # NAMESPACE NAME READY STATUS RESTARTS AGE # kube-flannel kube-flannel-ds-66bcs …

新能源电站系统建设提速!麒麟信安操作系统驱动光伏风电双领域安全升级

在全球能源结构加速向清洁能源转型的背景下,新能源电站建设正如火如荼地展开,麒麟信安操作系统为光伏与风电领域提供了稳定可靠的底座支持,目前已在中电乾阳光伏、辽宁铁岭风电场、清河光伏、鑫田茨沟风电场、连山风电场等新能源场站落地应用…

Oracle 19c 子分区表索引测试

一、建表语句放在最后,方便查看 二、创建各类索引 --创建本地的主键约束,但必须加上分区键、子分区键MT_O_CODE,M_YMD alter table MS_DMG.A_RED drop constraint MGR_PK_AREAD ; alter table MS_DMG.A_RED add constraint MGR_PK_AREAD primary key …

Linux Vim 寄存器 | 从基础分类到高级应用

注:本文为 “vim 寄存器” 相关文章合辑。 英文引文,机翻未校。 中文引文,略作重排。 未整理去重,如有内容异常,请看原文。 Registers 寄存器 Learning Vim registers is like learning algebra for the first ti…

【Java/数据结构】队列(Quque)

本博客将介绍队列的相关知识,包括基于数组的普通队列,基于链表的普通队列,基于数组的双端队列,基于链表的双端队列,但不包括优先级队列(PriorityQueue),此数据结构将单独发一篇博客&…

[数据结构]排序之 归并排序(有详细的递归图解)

一、非递归 基本思想: 归并排序( MERGE-SORT )是建立在归并操作上的一种有效的排序算法 , 该算法是采用分治法( Divide andConquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列&#x…

docker安装向量数据库Milvus及可视化工具 Attu

前置条件 1.安装了docker 2.服务器网络正常,可以连接到容器下载地址 3.服务器磁盘空间正常,docker磁盘占用过大,请参考docker容量占用过大解决办法 一、下载yml文件 可在文章资源下载或者自行下载:下载yml 下载这个单机版本的…

科技云报到:AI Agent打了个响指,商业齿轮加速转动

科技云报到原创。 3月16日,百度旗下文心大模型4.5和文心大模型X1正式发布。目前,两款模型已在文心一言官网上线,免费向用户开放。 同时,文心大模型4.5已上线百度智能云千帆大模型平台,企业用户和开发者登录即可调用AP…

CSS 用于图片的样式属性

CSS 设置图像样式 CSS中用于图片的样式属性主要包括以下几个方面: ‌边框和背景‌: ‌border‌:可以设置图片的边框样式、宽度和颜色。例如,img { border: 1px solid #ddd; } 会给图片添加1像素的实线边框,颜色为灰色…

EasyExcel--导入和导出Excel的方法

原文网址:EasyExcel--导入和导出Excel的方法_IT利刃出鞘的博客-CSDN博客 简介 本文介绍SpringBoot整合EasyExcel导入和导出Excel的方法。 使用 Excel导入 实体类 Data public class OrderImportBO {ExcelProperty("订单号")NotBlank(message "…

金融级安全加速:群联SD-WAN如何兼顾防御与低延迟?

一、SD-WAN的核心价值 1. 传统回源痛点 暴露风险:公网回源可能泄露源站IP,易遭针对性攻击。延迟抖动:跨国业务因网络拥堵导致延迟波动(如金融交易超时)。 2. 群联方案优势 加密专线:通过IPSec/SSL VPN建…

Apache Tomcat漏洞公开发布仅30小时后即遭利用

近日,Apache Tomcat曝出一项安全漏洞,在公开发布概念验证(PoC)仅30小时后,该漏洞即遭到攻击者利用。这一漏洞编号为CVE-2025-24813,主要影响以下版本: 1. Apache Tomcat 11.0.0-M1 至 11.0.2 …

计算机体系结构作业2

1 P108 有一条动态多功能流水线由5段组成(如图3.35所示),加法用1、3、4、5段,乘法用1、2、5段,第2段的时间为2△t,其余各段的时间均为△t,而且流水线的输出可以直接返回输入端或暂存于相应的流水寄存器中。若在该流水线上计算 ∑ i 4 ( A i B i ) \sum_i^4(A_iB_i) ∑i4​(Ai…

python-leetcode 60.分割回文串

题目: 给定一个字符串S,请将S分割成一些子串,使每个子串都是回文串,返回S所有可能的分割方案 方法一:回溯深度优先搜索 1. 主要思想 使用 深度优先搜索(DFS) 遍历 s 的所有可能划分方式。使用 回溯&…

Java EE 进阶:MyBatis

MyBatis是一个优秀的持久化框架,用于简化JDBC的开发。 持久层就是持久化访问的层,就是数据访问层(Dao),用于访问数据库的。 MyBatis使用的准备工作 创建项目,导入mybatis的启动依赖,mysql的驱…

Go语言的基础类型

一基础数据类型 一、布尔型(Bool) 定义:表示逻辑真 / 假,仅有两个值:true 和 false内存占用:1 字节使用场景:条件判断、逻辑运算 二、数值型(Numeric) 1. 整数类型&…

【愚公系列】《高效使用DeepSeek》019-外语学习

🌟【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】🌟 📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主! 👉 江湖人称"愚公搬代码",用七年如一日的精神深耕技术领域,以"…

发布第四代液晶电视,TCL引领全新美学境界

在不断革新的消费电子领域中,电视行业在视觉体验上正面临重要的美学挑战。如何打破全面屏时代的物理束缚,将家居空间提升到“视觉无界”的层次,以及如何让尖端技术更好地服务于影像沉浸感,成为行业关注的焦点。 3月10日&#xff…

剑指 Offer II 113. 课程顺序

comments: true edit_url: https://github.com/doocs/leetcode/edit/main/lcof2/%E5%89%91%E6%8C%87%20Offer%20II%20113.%20%E8%AF%BE%E7%A8%8B%E9%A1%BA%E5%BA%8F/README.md 剑指 Offer II 113. 课程顺序 题目描述 现在总共有 numCourses 门课需要选,记为 0 到 n…