【第八课】空间数据基础与处理——数据结构转化
一、前言
数据结构即指数据组织的形式,是适合于计算机存储、管理和处理的数据逻辑结构。对空间数据则是地理实体的空间排列方式和相互关系的抽象描述。它是对数据的一种理解和解释,不说明数据结构的数据是毫无用处的,不仅用户无法理解,计算机程序也不能正确地处理,对同样一组数据,按不同的数据结构去处理,得到的可能是截然不同的内容。空间数据结构是地理信息系统沟通信息的桥梁,只有充分理解地理信息系统所采用的特定数据结构,才能正确有效地使用系统。地理信息系统的空间数据结构主要有矢量结构和栅格结构。

二、数据结构类型
1、栅格数据结构
栅格结构是最简单最直观的空间数据结构,又称为网格结构(Raster 或 Gridcell)或像元结构(Pixel) ,是指将地球表面划分为大小均匀紧密相邻的网格阵列,每个网格作为一个像元或像素,由行、列号定义,并包含一个代码,表示该像素的属性类型或量值,或仅仅包含指向其属性记录的指针。因此,栅格结构是以规则的阵列来表示空间地物或现象分布的数据组织,组织中的每个数据表示地物或现象的非几何属性特征。如图4.1所示,在栅格结构中,点用一个栅格单元表示;线状地物则用沿线走向的一组相邻栅格单元表示,每个栅格单元最多只有两个相邻单元在线上;面或区域用记有区域属性的相邻栅格单元的集合表示,每个栅格单元可有多于两个的相邻单元同属一个区域。任何以面状分布的对象(土地利用、土壤类型、地势起伏、环境污染等),都可以用栅格数据逼近。遥感影像就属于典型的栅格结构,每个像元的数字表示影像的灰度等级。
2、矢量数据结构
矢量数据是面向地物的结构,即对于每一个具体的目标都直接赋有位置和属性信息以及目标之间的拓扑关系说明。基于矢量模型的数据结构简称为矢量数据结构。矢量也叫向量,数学上称“具有大小和方向的量”为向量。在计算机图形中,相邻两结点间的孤段长度表示大小,弧段两端点的顺序表示方向,因此孤段也是一个直观的矢量。矢量数据结构是通过记录坐标的方式来表示点、线,面等地理实体空间分布的一种数据组织方式。这种数据组织方式定位明显,属性隐含,能最好地逼近地理实体的空间分布特征,数据精度高,数据存储的冗余度低,便于进行地理实体的网络分析,但对于多层空间数据的叠合分析比较困难。矢量数据结构的获取方法主要有:手工数字化法、手扶跟踪数字化法﹑数据结构转换法。
3、两种数据结构的比较
栅格结构和矢量结构是模拟地理信息的两种不同的方法。栅格数据结构类型具有“属性明显、位置隐含”的特点,它易于实现,且操作简单,有利于基于栅格的空间信息模型的分析,如在给定区域内计算多边形面积、线密度,栅格结构可以很快算得结果,而采用矢量数据结构则麻烦得多;但栅格数据表达精度不高,数据存储量大,工作效率较低。如要提高一倍的表达精度(栅格单元减小一半) ,数据量就需增加三倍,同时也增加了数据的冗余。因此,对于基于栅格数据结构的应用来说,需要根据应用项目的自身特点及其精度要求来恰当地平衡栅格数据的表达精度和工作效率两者之间的关系。另外,因为栅格数据格式的简单性(不经过压缩编码),其数据格式容易为大多数程序设计人员和用户所理解,基于栅格数据基础之上的信息共享也较矢量数据容易。最后,遥感影像本身就是以像元为单位的栅格结构,所以,可以直接把遥感影像应用于栅格结构的地理信息系统中,也就是说栅格数据结构比较容易和遥感相结合。
矢量数据结构类型具有“位置明显、属性隐含”的特点,它操作起来比较复杂,许多分析操作(如叠置分析等)用矢量数据结构难于实现;但它的数据表达精度较高,数据存储量小,输出图形美观且工作效率较高。两者的比较见表:
三、数据来源
数据来源是指建立GIS的地理数据库所需的各种数据的来源,主要包括地图,遥感图像,文本资料.统计资料.实测数据﹑多媒体数据.已有系统的数据等。可归纳为原始采集数据.再生数据和交换数据三种来源。
(1)地图数据
地图是GIS的主要数据源,因为地图包含着丰富的内容,不仅含有实体的类别和属性,而且含有实体间的空间关系。地图数据主要通过对地图的跟踪数字化和扫描数字化获取。地图数据不仅可以作宏观的分析(用小比例尺地图数据) ,而且可以作微观的分析(用大比例尺地图数据)。在使用地图数据时,应考虑到地图投影所引起的变形,在需要时进行投影变换,或转换成地理坐标。地图数据通常用点、线、面及注记来表示地理实体及实体间的关系,如:点—-——居民点,采样点﹑企业.中心城市等;线—-河流﹑道路,构造线等;面-—县域、市域.省域等;注记--地名注记,高程注记等。地图数据主要用于生成DLG、DRG数据或DEM数据。
(2)遥感影像数据
遥感影像数据是GIS的重要数据源。遥感影像数据含有丰富的资源与环境信息,在GIS支持下,可以与地质,地球物理、地球化学,地球生物.军事应用等方面的信息进行信息复合和综合分析。遥感影像数据是一种大面积的 ,动态的,近实时的数据源,遥感技术是GIS数据更新的重要手段。遥感影像数据用于提取灰度值、线划数据和生成数字正射影像数据、DEM 数据等。
(3)文本资料
文本资料是指各行业﹑各部门的有关法律文档、行业规范.技术标准、条文条例等,如政府工作报告等。这些也属于GIS的数据。
(4)统计资料
政府许多部门和机构都拥有不同领域(如人口、交通,科技等)的大量统计资料,如相关统计年鉴,统计公报等,这些都是GIS的数据源,尤其是GIS属性数据的重要来源。
(5)实测数据
田野调查、实地测量等获取的数据可以通过转换直接进入GIS的地理数据库,以便于进行实时的分析和进一步的应用。GPS(全球定位系统)所获取的数据也是GIS的重要数据源。
(6)多媒体数据
多媒体数据(包括声音、录像等)通常可通过通讯口传入GIS的地理数据库中,目前其主要功能是辅助GIS的分析和查询。
(7)已有系统的数据
GIS 还可以从其他已建成的信息系统和数据库中获取相应的数据。由于规范化.标准化的推广,不同系统间的数据共享和可交换性越来越强。这样就拓展了数据的可用性,增加了数据的潜在价值。
(8)互联网数据
随着互联网不断深入,还可以借助网站形式获取,该数据获取成本较低,时效性好。例如通过全国地理信息资源目录服务网址官网可获取大量矢量数据:http: / / www. webmap. cn/main. do?method = index。其数据内容含行政区(面) ,行政境界点(领海基点),行政境界(线),水系(点、线、面),公路、铁路(点、线),居民地(点、面),居民地地名(注记点),自然地名(注记点)等十二类要素层。进入网站,选择【数据下载】→【1: 100万全国基础地理数据库】 ,即可进行查询下载。
四、数据转换
1、栅格数据向矢量数据的转换
栅格向矢量转换处理的目的,是为了将栅格数据分析的结果通过矢量绘图装置输出,或者为了数据压缩的需要,将大量的面状栅格数据转换为由少量数据表示的多边形边界,但是主要目的是为了能将自动扫描仪获取的栅格数据加入矢量形式的数据库。由栅格数据可以转换为3种不同的矢量数据,分为点状、线状和面状的矢量数据。下面以栅格数据转换为面状矢量数据为例进行说明,其他两种转换操作大同小异,这里不再具体说明。
(1)展开【转换工具】工具箱,打开【转为栅格】工具集,双击【栅格转面】,打开对应对话框。
(2)在【输入栅格】文本框中选择输入需要转换的栅格数据。
(3)在【输出面要素】文本框键入输出的面状矢量数据的路径与名称。
(4)选择【简化面】按钮(默认状态是选择),可以简化面状矢量数据的边界形状。如果向更高精度保留栅格信息,可以不勾选该按钮。
(5)单击【确定】按钮,执行转换操作。
这里上述显示有错误,是因为栅格数据不是整型,所以在进行这一步之前必须将栅格数据转为整型。
2、矢量数据向栅格数据的转换
许多数据如行政边界、交通轴线、城市土地利用类型等都是用矢量数字化的方法输入计算机或以矢量的方式存在计算机中,表现为点、线、多边形数据。然而,矢量数据直接用于多种数据的复合分析等处理将比较复杂,特别是不同数据要在位置上一一配准,寻找交点并进行分析。相比之下利用栅格数据模式进行处理则容易得多。加之土地覆盖和土地利用等数据常常从遥感图像中获得,这些数据都是栅格数据,因此矢量数据与它们的叠置复合分析更需要把其从矢量数据的形式转变为栅格数据的形式。矢量数据的基本坐标是直角坐标X、Y ,其坐标原点一般取图的左下角。网格数据的基本坐标是行和列(i,j),其坐标原点一般取图的左上角。两种数据变换时,令直角坐标X和Y分别与行与列平行。由于矢量数据的基本要素是点、线、面,因而只要实现点、线、面的转换,各种线划图形的变换问题基本上都可以得到解决。
(1)展开【转换工具】工具箱,打开【转为栅格】工具集,双击【要素转栅格】打开【要素转栅格】对话框。
(2)在【输人要素】文本框中选择输入需要转换的矢量数据。
(3)在【字段】窗口选择数据转换时所依据的属性值。
(4)在【输出栅格】文本框键入输出的栅格数据的路径与名称。
(5)在【输出像元大小】文本框键入输出栅格的大小,或者浏览选择某一栅格数据,输出的栅格大小将与之相同。
(6)单击【确定】按钮,执行转换操作。该命令同样适用于地理数据库中的要素类。
相关文章:

【第八课】空间数据基础与处理——数据结构转化
一、前言 数据结构即指数据组织的形式,是适合于计算机存储、管理和处理的数据逻辑结构。对空间数据则是地理实体的空间排列方式和相互关系的抽象描述。它是对数据的一种理解和解释,不说明数据结构的数据是毫无用处的,不仅用户无法理解,计算机程序也不能正确地处理,对同样一组数…...

MATLAB绘制三Y轴坐标图:补充坐标轴及字体设置
三轴坐标图 1 函数 MATLAB绘制三轴图函数可见MATLAB帮助-multiplotyyy 基础图形绘制是很简单,但坐标轴及字体设置该如何实现呢? 本文以以下几个例子为例,希望可以解决在利用MATLAB绘制三轴坐标图时常见的疑惑。 2 案例 2.1 案例1…...

springboot项目中Quartz
下面内容大家可在自己创建的 springboot项目中 玩1 定时清理垃圾图片定时任务组件Quartz,可以根据我们设定的周期,定时执行目标任务计划1.1 Quartz介绍(了解)Quartz是Job scheduling(作业调度)领域的一个开源项目&…...

Presto本地开发,plugin的设置
1. 新的问题 之前搭建Presto的本地开发环境时,一直使用config.properties中的plugin.bundles配置项定义需要加载的plugin模块,详细可以参考博客《win10基于IDEA,搭建Presto开发环境》presto服务启动时,指定加载哪些组件ÿ…...

2023年3月西安/杭州/深圳/东莞NPDP产品经理认证考试报名
产品经理国际资格认证NPDP是国际公认的唯一的新产品开发专业认证,集理论、方法与实践为一体的全方位的知识体系,为公司组织层级进行规划、决策、执行提供良好的方法体系支撑。 【认证机构】 产品开发与管理协会(PDMA)成立于1979年…...

Vue3笔记01 创建项目,Composition API,新组件,其他
Vue3 创建Vue3项目 vue-cli //查看vue/cli版本,确保在4.5.0以上 vue --version //安装或升级vue/cli npm install -g vue/cli //创建项目 vue create new_project //启动 cd new_project npm run serve 也可以通过vue ui进入图形化界面进行创建 vite 新一代前端…...

pandas数据分析(二)
文章目录DataFrame数据处理与分析读取Excel文件中的数据筛选符合特定条件的数据查看数据特征和统计信息按不同标准对数据排序使用分组与聚合对员工业绩进行汇总DataFrame数据处理与分析 部分数据如下 这个数据百度可以搜到,就是下面这个 读取Excel文件中的数据 …...

Spring实现[拦截器+统一异常处理+统一数据返回]
Spring拦截器 1.实现一个普通拦截器 关键步骤 实现 HandlerInterceptor 接口重写 preHeadler 方法,在方法中编写自己的业务代码 Component public class LoginInterceptor implements HandlerInterceptor {/*** 此方法返回一个 boolean,如果为 true …...

MySQL——插入加锁/唯一索引插入死锁/批量插入效率
本篇主要介绍MySQL跟加锁相关的一些概念、MySQL执行插入Insert时的加锁过程、唯一索引下批量插入可能导致的死锁情况,以及分别从业务角度和MySQL配置角度介绍提升批量插入的效率的方法;MySQL跟加锁相关的一些概念在介绍MySQL执行插入的加锁过程之前&…...

【专项训练】数组、链表
数组array: list = []链表linked list # Definition for singly-linked list. class ListNode:def __init__(self, x):self.val = xself.next =...

基于Jeecgboot前后端分离的ERP系统开发代码生成(六)
商品信息原先生成的不符合要求,重新生成,包括一个附表商品价格信息表 一、采用TAB主题一对多的模式 因为主键,在online表单配置是灰的,所以不能进行外键管理,只能通过下面数据库进行关联录入,否则online界面…...

什么?同步代码块失效了?-- 自定义类加载器引起的问题
一、背景 最近编码过程中遇到了一个非常奇怪的问题,基于单例对象的同步代码块似乎失效了,百思不得其姐。 下面给出模拟过程和最终的结论。 二、场景描述和模拟 2.1 现象描述 Database实现单例,在 init 方法中使用同步代码块来保证 data不…...

CHAPTER 4 文件共享 - Samba
文件共享 - Samba1 Samba1.1 Samba的软件架构1.2 搭建Samba服务器1.3 samba用户管理1. 添加用户2. 修改用户密码3. 删除用户和密码4. 查看samba用户列表5. 查看samba服务器状态1.4 samba共享设置(配置文件详解)1.5 访问共享目录1. windows访问2. linux客…...

深入分析@Configuration源码
文章目录一、源码时序图1. 注册ConfigurationClassPostProcessor流程源码时序图2. 注册ConfigurationAnnotationConfig流程源码时序图3. 实例化流程源码时序图二、源码解析1. 注册ConfigurationClassPostProcessor流程源码解析(1)运行案例程序启动类Conf…...

Unity 代码优化 内存管理优化
项目遇到了卡顿的情况 仔细检查了代码没检查出有误的地方 仔细的总结了一下可以优化的东西 解决了卡顿 记录一下 1 协程 项目之前写的关于倒计时之类的东西 都是开了个协程 虽然协程是消耗很小的线程 , 可是还是有额外消耗 而且 有很多用携程来检测销毁预制体的操作 也都放到U…...

设计模式~门面(外观)模式(Facade)-08
目录 (1)优点 (2)缺点 (3)使用场景 (4)注意事项: (5)应用实例: (6)源码中的经典应用 代码 外观模式&am…...

C++面向对象编程之一:封装
C面向对象编程三大特性为:封装,继承,多态。C认为万事万物皆为对象,对象有属性和行为。比如:游戏里的地图场景可以看作是长方形对象,属性场景id,有长,有宽,可能有NPC&…...

IDEA插件系列(3):Maven Helper插件
一、引言在写Java代码的时候,我们可能会出现Jar包的冲突的问题,这时候就需要我们去解决依赖冲突了,而解决依赖冲突就需要先找到是那些依赖发生了冲突,当项目比较小的时候,还比较依靠IEDA的【Diagrams】查看依赖关系&am…...

SAP 更改物料基本计量单位
前言部分 在SAP中物料创建后,一旦发生业务,其基本计量单位便很难修改。由于单位无法满足业务要求,往往会要求新建一个物料替代旧物料。这时候除了要将旧物料上所有的未清业务删除外,还需要替换工艺与BOM中的旧物料。特别是当出现旧…...

蓝桥web基础知识学习
HTMLCSS 知识点重要指数HTML 基础标签🌟🌟🌟🌟🌟HTML5 新特性🌟🌟🌟🌟🌟HTML5 本地存储🌟🌟🌟🌟CSS 基础语法…...

Python+ChatGPT制作一个AI实用百宝箱
目录一、注册OpenAI二、搭建网站及其框架三、AI聊天机器人四、AI绘画机器人ChatGPT 最近在互联网掀起了一阵热潮,其高度智能化的功能能够给我们现实生活带来诸多的便利,可以帮助你写文章、写报告、写周报、做表格、做策划甚至还会写代码。只要与文字相关…...

Python中格式化字符串输出的4种方式
Python格式化字符串的4中方式 一、%号 二、str.format(args) 三、f-Strings 四、标准库模板 五、总结四种方式的应用场景’ 一、%号占位符 这是一种引入最早的一种,也是比较容易理解的一种方式.使用方式为: 1、格式化字符串中变化的部分使用占位符 2、…...

C#基础教程15 枚举与类
文章目录 C# 枚举(Enum)声明 enum 变量C# 类(Class)类的定义成员函数和封装C# 中的构造函数关键字 staticC# 枚举(Enum) 枚举是一组命名整型常量。枚举类型是使用 enum 关键字声明的。 C# 枚举是值类型。换句话说,枚举包含自己的值,且不能继承或传递继承。 声明 enum 变…...

三步 让你的 vscode 自动编译ts文件
三步让你的 vscode 自动编译ts文件 TypeScript环境安装与如何在vscode实现自动编译ts文件? 文章目录三步让你的 vscode 自动编译ts文件前提条件环境安装自动编译运行监视任务时报错?前提条件 安装 node 环境 环境安装 tsc 作用:负责将ts 代码 转为 浏…...

STM32程序下载和启动方式
目录1 BOOT引脚配置和下载说明2 关于串口下载方式3 关于一按复位就跑代码4 关于下载调试速度5 关于三种启动方式5.1 FLASH启动5.2 系统存储器器启动5.3 SRAM启动6 关于程序的三种下载方式1 BOOT引脚配置和下载说明 BOOT0BOOT1程序运行ST-Link下载串口下载启动说明xx无0x√√用…...

基础01-ajax fetch axios 的区别
ajax fetch axios 的区别 题目 ajax fetch axios 的区别 分析 三者根本没有可比性,不要被题目搞混了。要说出他们的本质 传统 ajax AJAX (几个单词首字母,按规范应该大写) - Asynchronous JavaScript and XML(异…...

Android Execution failed for task ‘:app:mergeDebugJavaResource
错误提示 FAILURE: Build failed with an exception.* What went wrong: Execution failed for task :app:mergeDebugJavaResource. > A failure occurred while executing com.android.build.gradle.internal.tasks.MergeJavaResWorkAction> 2 files found with path k…...

spring事物源码分析
今天的任务是剖析源码,看看Spring 是怎么运行事务的,并且是基于当前最流行的SpringBoot。还有,我们之前剖析Mybatis 的时候,也知道,Mybatis 也有事务,那么,他俩融合之后,事务是交给谁…...

炫龙游戏本Win10系统总是蓝屏崩溃怎么办?
炫龙游戏本Win10系统总是蓝屏崩溃怎么办?有用户使用的炫龙游戏本最近总是在运行的过程中出现自动蓝屏的情况,有的时候自己还在操作电脑,而屏幕却蓝屏了,导致自己的工作被中断了。那么这个情况要怎么去进行修复呢?来看看…...

华为OD机试题,用 Java 解【数字加减游戏】问题
华为Od必看系列 华为OD机试 全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典使用说明 参加华为od机试,一定要注意不…...