这边博客并不是有关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. HTTP协议—— 简单认识TCP/IP协议

    大学没读计算机专业,所以很多的专业知识都不知道.既然已经从事了IT这个行业,就势必要去了解下网络底层,虽然实际工作中这些东西用不到.高楼大厦,起于平川.不积跬步,无以至千里,不积小流,无以成江海.我现 ...

  2. linux下centos的网络连接

  3. MySQL插入数据返回id

    按照应用需要,常常要取得刚刚插入数据库表里的记录的ID值,在MYSQL中可以使用LAST_INSERT_ID()函数,在MSSQL中使用 @@IDENTITY.挺方便的一个函数.但是,这里需要注意的是 ...

  4. Google Map API V3开发(6) 代码

    Google Map API V3开发(1) Google Map API V3开发(2) Google Map API V3开发(3) Google Map API V3开发(4) Google M ...

  5. 使用Xcode HeaderDoc和Doxygen文档化你的Objective-C和Swift代码

    在一个应用的整个开发过程中涉及到了无数的步骤.其中一些是应用的说明,图片的创作,应用的实现,和实现过后的测试阶段.写代码可能组成了这个过程的绝大部分,因为正是它给了应用生命,但是这样还不够,与它同等重 ...

  6. MRDS学习四——自动型机器车

    由自己的所在开始,探索自己周围的简单机器车,假设车子的行走路径如下: 我们要把L型路径写成一个Activity,然后由外部输入这个L的大小,最后这个Activity要能够在完成行走路径时吐出更大的L大 ...

  7. mysql [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist (转载)

    mysql报错Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist 2013-11-2 ...

  8. MVVM开发模式简单实例MVVM Demo

    本文主要是翻译Rachel Lim的一篇有关MVVM模式介绍的博文 A Simple MVVM Example 并具体给出了一个简单的Demo(原文是以WPF开发的,对于我自己添加或修改的一部分会用红 ...

  9. CF#138 div 1 A. Bracket Sequence

    [#138 div 1 A. Bracket Sequence] [原题] A. Bracket Sequence time limit per test 2 seconds memory limit ...

  10. json和pickle

    Pickle序列化 用于序列化的两个模块 json,用于字符串 和 python数据类型间进行转换 pickle,用于python特有的类型 和 python的数据类型间进行转换 python的pic ...