日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python symbol函数展开_QGIS表达式中的函数

發布時間:2023/12/15 python 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python symbol函数展开_QGIS表达式中的函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

編程語言中的函數,與數學函數的定義大不相同。在計算機領域,函數是指一段可以直接被另一段程序或代碼引用的程序或代碼,也叫做子程序(subroutine)、過程(procedure)、方法(method)。

函數在QGIS表達式構建過程中起到重要作用,表達式實際上是函數作用于常量與變量后得到的結果,可以說,函數是表達式的靈魂。

?01?

內置函數與自定義函數

QGIS表達式中的函數分為內置函數和自定義函數兩大類。

內置函數是QGIS系統自帶的函數,用戶可以在表達式構建過程中調用內置函數,但是不能修改其中的代碼。

自定義函數是由用戶通過Python語言編寫的代碼片段,可以根據個性化需求對函數功能進行設計與修改,為用戶提供更強大而靈活的定制能力。

  • 系統內置函數

QGIS內置函數分成約20個分組,包括地圖、地圖圖層、記錄和屬性、時間和日期、數學、數組、條件等。每個分組下所包含的函數數量如下:?

  • 自定義函數

在表達式構造器中切換到【函數編輯器】標簽,可以看到自定義函數編輯區由左邊的函數列表、右上的函數代碼編輯器和右下的幫助區域組成。

默認情況下,函數列表只有一個default函數,是系統提供的自定義函數模版。右側函數代碼編輯器給出了樣例代碼,提供了導入QGIS模塊、自定義函數存儲的分組以及函數體代碼的參考。

點擊左下角的【+】按鈕,在彈出的對話框輸入存儲的文件名,即可新增自定義函數。

通常情況下,自定義函數首先需要使用import語句導入引用的Python庫,然后設計和編寫函數實現代碼,例如在函數代碼編輯器輸入下面的代碼:

import mathfrom qgis.core import *from qgis.gui import *@qgsfunction(args=0, group='Custom', usesgeometry=True)def GetUtmZone(value1, feature, parent): """以字符串形式返回幾何圖形所屬的UTM區""" centroid = feature.geometry() longitude = centroid.asPoint().x() latitude = centroid.asPoint().y() zone_number = math.floor(((longitude + 180) / 6) % 60) + 1 if latitude >= 0: zone_letter = 'N' else: zone_letter = 'S'????return?'%d%s'?%?(int(zone_number),?zone_letter)

該函數的主要功能是計算要素所處的UTM投影分度帶,返回以‘N’或者‘S’結尾的投影分度帶字符串。

點擊右下角的【保存并載入函數】按鈕,將該函數保存,并載入到表達式構造器對應的分組中。此時調出表達式構造器對話框,可看到上述自定義函數出現在custom分組中,雙擊該函數即可完成函數調用。

自定義函數能根據需求進行設計和代碼編寫,為函數的使用提供了更多的可能性,由于涉及到Python編程語言,其使用方式也更加復雜,QGIS官方文檔有大量篇幅對這方面進行了詳細介紹,感興趣的朋友可以到QGIS官網查閱相關文檔。

?02?

查找函數

在表達式構造器中,函數以分組方式在樹形結構中列出。如果對函數的分組比較熟悉,大致了解自己所需要的函數屬于哪個分組,可以直接展開分組找到該函數。如果知道函數的名字,可以在選擇區上方搜索框中輸入函數的名字進行快速查找。

?03?

使用函數

雙擊函數,即可將其添加到代碼輸入區中。表達式代碼編輯器支持參數提示和自動補全功能:輸入函數的前幾個字母,編輯器將會提示與其匹配的函數名,使用tab按鍵將實現自動補全。

QGIS中的函數支持命名參數,即在使用函數時,參數的傳入可以用命名參數。命名參數可以忽略參數的順序,方便函數的使用,尤其是參數比較多的情況時,用參數名稱和參數值同時出現的方法,可以提高代碼的可讀性。

例如clamp函數可以實現將輸入值限定在指定的范圍內,需要三個參數:min,范圍最小值;max,范圍最大值;value,輸入值。默認情況下,clamp函數的參數調用順序為:clamp(min,value,max),例如,在表達式編輯區寫入代碼:clamp(1,5,10),可以實現將輸入值限定在[1,10]范圍,當前輸入值為5,因為在[1,10]范圍內,函數返回輸入值本身,即5。用命名參數調用的方式為:clamp(min:=1,max:=10,value:=5),注意到,參數的順序并未按照默認順序給出,而表達式引擎也正確地返回計算結果。

?04?

常用函數

QGIS表達式中的函數將近300個,在表達式構建中正確地使用函數可達到事半功倍的效果。由于篇幅所限,本文不能將函數一一詳解,根據函數的常用程度,選擇約30個函數并對其進行詳細說明。其他函數的用法可以在表達式構造器的幫助文檔中獲取。

?05?

函數典型應用

1.

darker(@symbol_color,130)

該函數來自《QGIS 3.10矢量樣式設置》,用于設置發電廠點要素的描邊顏色。darker是顏色函數,返回更暗的顏色字符串。@symbol_color是當前幾何圖形的渲染顏色,130是暗化因子相對應的整數。該函數實現如下功能:返回比@symbol_color暗30%的顏色值。

2.

maximum("passengers", group_by:="station_class")

maximum是聚合函數,返回字段或者表達式的最大值。"passengers"是屬性表中的旅客數量字段,"station_class"是站點類型字段。該函數實現如下功能:按照站點類型分組,返回最大旅客數量。

3.

buffer( $geometry, 10 )

buffer為幾何圖形函數,實現按照給定半徑返回幾何圖形的緩沖區,$geometry表示當前選中的幾何圖形,10為緩沖半徑,其單位與地圖單位相同。

4.

to_date('2020-07-29')

to_date是日期函數,實現將一個字符串轉換成日期對象。傳入參數代表不同日期形式的字符串,其支持的格式可參考QGIS的相關文檔,默認情況下,日期字符串為短橫線連接,年份由4位數字表示,月份由2位數字表示,日期用2位數字表示,形如'2020-07-29'。

5.

format_date(now(),'yyyy-MM-dd')

format_date是字符串函數,實現格式化日期字段,返回一個自定義的字符串格式。now()是日期函數,返回當前日期和時間。該表達式的輸出結果是短橫線連接的當前日期字符串,如:‘2020-07-29’。

?06?

小結

本文試圖從系統內置函數、自定義函數、函數的使用和查找、常用函數說明和函數典型應用等方面,探討對QGIS表達式中的函數理解。QGIS表達式中的函數種類繁多,使用方法靈活多變,本文僅為拋磚引玉之作,如果有理解偏差,歡迎指正。

吳建玲

2020年7月30日


版權聲明

本文歡迎轉載,轉載時請注明出處。

總結

以上是生活随笔為你收集整理的python symbol函数展开_QGIS表达式中的函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。