【PythonGIS】Python線矢量等距離取點/線等分取點點創建矢量面

????????不多說,這是之前項目需求的代碼,已經是去年的了一直沒來的及發,今天抽出來一丟丟的空擋發一下。主要就是利用線矢量等距離生成點矢量,或者直接將線矢量等分生成點矢量,這個需求其實極限一下就是線轉點了(將距離設置小一點)。順便將點生成矩形面的代碼也給出來,這里的矩形就直接中心點往外擴的固定距離,可以按自己的需求修改。

1.線等分取點代碼

? ? ? ? 這里注意一下,我是提前知道的了線段的長度,所以可以直接用num_points = int(length/150) + 1 取到我希望的間距,這個代碼是用來等分線段的,但是你計算好后也可以實現等距離!

# -*- coding: utf-8 -*-
"""
@Time : 2024/11/22 17:10
@Auth : RS迷途小書童
@File :Vector Line Select Points.py
@IDE :PyCharm
@Purpose:線矢量數據等距離取點/線等分取點,另加入點創建矢量面代碼
@Web:博客地址:https://blog.csdn.net/m0_56729804
"""
import numpy as np
import geopandas as gpd
from shapely import geometry
from shapely.geometry import Point, LineString, Polygondef create_point(folder_path):  # 線矢量等距離取點""":param folder_path: 輸入需要等分的矢量線文件:return: None"""# shp_files = [f for f in os.listdir(folder_path) if f.endswith('.shp')]# os.mkdir(r"Dom_clip/%s" % files[:2])gdf = gpd.read_file(folder_path)  # 讀取shp文件lines = gdf[gdf.geometry.type == 'LineString']  # 選擇線要素line = LineString(lines.geometry.values[0].coords)  # 提取線的坐標并轉換為LineString對象length = line.length  # 計算線的長度print("當前線矢量長度為:", length)num_points = int(length/150) + 1  # 設定你想要等分的點數distances = np.linspace(0, length, num_points)points = line.interpolate(distances)  # 計算等距點的坐標for point in points:  # 打印點的坐標print(point.x, point.y)number = 1  # 創建面的編號create_shp(point.x, point.y, number)  # 調用創建面的函數number += 1  # 創建面的編號

2.點創建面矩形代碼

? ? ? ? 我這里直接是從上一步獲得的中心點上下左右同時外擴獲取的,你們可以按照需求來。

# -*- coding: utf-8 -*-
"""
@Time : 2024/11/22 17:10
@Auth : RS迷途小書童
@File :Vector Line Select Points.py
@IDE :PyCharm
@Purpose:線矢量數據等距離取點/線等分取點,另加入點創建矢量面代碼
@Web:博客地址:https://blog.csdn.net/m0_56729804
"""
import numpy as np
import geopandas as gpd
from shapely import geometry
from shapely.geometry import Point, LineString, Polygondef create_shp(x, y, number1):  # 創建面shp""":param x: 輸入面矢量中心點x:param y: 輸入面矢量中心點y:param number1: 保存新矢量的編號:return: None"""distance = 78  # 矩形的大小shp = gpd.GeoSeries([geometry.Polygon([(x - distance, y + distance), (x + distance, y + distance),(x + distance, y - distance), (x - distance, y - distance)])],crs='EPSG:32651')  # 指定坐標系為WGS84/UTM 51N# 左上、右上、左下、右下   32651右&上為正shp.to_file(r'彭俊喜/%s.shp' % number1, driver='ESRI Shapefile', encoding='utf-8')# 導出數據為shapefile文件

3.總結

? ? ? ? 上面兩個程序是可以組合到一起的,實現線等距離取點,用點生成矩形。只要懂點代碼知識稍微改改即可。我會不定期地在博客上分享一些自己在進行RS、GIS工作時使用到的代碼以及學習經驗。如果大家感興趣可以點個關注,有什么問題可以評論或者私信!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/697765.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/697765.shtml
英文地址,請注明出處:http://en.pswp.cn/news/697765.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Java中各種O(PO,BO,DTO,VO等) 是不是人為增加系統復雜度?

Java中各種O(PO,BO,DTO,VO等) 是不是人為增加系統復雜度? 在Java和其他編程語言的開發過程中,經常會用到幾個以"O"結尾的縮寫,比如PO,BO,DTO,VO等等,O在這里是Object的縮寫,不同的O代表了不同的數據類型&am…

onlyoffice7.5.1 實現填寫表單 word+html form雙向綁定功能

說明:目前官方已經更新wordhtml為8.0以前的,目前官方新版本8.0增加了pdf綁定,這個我考慮在以后研究努力實現。 onlyoffice雙向綁定form表單數據

Java基礎 - 13 Queue之DelayQueue、PriorityQueue、PriorityBlockingQueue講解

在Java的隊列世界里,有三位大佬,他們分別是DelayQueue、PriorityQueue和PriorityBlockingQueue。今天,讓我們一起揭開他們神秘的面紗,看看他們各自的特點和用途吧! DelayQueue 首先,讓我們來認識一下Delay…

2.22 作業

順序表 運行結果 fun.c #include "fun.h" seq_p create_seq_list() {seq_p L (seq_p)malloc(sizeof(seq_list));if(LNULL){printf("空間申請失敗\n");return NULL;}L->len 0; bzero(L,sizeof(L->data)); return L; } int seq_empty(seq_p L) {i…

工廠方法模式Factory Method

1.模式定義 定義一個用于創建對象的接口,讓子類決定實例化哪一個類。Factory Method 使得一個類的實例化延遲到子類 2.使用場景 1.當你不知道改使用對象的確切類型的時候 2.當你希望為庫或框架提供擴展其內部組件的方法時 主要優點: 1.將具體產品和創建…

PHP+vue+mysql倉庫進銷存管理系統8jeqj

開發語言:php 后端框架:Thinkphp 前端框架:vue.js 服務器:apache 數據庫:mysql 運行環境:phpstudy/wamp/xammp等 數據庫工具:Navicat/phpmyadmin 登錄模塊:此模塊主要有4個部分,基…

實驗中用戶行為的檢測

[1] Makris S , Karagiannis P , Koukas S ,et al.Augmented reality system for operator support in human–robot collaborative assembly[J].CIRP Annals - Manufacturing Technology, 2016:S0007850616300385.DOI:10.1016/j.cirp.2016.04.038. —————————————…

gem5學習(24):緩存一致性協議——Cache Coherence Protocols

目錄 一、Common Notations and Data Structures 1、Coherence Messages 2、Access Permissions 3、Data Structures 二、Coherence controller FSM Diagrams 官網教程:gem5: Cache Coherence Protocols 一、Common Notations and Data Structures &#xff…

什么是SSD型云服務器?

?  SSD云服務器是一種使用固態硬盤代替傳統HDD進行存儲的虛擬機。SDD 使用閃存單元來存儲數據,與云計算技術相結合,形成強大且高效的存儲解決方案,可以隨時隨地訪問。 SSD云服務器如何工作? SSD云服務器是利用虛擬化和云計算技術創建的。…

C++最佳實踐之編譯篇

C最佳實踐之工程編譯 在大型c/c工程開發中,往往會涉及多級CMakeLists.txt的調用,并且調用方式錯綜復雜,主要有以下兩種方式: 1. 子目錄中的CMakeList.txt獨立生成目標,不作為主目標生成過程的依賴關系(比…

virtualenv env_name 使用 virtualenv 創建 python 虛擬環境

為什么要用這個 win7 32 環境下 pycharm 只能用低版本的,比如 2016,2018 此時pycharm 圖形界面創建的 虛擬環境版本很低,有些包不兼容,因此用 virtualenv 模塊,可以創建 20 版本以上的虛擬環境 virtualenv env_name官方文檔 http…

如何選擇最適合的圖紙加密軟件?安秉網盾軟件用戶體驗及性價比

安秉網盾圖紙加密軟件是一款功能強大的圖紙加密工具,具有以下特點和優勢: 全盤加密:安秉網盾采用先進的加密算法,能對文件、文件夾、磁盤等數據進行全面加密,確保數據在存儲和傳輸過程中的安全性。 監控與審計&#x…

Swift基礎知識:26.Swift類型轉換

在 Swift 中,類型轉換是指將一種類型的實例轉換為另一種類型的操作。Swift 提供了三種類型轉換操作:as?、as! 和 is。 as? 和 as! as?:可選類型轉換。如果轉換成功,返回一個可選類型,值為轉換后的類型&#xff1b…

編程筆記 Golang基礎 024 映射

編程筆記 Golang基礎 024 映射 一、映射二、映射的定義與初始化三、基本操作四、綜合示例程序 Go語言中的映射(map)是一種關聯數組或哈希表數據結構,它存儲鍵值對,其中每個鍵都是唯一的。在Go中,你可以使用 map[keyTy…

關于el-select值的回顯問題 : 框內顯示label值還是value值

<el-form-item label"狀態" prop""><el-selectv-model"roleForm.state"class"m-2"size"large"style"width: 240px"placeholder"請選擇狀態"value-key"value"//value-key 與下面的ke…

How to implement multiple file uploads based on Swagger 3.x in Spring boot 3.x

How to implement multiple file uploads based on Swagger 3.x in Spring boot 3.x Projectpom.xmlOpenAPIConfigFileUploadControllerapplication.yaml Project pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://…

軟件壓力測試:測試方法與步驟詳解

隨著軟件應用的不斷發展&#xff0c;用戶對系統性能的要求也逐漸提高。在不同的負載條件下&#xff0c;系統必須能夠保持穩定、高效的運行。軟件壓力測試是一種驗證系統在各種負載情況下性能表現的關鍵手段。本文將詳細探討軟件壓力測試的方法和步驟。 1. 明確測試目標 在進行壓…

vue源碼分析之nextTick源碼分析-逐行逐析-錯誤分析

nextTick的使用背景 在vue項目中&#xff0c;經常會使用到nextTick這個api&#xff0c;一直在猜想其是怎么實現的&#xff0c;今天有幸研讀了下&#xff0c;雖然源碼又些許問題&#xff0c;但仍值得借鑒 核心源碼解析 判斷當前環境使用最合適的API并保存函數 promise 判斷…

2024年2月17日~2月23日周報

文章目錄 一、前言二、DDNet架構學習2.1 數據預處理2.2 網絡模型構建 三、基于深度學習地震數據去噪處理3.1 深度學習在地震數據去噪中的研究方向3.2 深度學習地震數據去噪流程3.2.1 數據集準備3.2.2 模型構建3.2.3 訓練網絡 3.3 基于DnCNN的地震數據去噪實驗 四、小結4.1 存在…

xxl_job系列---【GLUE(shell)模式如何傳多個參數,并被shell接收】

1.場景 我需要傳入多個參數&#xff0c;在執行任務時傳入的任務參數用逗號隔開&#xff0c;到shell中都被$1當做字符串接收到了&#xff0c;沒辦法&#xff0c;只能在shell中截取字符串&#xff0c;截成多個參數。 2.編輯入參 CRON:0 0 0 1 * ? #每月1號0點執行 點擊“任務管理…