(欢迎转载,需要保留文末的个人微信公众号二维码)

pandas简介

Pandas是Python的一个结构化数据分析的利器。其中,DataFrame是比较常用的处理数据的对象,类似于一个数据库里的table或者excel中的worksheet,可以非常方便的对二维数据读取(xls,csv,hdf等)、增删改查、基本绘图等。pandas应该是用python做数据分析必不可少的工具。

看一个dataframe的实例

geopandas简介

DataFrame相当于GIS数据中的一张属性表,为了将pandas的特性用到空间数据,就有了geopandas。其目标是使得在python中操作地理数据更方便。

Pandas is an open source project to make working with geospatial data in python easier. GeoPandas extends the datatypes used by pandas to allow spatial operations on geometric types. Geometric operations are performed by shapely. Geopandas further depends on fiona for file access and descartes and matplotlib for plotting.

geopandas结合了pandas和shapely的功能,扩展了pandas在空间数据操作方面的能力,从而使得你可以轻松的用python实现空间数据分析。

看一个geodataframe的实例

与dataframe相对,直观的区别是多了一个geometry的字段。

安装

pip install geopandas
# or
conda install -c conda-forge geopandas

官网示例

先直接照搬一个官网上的例子

p1 = Polygon([(0, 0), (1, 0), (1, 1)])
p2 = Polygon([(0, 0), (1, 0), (1, 1), (0, 1)])
p3 = Polygon([(2, 0), (3, 0), (3, 1), (2, 1)])
g = gpd.GeoSeries([p1, p2, p3])
g.plot()

可以非常方便的计算面积和缓冲区

print g.area
g.buffer(0.5).plot()

还有其他空间数据分析的功能,有兴趣可以去官网了解下。

示例2. 构建geodataframe对象

gepandas提供了多个读取矢量空间数据的接口,支持包括shapefile,geojson等。也支持直接从已有的dataframe对象生成geodataframe,示例如下:

df = pd.DataFrame(np.random.randn(50, 3),columns=['X', 'Y', 'Z'])
geom = [shapely.geometry.Point(xy) for xy in zip(df.X, df.Y)]
gdf = geopandas.GeoDataFrame(df, geometry=geom)
print type(gdf)

输出为

<class 'geopandas.geodataframe.GeoDataFrame'>

示例3. osm路网

下面这个例子,首先获取一个城市(如青岛)的空间范围,根据这个范围下载openstreetmap的道路数据存入geodataframe对象,然后绘制出来。

1. 获取空间范围

这里用之前提到的geocoder这个工具,网友也提到这些地理编码获取的坐标并不准确,我们暂且先不考虑精度的问题。

import geocoder
from shapely.geometry import Polygong = geocoder.arcgis(u"青岛")
min_lat = g.bbox.get('southwest')[0]
min_lon = g.bbox.get('southwest')[1]
max_lat = g.bbox.get('northeast')[0]
max_lon = g.bbox.get('northeast')[1]boundary = Polygon([(min_lon, min_lat),(min_lon,max_lat),(max_lon,max_lat), (max_lon, min_lat)])

这样获取到的青岛市的空间范围(外接矩形)为

{'northeast': [36.209606, 120.482939], 'southwest': [35.987606, 120.260939]}
2. 下载osm数据

这里用到geopandas_osm这个工具,安装命令为

pip install git+https://github.com/jwass/geopandas_osm.git

将空间范围的polygon对象作为参数即可,可以查看一下对象类型和投影参数:

import geopandas_osm.osm
df = geopandas_osm.osm.query_osm('way', boundary, recurse='down', tags='highway')print type(df)
print df.crs

输出为

<class 'geopandas.geodataframe.GeoDataFrame'>
{'init': 'epsg:4326', 'no_defs': True}

直接获取到的osm数据比较乱,做进一步筛选:

way = df[df.type == 'LineString'][['highway', 'name', 'geometry']]
way.head()

可以计算道路的长度,这里只是示意。直接计算length并不对,应该先投影到平面坐标系。

df.ix[0].geometry.length

输出为

0.0014679943869086182
3. 绘制路网

可以直接用plot命令,绘制出来:

way.plot(column="name",colormap=cm.coolwarm_r)

代码下载

如果对本文中的代码(.ipynb文件)感兴趣,百度网盘链接:http://pan.baidu.com/s/1mh8FghE, 密码请在关注个人微信公众号stdrei后,输入口令‘pandas2geo’自动获取。

从pandas到geopandas相关推荐

  1. matplotlib可视化_EDA:Geopandas,Matplotlib和Bokeh中的可视化

    matplotlib可视化 Nowadays, everyone is immersed with plenty of data from news sources, cellphones, lapt ...

  2. 强大的GeoPandas,几行代码实现点转线功能

    文章目录 强大的GeoPandas,几行代码实现点转线功能 1.原料 Pandas.GeoPandas.Shapely 2.点转线 3.将结果保存为geojson文件 4.点转线完整代码 强大的Geo ...

  3. 你知道怎么用Pandas绘制带交互的可视化图表吗?

    ↑↑↑关注后"星标"简说Python 人人都可以简单入门Python.爬虫.数据分析 简说Python推荐 来源:可以叫我才哥作者:道才 之前咱们介绍过Pandas可视化图表的绘制 ...

  4. gis可达性分析步骤_这个 Python 项目厉害了!多个实战案例教你分析时空数据处理...

    大数据时代到来,随着数据的逐步开放,数据工作者们或多或少都要接触到时空数据.在处理时空数据的时候,你不仅要数据处理,还需要会GIS,最重要的它是一门艺术,要用你的审美,要出很好看的可视化图! 以前,我 ...

  5. python社区发现_这个 Python 项目厉害了!多个实战案例教你分析时空数据处理

    大数据时代到来,随着数据的逐步开放,数据工作者们或多或少都要接触到时空数据.在处理时空数据的时候,你不仅要数据处理,还需要会GIS,最重要的它是一门艺术,要用你的审美,要出很好看的可视化图! 以前,我 ...

  6. 一直在构建工作空间_国际资讯Python与地理空间分析

    点击图片上方蓝色字体"慧天地"即可订阅 英文原文来源:www.gislounge.com 英文原文链接:https://www.gislounge.com/python-and-g ...

  7. 编程实现newton插值c++_数据体操:数据处理和IDW地理插值算法

    问题背景 最近的研究课题遇到数据补全的需求,需要根据国际气象数据站的气象数据,对关注的缺值点进行补全.例如,假设我有位于A.B.C.D四市的四个气象观测站的某日的数据(包括观测站的经纬度数据.名称及气 ...

  8. 项目介绍star原理_这个 Python 项目厉害了!多个实战案例教你分析时空数据处理...

    大数据时代到来,随着数据的逐步开放,数据工作者们或多或少都要接触到时空数据.在处理时空数据的时候,你不仅要数据处理,还需要会GIS,最重要的它是一门艺术,要用你的审美,要出很好看的可视化图! 以前,我 ...

  9. TransBigData:一款基于 Python 的超酷炫交通时空大数据工具包

    今天分享一次Python交通数据分析与可视化的实战!其中主要是使用TransBigData库快速高效地处理.分析.挖掘出租车GPS数据. 所介绍的相关技术开发了Python开源库TransBigDat ...

最新文章

  1. Codeforces 447C - DZY Loves Sequences
  2. java bitmap获取图片大小_android 通过uri获取bitmap图片并压缩
  3. 配置Maven使用Nexus
  4. Two.js – 为现代浏览器而生的 2D 绘图 API
  5. 每日一题:leetcode341.扁平化嵌套列表迭代器
  6. Android画一条横线
  7. firewall防火墙的规则添加
  8. cmake Can‘t find third_party/gtest
  9. 「OC」点语法和成员变量的作用域
  10. 计算机类一级学科目录是什么,教育部学科门类及一级学科目录表.doc
  11. EXCEL中汉字转变拼音的技巧~代码实现
  12. Ubuntu系统安装和运行n2n
  13. JAVA给微信公众号二维码添加LOGO时总是生成灰度图片的原因及解决办法
  14. Tsinsen D486 蓝雨
  15. 异贝,通过移动互联网技术,为中小微实体企业联盟、线上链接、线上线下自定义营销方案推送。案例53
  16. python小海龟画房子编程_教孩子学Python编程之海龟画图(一)
  17. 计算机游戏本和商务本的区别,商务本和游戏本有什么区别
  18. 腾讯前端面试经验(一)
  19. 如何使用万能的钢笔抠图
  20. 【计算机图形学实验四——简单几何形体的平移、缩放、旋转等几何变换】

热门文章

  1. MySQL学习笔记(五)并发时经典常见的死锁原因及解决方法
  2. favicon.ico在ie下面不显示的解决方法
  3. VS2008下编译C++程序,找不到 stdint.h,原因及解决方案
  4. Ubuntu下U盘变成只读的解决方法
  5. Android ADB设备离线,无法发出命令
  6. 如何将git分支上的标记移动到其他提交?
  7. vmware提示虚拟机似乎正在使用中
  8. elementary os java,吐槽ELEMENTARY OS系统/ELEMENTARY OS系列文章汇总
  9. python在工作中怎么用_简洁优雅的Python教你如何在工作中“偷懒”
  10. (转)MTK VC模拟器使用技巧