开源GIS与Python

主题:使用Python实现GIS的相关处理

内容:入门+示例+应用代码

Markdown-toc

【项目文件目录介绍】

GISandPython

0StudyMaterials #学习资料

1ORG #ORG模块的使用-矢量数据处理

2GDAL #GDAL模块的使用-栅格数据处理

3Proj.4 #开源的地图投影库

4Mapnik #地图渲染与出图

Python与开源GIS

基础类库(抽象库)

GDAL 是大部分开源GIS的基础,也包括如ArcGIS这样的商业软件

Proj.4 地图投影类库

geojson类库,用于 GeoJson 格式的数据处理

Rasterio用于栅格影像处理

Geos是由C开发的空间关系与分析类库

Python类库

Shapley 是基于 Geos 的封装 Python 库

Fiona 用于矢量数据的读入、写出

Rtree 是Rtree空间索引的类库

pyproj 是Proj.4的Python 接口扩展

python-rasterstats 用于栅格数据的计算

OWSLib 基于OGC标准进行信息访问

basemap 基于 Matplotlib 的绘图库

descartes 运用matplotlib对空间数据画图

mercantile 球面墨卡托投影

GIS工具

GeoPandas:整合了pandas,shapely,fiona,descartes,pyproj和rtrees,用于数据处理

GeoDjango django出品,集成了GIS功能的门户网站程序

python-rasterstats 栅格数据统计

GDAL项目

【学习资料】

【GDAL项目】Geospatial Data Abstraction Library项目,是根据地理数据抽象库对地理数据文件进行读写的一个项目

【背景】GDAL项目是用地理数据抽象模型对地理数据文件的读写管理,GDAL项目中对栅格数据的读写称为GDAL模块,对矢量数据的读写称为OGR模块

【疑问】对栅格数据读写(GDAL模块)和项目名(GDAL项目)一样,都称为GDAL;而对矢量数据读写却是OGR?

GDAL有两层含义

① GDAL项目:指用地理数据抽象模型来对地理数据模型进行读写管理,其包含了GDAL模块和OGR模块

② GDAL模块:特指GDAL项目中对栅格数据读写的模块。

【注意】单说GDAL,是指第一个含义。而同时谈GDAL/OGR则指的是该项目所属的模块

为什么模块要这样命名?

① OGR模块的全称:OGR最初用来表示开放GIS简单要素的参考实现(OpenGIS Simple Features Reference Implementation);但由于OGR与开放GIS简单要素规范并不完全兼容,所以名字被更改了。现在它的OGR部分并不代表任何东西,只是历史延续

② GDAL模块:还未找到依据

GDAL/OGR模块

GDAL/OGR是著名的开源GIS库,GDAL是对栅格数据进行操作,OGR是对矢量数据进行操作

【GDAL】Geospatial Data Abstraction Library,地理控件数据抽象库

是一个在 X/MIT 许可协议下的开源栅格空间数据转换库。它利用抽象数据模型来表达所支持的各种文件格式

它还有一系列命令行工具来进行数据转换和处理

提供对多种栅格数据的支持,包括Arc/Info ASCII Grid(asc)、GeoTiff(tiff)、Erdas Imagine Images(img)、ASCII DEM(dem)等格式

【OGR】OGR 是 GDAL 项目的一个分支,功能与GDAL类似,只不过它提供对矢量数据的支持

【选择理由】

ESRI的 ArcGIS,Google Earth和跨平台的GRASS GIS系统都使用了GDAL/OGR库

其他很多选择,大多数都是建立在GDAL基础之上的,学会了GDAL,很容易学会其他知识

GDAL-处理栅格数据

【抽象数据模型ADM】

GDAL使用抽象数据模型(Abstract Data Model)来解析它所支持的数据格式

抽象数据模型包括数据集(Dataset)、坐标系统、仿射地理坐标转换(Affine GeoTransform)、大地控制点(GCPs)、元数据(Metadata)、栅格波段(Raster Band)、颜色表(Color Table)、子数据集域(Subdatasets Domain)、图像结构域(Image_Structure Domain)、XML域(XML:Domains)

【GDAL核心类结构】

GDALMajorObject类:带有元数据的对象

GDALDataset类:

①从一个栅格文件中提取的相关联的栅格波段集合和这些波段的元数据;

②GDALDataset叶负责所有栅格波段的地理坐标转换和坐标系定义

GDALDriver类:文件格式驱动类,GDAL会为每一个所支持的文件格式创建一个该类的实体,来管理该文件格式

GDALDriverManger类:文件格式驱动管理类,用来管理GDALDriver类

GDALRasterBand类

OGR-处理矢量数据

【支持的文件格式】shapefiles、S-57、SDTS、PostGIS、Oracle Spatial、Mapinfo mid/mif、Mapinfo TAB

【OGR体系结构】

Geometry:类Geometry(包括OGRGeometry等类)封装了OpenGIS的矢量数据模型,并提供了一些几何操作,WKB(Well Knows Binary)和WKT(Well know Text)格式之间的相互转换,以及控件参考系统(投影)

Spatial Reference类:封装了投影和基准面的定义

Feature:封装了一个完整的Feature的定义,一个完整的Feature包括一个Geometry和一系列属性

Feature Definition:类 OGRFeatureDefn 里面封装了 feature 的属性,类型、名称及其默认的空间参考系统等。一个 OGRFeatureDefn 对象通常与一个层(layer)对应。

Layer:类 OGRLayer 是一个抽象基类,表示数据源类 OGRDataSource 里面的一层要素(Feature)。

Data Source:类 OGRDataSource 是一个抽象基类,表示含有 OGRLayer 对象的一个文件或一个数据库

Drivers:类 OGRSFDriver 对应于每一个所支持的矢量文件格式。类OGRSFDriver 由类 OGRSFDriverRegistrar 来注册和管理。

python与开源gis_GitHub - geodoer/GISandPython: 开源GIS与Python相关推荐

  1. python后端学什么框架_献给正在学习python的你, 10个最受欢迎的Python开源框架

    很多小伙伴在学习wen的时候说,有没有几个常用的框架,好多小伙伴都只说对了其中几个,只有少部分是说正确的,想要了解更多,欢迎大家订阅微信公众号:Python从程序猿到程序员,或者加4913.08659 ...

  2. python是高级动态编程语言-python是一种跨平台、开源、免费的高级动态编程语言,对么...

    python是一种跨平台.开源.免费的高级动态编程语言,对.python具有简单.易学.速度快.免费.开源.可移植性.可扩展性.丰富的库等优点.python语言极其容易上手,它是一种代表简单主义思想的 ...

  3. python是动态编程语言吗-python是一种跨平台、开源、免费的高级动态编程语言,对么...

    python是一种跨平台.开源.免费的高级动态编程语言,对.python具有简单.易学.速度快.免费.开源.可移植性.可扩展性.丰富的库等优点.python语言极其容易上手,它是一种代表简单主义思想的 ...

  4. 【Python进阶】Python进阶专栏、编程与开源框架知识星球上线,等你来follow

    大家好,今天我将在有三AI开设新专栏<Python进阶>.在这个专栏中,我们会讲述Python的各种进阶操作,包括Python对文件.数据的处理,Python各种好用的库如NumPy.Sc ...

  5. opencv 训练人脸对比_【项目案例python与人脸识别】基于OpenCV开源计算机视觉库的人脸识别之python实现...

    " 本项目是一个基于OpenCV开源库使用python语言程序实现人脸检测的项目,该项目将从[项目基础知识](即人脸识别的基本原理).[项目实践](人脸识别所需要的具体步骤及其python程 ...

  6. python web框架对比_Python六大开源框架对比

    Python 是一门动态.面向对象语言.其最初就是作为一门面向对象语言设计的,并且在后期又加入了一些更高级的特性.除了语言本身的设计目的之外,Python标准 库也是值得大家称赞的,Python甚至还 ...

  7. python是开源工具吗_微软最强 Python 自动化工具开源了!不用写一行代码

    1. 前言 最近,微软开源了一款非常强大的 Python 自动化依赖库:playwright-python,它支持主流的浏览器,包含:Chrome.Firefox.Safari.Microsoft E ...

  8. python开发框架大全_最受欢迎 Top 12 Python 开源框架,你都用过吗?

    作者 | 学Python的阿勇 责编 | 夕颜 出品 | CSDN博客 今天给大家带来了12个在GitHub等开源网站中最受欢迎的Python开源框架.如果你正在学习python,那么这12个开源框架 ...

  9. github怎么搜索开源的代码_5.2.PYTHON开发利器之使用VS Code+GitHub进行python开源项目开发...

    上一节介绍了使用vscode+Git进行python程序版本控制,详见5.1.PYTHON开发利器之使用VS Code+Git进行python程序版本控制 0.前言 GitHub是目前最大的开源代码托 ...

最新文章

  1. as 不显示gradle视图_Python构建RESTful网络服务[Django篇:基于类视图的API]
  2. 汇总| SLAM优秀开源工程
  3. elasticsearch使用bulk实现批量操作
  4. 如何迅速成为Java高手[Tomjava原创]
  5. 调和油、色拉油、花生油哪种吃着好
  6. imagesc demo
  7. python 编程入门-实验一 Python程序设计入门
  8. Android之Activity的四种启动模式
  9. Oracle 的一些语句
  10. python实现多人聊天udp_python—多任务版udp聊天机器人
  11. python与机械教育初探_Python公开课-机械学习之手写识别
  12. 互联网日报 | 5月4日 星期二 | 水滴公司启动上市路演;蔚来汽车累计交付量突破10万里程碑;巴菲特透露接班人选
  13. 云原生架构沙龙(成都站)圆满结束(附胶片下载)
  14. 罗永浩:交个朋友直播间单日支付金额突破1亿元
  15. Ubuntu系统桌面任务栏和启动器全部消失解决方案
  16. 一致性 hash 算法
  17. iOS中 H5的input输入框focus()无法自动拉起键盘(解决方法)
  18. 常用命令(3)---Assertion(selenium学习笔记(一)seleniumIDE)
  19. 小客车年检(年审)相关的技术参数一览
  20. 【技术】UEFI基础服务:系统表

热门文章

  1. 谈谈百度/GOOGLE联盟和一般联盟的区别
  2. [ctf.show.reverse] 来一个派森,好好学习天天向上
  3. 【JavaScript进阶学习】NodeJs语言的介绍及基本使用
  4. Cloud Hosted Notebook Showdown(云托管笔记本)
  5. 2020-4-22 深度学习笔记20 - 深度生成模型 5 (有向生成网络--sigmoid信念网络/可微生成器网络/变分自编码器VAE/生产对抗网络GAN/生成矩匹配网络)
  6. 【RISC-V】SiFive Unmatched开发板开发手记02
  7. 云流化助力虚拟展厅,更炫酷的展示方案
  8. ffmpeg源码精读1,音视频处理概述
  9. WordPress缩略图美化插件ThnBoV1.3.1ThnBo
  10. 服务器 远程桌面限制IP 与 (虚拟专用网络) 结合的安全策略