ESDA in PySal (4):shape-measures:形状测量

news2025/7/7 19:10:13

ESDA in PySal (4):shape-measures:形状测量

1.Measures of shape

esda.shape 模块提供文献中使用的统计数据来测量多边形的结构和规则性。 这些测量值从非常简单(例如长宽差)到非常复杂(例如归一化转动惯量)不等。 无论如何,我们将逐步计算密西西比州各县的一些度量值。

为什么是密西西比州? 因为密西西比州西侧的县与密西西比河相连,河道蜿蜒曲折。 一般来说,我们会认为该州左侧的县比右侧面积更大的县更“不规则”。 您可以在下面的地图中看到这一点:

import geopandas, libpysal
from esda import shape as shapestats
import matplotlib.pyplot as plt
import pygeos

import warnings
warnings.filterwarnings("ignore")
counties = geopandas.read_file(libpysal.examples.get_path("south.shp"))
ms_counties = counties.query("STATE_NAME == 'Mississippi'")
ms_counties.plot()
plt.title("Mississippi Counties")
Text(0.5, 1.0, 'Mississippi Counties')

在这里插入图片描述

第一个非常简单的测量是形状的长度和宽度之间的差异。 该测量是伸长率的测量。 您可以看到下面的效果,其中相对正方形的县被涂成深蓝色,而拉长的矩形县则被涂成浅黄色。 由于该措施没有“看到”河流的曲折,因此河流县被判断为相对方形且不拉长。

ms_counties.plot(shapestats.length_width_diff(ms_counties.geometry))
plt.title("length-width difference")
Text(0.5, 1.0, 'length-width difference')

在这里插入图片描述

2.Ideal Shape Measures

下一类形状测量通常被视为“理想形状”紧凑度测量。 这意味着它们构建多边形的一个(或多个)方面(例如其周长或面积)之间的关系,并将其与“理想”形状的类似值进行比较。

理想的形状有几种口味。
-“相对理想形状”是其属性相对于原始形状是固定的形状。 例如,“isoperimetric_quotient”将多边形的面积与与原始多边形周长相同的圆的面积进行比较。 从数学上讲,这些度量通常被构建为使得它们在零和一之间变化,并且当形状与其相对理想形状相同时为一。 该系列中的度量包括“isoperimetric_quotient”和“isoareal_quotient”,以及我们对“fractal_dimension”的实现,稍后将讨论。
-“绝对理想形状”是与原始形状具有某种固定的已知关系的形状,并以某种方式充当该形状的“界限”。 例如,“凸包比率”将多边形的面积与其凸包的面积进行比较。 由于保证凸包至少与原始形状一样大,因此该度量也介于零和一之间,其中 1 意味着多边形是其自己的凸包。 该系列中的度量包括“boundary_amplitude”、“convex_hull_ratio”、“radii_ratio”、“diameter_ratio”和“minimum_bounding_circle_ratio”。

2.1 Absolute Ideal Shape Measures

“boundary_amplitude”和“convex_hull_ratio”是两个简单且密切相关的形状规律性度量。 边界振幅是凸包的周长除以原始形状的周长。 它在零和一之间变化,其中一表示多边形是其自己的凸包的情况。 这是因为凸包总是至多原始形状的周长; 当形状有许多凹入形状的凹部时,它会比原始形状短。

在下面的地图中,您可以看到密西西比河沿岸的县的“boundary_amplitude”分数非常差,因为它们的边界非常不稳定:

ms_counties.plot(shapestats.boundary_amplitude(ms_counties.geometry))
plt.title("boundary amplitude")
Text(0.5, 1.0, 'boundary amplitude')

在这里插入图片描述

相关地,凸包比率是原始形状的面积除以凸包面积。 这又在零和一之间变化:由于凸包总是“包含”原始形状,因此它的面积总是更大。 因此,该度量与“boundary_amplitude”相关,但对于不同的多边形来说会有所不同,因为它属于面积,而不是周长。 一般来说,基于周长的度量比基于面积的度量对非凸性更敏感。

ms_counties.plot(shapestats.convex_hull_ratio(ms_counties.geometry))
plt.title("convex hull areal ratio")
Text(0.5, 1.0, 'convex hull areal ratio')

在这里插入图片描述

另一个有用的衡量标准是“最小边界圆比”,有时被称为 Reock 衡量标准,以第一篇期刊文章的作者的名字命名,该文章用于分析国会选区。 该比率将原始形状的面积与可以完全包围该形状的最小圆的面积进行比较。 该措施严重损害了伸长率,因为最小边界圆必须变得越来越大才能包含形状。 它也在零和一之间变化,其中一反映多边形是其自身边界圆的情况。

ms_counties.plot(shapestats.minimum_bounding_circle_ratio(ms_counties))
plt.title("minimum bounding circle ratio")
Text(0.5, 1.0, 'minimum bounding circle ratio')

在这里插入图片描述

一个相关的度量是“radii_ratio”。 “radii_ratio”实际上将参考形状和理想形状概念混合在一起,而不是比较两个形状的面积。 它将最小边界圆的半径与等面积圆(或包含与原始形状相同面积的圆)的半径联系起来。

ms_counties.plot(shapestats.radii_ratio(ms_counties.geometry))
plt.title("radii ratio")
Text(0.5, 1.0, 'radii ratio')

在这里插入图片描述

此测量的效果通常与“最小边界圆比”大致相同,但对形状中的凹面更加敏感。

plt.scatter(shapestats.radii_ratio(ms_counties.geometry), 
            shapestats.minimum_bounding_circle_ratio(ms_counties.geometry))
plt.plot((0,1),(0,1), color='k', linestyle=':')
plt.xlim(.2, .9)
plt.ylim(.2, .9)
plt.xlabel("Radii Ratio")
plt.ylabel("Minimum Bounding Circle Ratio")
Text(0, 0.5, 'Minimum Bounding Circle Ratio')

在这里插入图片描述

与最小边界圆比类似的度量是直径比。 这测量了形状的“最长”和“最短”直径之间的比率。 这可以测量为形状的最小旋转矩形的最长和最短轴。 或者,可以使用形状的原始边界框,但这偏向于东西向和南北向的形状。 这又是一个相当强的伸长率衡量标准,最长轴和最短轴之间差异很大的形状得分较低。

ms_counties.plot(shapestats.diameter_ratio(ms_counties.geometry))
<Axes: >

在这里插入图片描述

2.2 Relative ideal shape measures

这些类型的形状测量构建了观察到的形状和具有某种已知关系的不同形状之间的关系。 正如我们之前讨论的“radii_ratio”度量,它通常看起来像一个与源形状具有相同周长或面积的圆。

在“isoareal_quotient”的情况下,这将形状的周长与面积与源形状相同的圆的周长相关联:

ms_counties.plot(shapestats.isoareal_quotient(ms_counties))
<Axes: >

在这里插入图片描述

相关的度量“等周商”将形状的面积与与原始形状具有相同周长的圆的面积联系起来。

ms_counties.plot(shapestats.isoperimetric_quotient(ms_counties))
<Axes: >

在这里插入图片描述

这两项指标彼此直接相关,尽管是非线性的

plt.scatter(shapestats.isoareal_quotient(ms_counties), 
            shapestats.isoperimetric_quotient(ms_counties))
plt.plot((0,1),(0,1), color='k', linestyle=':')
plt.xlim(.2, .9)
plt.ylim(.2, .9)
plt.xlabel("Isoareal Quotient")
plt.ylabel("Isoperimetric Quotient")
Text(0, 0.5, 'Isoperimetric Quotient')

在这里插入图片描述

最后一个相关度量是形状的分形维数。 它测量形状边界的有效尺寸,通常在零和二之间变化,其中二表示非常复杂的边界,零表示非常简单的边界。 然而,我们的特定实现通过假设形状的边界沿着网格或六角形晶格移动来近似真实的分形维数。 因此,该度量实际上是正方形(或六边形)与现有形状之间的关系。

ms_counties.plot(shapestats.fractal_dimension(ms_counties, support='hex'))
<Axes: >

在这里插入图片描述

ms_counties.plot(shapestats.fractal_dimension(ms_counties, support='square'))
<Axes: >

在这里插入图片描述

两者也极其相关:

plt.scatter(shapestats.fractal_dimension(ms_counties, support='hex'), 
            shapestats.fractal_dimension(ms_counties, support='square'))
plt.plot((0,2),(0,2), color='k', linestyle=':')
plt.xlim(.4, 1.1)
plt.ylim(.4, 1.1)
plt.xlabel("Fractal Dimension (hex)")
plt.ylabel("Fractal Dimension (square)")
Text(0, 0.5, 'Fractal Dimension (square)')

在这里插入图片描述

3. Conclusion

“esda.shape”模块中还有更多形状测量值,可用于多种应用。 这里详细介绍的内容是有关重新分区的文献中最常见的内容,这并不是形状测量有用的特殊区域。 有关形状测量的更多信息,一篇很好的介绍性概念论文是 by Shlomo Angel et al. (2010)关于如何在地理中测量形状。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

以太网诊断协议DoIP(Ethernet Diagnostic Protocol DoIP)

系列文章目录 C技能系列 Linux通信架构系列 C高性能优化编程系列 深入理解软件架构设计系列 高级C并发线程编程 设计模式系列 期待你的关注哦&#xff01;&#xff01;&#xff01; 现在的一切都是为将来的梦想编织翅膀&#xff0c;让梦想在现实中展翅高飞。 Now everythi…

【4】c++11新特性(稳定性和兼容性)—>final关键字

c中增加了final关键字来限制某个类不能被继承&#xff0c;或者某个虚函数不能被重写。如果使用final修饰函数&#xff0c;只能修饰虚函数&#xff0c;并且放在类或者函数的后面。 修饰函数 #include <iostream> using namespace std;class Base { public:virtual void t…

在 Ubuntu 22.04安装配置 Ansible

一、按官网指引安装 我使用的ubuntu22.04版本&#xff0c;使用apt安装。官网指引如下&#xff1a; $ sudo apt-get install software-properties-common $ sudo apt-add-repository ppa:ansible/ansible $ sudo apt-get update $ sudo apt-get install ansible 由于内部网络…

《动手学深度学习 Pytorch版》 9.1 门控循环单元(GRU)

我们可能会遇到这样的情况&#xff1a; 早期观测值对预测所有未来观测值具有非常重要的意义。 考虑一个极端情况&#xff0c;其中第一个观测值包含一个校验和&#xff0c;目标是在序列的末尾辨别校验和是否正确。在这种情况下&#xff0c;第一个词元的影响至关重要。我们希望有…

《数理统计》第4章

文章目录 第4章4.4.1 协方差 第4章 4.4.1 协方差

项目平台——测试报告的实现(七)

这里写目录标题 一、Table表格组件的使用1、Table表格组件中的插槽使用 二、点击查看测试报告&#xff0c;跳转到测试报告详情页实现1、新建Report.vue组件2、配置路由3、查看报告按钮添加事件 三、页面布局1、Layout布局2、卡片设计3、打开页面发送请求加载报告数据4、对接口进…

如何优化前端可访问性(Accessibility)?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

如何修复-谷歌浏览器-打开任何一个网页都显示崩溃

早上上班&#xff0c;一如既往的使用谷歌浏览器时&#xff0c;发现异常。 首先是&#xff0c;右下角有个弹窗提示某某插件需要点击更新&#xff0c;然后点了也没用&#xff0c;然后就是打开任何网页都提示‘喔唷 崩溃了’的字眼。 奇怪呀&#xff0c;咱也是第一次碰见这种问题…

使用Proxyman抓取Android的https请求

使用Proxyman抓取Android的https请求 有时&#xff0c;您可能需要测试您的移动应用程序并检查与其关联的所有网络请求。在网络上&#xff0c;此任务非常简单&#xff0c;只需按Ctrl Shift I打开开发人员工具即可。从那里&#xff0c;您可以导航到网络选项卡并检查与网页相关的…

绝对有效,牛津《书虫》全系列完整版( 电子书+MP3 )

&#x1f600;前言 因为像看一下牛津《书虫》系类的&#xff08;PDF和音频&#xff09;找了许久不是链接过期就是要密码要会员太烦了所以在这里整理好打包给大家 在文章末尾 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是尘觉&#xff0c;希望我的文章可以帮助到大…

java打包解包总结

使用别人的jar包程序&#xff0c;需要修改其中的相关参数然后重新打包&#xff0c;在此记录一下打包和解包过程。 目录 1.解包操作 2.打包操作 1.解包操作 原始jar包文件 解包 jar xvf test.jar 或者 jar -xvf test.jar 2.打包操作 原始文件 打包&#xff1a; jar cvM0…

Aroid问题笔记 - ViewPager嵌套RecyclerView,降低ViewPager灵敏度

点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&…

强大的下载管理器:Progressive Downloader for Mac

Progressive Downloader for Mac是一种强大的下载管理器&#xff0c;它可以帮助用户更快速、更稳定地下载文件。相比于其他下载工具&#xff0c;PD下载管理器具有很多独特的功能和优势&#xff0c;本文将对其进行详细推广。 在数字化时代&#xff0c;下载已成为我们日常工作中必…

C语言实现已知 XYZ+YZZ=532,其中 X,Y 和 Z 为数字,求出 X,Y 和 Z 的值

完整代码&#xff1a; // 已知 XYZYZZ532,其中 X,Y 和 Z 为数字&#xff0c;编写程序求出 X,Y 和 Z 的值#include<stdio.h>int main(){for (int X 1; X < 10; X){for (int Y 1; Y < 10; Y){for (int Z 0; Z < 10; Z){if ((X*100Y*10ZY*100Z*10Z)532){printf…

技巧 | 如何解决 OBS 系统声音无法捕获问题 | Mac

技巧 | 如何解决 OBS 系统声音无法捕获问题 | Mac 问题描述 由于 macOS 系统限制&#xff0c;桌面音频被禁止&#xff0c;导致在使用 OBS 无法录制桌面音频&#xff0c;只能使用自带麦克风录制。 解决方法 Loopback 介绍 借助 Loopback 的强大功能&#xff0c;可以轻松地…

论坛介绍|COSCon'23 女性论坛(L)

众多开源爱好者翘首期盼的开源盛会&#xff1a;第八届中国开源年会&#xff08;COSCon23&#xff09;将于 10月28-29日在四川成都市高新区菁蓉汇举办。本次大会的主题是&#xff1a;“开源&#xff1a;川流不息、山海相映”&#xff01;各位新老朋友们&#xff0c;欢迎到成都&a…

3+肿瘤+预后模型+甲基化

今天给同学们分享一篇3肿瘤预后模型甲基化的生信文章“Genomic and immunogenomic analysis of three prognostic signature genes in LUAD”&#xff0c;这篇文章于2023年1月17日发表在BMC Bioinformatics 期刊上&#xff0c;影响因子为3。 寻找与免疫治疗相关的标记物是筛选适…

wordpress网站部署了ssl证书之后就排版混乱了

刚给自己的小网站部署了SSL证书&#xff0c;之后就发现https访问主页竟然乱套了。在手机上访问却是正常的。 直接上解决方案&#xff1a; 编辑网站根目录下的wp-config.php文件 在自定义文本处添加以下代码&#xff1a; if ($_SERVER[HTTP_X_FORWARDED_PROTO] https) $_SE…

柔性机器人控制的研究现状及关键技术

柔性机器人是一种新型的机器人&#xff0c;具有柔韧性、灵活性和适应性等特点。本文综述了柔性机器人控制的研究现状及关键技术&#xff0c;包括柔性机器人的应用领域、柔性机器人的机械结构、柔性机器人的控制算法等方面。最后&#xff0c;对未来柔性机器人控制的发展趋势进行…

AWD学习总结 (会持续更新)

防御 一、登录ssh服务器 所有人都要登上去。这里以我自己的服务器为例子。一般使用默认的ssh登录方式&#xff0c;我个人服务器ip是120.46.41.173使用工具是xshell与xftp。 点击新建连接。 输入ip。默认ssh端口22不用改就能连接。 然后点击侧边栏&#xff0c;输入账号密码登…