目录

  • 写在前面
  • 1.Python和开源工具
  • 2.空间数据类型
  • 3 地理数据处理

写在前面

    从今天开始,我将在平台上发布一些关于地理数据处理方面的Python学习心得,谨代表我个人的看法,希望各位能帮我指出我的不足之处,我将加以改正。

1.Python和开源工具

    使用python和开源工具处理空间数据有以下几个原因:
1.python相比于其他语言来说,更容易学习;
2.代码容易阅读;
3.对于从学习其他语言转变而来,python更容易上手;
4.Python含有大量免费扩展模块,且许多都是开源的
    Python附带的核心语言包及众多的模块代码,都可以在自己的代码中使用。此外,Python还有很多包需要通过其他方式进行下载获取:

  1. PyPI · The Python Package Index(稳定,包含60000多种扩展模块)

  1. Python Extension Packages(不太稳定,但比较直观好用)


    我将主要学习用于地理空间数据的、比较流行的开源Python模块,如:地理空间数据抽象库(Geospatial Data Abstraction Library,GDAL)是一个用于空间数据读写的非常流行的C/C++库,针对Python、.NET、Ruby和其他语言进行相应的绑定开发。其中,OGR是GDAL项目的一个分支,功能与GDAL类似,只不过它提供对矢量数据的支持。

    GDAL提供对多种栅格数据的支持,包括Arc/Info ASCII Grid(asc),GeoTiff (tiff),Erdas Imagine Images(img),ASCII DEM(dem) 等格式。GDAL使用抽象数据模型(abstract data model)来解析它所支持的数据格式,抽象数据模型包括数据集(dataset),坐标系统,仿射地理坐标转换(Affine Geo Transform), 大地控制点(GCPs), 元数据(Metadata),栅格波段(Raster Band),颜色表(Color Table),子数据集域(Subdatasets Domain),图像结构域(Image_Structure Domain),XML域(XML:Domains)。

  • GDALMajorObject类:带有元数据的对象。
  • GDALDdataset类:通常是从一个栅格文件中提取的相关联的栅格波段集合和这些波段的元数据;GDALDdataset也负责所有栅格波段的地理坐标转换(georeferencing transform)和坐标系定义。
  • GDALDriver类:文件格式驱动类,GDAL会为每一个所支持的文件格式创建一个该类的实体,来管理该文件格式。
  • GDALDriverManager类:文件格式驱动管理类,用来管理GDALDriver类。

OGR体系结构 :

  • Geometry类:Geometry (包括OGRGeometry等类)封装了OpenGIS的矢量数据模型,并提供了一些几何操作,WKB(Well Knows Binary)和WKT(Well Known Text)格式之间的相互转换,以及空间参考系统(投影)。
  • Spatial Reference类:OGRSpatialReference封装了投影和基准面的定义。
  • Feature类:OGRFeature封装了一个完整feature的定义,一个完整的feature包括一个geometry和geometry的一系列属性。
  • Feature Definition类:OGRFeatureDefn里面封装了feature的属性,类型、名称及其默认的空间参考系统等。一个OGRFeatureDefn对象通常与一个层(layer)对应。
  • Layer类:OGRLayer是一个抽象基类,表示数据源类OGRDataSource里面的一层要素(feature)。
  • Data Source类:OGRDataSource是一个抽象基类,表示含有OGRLayer对象的一个文件或一个数据库。
  • Drivers类:OGRSFDriver对应于每一个所支持的矢量文件格式。类OGRSFDriver由类OGRSFDriverRegistrar来注册和管理。

2.空间数据类型

    首先空间数据分为两种类型:矢量和栅格。
    矢量数据模型,也称为离散对象模型,是采用离散对象来表示地球表面的空间要素。数据构成包括:点、线、面。例如,一个包含各省边界的数据集就是矢量数据,并且用多边形表示省或市,用线表示河流或者道路,用点表示气象站或者房屋,都是矢量数据的表现形式。
    栅格数据模型用规则格网来覆盖整个网络空间。格网中的各个像元值与其位置上的空间现象特征相对应,而且像元值的变化反映了现象的空间变异。栅格数据用单个像元代表点,用一系列相邻像元代表线,用连续像元的集合代表面。相关参数包括:像元值、像元大小、单元深度、栅格波段和空间参照。
    使用数字数据,可以将多个属性值附加到每个要素上,例如,对每一条车道,你可以储存它的名字、限速、车道数或者是你感兴趣的信息。
    栅格数据是数据集的统称,是一个由二维或三维阵列组成的数据值,其实,航空相片就是一种普遍使用的栅格数据类型。栅格数据集非常适合表示连续的数据,不仅是照片(卫星相片)。如降水数据、温度数据和其他变量,非常有用的是数字高程模型(DEM),每一个像素都包含一个高程值。

    我们可以知道,对于涉及地形变化的数据集,栅格数据比矢量数据更合适,如植被制图、集水区域边界等,如果你想进行一些更复杂的操作,可以使用像素值计算有用的信息,如坡度、坡向、径流分析、通视分析等。
    矢量数据和栅格数据也可以一起使用,比如将影像栅格作为底图(分辨率较低),在其上面绘制道路矢量数据(精确度较高)。

3 地理数据处理

    其实使用GIS的地理数据处理工具就像是做数据处理一样,可以应用于几乎所有的事情当中
    早期空间分析比较著名的例子是John Snow的故事,他使用空间分析的方法确定了1854年爆发的霍乱疫情的形成原因。在地图上
BROAD大街上的水泵(PUMP)位于中间,其中条形块代表一个霍乱受害者,大多数受害者都从此处取水,因而关闭此水泵,将阻止病毒的传播。

    对于流行病,空间分析任然是其重要组成部分,当然也涉及很多其他领域,如濒危动物生活习性研究、模拟植被覆盖、模拟森林碳汇等。

Python地理数据处理 一 :地理空间数据入门相关推荐

  1. python地理数据处理 下载_python-doc/将Python用于地理空间数据处理.md at master · zhuxinyizhizun/python-doc · GitHub...

    毫无疑问,Python是当今最流行,最通用的编程语言之一.这有很多种强有力的原因,但在我看来,最重要的是:开源定义,语法简单,包括电池的理念(batteries included philosophy ...

  2. 《Python地理数据处理》——导读

    前言 本书可以帮助你学习使用地理空间数据的基础知识,主要是使用GDAL / OGR.当然,还有其他选择,但其中一些都是建立在GDAL的基础之上,所以如果你理解了本书中的内容,就可以很轻松地学习其他知识 ...

  3. 《Python 地理数据处理》by Chris Garrard

    科研小白从头开始学习用Python处理栅格数据.矢量数据等. 下面就跟我一起开启<Python 地理数据处理>的学习之旅吧!!! 本书主要利用Python + GDAL 等相关库进行地理空 ...

  4. Python读写矢量数据(2)矢量数据写入(属性数据)——Python地理数据处理学习分享

    这一节主要介绍矢量数据的写入(只有属性数据,无几何),如果有读者没有读取的基础建议先看一下上一篇文章,需要对矢量数据读取有一定的了解才能继续学习本节.在这里我们用到的数据仍为goble文件夹下的数据, ...

  5. 地理数据处理_矢量图处理_python_OGR

    OGR 简单要素库是地理空间数据抽象库(Geospatial Data Abstraction Library,GDAL)的一部分,它是一个非常流行的用于读写空间数据的开源库 环境 python 2. ...

  6. ArcGIS地理数据处理高级教程_002_2初识地理处理工具

    ArcGIS地理数据处理高级教程 2.2 认识ArcGIS desktop 10.8 软件装上以后在开始菜单中就能找到ArcGIS这个文件夹,里面有很多东西,我们用的最多的是这个ArcMap 10.8 ...

  7. python结合ogr2ogr之地理数据格式转换-2

    python结合ogr2ogr之地理数据格式转换-1 这篇公众号文章里,初步记录了使用python调用org2ogr进行数据格式转换以及打包exe的过程,测试了常用的几种数据,shp数据.dxf数据. ...

  8. python爬虫实践——零基础快速入门(四)爬取小猪租房信息

    上篇文章我们讲到python爬虫实践--零基础快速入门(三)爬取豆瓣电影 接下来我们爬取小猪短租租房信息.进入主页后选择深圳地区的位置.地址如下: http://sz.xiaozhu.com/ 一,标 ...

  9. python数据科学系列:pandas入门详细教程

    导读 前2篇分别系统性介绍了numpy和matplotlib的入门基本知识,今天本文自然是要对pandas进行入门详细介绍,通过本文你将系统性了解pandas为何会有数据分析界"瑞士军刀&q ...

  10. python为什么那么难学_Python入门很难吗? 为什么越来越多的人都学Python?

    Python都说是最容易学习的编程语言,但是为什么还是有很多的小白在学习的过程中学的云里雾里,一天到晚都是报错,异常,这也怪不得会有那么多人说,学Python是从入门到入土!其实一门编程语言不像语文那 ...

最新文章

  1. Word VSTO Error:Interop type 'Microsoft.Office.Interop.OneNote.Application' cannot be embedded...
  2. 网站使用QQ登录问题小结
  3. java面试题大合集(开发者必看二)
  4. java编程题库下载_Java习题
  5. VMWare虚拟机下为Ubuntu 12.04.1配置静态IP(NAT方式)
  6. java多线程中注入Spring对象问题
  7. 关于HTML的面试题-html5/css3篇
  8. CVPR 2021 Oral | Transformer!UP-DETR:无监督预训练检测器
  9. mysql 修改表属主_mysql主从配置实现一主一从读写分离
  10. 组合数学之排列组合(Permutations and Combinations)(四种情况)
  11. 【数据处理】奇异值分解(SVD) 数据降噪的python实现
  12. 机器学习基础:评价指标(Machine Learning Fundamentals: Evaluation Metrics)
  13. 为什么微盟耗时 7 天 7 夜才找回删库数据?
  14. 乐视云视频PHP接口操作视频上传,编辑,查询以及删除
  15. IIS、MySQL、Redis环境搭建
  16. HTML5与传统HTML的区别
  17. Linux设置每分钟、每小时、每天、每周、每月、每年定时执行
  18. 全连接网络实现Fashion数据集学习/预测
  19. windows下ping特定端口
  20. 极客假日礼物指南(我们喜欢的极客资料)

热门文章

  1. 联通专线切换成移动专线问题故障解决
  2. 现代大学英语精读第二版(第六册)学习笔记(原文及全文翻译)——3 - What Is News?(新闻是什么?)
  3. Window部分软件图标显示不正常
  4. Odoo12社区版分拣单处理时生成欠单流程
  5. uniapp小程序分享转发功能
  6. 全网最最最详细的软件著作权申请步骤
  7. oracle数据库中视图是什么,orcl数据库视图是什么
  8. automation 服务器不能创建对象
  9. 【Java工具类】(27)—AES加密工具类
  10. 深度学习 DEEP LEARNING 1-2章