QGIS計算共享邊長

2021-10-04 23:18:42 字數 1799 閱讀 4615

問題:給定乙個polygon檔案,共享邊長是多少

解答:

首先我們要知道每乙個多邊形都有哪些共享的邊界線。由於我們的資料是基於wgs84(3587)座標的資料,為了量算距離,需要先進行投影處理,這裡選擇webmercator(3857)投影。開啟qgis,在裡面找到reprojection工具,選擇3857座標系。

對投影完的資料使用字段計算器工具進行處理。現在,我們將新增乙個名為』neighbors』的新字串字段,結果將包含所有相鄰區縣的逗號分隔列表。區縣名稱包含在name列中。因此,我們可以使用聚合函式array_agg表示式查詢所有相交的特徵並提取區縣名稱。由於幾何體與其自身相交,因此結果列表具有區縣本身。我們使用該array_remove_all函式從結果中刪除錯誤的區縣。

處理完成後,將載入乙個新的「計算」層。現在,該層有乙個「neighbors」列,其中包含每個要素的所有相鄰區縣的列表。

現在我們準備計算邊界長度。想法是使每個要素與所有相鄰要素相交並計算相交的長度。但是要素是多邊形,由於它們彼此接觸,所以它們的交集將為空。因此,訣竅是首先將麵要素轉換為折線。2條相鄰折線要素的交點將是代表邊界的折線。您可能會想使用「多邊形到直線」演算法,但是此演算法將多邊形之間的共享邊界僅分配給其中乙個要素。正確的演算法是「邊界」,它會建立多邊形的拓撲邊界。

我們將新增乙個新的字串字段「 lengths」,每個相區縣長度為單位。這裡的關鍵功能是array_foreach。該函式獲取乙個列表,並將表示式應用於每個元素,然後返回包含計算值的列表。可以使用訪問每個列表成員@element。該表示式可以分解為以下邏輯部分

步驟1:將以逗號分隔的鄰居列表轉換為列表(函式string_to_array)

步驟2:對於每個相鄰的區縣值,找到相應的要素幾何(function get_feature和geometry)

第3步:找到要素與鄰居(函式intersection)之間的相交幾何

步驟4:計算相交幾何的長度。(功能length)

第5步:長度以圖層crs單位(公尺)計算,並將其四捨五入為最接近的整數(函式floor)

步驟6:將結果列表轉換為逗號分隔的字串,以儲存到字段中。(功能array_to_string)

計算三角形的x y邊 長 x sin cos值

將長 弧度與要計算的x y邊值分開在兩個不同的結構體中 先人為寫入長 弧度值,並建立乙個通過人為寫入的長 弧度去實現計算x y值的函式 struct rect結構體包含x y,可以建立乙個返回struct rect型別值的函式,來實現功能 通過傳入該函式的形參 struct polar型別的指標傳入...

計算機檔案共享

1 所有計算機連到同一wifi下。2 控制面板 網路和共享中心 選擇家庭組和共享選項 更改高階共享設定 這裡唯一要改的地方就是 密碼保護的共享 選擇 關閉密碼保護共享 儲存修改。3 控制面板 管理工具 計算機管理 本地使用者和組 guest 把 密碼永不過期 和 帳戶已禁用 這2項前面的勾去掉。4 ...

Vuex getters 共享狀態的計算屬性

state中存的資料並不是最終頁面中使用的資料,例如a頁面需要3個 b頁面需要全部。我們取資料的時候肯定希望取得時候就是需要的資料,而不是取到以後在進行處理資料拿到想要的,那麼getters就起到了重要的作用 可以處理一下原始的資料,把你想要的資料過濾出來 例如我再頁面中 去state 中資料的前三...