【GIS】GIS矢量空间分析(上)

2023-05-16

0、GIS的基本概念

栅格数据与矢量数据

image.png
上图中,a为图形模拟表示的地理对象,b为控件对象对应的栅格数据模型表示,c为对应的矢量数据模型表示。

矢量模型的表达源于原型空间实体本身,通常以坐标来定义。一个点的位置可以二维或者三维中的坐标的单一集合来描述。一条线通常由有序的两个或者多个坐标对集合来表示。特定坐标之间线的路径可以是一个线性函数或者一个较高次的数学函数,而线本身可以由中 间点的集合来确定。一个面通常由一个边界来定义,而边界是由形成一个封闭的环状的一条或多条线所组成。如果区域有个洞在其中,那么可以采用多个环以描述它。

基于栅格的空间模型把空间看作像元(Pixel)的划分,每个像元都与分类或者标识所包含的现象的一个记录有关。像元与“栅格”两者都是来自图像处理的内容,其中单个的图像可以通过扫描每个栅格产生。GIS 中栅格数据经常是来自人工和卫星遥感扫描设备中,以及用于数字化文件的设备中。采用栅格模型的信息系统,通常应用了前面所述 的分层的方法。在每个图层中栅格像元记录了特殊的现象的存在。每个像元的值表明了在已知类中现象的分类情况。

下图表示矢量数据结构
在这里插入图片描述
下图表示栅格数据模型
在这里插入图片描述
总的来说,栅格图是一个规则的阵列,包含着一定数量的像元或者栅格;而矢量图是由一组描述点、线、面,以及它们的色彩、位置的数据,通过软件算法计算得到的图形。
常用的栅格图格式有:tif,png,jpeg/jpg等,处理软件如PS;
常用的矢量图格式有:shp、eps、dwg、dxf等,处理软件如AutoCAD、AI等。
ArcGIS可以同时处理栅格数据与矢量数据,常用的栅格数据格式为tif,常用的矢量数据格式为shapefile、coverage、TIN等。

GIS中常用的矢量数据格式

shapefile

shapefile 是一种用于存储地理要素的几何位置和属性信息的非拓扑简单格式。shapefile 中的地理要素可通过点、线或面(区域)来表示。shapefile 格式在应存储在同一项目工作空间且使用特定文件扩展名的三个或更多文件中定义地理配准要素的几何和属性
image.png

coverage

Coverage 是一种用于存储矢量数据的地理相关数据模型,它包含地理要素的空间(位置)数据和属性(描述性)数据。Coverage 使用一组要素类来表示地理要素。每个要素类存储一组点、线(弧)、面或注记(文本)。Coverage 可以具有拓扑,用于确定要素间的关系。
Coverage文件包括两个文件夹,一个是info文件夹,一个是以文件名命名的文件夹(文件夹中重要文件包括AAT.DBF、BND.DBF、PAT.DBF、TIC.DBF、PRJ和ARC等。其中,ARC是用于定义地物空间位置和关系的拓扑数据结构;PRJ是投影文件;TIC是一个控制点文件;BND是一个边界文件;PAT是一个多边形属性或点属性表;AAT是一个弧段属性。)
image.png

geojson

geojson是一种基于json的地理空间数据交换格式,它定义了几种类型JSON对象以及它们组合在一起的方法,以表示有关地理要素、属性和它们的空间范围的数据。geojson是非常常见的地图服务前后端传输格式。
image.png

topojson

topojson是 geojson 按拓扑学编码后的扩展形式,对拓扑进行编码。相比 geojson 直接使用 polygon、point 之类的几何体来表示图形的方法,topojson 中的每一个几何体都是通过将共享边(被称为arcs)整合后组成的。
image.png

GIS中矢量数据的数据层级

image.png
GIS中矢量数据可以分为地图层、数据层、要素层、几何层及属性层。
image.png
image.png
对于ArcGIS,当我们打开一个包含矢量数据的MXD文件,会看到数据框及图层。数据框将显示以特定顺序绘制的一系列图层。每个图层都会引用存储在地理数据库、coverage、shapefile 和栅格等中的数据集。每个图层对应着一个要素类。比如在GIS中直接打开CAD文件,可以看到GIS将标注、点、线、面、多面体等按类分为单独的图层。对于每个矢量图层来说,里面存储的要素类只能有一种,或是点或是线或是面。
image.png
打开图层中的属性表,会看到图层中各要素的shape、其他属性字段及属性值。shape即几何,对应着显示的矢量图像。

#伪代码
shp_datatset = ogr.Open(input_shape)
layer = shp_datatset.GetLayer()
feat = layer.GetFeature(0)
polygon_shp = feat.GetGeometryRef()
outring = polygon_shp.GetGeometryRef(0)
outring.GetPoints(0)

而在GDAL中,我们可以通过ogr读取矢量文件,调用封装的方法读取图层,接着调用方法可以读取要素,最后可以读取到多边形的外环及外环对应的点。

1、ArcGIS矢量空间分析

image.png
矢量数据的空间分析。矢量空间分析,主要包括缓冲区分析、叠加分析、网络分析及追踪分析。其中网络分析虽然也是利用矢量数据进行分析的,但其数据模型与缓冲区分析和叠加分析所使用的数据模型有所区别,在进行网络分析前需要构建网络数据集。以下主要介绍缓冲区分析和叠加分析。

缓冲区分析

缓冲区程序将遍历输入要素的每个折点并创建缓冲区偏移。通过这些偏移创建输出缓冲区要素。ArcGIS中缓冲区分析可以使用缓冲向导或缓冲区工具进行操作。在ArcGIS中,构建缓冲区有两种基本方法,欧式方法和测地线方法。

  • 如果输入要素位于投影坐标系中,则将创建欧氏缓冲区。
  • 如果输入要素位于地理坐标系中且指定的缓冲距离单位为线性单位(米、英尺等,而非诸如度之类的角度单位),则会创建测地线缓冲区。

欧氏缓冲区是更常见的缓冲区类型,特别适合于分析投影坐标系中要素周围的距离,这些距离侧重于相对较小的区域(如一个 UTM 带)。当输入要素处于分散状态(覆盖多个 UTM 带、大面积区域甚至整个地球),或
输入要素的空间参考(地图投影)为保留其他属性(如面积)使距离发生变形。则应始终考虑创建测地线缓冲区
具体可以参见官方文档说明:https://desktop.arcgis.com/zh-cn/arcmap/latest/tools/analysis-toolbox/how-buffer-analysis-works.htm
image.png

叠加分析

叠加分析包括擦除(Erase)、标识叠加(Identify)、图层相交(Intersect)、交集取反(Symmetrical Difference)、联合(Union)、更新修正(Update)。
image.png
image.png
其中可能比较不好理解的可能是标识叠加和更新修正,建议实际操作一下。我这里简单举例说明一下。
首先是标识叠加,顾名思义,可以理解为通过叠加另一要素对原要素进行标识。通常是用多边形要素来标识其他要素。比如我们用test1图层来标识test11,标识叠加后,test11中的先要素会被切分为两部分,相交部分,未相交部分。(ALL情况)test11属性会全部增加到线test1上,并有一个独特的标识属性(值为负1或1),该方法可以用来筛选在面上或线上的点要素。
image.png
而对于更新修正,我的理解是修正更新会将两者相交的部分要素的字段属性值修正为更新要素,更新要素无对应字段时,该字段修正为空。
image.png
通常我们使用用某一个多边形图层的部分图斑来修正该图层,比如用test1的部分更新test1,可以看到,直接将覆盖test1的对应属性的值。
image.png

3、实例练习

操作视频见:https://www.bilibili.com/video/BV1zP4y1278K
实例练习材料及本文PPT链接(exe为自解压文件):
https://www.aliyundrive.com/s/vt9dQUHMi7s 提取码: 9a5a

4、参考资料:

科普 | GIS数据格式汇总解析
关于地理数据格式—ArcMap | 文档
GDAL中文文档
ArcGIS地理信息系统空间分析实验教程/汤国安,杨昕编著.—北京∶科学出版社,2006
ArcGIS地理信息系统空间分析实验教程/汤国安,杨昕编著.—2版.—北京∶科学出版社,2012
地理信息系统导论/(美)张康聪(Chang,K.T.)著;陈健飞,张筱林译. —5版.—北京∶科学出版社,2010
ArcGIS 地理信息系统分析与应用 / 晁怡,郑贵洲,杨乃编著. —北京:电子工业出版社,2018.6 高等学校教材

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【GIS】GIS矢量空间分析(上) 的相关文章

  • Git命令行简单使用小结

    最近复习了一下git 总结了一下命令行的基本使用 0 基本理论 a 基本概念 Working Directory 就是平时存放项目代码的地方 Stage Index 用于临时存放改动 事实上他只是一个文件 保存即将提交的文件列表信息 Rep
  • 无外接环境下,单笔记本直连浪潮服务器BMC灌装系统

    1 环境因素 xff1a 单服务器无网络无显示器等外接 xff0c 需要对浪潮防火墙灌装系统 xff1b 2 所需材料 xff1a 1 浪潮服务器 2 可接网线笔记本电脑 xff08 Windows平台 xff09 3 网线一根 3 连接拓
  • python抽样方法详解及实现

    抽样方法概览 随机抽样 总体个数较少 每个抽样单元被抽中的概率相同 xff0c 并且可以重现 随机抽样常常用于总体个数较少时 xff0c 它的主要特征是从总体中逐个抽取 1 抽签法 2 随机数法 xff1a 随机数表 随机数骰子或计算机产生
  • ROS 1.0 学习笔记(6)CMakeLists.txt 使用说明

    ROS1中每个PKG的配置都是在CMakeList txt中 xff0c 本文从官方 WiKi 资料中翻译而来 1 概览 文件CMakeLists txt是CMake编译系统的配置文件 xff0c 用于配置需要编译软件包 任何兼容CMake
  • LQR控制算法推导以及简单分析

    首先 xff0c 这篇文章是看了几个大神的博客后 xff0c 自己抄录以及整理的内容 xff0c 其中有些自己的想法 xff0c 但是原理部分基本都是学习大神们的 xff0c 在此先说明一下 1 全状态反馈控制系统 在介绍LQR之前 xff
  • C++ Primer(第五版)|练习题答案与解析(第三章:字符串、向量和数组)

    C 43 43 Primer 第五版 练习题答案与解析 第三章 字符串 向量和数组 本博客主要记录C 43 43 Primer 第五版 中的练习题答案与解析 参考 C 43 43 Primer C 43 43 Primer 练习题3 2 编
  • ROS学习(五)导航、路径规划、SLAM

    主要涉及到3个基本包 用于让机器人在制定框架内移动到目标位置的move base包 用于从激光扫描仪 深度摄像机来绘制地图的gmapping包 用于在现有的地图中定位的amcl包 先阅读 http wiki ros org navigati
  • 微服务架构模型和进程间通信

    微服务架构 微服务的扩展模型X轴扩展在多个相同实例之间实现请求的负载均衡Y轴扩展根据功能将应用程序拆分为服务Z轴扩展根据请求的属性路由请求微服务架构与SOA的异同微服务架构的好处微服务架构的弊端 微服务进程间通信基于同步远程过程调用模式的通
  • 关于搭建guacamole-server.1.4.0简单步骤,及问题记录

    问题1 xff1a 在guacamole server 1 4 0目录下 xff0c 执行 configure 发现记录中出现以下警告 xff0c 并且VNC没有成功加载 xff08 libvncserver devel已经导入yum的情况
  • 【获奖公布】征文 | 你会为 AI 转型么?

    AI xff08 Artificial Intelligence xff09 xff0c 即人工智能 人工智能领域的研究包括机器人 语音识别 图像识别 自然语言处理和专家系统等 人工智能从诞生以来 xff0c 理论和技术日益成熟 xff0c
  • spring security filter

    一 spring security过滤器默认配置 WebSecurityConfigurerAdapter init WebSecurityConfigurerAdapter getHttp new HttpSecurity new Fil
  • 金属氢化物Fluent传热仿真论文复现(UDF加载能量源项)

    关于金属氢化物的传质传热 xff0c 论文有相应的公式 xff0c 主要是通过六个方程 xff1a 能量守恒 动量守恒 动力学方程 热力学方程和理想气态方程 相应的公式解释在这里不作过多的解释 xff0c 以后有时间 xff0c 我会专门写
  • ue4_AI_BT

    Rotate to face BB entry 大家在编写行为树的时候 xff0c 经常会遇到需求就是要把操作目标转向某人 xff0c 面对某人 xff0c UE4的行为树中 xff0c 为我们提供了节点Rotate to face BB
  • vscode在远程服务器提交git的时候无需每次都要输入账号密码的配置

    要避免在每次 git 操作时都需要输入账号和密码 xff0c 可以使用 SSH 鉴权 xff0c 具体步骤如下 xff1a 生成 SSH key在本地计算机上使用命令 ssh keygen t rsa b 4096 生成 SSH key 这
  • TLAB和逃逸分析

    逃逸分析 xff1a 对象创建在栈中 xff0c 不一定都是在堆中 xff0c 适用于无并发 xff0c jvm默认开启 TLAB xff1a 多线程并发中堆空间也有线程私有空间 xff08 除了栈外 xff09 xff0c 堆中的一小块内
  • ssh远程启动的java进程无法被杀掉

    一台客户端机器上的启动脚本 sh中 有ssh命令远程连接到另一台服务端机器并在上面启动java进程的场景中 xff0c 发现在客户端ctrl 43 c关闭正在运行的脚本 xff0c 却发现服务端上的java进程没有一起被杀掉 xff0c 新
  • centos7.x设置错误的配置文件导致无法开机一直卡着

    参照因为错误关闭Selinux导致CentOS7启动失败 进度条卡死 xff0c 图形界面加载卡死 一世一生命的博客 CSDN博客 对修改的配置文件进行还原即可 xff0c 比如重新vim 某个文件
  • idea 使用sbt构建工程时错误unresolved dependency: org.scala-sbt#sbt;0.13.8: not found

    1 出现场景 xff1a 在idea中使用sbt构建工程时 xff0c 使用默认的sbt版本为0 13 8 xff0c 而我本地安装的sbt版本是0 13 7 xff0c 所以在仓库中找不到对应的0 13 8包 2 解决 xff1a 在pr
  • vncviewer客户端连接服务器失败,报connect:connect refused(10061)

    这个问题百度了一下 xff0c 发现百度说的这个拒绝连接千遍一律都是 xff1a 1 服务器上的vnc没起来 xff0c service vncserver status 查看运行状态 xff0c 如果没起来就重新启动service vnc
  • git push 出现you are not allowed to upload merges

    你本地基于远程分支master上下载的代码工程 xff0c 修改代码并commit了 xff0c 而别人也在他电脑本地基于远程分支master上的代码工程上进行commit xff08 修改的内容可以不一样 xff0c 如果一样那么你pul

随机推荐

  • 桥接模式下电脑主机ping不通虚拟机,出现 :无法访问目标主机。而虚拟机能ping通主机

    1 我的状况描述 xff1a 主机 win7 ip 192 168 0 103 自动分配 xff0c 虚拟机 centos6 7桌面版 ip xff1a 192 168 0 105 昨天刚安装好了虚拟机 xff0c 主机与虚拟机直接都能相互
  • 自己写一个串口调试小助手

    串口调试小助手是我们调试手机程序经常使用的一个工具 一个十分简洁优秀的程序 xff0c 感觉似乎是使用D语言编写的 xff0c 然后作者又使用UPX加了个壳 给一些喜欢反编绎研究别人程序的人造成了一些障碍 其实串口调试小程序原理并不太难 x
  • 【java力扣算法《代码随想录》02】第2章程序的性能分析(刷题如果关键的部分直接用库函数就可以解决,建议不要使用库函数)

    第二章 程序的性能分析 代码随想录刷题整理刷题注意关于使用库函数ACM模式代码风格 时间复杂度O n 中 logn无底数空间复杂度 代码随想录刷题整理 代码随想录 刷题网站 刷题注意 关于使用库函数 如果题目关键的部分直接用库函数就可以解决
  • 四轴飞行器姿态控制

    四轴飞行器姿态控制 一 姿态解算相关概念 1 欧拉角 用来表示三维空间中运动物体绕坐标轴旋转的情况 xff0c 即物体每时每秒的姿态可以由欧拉角表示 2 四元数 四元数用于物体的旋转 xff0c 是一种复杂但是效率较高的旋转方式 对于一个物
  • 串级PID控制四轴飞行器状态-实现

    参考网页 xff1a http blog csdn net nemol1990 article details 45131603 一 上下运动 向上运动 xff0c 四个轴的速度同时增加向下运行 xff0c 四个轴的速度同时减小 二 前后运
  • c和c++调用Python

    参考网页 xff1a https docs python org 3 6 c api index html http blog csdn net taiyang1987912 article details 44779719 http bl
  • yoloV3 darknet GPU手把手从编译到训练再到C++调用API

    我要先声明一下 xff0c 系统是Ubuntu18 04 xff0c 我的机器已经装好了opencv4 1 1 和 cuda10 0 的 xff0c 过程可参考我另一篇博客 xff0c 这部分不再说明 IDE使用qtcreator 1 下载
  • 使用Git命令创建新分支

    1 进入Git Bash Here xff0c 查看仓库所有分支git branch a 2 使用命令 git checkout master xff0c 表示切换到master分支 xff0c 并git pull拉取最新代码 3 由于的所
  • VINS-初探(一)

    vins是香港科技大学开源的一个单目相机结合IMU的一个VIO xff0c 在github上可以下载源码 xff0c 分为iOS系统下的和ros系统下的两种 xff0c ros下的为 span class hljs label https
  • ROS使用官方包进行串口通信

    https www jianshu com p c30f390427e7 参考http span class hljs comment www roswiki com read php tid 61 557 amp fid 61 39 sp
  • STM32F446ZET6关于使用PA11,PA12,PB14,PB15的使用注意事项

    STM32F446ZET6关于使用PA11 xff0c PA12 xff0c PB14 xff0c PB15的使用注意事项 这两天在用PB14做输入时 xff0c 发现总是不灵敏 xff0c 开始还以为布线有问题 xff0c 检查后发现不是
  • numpy基本方法总结

    NumPy基本方法 一 数组方法 创建数组 xff1a arange 创建一维数组 xff1b array 创建一维或多维数组 xff0c 其参数是类似于数组的对象 xff0c 如列表等 读取数组元素 xff1a 如a 0 a 0 0 数组
  • 如何实现Qt上位机软件串口的按字节数据处理?

    1 Qt串口类的选择 最近在做一个小项目 xff0c 需要用到Qt做上位机软件 xff0c 本人也是边学边做 xff0c 买了本 QtCreator快速入门 看了看就动手了 xff0c 由于初学不是很了解Qt5的官方资源 xff0c 一开始
  • 如何使用HAL库手动修改OSC引脚为PD0/1?

    CubeMX不能直接重映射OSC引脚为PD0 1 xff0c 那么 xff0c 如何使用HAL库手动修改OSC引脚为PD0 1 如下图所示配置即可 xff1a
  • “野火FreeRTOS教程”第7章补充知识点-异常流程

    一 知识点 1 Cortex M3 4在复位后CONTROL寄存器初始值为0 xff0c 也就是说MCU会处于线程模式 具有特权访问权限且使用主栈指针 MSP 2 当进入异常时CM3会自动入栈 xff0c 如下图所示 xff1a 3 当异常
  • mini四旋翼飞行器DIY日志

    一 方案 功能描述 xff1a 具备mini四旋翼飞行器的基本功能 xff0c 可以拓展其他模块实现定高 对航向角yaw的校准 xff0c 将所有io引出并设计出最小系统板子功能 xff0c 将设计I2C总线挂载选择电路便于调试和使用 可以
  • Quartus II 13.1.0.162三件套安装包

    QuartusSetup 13 1 0 162 链接 https pan baidu com s 1B01zWG76kfNcGLA0VmwyMw 提取码 jjdd ModelSimSetup 13 1 0 162 链接 https pan
  • DSP Builder安装时的注意事项

    注意事项1 DSP Builder是以组件的形式安装在altera下面的 xff0c 并且altera要与matlab 32位 xff01 xff01 安装在同一路径下 xff0c 这个路径不要带有中文 xff0c 或者空格字符 xff0c
  • Maven3.6.1下载与配置,超详细

    Maven3 6 1下载与配置 xff0c 超详细Maven3 6 1下载与配置 xff0c 超详细Maven3 6 1下载与配置 xff0c 超详细 Maven下载与配置 1 官网下载对应版本 xff0c 推荐下载免安装版 下载地址 ht
  • 【GIS】GIS矢量空间分析(上)

    0 GIS的基本概念 栅格数据与矢量数据 上图中 xff0c a为图形模拟表示的地理对象 xff0c b为控件对象对应的栅格数据模型表示 xff0c c为对应的矢量数据模型表示 矢量模型的表达源于原型空间实体本身 xff0c 通常以坐标来定