【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.pswp.cn/pingmian/72945.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/72945.shtml
英文地址,請注明出處:http://en.pswp.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…