【PythonGIS】基于Geopandas和Shapely计算矢量面最短路径

news/2024/10/6 1:52:42/文章来源:https://www.cnblogs.com/RSran/p/18281161

        在GIS进行空间分析时经常会需要计算最短路径,我也是最近在计算DPC的时候有这方面的需求,刚开始直接是用面的中心点求得距离,但其对不规则或空洞面很不友好。所以今天跟大家分享一下基于Geopandas和Shapely计算矢量面最短路径,这里的最短即点/边的最短!

原创作者:RS迷途小书童

博客地址:https://blog.csdn.net/m0_56729804?type=blog

# -*- coding: utf-8 -*-
"""
@Time : 2024/7/3 9:52
@Auth : RS迷途小书童
@File :Vectors Data Short Distance.py
@IDE :PyCharm
@Purpose:检查两个要素的最短路径
@Web:博客地址:https://blog.csdn.net/m0_56729804
"""
from shapely.geometry import Polygon
from shapely.ops import nearest_points
import matplotlib.pyplot as plt
import geopandas as gpddef check_short_distance_between_vector(shp_path=r"Y:\1.shp"):""":param shp_path: 输入面矢量文件,默认计算前两个要素的最短路径:return: 最近点1,最近点2,最短路径"""gdf = gpd.read_file(shp_path)list_geometry = []for index, row in gdf.iterrows():  # 循环矢量属性表geometry = row['geometry']list_geometry.append(geometry)# polygon1 = Polygon([(0, 0), (1, 0), (1, 1), (0, 1)])# polygon2 = Polygon([(2, 2), (3, 2), (3, 3), (2, 3)])polygon1, polygon2 = list_geometry[0], list_geometry[1]point1, point2 = nearest_points(polygon1, polygon2)  # 使用 nearest_points 函数找到两个多边形之间的最近点distance = point1.distance(point2)  # 计算两点之间的距离print(f"The shortest path between the two polygons is {distance} units.")print(f"The points are {point1} and {point2}.")fig, ax = plt.subplots()  # 可视化两个多边形和最短路径x1, y1 = polygon1.exterior.xyx2, y2 = polygon2.exterior.xyax.plot(x1, y1, color='blue', label='Polygon 1')  # 绘制多边形ax.plot(x2, y2, color='green', label='Polygon 2')ax.plot([point1.x, point2.x], [point1.y, point2.y], color='red', linestyle='--', label='Shortest Path')  # 绘制最短路径ax.scatter([point1.x, point2.x], [point1.y, point2.y], color='red')ax.legend()plt.xlabel('X')plt.ylabel('Y')plt.title('Shortest Path between Two Polygons')plt.grid(True)plt.show()return point1, point2, distanceif __name__ == "__main__":check_short_distance_between_vector()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/736729.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ls 设置颜色

1 查看别名对应的真实命令 2 设置颜色 格式: alias 别名=命令 示例 3 取消颜色 示例

主键Id自增,如何获取Id(Dapper)

这里用的是Dapper,以前用EF的时候好像有用到过db.savechanges(). 但是项目中没有这个,所以用以下的方法去获取id 背景:涉及到多表入库,需要获取主表的Id,所以用到了这个(timeFields 可以忽略)/// <summary>/// 单个添加/// </summary>/// <typeparam name…

JDK、Tomcat、Maven配置

一、JDK安装及配置 1.下载地址:https://www.oracle.com/java/technologies/downloads/2.下载后直接本地安装,选择路径默认即可,类似如下路径:C:/Program Files/Java/jdk_1.8.0_301 3. 配置环境变量路径:程序->计算机->右键->属性->高级系统设置->高级->…

VSCode + Qt + QMake 开发编译环境搭建

鉴于Qt官方IDE太过难用,VSCode+各种插件功能强大,遂采用VSCode来写Qt项目; 本博客在 Windows 平台进行指导操作,Mac、Linux 平台配置方式类似,学习其本质就可。前置准备VSCode,最新版本即可 本地 Qt 环境,版本随意,本文主要针对较老版本使用Qmake构建系统的项目环境变…

eclipse设置的Alt+/出现卡顿问题解决。

eclipse的设置中快捷键【Alt+/】只留下这个。可能会有Alt+Ctrl+/什么的,都改成别的。否则会出现冲突卡顿。

面试官:JVM调优,主要针对是哪一个区域?JVM内存结构是怎样的?

作为一个Java程序员,在日常的开发中,不必像C/C++程序员那样,为每一个内存的分配而操心,JVM会替我们进行自动的内存分配和回收,方便我们开发。但是一旦发生内存泄漏或者内存溢出,如果对Java内存结构不清楚,那将会是一件非常麻烦的事情!本文笔者将为大家详解Java内存结构…

Jenv和JDK安装与配置指南

介绍如何在Windows系统上安装和配置Jenv和JDK。步骤包括从GitHub下载并解压Jenv,配置环境变量;从Oracle官网下载安装JDK,设置系统环境变量。使用Jenv命令管理JDK版本,包括添加、列出、切换、设置全局或局部版本及删除版本。提供Jenv常用命令和帮助信息供参考。一、Jenv安装…

Springboot整合Apollo

一、Apollo作用 随着程序功能的日益复杂,程序的配置日益增多:各种功能的开关、参数的配置、服务器的地址…… 对程序配置的期望值也越来越高:配置修改后实时生效,灰度发布,分环境、分集群管理配置,完善的权限、审核机制…… 在这样的大环境下,传统的通过配置文件、数据库…

7月3日龙城新闻快报

龙城街道共有花园小区137个,为全市各街道最多,其中老旧小区37个,老旧小区居民约1.3万户近6万人。自市、区工作部署以来,聚焦37个老旧小区居民“出行难”问题,龙城街道组织“加梯服务队”以“加强精细治理、提升品质生活、感受城市温度”为目标,开启加装电梯工作“加速度”…