这边博客并不是有关geopandas的教程和pyshp的教程!

使用python来处理地理数据有很多相关的包,最近研究需要处理一些地理数据,然而arcgis的arcpy总是不能令人满意。所以这里说说python中其它的有关地理数据处理的包。

1.地理数据的读写

地理数据一般比较通用的格式是shp文件,对其进行读写有两个包,一个是Fiona一个是pyshp。

Fiona是基于C++的库包装的,因此直接使用pip安装在使用的时候会有问题,可以使用conda首先安装GDAL,然后再安装Fiona就可以了。

pyshp是纯净的python脚本写的包,因此安装和使用起来体验比Fiona要好一点,但是效率上可能会稍微低一点,这个我也没做测试。

2.地理数据的处理

地理数据的处理一般是shapely这个库,这里不做详细介绍,它主要来产生缓冲区啊,等等这类的地理数据处理操作

3.如何同时处理属性数据和集合数据

在pandas下有个包叫geopandas它扩充了pandas用来处理地理数据。它主要在pandas,fiona和shpely上进行了包装。因此安装它之前要首先安装这些依赖

geopandas可以同时对地理数据进行读写和处理,也同时可以对属性数据进行处理。因此比较推荐使用这个库

4.对比总结

使用geopandas的时候要首先对shapely和pandas有些了解,我在使用geopandas保存为shape文件的时候老师报错:


WARNING:Fiona:CPLE_AppDefined in One or several characters couldn't be converted correctly from UTF-8 to ISO-8859-1.
This warning will not be emitted anymore.

   File "F:/xiaokangworkspace/pythonwork/geopandasFrompandas.py", line 46, in <module>
test1.to_file('test6.shp') File "C:\Users\wybert\Anaconda2\lib\site-packages\geopandas\geodataframe.py", line 305, in to_file
c.write(feature(i, row)) File "C:\Users\wybert\Anaconda2\lib\site-packages\fiona\collection.py", line 402, in __exit__
self.close() File "C:\Users\wybert\Anaconda2\lib\site-packages\fiona\collection.py", line 386, in close
self.flush() File "C:\Users\wybert\Anaconda2\lib\site-packages\fiona\collection.py", line 376, in flush
self.session.sync(self) File "fiona/ogrext.pyx", line 939, in fiona.ogrext.WritingSession.sync (fiona/ogrext.c:15649) RuntimeError: Failed to sync to disk

这个错误是由于我的属性表中包含中文字符所导致的,说到底它应该是一个编码问题,我使用python3也做过这个处理,没有出现警告信息,但是仍然出现同样的问题。使用arcgis能够打开已经写入的文件的集合信息但是属性表却打不开,但是使用Qgis能够打开,可以看到属性表中包含中文的那一列出现了乱码(使用exce也l能打开看到dbf中的属性表)。要处理这个问题有以下解决方案:

  1. 使用geopandas处理数据但是使用pyshp写文件:

    这个方案比较好,写出来的文件Arcgis和Qgis都能识别

  2. 使用geopandas写文件然后再对dbf进行后续处理:

    可悲的是pandas并没有提供对dbf文件的读写(这里有个不错的解决方案),可使用用simpledbf包对其读取,然后使用dbf包写入。但是这个方案也可以使用pyshp来实现,因为pyshp实现了单独对dbf文件进行读写的功能

python处理地理数据-geopandas和pyshp的更多相关文章

  1. 使用python处理地理数据:Geopandas

    说句实话处理地理数据使用python还是比较麻烦的

  2. i3s 一种开源的三维地理数据规范 简单解读

    i3s,esri主推到ogc的一种三维开源GIS数据标准. 版权声明:原创.博客园/B站/小专栏/知乎/CSDN @秋意正寒 转载请标注原地址并声明转载: https://www.cnblogs.co ...

  3. python实现地理编码

    python实现地理编码 去高德地图申请好key python代码 # -*- coding:utf_8 -*- # !/usr/bin/python37 """ @au ...

  4. 使用Python解析JSON数据的基本方法

    这篇文章主要介绍了使用Python解析JSON数据的基本方法,是Python入门学习中的基础知识,需要的朋友可以参考下:     ----------------------------------- ...

  5. 地理数据可视化:Simple,Not Easy

    如果要给2015年的地理信息行业打一个标签,地理大数据一定是其中之一.在信息技术飞速发展的今天,“大数据”作为一种潮流铺天盖地的席卷了各行各业,从央视的春运迁徙图到旅游热点预测,从大数据工程师奇货可居 ...

  6. python matplotlib plot 数据中的中文无法正常显示的解决办法

    转发自:http://blog.csdn.net/laoyaotask/article/details/22117745?utm_source=tuicool python matplotlib pl ...

  7. Python/Numpy大数据编程经验

    Python/Numpy大数据编程经验 1.边处理边保存数据,不要处理完了一次性保存.不然程序跑了几小时甚至几天后挂了,就啥也没有了.即使部分结果不能实用,也可以分析程序流程的问题或者数据的特点.   ...

  8. jsp连接MySQL数据库显示GIS地理数据乱码问题的解决(select AsText(the_geom))

    oh,fuck,经过我昨天下午到今天的努力,终于将这一问题成功解决了,哈哈哈 问题详细描述: 我通过jsp页面连接上MySQL数据库,取出存在表中的地理数据(类型是geometry,具体有POINT. ...

  9. Windows下Python读取GRIB数据

    之前写了一篇<基于Python的GRIB数据可视化>的文章,好多博友在评论里问我Windows系统下如何读取GRIB数据,在这里我做一下说明. 一.在Windows下Python为什么无法 ...

随机推荐

  1. <<< php程序在运行后报“internal server error”错误

    上传的php程序在运行后报“internal server error”错误,检查以下两方面: 1.请您检查php程序的属性是否设置为755,如果php程序的属性不是755,那么运行的时候会报“int ...

  2. 用 Python、 RabbitMQ 和 Nameko 实现微服务

    用 Python. RabbitMQ 和 Nameko 实现微服务 原创 07-17 17:57 首页 Linux中国 "微服务是一股新浪潮" - 现如今,将项目拆分成多个独立的. ...

  3. Arcgis 10.1安装

    来源http://download.csdn.net/detail/l_j_kin/7310665#comment 测试有效,存着备用,转过来不自己写了 安装desktop 打开“注册机”,功能选择a ...

  4. Loadrunner安装

    安装参考网址:http://www.cnblogs.com/yangxia-test/archive/2012/10/30/2746621.html 本人验证过的,不自己写了 另附Loadrunner ...

  5. 数据库大数据处理---复制(SQLServer)

    复制? 复制起初并不是用于作为高可用性功能而设计的,实际上复制的概念就像其名称一样,用于复制数据.比如将某个库中的数据“复制”到另一个库,到另一个实例中,由OLTP复制到OLAP环境中,由某数据中心复 ...

  6. Linux 命令收集

    http://www.cnblogs.com/tzhangofseu/archive/2011/12/17/2290955.html vim :r filename :sh  enter shell ...

  7. 用mixin引入模块后, 方法重名的解析方法

    关于mixin, 经常被问到一个问题是, 方法查找是如何处理的? 特别地, 如果类, 父类, 以及类所包含的mixin中, 都定义有相同名字的方法时, 会发生什么? 答案是, ruby首先会从对象的直 ...

  8. URL处理几个关键的函数parse_url、parse_str与http_build_query

    parse_url() 该函数可以解析 URL,返回其组成部分.它的用法如下: array parse_url(string $url) 此函数返回一个关联数组,包含现有 URL 的各种组成部分.如果 ...

  9. C和指针 第十二章 结构体 整体赋值 error: expected expression

    定义结构体后整体赋值时发生错误 typedef struct NODE { struct NODE *fwd; struct NODE *bwd; int value; } Node; //声明变量 ...

  10. C和指针 第五章 习题

    下列输出的值: #include <stdio.h> int func(){ static int count = 1; return ++count; } int main() { in ...