Python地理数据处理 一 :地理空间数据入门


写在前面

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

1.Python和开源工具

    使用python和开源工具处理空间数据有以下几个原因:
1.python相比于其他语言来说,更容易学习;
2.代码容易阅读;
3.对于从学习其他语言转变而来,python更容易上手;
4.Python含有大量免费扩展模块,且许多都是开源的
    Python附带的核心语言包及众多的模块代码,都可以在自己的代码中使用。此外,Python还有很多包需要通过其他方式进行下载获取:
1.PyPI · The Python Package Index(稳定,包含60000多种扩展模块)
2.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),每一个像素都包含一个高程值。
湖南省2010年降水量栅格数据集

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

3 地理数据处理

    其实使用GIS的地理数据处理工具就像是做数据处理一样,可以应用于几乎所有的事情当中
    早期空间分析比较著名的例子是John Snow的故事,他使用空间分析的方法确定了1854年爆发的霍乱疫情的形成原因。在地图上
BROAD大街上的水泵(PUMP)位于中间,其中条形块代表一个霍乱受害者,大多数受害者都从此处取水,因而关闭此水泵,将阻止病毒的传播。
Soho区霍乱疫情爆发的地图一角
    对于流行病,空间分析任然是其重要组成部分,当然也涉及很多其他领域,如濒危动物生活习性研究、模拟植被覆盖、模拟森林碳汇等。

猜你喜欢

转载自blog.csdn.net/amyniez/article/details/112971618
今日推荐