【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.mzph.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.集群模式下的线程安全问题 前言&…