python地理空间--概念引入

Posted Clivia Du

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python地理空间--概念引入相关的知识,希望对你有一定的参考价值。

1 python与地理空间分析

1.1 与我们的生活

ushahidi是一个优秀的地理空间地图应用,回寝FQ看一下。

ushahidi有一个python库-ushapy

地理空间救灾建模程序是最近比较突出的案例。

进一步深入了解地理空间分析在不同行业的应用-http://geospatialrevolution.psu.edu

1.2 地理空间分析的历史

1.3地理信息系统

Roger Tomlinson开发了CGIS,被称为GIS之父,博士论文题目是“计算机技术在数据的存储、编辑和分析中的应用”

Howard Fisher 在哈佛研究生院的计算机图形和空间分析实验室工作时所做的贡献:用行式打印机打印GIS软件SYMAP的输出结果。

SYMAP带动了GRID(后来的IMGRID)和Odyssey项目。

纪录片,介绍使用SYMAP输出显示

http://youtu.be/xj8DQ7IQ8_o

 

这12个非常实用的GIS软件,你可能一个都不知道 - 知乎 (zhihu.com)

 

1.4 遥感

遥感一般是指应用探测仪器,不与探测目标相接触,从远处把目标的电磁波特性记录下来,通过分析,揭示出物体的特征信息及其变化的综合性探测技术。

在地理空间分析中,探测对象是地球。遥感包括信息收集的过程。地理信息系统的潜能只受限于地理数据的数量。遥感还可以从图像和地理数据中提取特征信息,自动/半自动生成GIS数据。

1858年Nabar拍摄了史上第一张航空照片,1920年介绍航空摄影的书籍出现。

美苏冷战促进了遥感技术的发展。

国内机构----对地观测与数字地球中心 (cas.cn)

1.5 高程数据

数字高程模型(DEM),是一个星球表面的三维模型。数字高程模型历史没有遥感影像复杂,但并不简单。

1.6 计算机辅助制图

CAD虽然没有和地理空间分析直接相关,但是仍然值得一提--因为CAD系统的发展史和地理空间分析历史密切相关。

CAD借鉴了GIS系统,GIS有些程序可以导入包含地理信息的CAD数据。

1.7 地理空间分析和计算机编程

现在的地理空间分析可以通过商业或开源的应用软件即可轻松完成,而用编程语言的原因:

  • 希望完全掌握底层的算法、数据和执行过程

  • 希望用最小代价在一个大而全的地理空间框架中实现重复任务的自动化

  • 希望创建一个程序方便共享

  • 希望深入学习地理空间分析

001 地理空间分析的面向对象编程

面向对象编程是一种软件开发规范,其理念是对象建模。将对象的特征和行为分别用属性和方法表示,该规范的目标是将软件模块化,鼓励对象继承一个或多个对象实现软件复用。

python语言以多面手闻名,可以是设计良好的面向对象编程语言,也可以是过程式语言、甚至还可以是函数式编程语言。

python的原生数据类型就是对象,并且所有的python库都是模块化的,遵循基本对象的结构和行为。

1.8 地理空间分析的重要性

地理空间分析可以更好辅助我们进行决策。

Google Earth用户可以创建个性化的KML文件(基于XML语法与格式、用于描述和保存地理信息的编码规范),这个软件常被称为地理空间浏览工具,其数据分析能力有限。

OpenStreetMap是一个雄心勃勃的多数据源全球项目。

还有一个:

NationalAtlas.gov

1.9 地理信息系统的基本概念

1.9.1 专题地图

专题地图就是表达某些特定主题的地图。专题地图被用来指导开始战争、追踪定位致命病毒、选举、国际援助、消除贫困、濒危物种保护以及灾难救援等。

1.9.2 空间数据库

以纯粹的方式来看,数据库仅仅是一个有序的信息集合。

数据库管理系统(DBMS)就是能和数据库交互的软件。

数据库通常包含字母和数字等类型的数据,在某些情况下包括二进制大对象或blobs。大部分数据库还支持关系型数据库结构,规范化的表之间可以相互引用来创建一对多和多对多的关系。

地理空间数据库通过特定软件扩展了普通的关系型数据库管理系统的功能。这样就可以达到查询二维、三维空间数据的目的。在此数据库中,地理特征的属性可以像普通的关系型数据库那样存储和查询。扩展功能还支持使用SQL像一般数据库那样查找几何图形。

1.9.3 空间索引

空间索引是为了更快地读取地理空间矢量数据地组织过程。主要用于查询和渲染等的数据预过滤。

空间索引可以将数据分组,提高查询效率。

1.9.4 元数据

关于数据的数据,用于保存数据。

地理空间元数据最有影响力的的是国际标准 ISO 19115-1,其中包括几百个预定义地地字段用于描述一个独立的地理空间数据集,,此外-2还为地理空间影像数据和网格数据提供了支持。

现在的元数据可以自动生成被调用,还可以有很多利于工作的功能。

开放地理空间信息联盟(OGC)创建了CSW标准来管理员数据。python的第三方软件pycsw实现了csw标准pycsw • Metadata Publishing Just Got Easier

1.9.5 地图投影

这部分知识很多。是指将三维对象拍扁放在平面上。

地图投影没有一个放置四海皆准的方法,通常是选取精度误差较小方案间的折中。投影通常是由包含四十多个参数的XML或文本文件构成(WKT),其内容是投影算法定义

过去,投影方式多样且难以统一,有时给了分析师很大的麻烦。而现在,计算机技术的发展可以使得全球底图支持多种常用的投影方式。

如谷歌使用的投影是Web墨卡托投影,EPSG代码3857.

地理空间信息门户项目如OpenStreetMap.org和NationalAtlas.gov为大部分投影方式提供了统一的数据集。

现代的分析软件还能实时对数据重投影。

地图投影和大地基准有关,大地基准是地球表面的一种模型,用来匹配地球中路径特征的坐标系统。通用的是WGS84。

1.9.6 渲染

地理空间数据包括点、线以及若干点组成的多边形。它们都是由(x,y)或(x,y,z)等元组组成的。如今三维地图也开始流行。

对于遥感数据的处理,难题是文件的大小,一个中等规模卫星影像经过压缩后也有几十到几百兆。无损压缩通过技术手段,减小文件体积而不丢失任何数据。有损压缩通过减少文件的数据量减小文件的体积,同时避免图片内容发生显著变化。

渲染一张图片到屏幕上计算量很大,大部分遥感文件格式都支持存储多个低质量图像----即概要或影像金字塔,目的是使得在不同比例尺下更快渲染图片。影像金字塔_百度百科 (baidu.com)

001 遥感的基本概念

大部分GIS概念的描述也适用于栅格数据,但栅格数据也有一些特有的属性。之前我们关注从太空平台获得地球影像,其实栅格数据来源丰富:地面雷达、激光测距仪以及其他检测仪器。

本书主要关注遥感平台,数据源包括地球影像系统,特定类型的高程数据,以及某些适用的天气预报系统。

1.9.7 影像数据格式

栅格数据在计算机上的计算机上的存储方式是以若干行和列的数组构成的。

如果数组是多光谱的,数据集通常会包含多个相同大小的数组(被称为带),通过地理空间的格式被引用到一起,表达一个地理区域。

我们可以对这些数组进行处理得到想要的结果。

1.9.8 遥感和颜色

计算机屏幕显示图片是通过对RGB三个颜色通道的变化组合来匹配人类视觉。至于卫星和其他设备能够捕获不可见光谱,而在计算机中,不可见光谱以可见光谱的形式显示(被称为伪彩色影像)。

1.10 GIS中的矢量数据及其处理

首先声明,矢量数据与栅格数据是两种不同的数据,前者表示地貌特征的效果比栅格数据好,前者更精确;而大规模采集矢量数据成本较高。

1.10.1 数据结构

GIS矢量数据由坐标构成。可能包括x,y,z以及辅助信息测量值和时间戳。

这些坐标组成了

点、线、面等元素,进而对世界建模。

一个GIS特征可以是点、线、多边形以及更复杂的形状。

另外两个重要的矢量数据结构是边框与凸包。

边框中的最小边框是包含数据集中所有点的最小矩形。

凸包则是多边形。是包含数据集中所有点的最小多边形。数据集的边框哦通常也包含它的凸包。

1.10.2 缓冲区

缓冲区操作适用于点、线、多边形,该操作会在对象周围自动创建特定宽度的缓冲多边形。

缓冲区分析常用于临近分析,例如在危险区周围建立一个安全隔离带。

1.10.3 融合

融合操作为相连的多边形创建一个更大的多边形。

普通的融合操作常用于在税务数据库合并同一纳税人的两个相似属性。融合也用于简化遥感影像数据。

1.10.4 简化

很多构成对象的点对于地理空间分析建模来说都是不必要的,可以将其简化用常规一些的形状代替。这是一种提高数据结构和可视化效率的优化技术。这种技术对网络地图应用非常有用。

一般的显示器的每英寸点数是72,更详细的数据点将不会被显示,因此可以通过数据优化,减少带宽传输,更快地将地图展示出来。

至于具体实现,会带后续学习。

1.10.5 叠置

该操作 用来判断某一特征是否和其他特征重叠。

这个操作常用于临近分析中的空间查询,并且通常后续操作是缓冲区分析。

1.10.6 合并

合并操作将两个或多个非重叠的形状合并成复合形状对象。复合形状对象意味着虽然是独立的几何图形,但是在GIS系统中会被当做一个单一的属性集。

1.10.7 点包容性

地理空间操作中,有一个很基本的操作是:检查一个点是否在多边形里面。

最有效的算法是光线投射法:

  1. 执行一个测试,检查这个点是否在边界上

  2. 从该点引出一根“射线”,与多边形的任意若干条边相交。

  3. 统计相交的边的数目,如果是奇数,点在多边形内;否则,点在多边形外。

1.10.8 联合

很少用到,但是在两个或多个重叠的多边形组合成单一形状时非常有用。和融合相似;但是在这种情况下,多边形是重叠关系而非相邻关系。

通常该操作是用来清理遥感操作自动生成的特征数据集的。

1.10.9 连接

主要用来合并两个以上的数据表。

在理解连接操作前,先来看看数据库中的连接操作。

在数据库中,关系型数据库中的一对多关系是为了避免存储冗余信息而设计的。

在GIS中,可以在支持空间数据库的软件中使用空间连接。对于空间连接来说,将属性组合成两个特征的方法和SQL连节操做类似,但是他们的关系是基于相邻空间的两个特征。这与关系型数据库中连接做的事情相同。

这里不太懂。因为不太懂数据库原理。

1.10.10 地理空间中的多边形规则

在地理空间分析中,其中提到的多边形和数学描述的多边形有几个关键区别:

  • 多边形有且至少有4个点,第一个点和最后一个点必须重合(闭合);

  • 多边形不能和自身重叠;

  • 图层中的多边形不能重叠;

  • 图层中的多边形在其他多边形中被当作多边形下面的一个洞来处理。(这里的一个洞我不理解)

为了避免莫名其妙的错误,最好确保多边形遵循了上面所有的规则。

1.11 栅格数据的基本概念

遥感栅格数据是一组数字矩阵,对其的基本操作如下:

1.11.1 波段运算

波段运算是多维数组数学计算。主要是线性代数的相关处理。

1.11.2 变化检测

变化检测的流程是比较不同时间相同位置的两张图片的差异,并将其高亮展示。

有很多算法可以检测图像的变化,同时显示一些决定性因素(例如变化是多久以前发生的)

1.11.3 柱状图

柱状图是数值在数据集中的统计分布图。水平方向代表数据集中唯一的数值,竖直方向表示该唯一值在光栅中出现的频率。柱状图在大部分光栅处理过程中是一项关键操作。

适用于一切以增强图片对比度为基础的对象分类和图片比较。如下图所示:

 

 

1.11.4 特征提取

特征提取是以手动或者自动的方式将图片中的点、线和多边形等元素数字化的工程。

这个过程也是光栅转换成矢量数据过程中图片矢量化的基础。

特征提取的一个实例是提取卫星影像中的海岸线信息并且将其另存为矢量数据集。(如果对过去几年的数据进行这一操作,就可以监测海岸线的侵蚀以及其他变化)

1.11.5 监督分类

地面物体反射不同波长的光依赖于其材料构成,特定类型的地面覆盖物有其特征的波长信息,总结为特征库。计算机可以根据这个特征库自动定位到一张新的图片上的相同位置。

1.11.6 非监督分类

对于这种方法,计算机可以在图片上对相似的反射值根据像素进行分组,并且不需要借助类似直方图之类的参考信息。

 

以上是关于python地理空间--概念引入的主要内容,如果未能解决你的问题,请参考以下文章

分享《Python地理空间分析指南(第2版)》中文PDF+英文PDF+源代码

多线程编程

使用Python+Folium实现地理空间可视化效果

在 python 中分箱和绘制地理空间数据

Python类OOPs概念[重复]

Python数据可视化:地理空间图表可视化(基础篇—7)