【ArcGIS】根據shp范圍生成系列等距點:范圍外等距點+漁網點(Python全代碼)

【ArcGIS】根據shp范圍生成系列等距點

  • 目標1:生成邊界外一定范圍、并且等間距分布的點
    • 📁 所需數據:
    • 操作步驟-ArcGIS
    • 代碼處理-Python
  • 目標2:生成等距漁網點
    • 📁 所需數據:
    • 代碼處理-Python
  • 參考

目標1:生成邊界外一定范圍、并且等間距分布的點

目標:生成位于 某地區邊界外一定范圍、并且等間距分布的點圖層。
在這里插入圖片描述

📁 所需數據:

研究區邊界 .shp 文件(Polygon 類型)

操作步驟-ArcGIS

ArcGIS 中最簡單的方式是:

  1. 對邊界生成緩沖區(一定距離)
    例如 50 km
  2. 將邊界 + 緩沖區邊界都轉為線(Polyline)
  3. 在緩沖區邊界線(外圈)上以等間距生成點

代碼處理-Python

以重慶市為例,生成的外部等距點如下:
在這里插入圖片描述

Python完整代碼如下:

import arcpy
import os# 輸入路徑(替換為你的路徑)
input_shp = r"D:\0 DataBase\0 Chongqin Database\1 Boundary\Chongqing.shp"
workspace = r"D:\0 DataBase\0 Chongqin Database\1 Boundary\temp_boundary_points"
csv_output = r"D:\0 DataBase\0 Chongqin Database\1 Boundary\Boundary_Chongqing.csv"# 設置環境
arcpy.env.overwriteOutput = True
if not os.path.exists(workspace):os.makedirs(workspace)
arcpy.env.workspace = workspace# 坐標系
prj = arcpy.SpatialReference(4548)   # CGCS2000 / UTM Zone 48N
wgs84 = arcpy.SpatialReference(4326) # WGS84 經緯度try:# 1. 投影為米制projected = os.path.join(workspace, "Chongqing_projected.shp")arcpy.Project_management(input_shp, projected, prj)# 2. 創建緩沖區(50公里)buffer = os.path.join(workspace, "Chongqing_buffer.shp")arcpy.Buffer_analysis(projected, buffer, "50000 Meters", dissolve_option="ALL")# 3. 緩沖區轉為邊界線buffer_line = os.path.join(workspace, "buffer_line.shp")arcpy.PolygonToLine_management(buffer, buffer_line)# 4. 沿線生成等間距點(20km 間距)points_on_line = os.path.join(workspace, "control_points.shp")arcpy.GeneratePointsAlongLines_management(buffer_line,points_on_line,"DISTANCE","20000 Meters","","NO_END_POINTS")# 5. 投影為 WGS84points_wgs84 = os.path.join(workspace, "control_points_wgs84.shp")arcpy.Project_management(points_on_line, points_wgs84, wgs84)# 6. 添加幾何屬性(使用合法值 POINT_X_Y_Z_M)arcpy.AddGeometryAttributes_management(points_wgs84,"POINT_X_Y_Z_M")# 7. 導出為 CSVarcpy.TableToTable_conversion(points_wgs84,os.path.dirname(csv_output),os.path.basename(csv_output))print("? 成功生成控制點 CSV 文件:Boundary_Chongqing.csv")except Exception as e:print("? 腳本運行出錯:", str(e))

目標2:生成等距漁網點

生成shp邊界范圍內的等距漁網點,如下:
在這里插入圖片描述

📁 所需數據:

研究區邊界 .shp 文件(Polygon 類型)

代碼處理-Python

以重慶市為例,生成的漁網如下:(僅保留邊界內數據)
在這里插入圖片描述

Python完整代碼如下:

import geopandas as gpd
from shapely.geometry import Point
import pandas as pd
import numpy as np
import osdef generate_grid_points(shp_path=None,output_csv="pop_location_d01.csv",spacing=0.1,filter_by_shp=True
):"""生成等距網格點,支持基于Shapefile篩選或僅參考其范圍生成。參數:shp_path (str): SHP文件路徑(若 filter_by_shp=True 時必須提供)output_csv (str): 輸出CSV文件名spacing (float): 網格間隔(單位:度)filter_by_shp (bool): 是否根據SHP邊界篩選點返回:pd.DataFrame: 包含經緯度的DataFrame"""# 檢查shp文件路徑(無論 filter_by_shp 為True或False,都需要范圍)if shp_path is None or not os.path.exists(shp_path):raise ValueError("必須提供有效的 shp_path。")# 讀取邊界gdf_boundary = gpd.read_file(shp_path)gdf_boundary = gdf_boundary.to_crs(epsg=4326)minx, miny, maxx, maxy = gdf_boundary.total_bounds# 向外擴展到最接近的整數minX = np.floor(minx)maxXX = np.ceil(maxx)minY = np.floor(miny)maxY = np.ceil(maxy)# 生成經緯度序列lon_vals = np.arange(minx, maxx + spacing, spacing)lat_vals = np.arange(miny, maxy + spacing, spacing)# 創建所有網格點grid_points = [Point(lon, lat) for lon in lon_vals for lat in lat_vals]gdf_points = gpd.GeoDataFrame(geometry=grid_points, crs="EPSG:4326")# 如果需要進行邊界篩選if filter_by_shp:gdf_points = gdf_points[gdf_points.within(gdf_boundary.unary_union)]# 提取經緯度gdf_points["lon"] = gdf_points.geometry.xgdf_points["lat"] = gdf_points.geometry.y# 保存為CSVgdf_points[["lon", "lat"]].to_csv(output_csv, index=False, encoding="utf-8")print(f"? 成功生成 {len(gdf_points)} 個網格點,已保存到:{output_csv}")return gdf_points[["lon", "lat"]]# 示例調用
generate_grid_points(shp_path=r"D:\0 DataBase\0 Chongqin Database\1 Boundary\Chongqing.shp",output_csv="pop_location_d01_CQ.csv",spacing=0.1,filter_by_shp=False  # 不進行空間篩選,但以shp邊界范圍擴展生成
)

參考

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

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

相關文章

Docker 環境安裝(2025最新版)

Docker在主流的操作系統和云平臺上都可以使用,包括Linux操作 系統(如Ubuntu、 Debian、Rocky、Redhat等)、MacOS操作系統和 Windows操作系統,以及AWS等云平 臺。 Docker官網: https://docs.docker.com/ 配置宿主機網…

Java并發編程-線程池(二)

文章目錄 線程池的實現原理execute(Runnable command)**1. 階段一:嘗試創建核心線程****2. 階段二:嘗試將任務加入隊列****3. 階段三:嘗試創建非核心線程或拒絕任務****關鍵機制與設計思想** 線程池的實現原理 當向線程池提交一個任務之后&a…

清華大學開源軟件鏡像站地址

清華大學開源軟件鏡像站: https://mirrors.tuna.tsinghua.edu.cn/

腦機接口技術:開啟人類與機器融合的新時代

摘要 腦機接口(BCI)技術作為一項前沿科技,正在逐步打破人類與機器之間的溝通障礙,為醫療、娛樂、教育等多個領域帶來前所未有的變革。本文將詳細介紹腦機接口技術的基本原理、發展現狀、應用場景以及面臨的挑戰和未來發展趨勢&…

2025前端面試遇到的問題(vue+uniapp+js+css)

Vue相關面試題 vue2和vue3的區別 一、核心架構差異 特性Vue2Vue3響應式系統基于Object.defineProperty基于Proxy(支持動態新增/刪除屬性)代碼組織方式Options API(data/methods分塊)Composition API(邏輯按功能聚合&am…

Matlab基于SSA-MVMD麻雀算法優化多元變分模態分解

Matlab基于SSA-MVMD麻雀算法優化多元變分模態分解 目錄 Matlab基于SSA-MVMD麻雀算法優化多元變分模態分解效果一覽基本介紹程序設計參考資料效果一覽 基本介紹 Matlab基于SSA-MVMD麻雀算法優化多元變分模態分解 可直接運行 分解效果好 適合作為創新點(Matlab完整源碼和數據),…

Gatsby知識框架

一、Gatsby 基礎概念 1. 核心特性 基于React的靜態站點生成器:使用React構建,輸出靜態HTML/CSS/JS GraphQL數據層:統一的數據查詢接口 豐富的插件系統:超過2000個官方和社區插件 高性能優化:自動代碼分割、預加載、…

【論信息系統項目的資源管理】

論信息系統項目的資源管理 前言一、規劃好資源管理,為保證項目完成做好人員規劃二、估算活動資源,為制訂項目進度計劃提供資源需求三、獲取項目資源,組建一個完備的項目團隊四、建設項目團隊,提高工作能力,促進團隊成員…

idea Maven 打包SpringBoot可執行的jar包

背景&#xff1a;當我們需要坐聯調測試的時候&#xff0c;需要對接前端同事&#xff0c;則需要打包成jar包直接運行啟動服務 需要將項目中的pom文件增加如下代碼配置&#xff1a; <build><plugins><plugin><groupId>org.springframework.boot</gr…

VScode 的插件本地更改后怎么生效

首先 vscode 的插件安裝地址為 C:\Users\%USERNAME%\.vscode\extensions 找到你的插件包進行更改 想要打印日志&#xff0c;用下面方法 vscode.window.showErrorMessage(console.log "${name}" exists.); 打印結果 找到插件&#xff0c;點擊卸載 然后點擊重新啟動 …

Python訓練營打卡——DAY24(2025.5.13)

目錄 一、元組 1. 通俗解釋 2. 元組的特點 3. 元組的創建 4. 元組的常見用法 二、可迭代對象 1. 定義 2. 示例 3. 通俗解釋 三、OS 模塊 1. 通俗解釋 2. 目錄樹 四、作業 1. 準備工作 2. 實戰代碼示例? 3. 重要概念解析 一、元組 是什么??&#xff1a;一種…

初入OpenCV

OpenCV簡介 OpenCV是一個開源的跨平臺計算機視覺庫&#xff0c;它實現了圖像處理和計算機視覺方面的很多通用算法。 應用場景&#xff1a; 目標識別&#xff1a;人臉、車輛、車牌、動物&#xff1b; 自動駕駛&#xff1b;醫學影像分析&#xff1b; 視頻內容理解分析&#xff…

訊聯云庫項目開發日志(一)

1、設計數據庫 2、寫基本框架 entity、controller、service、exception、utils、mapper mapper層&#xff1a; 生成了一系列的CRUD方法 工具類&#xff1a;線程安全的日期工具類、 ??參數校驗工具類? 線程安全的日期工具類??&#xff1a;主要用于 ??日期格式化&…

langchain學習

無門檻免費申請OpenAI ChatGPT API搭建自己的ChatGPT聊天工具 https://nuowa.net/872 基本概念 LangChain 能解決大模型的兩個痛點&#xff0c;包括模型接口復雜、輸入長度受限離不開自己精心設計的模塊。根據LangChain 的最新文檔&#xff0c;目前在 LangChain 中一共有六大…

Protobuf工具

#region 知識點一 什么是 Protobuf //Protobuf 全稱是 protocol - buffers&#xff08;協議緩沖區&#xff09; // 是谷歌提供給開發者的一個開源的協議生成工具 // 它的主要工作原理和我們之前做的自定義協議工具類似 // 只不過它更加的完善&…

zst-2001 上午題-歷年真題 軟件工程(38個內容)

CMM 軟件工程 - 第1題 b 軟件工程 - 第2題 c 軟件工程 - 第3題 c 軟件工程 - 第4題 b 軟件工程 - 第5題 b CMMI 軟件工程 - 第6題 0.未完成&#xff1a;未執行未得到目標。1.已執行&#xff1a;輸入-輸出實現支持2.已管理&#xff1a;過程制度化&#x…

軟考架構師考試-UML圖總結

考點 選擇題 2-4分 案例分析0~1題和面向對象結合考察&#xff0c;前幾年固定一題。近3次考試沒有出現。但還是有可能考。 UML圖概述 1.用例圖&#xff1a;描述系統功能需求和用戶&#xff08;參與者&#xff09;與系統之間的交互關系&#xff0c;聚焦于“做什么”。 2.類圖&…

數據結構(七)——圖

一、圖的定義與基本術語 1.圖的定義 圖G由頂點集V和邊集E組成&#xff0c;記為G(V,E)&#xff0c;其中V(G)表示圖G中頂點的有限非空集&#xff1b;E(G)表示圖G中頂點之間的關系&#xff08;邊&#xff09;的集合 注意&#xff1a;線性表可以是空表&#xff0c;樹可以是空樹&…

Android7 Input(六)InputChannel

概述: 本文講述Android Input輸入框架中 InputChannel的功能。從前面的講述&#xff0c;我們知道input系統服務最終將輸入事件寫入了InputChannel&#xff0c;而input屬于system_server進程&#xff0c;App屬于另外一個進程&#xff0c;當Input系統服務想要把事件傳遞給App進行…

【 Redis | 實戰篇 秒殺實現 】

目錄 前言&#xff1a; 1.全局ID生成器 2.秒殺優惠券 2.1.秒殺優惠券的基本實現 2.2.超賣問題 2.3.解決超賣問題的方案 2.4.基于樂觀鎖來解決超賣問題 3.秒殺一人一單 3.1.秒殺一人一單的基本實現 3.2.單機模式下的線程安全問題 3.3.集群模式下的線程安全問題 前言&…