python地理空间分析(有哪些GIS+Python的开发经验值得分享)

1.有哪些 GIS+Python 的开发经验值得分享

python之于GIS与python之于IT类似

GISer采用python的原因也在于“人生苦短,我用python”

python在gis中的应用非常之广

1. desktop GIS:

ArcGIS从版本10开始不再支持原来的VBA,而改用python

QGIS本身大部分的代码特别是插件部分可以采用python进行开发

2. 地图引擎

mapnik—基于C++引擎的顶级地图引擎库,和python结合比较紧密

mapfish—支持部分专题地图在线制作

3. webgis

python+geodjango 是最常用也最庞大的后台框架

GISer使用python一定要充分发挥python语言的特性

如ArcGIS集成phthon是利用了python的脚本语言特性

后台webgis等服务,可以发挥python作为语言黏合剂的特性,充分利用已有的GIS算法库

python地理空间分析指南,python地理空间分析指南pdf,python地理空间分析指南电子书

2.怎么样用Python实现地理编码

引言今天看到一篇阿里云的文章天下武功,唯快不破,以物流行业为例,分析了 PostgreSQL 与 Greenplum 在地理位置信息处理,最佳路径算法,机器学习等方面的物流行业应用方法。

其中提到了地址转换成坐标的问题,更专业些的名词应该是“地理编码”,即知道一个地址,如北京市海淀区上地十街10号,怎么样可以获取到对应的经纬度位置信息(40,116),或者反过来。地理编码概念很多地图相关的厂商都提供了相关的API,我们可以直接利用这些API得到这些信息。

比如百度的Geocoding API。Geocoding API是一类接口,用于提供从地址到经纬度坐标或者从经纬度坐标到地址的转换服务,用户可以使用C# 、C++、Java等开发语言发送请求且接收JSON、XML的返回数据。

Geocoding API包括地址解析和逆地址解析功能:借用ESRI文档中更直观的一张图Paste_Image.png地理编码:即地址解析,由详细到街道的结构化地址得到百度经纬度信息,例如:“北京市海淀区中关村南大街27号”地址解析的结果是“lng:116.31985,lat:39.959836”。同时,地理编码也支持名胜古迹、标志性建筑名称直接解析返回百度经纬度,例如:“百度大厦”地址解析的结果是“lng:116.30815,lat:40.056885” 。

逆地理编码:即逆地址解析,由百度经纬度信息得到结构化地址信息,例如:“lat:31.325152,lng:120.558957”逆地址解析的结果是“江苏省苏州市虎丘区塔园路318号”。不过,需要说明的一点是,若想使用百度的这套API的前提是,有百度账号并申请相应的Key。

其实,除了百度之外,谷歌、ESRI、微软的Bing等都有类似的地理编码服务。不过这些服务大多没有专门针对Python的库并且彼此之间的Json结构也不一致。

于是乎专治不服的Python大神做了一个专门的地理编码工具geocoder,将这些不同厂商的服务整合统一起来。地理编码工具geocoder首先看一下它都支持哪些公司的地理编码服务:ProviderOptimalUsage PolicyArcGIS World Baidu China API key Bing World API key CanadaPost Canada API key FreeGeoIP World Geocoder.ca CA & US Rate Limit GeocodeFarm World Policy GeoNames World Username GeoOttawa Ottawa Google World Rate Limit, Policy HERE World API key IPInfo World Mapbox World API key MapQuest World API key Mapzen World API key MaxMind World OpenCage World API key OpenStreetMap World Policy Tamu US API key TomTom World API key What3Words World API key Yahoo World Yandex Russia TGOS Taiwan 安装pip install geocoder地理编码import geocoderg = geocoder.google("1403 Washington Ave, New Orleans, LA 70130")g = geocoder.arcgis(u"北京市海淀区上地十街10号")g.latlng输出为[29.9287839, -90.08421849999999]也可以查看完整的geojsong.geojson输出为{'bbox': [-90.0855674802915,29.9274349197085,-90.0828695197085,29.9301328802915],'geometry': {'coordinates': [-90.08421849999999, 29.9287839],'type': 'Point'},'properties': {'accuracy': u'ROOFTOP','address': u'1403 Washington Ave, New Orleans, LA 70130, USA','bbox': [-90.0855674802915,29.9274349197085,-90.0828695197085,29.9301328802915],'city': u'New Orleans','confidence': 9,'country': u'US','county': u'Orleans Parish','encoding': 'utf-8','housenumber': u'1403','lat': 29.9287839,'lng': -90.08421849999999,'location': '1403 Washington Ave, New Orleans, LA 70130','neighborhood': u'Garden District','ok': True,'place': u'','postal': u'70130','provider': 'google','quality': u'street_address','state': u'LA','status': 'OK','status_code': 200,'street': u'Washington Ave'},'type': 'Feature'}直接用Google尝试查询中文地址时失败g = geocoder.google(u"北京市海淀区上地十街10号")g.ok输出为False用百度应该没问题,不过我没有申请相应的key。

切换到arcgis,能够成功编码g = geocoder.arcgis(u"北京市海淀区上地十街10号")g.latlng输出为[40.050934, 116.30079]逆地理编码g = geocoder.google([29.9287839, -90.08421849999999], method='reverse')print g.addressprint g.cityprint g.stateprint g.country输出为1403 Washington Ave, New Orleans, LA 70115, USANew OrleansLAUS换成中国的地址g = geocoder.google([40.050934, 116.30079], method='reverse')print g.addressprint g.cityprint g.stateprint g.country输出为Bai Du Da Sha, Haidian Qu, Beijing Shi, China, 100193BeijingBeijing ShiCN用arcgis的服务试试g = geocoder.arcgis([40.050934, 116.30079], method='reverse')print g.addressprint g.cityprint g.stateprint g.country输出为None北京市北京市CHNGoogle转换成的是英文,但地址比较全。arcgis虽然是中文,但是详细的地址居然输出为了None,这有个X用。

其他geocoder 的功能不止于此,它还可以查IP(包括自己的)。g = geocoder.ip('199.7.157.0')print g.latlngprint g.cityg = geocoder.ip('me')print g.latlngprint g.city输出为[43.6934, -79.4857]Toronto[51。

地理,分析,空间,python

3.如何将DEM用python获取河流、河流流域水系地图

将dem数据导入arcmap软件中

利用dem提取河网的方法和步骤

由于dem数据在采集制作过程中,数据元素中存在坑点或叫污点(如:因地貌原有造成,提取时会影响提取的精确度),因而利用工具箱中的填挖工具进行填挖

利用dem提取河网的方法和步骤

河水是从高往低处流,具有方向性,利用填挖的结果点击流向分析工具,进行流向提取

利用dem提取河网的方法和步骤

利用dem提取河网的方法和步骤

河水汇流最终需要集中在河流中,因而需计算各个元素内积累的汇流量,结合河流流向点击汇流量分析工具计算该地方各处汇流量

利用dem提取河网的方法和步骤

利用dem提取河网的方法和步骤

根据对河流特性,对需要提取河网密度情况,设置一定的阈值,阈值是代表河水汇流面积,可粗劣计算多少的汇流面积会形成河沟,然后提取河网。点击栅格计算工具提取

利用dem提取河网的方法和步骤

利用dem提取河网的方法和步骤

由于计算提取的分为0和1两个值,将该结果分类去掉0值的,1值的代表河网,点击分类工具

利用dem提取河网的方法和步骤

利用dem提取河网的方法和步骤

利用河网栅格数据结果与流向数据结果将栅格河网转化为矢量河网,点击转化工具,分析去取完成

利用dem提取河网的方法和步骤

利用dem提取河网的方法和步骤

4.如何用python在文件地理数据库调取栅格文件

function inorder($root)

gcc version 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.11.00)

configure:3438: $? = 0

configure:3427: gcc -V >&5

llvm-gcc-4.2: argument to `-V' is missing

configure:3438: $? = 1

configure:3427: gcc -qversion >&5

i686-apple-darwin11-llvm-gcc-4.2: no input files

configure:3438: $? = 1

5.什么是地理空间

GIS是世界上独一无二的一种数据库――空间数据库(Geodatabase)。它是一个“用于地理的信息系统”。从根本上说,GIS是基于一种使用地理术语来描述世界的结构化数据库。

这里我们来回顾一些在空间数据库中重要的基本原理。

· 地理表现形式

作为GIS空间数据库设计工作的一部分,用户要指定要素该如何合理的表现。例如,地块通常用多边形来表达,街道在地图中是中心线(centerline)的形式,水井表现为点等等。这些要素会组成要素类,每个要素类都有共同的地理表现形式。

每个GIS数据集都提供了对世界某一方面的空间表达,包括:

· 基于矢量的要素(点、线和多边形)的有序集合

诸如数字高程模型和影像的栅格数据集

网络

地形和其它地表

测量数据集

其他类型数据,诸如地址、地名和制图信息

描述性的属性

除了地理表现形式以外,地理数据集还包括传统的描述地理对象的属性表。许多表和空间对象之间可以通过它们所共有的字段(也常称为“关键字”)相互关联。就像它们在传统数据库应用中一样,这些以表的形式存在的信息集和信息关系在GIS数据模型中扮演着非常关键的角色。

空间关系:拓扑和网络

空间关系,比如拓扑和网络,也是一个GIS数据库的重要部分。使用拓扑是为了管理要素间的共同边界、定义和维护数据的一致性法则,以及支持拓扑查询和漫游(比如,确定要素的邻接性和连接性)。拓扑也用于支持复杂的编辑,和从非结构化的几何图形来构建要素(例如,用线来构建多边形)。

地理要素共享几何形状。可以使用节点、边、面的关系来描述要素的几何形状

在这个网络示例中,街道要素代表连接它们的端点(称为“连接”)的边。

转向模型可用于控制从一边到另一边的通行能力

· 专题图层与数据集

GIS将空间数据组织成一系列的专题图层和表格。由于GIS中的空间数据集具有地理参考,因此它们具有现实世界的位置信息并互相叠加。

GIS集成了多种类型的空间数据

在一个GIS中,同类型的地理对象集合被组织成图层,例如地块、水井、建筑物、正射影像以及基于栅格的数字高程模型(DEM)。明确定义的地理数据集对于一个实用的地理信息系统是相当重要的,同时专题信息集合使用层来组织,这样的思想也是GIS数据集一个关键的思想。

数据集可以用于表达:

原始量测值(例如卫星影像)

经过解译的信息 l 通过空间分析和建模处理而得来的数据

通过层之间共同的地理位置,我们可以很容易地得到多个层之间的空间关系。

GIS使用普通的对象类来管理这些简单的图层,同时凭借一套功能丰富的工具获取数据层之间的关键联系。

GIS会使用通常是来自不同组织机构,并且具有各种表现方式的大量数据集。因此对于GIS数据集很重要的是:

· 使用简单并易于理解

· 易于同其他的地理数据集结合使用

· 能够被有效地编辑与校验

· 能够形成具有内容详实,使用和目标描述明确的清晰文档

任何的GIS数据库或者用基于文件的数据组织方式都遵循这些共同的原则与概念。每个GIS都需要有一个机制依据这些原则来描述地理数据,并且通过一套综合的工具来使用和管理此信息。

python地理空间分析

转载请注明出处编程代码网 » python地理空间分析(有哪些GIS+Python的开发经验值得分享)

资讯

pythonclass使用方法(怎样使用Python的“CLASS”?)

阅读(8)

本文主要为您介绍pythonclass使用方法,内容包括python里面怎么调用class,怎样使用Python的“CLASS”?,python里面怎么调用class。class就是类定义。就是把数据及其上的操作封装的单元。支持面向对象的语言都有这个概念。比如c++,java之类的

资讯

pythonbreak多重循环(Python中断多重循环的几种思路)

阅读(9)

本文主要为您介绍pythonbreak多重循环,内容包括Python中断多重循环的几种思路,如何在Python中使用break跳出多层循环,python能不能跳出多重循环。事实上,Python的标准语法是不支持跳出多重循环的,所以只能利用一些技巧,大概的思路有:写成函数、

资讯

哈工大分词python(如何用python进行中文分词)

阅读(7)

本文主要为您介绍哈工大分词python,内容包括如何用python进行中文分词,如何利用Python对中文进行分词处理,如何用python进行中文分词。安装jiebapip install jieba然后>>> import jieba>>> seg_list = jieba.cut("

资讯

python求夹角(Python编程:输入三角形的边a,b,c,求夹角C)

阅读(7)

本文主要为您介绍python求夹角,内容包括Python编程:输入三角形的边a,b,c,求夹角C,Python编程:输入三角形的边a,b,c,求夹角C,Python求三角形面积夹角的一道题的。我刚做完这题。我的答案:import matha = float(raw_input())b = float(raw_inp

资讯

python3读取xls文件(python读取excel格式)

阅读(7)

本文主要为您介绍python3读取xls文件,内容包括python读取excel格式,python怎样读取xls文件内容,如何用python读取excel文件。Python读写EXCEL文件常用方法大全Huny 信息网络工程研究中心 2020-12-191 前言python读写excel的方式有

资讯

pythonsetupmodules(如何卸载Python通过setup.py安装的模块)

阅读(8)

本文主要为您介绍pythonsetupmodules,内容包括怎么用setup.py安装模块,如何使用和制作Python安装模块,如何在python里安装vacuumsetup模块。我们使用 python setup.py install 来安装python包,卸载有如下2种情况:window下直接卸载就行2、lin

资讯

python处理日志文件(如何用python分析网站日志)

阅读(5)

本文主要为您介绍python处理日志文件,内容包括python的日志,如何做到一天是单独一个日志,并且定期清理?,python怎么处理日志打印,如何用python分析网站日志。#coding:utf-8 #file: FileSplit.pyimport os,os.path,timedef FileSplit

资讯

搜狗词库python(搜狗细胞词库如何使用?)

阅读(5)

本文主要为您介绍搜狗词库python,内容包括python结巴分词能加载搜狗词库吗,个练习打字的游戏在python中能不能引用个英文词库,搜狗修改词库。手动下载安装去搜狗输入法细胞词库官网直接下载你需要的词库,细胞词库是一个格式为.scel的文件,下

资讯

python打印系统时间(python打印出函数执行所用时间)

阅读(4)

本文主要为您介绍python打印系统时间,内容包括python打印出函数执行所用时间,如何用python输出当前时间,python怎样获取系统时间。有两种方法(我利用的是Python27):加载import time模块,可以粗略的计算,如下:print "@%s, {%s} sta

资讯

cpythonidentifier(undeclaredidentifier应该怎么解决)

阅读(5)

本文主要为您介绍cpythonidentifier,内容包括undeclaredidentifier应该怎么解决,python判断合法标识符,C语言错误提示identifier'b'是什么意思。应该是你的数据类型没有定义,除了语言本身的那些数据类型,其他的类型需要自己定义。deb

资讯

pythonclass使用方法(怎样使用Python的“CLASS”?)

阅读(8)

本文主要为您介绍pythonclass使用方法,内容包括python里面怎么调用class,怎样使用Python的“CLASS”?,python里面怎么调用class。class就是类定义。就是把数据及其上的操作封装的单元。支持面向对象的语言都有这个概念。比如c++,java之类的

资讯

pythonbreak多重循环(Python中断多重循环的几种思路)

阅读(9)

本文主要为您介绍pythonbreak多重循环,内容包括Python中断多重循环的几种思路,如何在Python中使用break跳出多层循环,python能不能跳出多重循环。事实上,Python的标准语法是不支持跳出多重循环的,所以只能利用一些技巧,大概的思路有:写成函数、

资讯

哈工大分词python(如何用python进行中文分词)

阅读(7)

本文主要为您介绍哈工大分词python,内容包括如何用python进行中文分词,如何利用Python对中文进行分词处理,如何用python进行中文分词。安装jiebapip install jieba然后>>> import jieba>>> seg_list = jieba.cut("

资讯

python求夹角(Python编程:输入三角形的边a,b,c,求夹角C)

阅读(7)

本文主要为您介绍python求夹角,内容包括Python编程:输入三角形的边a,b,c,求夹角C,Python编程:输入三角形的边a,b,c,求夹角C,Python求三角形面积夹角的一道题的。我刚做完这题。我的答案:import matha = float(raw_input())b = float(raw_inp

资讯

python3读取xls文件(python读取excel格式)

阅读(7)

本文主要为您介绍python3读取xls文件,内容包括python读取excel格式,python怎样读取xls文件内容,如何用python读取excel文件。Python读写EXCEL文件常用方法大全Huny 信息网络工程研究中心 2020-12-191 前言python读写excel的方式有

资讯

pythonsetupmodules(如何卸载Python通过setup.py安装的模块)

阅读(8)

本文主要为您介绍pythonsetupmodules,内容包括怎么用setup.py安装模块,如何使用和制作Python安装模块,如何在python里安装vacuumsetup模块。我们使用 python setup.py install 来安装python包,卸载有如下2种情况:window下直接卸载就行2、lin