现实问题

在研究过程中,经常会遇到要对各个区域的某些数据进行分区统计的情况,如对某地区的各个行政区内的平均温度进行统计。又如,统计各个行政区内建成区的面积等等。一般这种分区统计可直接在ArcGIS中完成,ArcGIS空间分析工具箱中提供非常丰富的分区统计工具供用户调用:

当前解决方案存在的问题

这些工具中输入的区域可以是栅格的或者是矢量的,值数据只能是栅格的。GUI提供的工具固然方便,但是,如果使用程序自动化的完成这些功能的话是不是更好呢。当前,关于Python分区统计工具,根据区域数据的格式,可分为两类:

  • 矢量边界
  • 栅格边界
    矢量边界的分区统计可以使用ArcGIS/arcpy的分区统计工具进行处理,开源GIS方面,有两个Python库也可以进行处理,一个是rasterstats,另一个库便是大名鼎鼎的GDAL。但是在栅格区域方面,虽然实现过程很简单,但是目前没有找到合适的包。

解决方案

下面是基于栅格单元与栅格单元的分区统计的源代码:

import numpy as np
import pandas as pddef zonal_statistic(zonal_arr, data_arr, stats_field=['mean'], nodata=255):"""Parameters----------zonal_arr:分区统计的区域数据data_arr:分区统计中需要作统计的数据stats_field:分区统计的字段,有均值、最大最小值、总数等nodata: 区域中nodata值,默认为255:rtype: object"""classes_list = np.array(sorted(np.unique(zonal_arr)))classes_list = classes_list[classes_list != nodata]classes_list = classes_list[~np.isnan(classes_list)]if classes_list.size == 0:return pd.DataFrame()zonal_sta_list = []zonal_sta = pd.Series()for i in classes_list:if 'mean' in stats_field:zonal_sta['mean'] = np.nanmean(data_arr[zonal_arr == i])else:zonal_sta['mean'] = np.nanif 'max' in stats_field:zonal_sta['max'] = np.nanmax(data_arr[zonal_arr == i])else:zonal_sta['max'] = np.nanif 'min' in stats_field:zonal_sta['min'] = np.nanmin(data_arr[zonal_arr == i])else:zonal_sta['min'] = np.nanif 'count' in stats_field:zonal_sta['count'] = len(data_arr[zonal_arr == i])else:zonal_sta['count'] = np.nanzonal_sta_copy = zonal_sta.copy()zonal_sta_list.append(zonal_sta_copy)return pd.DataFrame(zonal_sta_list, index=classes_list)[stats_field]

Python地理处理01-基于栅格单元与栅格单元的分区统计相关推荐

  1. python合并单元格居中_Python基于xlrd模块处理合并单元格

    目的: python能使用xlrd模块实现对Excel数据的读取,且按照想要的输出形式. 总体思路: (1)要想实现对Excel数据的读取,需要用到第三方应用,直接应用. (2)实际操作时候和我们实际 ...

  2. Python地信专题 | 基于geopandas玩转地图可视化

    文章来源于Python大数据分析,作者费弗里 本文对应代码和数据已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes[1] ...

  3. python自动化高效办公第二期,带你项目实战【二】{数据可视化、发送邮件(定时任务监控)、python聊天机器人(基于微信、钉钉)}

    相关文章和数据源: python自动化高效办公第二期,带你项目实战[一]{excel数据处理.批量化生成word模板.pdf和ppt等自动化操作} Python自动化办公--Pandas玩转Excel ...

  4. 【笔记】《Python地理空间分析指南(第2版)》

    转载地址:https://blog.csdn.net/jianbinzheng/article/details/80215228 概述部分 地理空间数据 地理空间技术概览 Python地理空间分析工具 ...

  5. python空间分析_读书笔记——《python地理空间分析指南》

    本文为<Python地理空间分析指南(第2版)>的读书摘录,顺便挖个坑,进一步对python的几个包做学习整理. 本笔记的用途:了解python地理空间处理的技术框架和实现途径. 第三章 ...

  6. Python地信专题 |基于geopandas的空间数据分析-深入浅出分层设色

    点击蓝字关注我,有干货领取! 本文对应代码和数据已上传至我的Github仓库: https://github.com/CNFeffery/DataScienceStudyNotes[1] 已发布: P ...

  7. Bootstrap学习笔记01【快速入门、栅格布局】

    Java后端 学习路线 笔记汇总表[黑马程序员] Bootstrap学习笔记01[快速入门.栅格布局][day01] Bootstrap学习笔记02[全局CSS样式.组件和插件.案例_黑马旅游网][d ...

  8. Python 自然语言处理(基于jieba分词和NLTK)

    ----------欢迎加入学习交流QQ群:657341423 自然语言处理是人工智能的类别之一.自然语言处理主要有那些功能?我们以百度AI为例 从上述的例子可以看到,自然语言处理最基本的功能是词法分 ...

  9. Python读写矢量数据(2)矢量数据写入(属性数据)——Python地理数据处理学习分享

    这一节主要介绍矢量数据的写入(只有属性数据,无几何),如果有读者没有读取的基础建议先看一下上一篇文章,需要对矢量数据读取有一定的了解才能继续学习本节.在这里我们用到的数据仍为goble文件夹下的数据, ...

最新文章

  1. mysql 30天销量_mysql查询今天,昨天,近7天,近30天,本月,上一月数据方法
  2. mysql三范式_MySQL设计之三范式的理解
  3. Serializable的作用
  4. Fiori extension hook和Hybris的template
  5. 扼杀 304,Cache-Control: immutable
  6. “两小学生研究喝茶抗癌获奖”,官方回应:经老师培训独立完成
  7. Python网络请求库Requests,妈妈再也不会担心我的网络请求了(二)
  8. Coding the Matrix作业Python Lab及提交方法
  9. C语言之文件读写探究(四):fwrite、fread(一次读写一块数据(二进制操作))
  10. 应届生求职简历HTML模板
  11. 数仓工具hive概述
  12. PAT 1034 有理数四则运算 python
  13. Kernel space lock contention配置及其使用
  14. 苹果账户登录_开心,安卓手机支持和iPhone内APP账户互通
  15. docker默认ip地址修改
  16. 2020第二周美赛感想
  17. Word文档如何进行拆分成多个文档?
  18. 机器学习:模型评价指标总结
  19. 复旦计算机系吴昊,数学科学学院候选好导师访谈——吴昊老师
  20. 计算机发布信息的方法,介绍两种用电脑给手机发短信的方法

热门文章

  1. utf—8在苹果手机上乱码_MAC 下 Excel打开UTF-8格式的文件乱码
  2. html幻灯片带工具栏_如何使用开发人员友好的工具幻灯片创建网站
  3. Modbus tcp协议学习总结
  4. 谷歌遭反垄断调查;5G牌照正式发放;IBM大裁员;百度又一高管离职
  5. 音响开关机POP声/爆破声最新解决消除方法(D类音频功放IC应用实例)
  6. 【JavaScript】上传文件
  7. mac连接sftp 服务器
  8. 使用SFTPGo搭建SFTP服务器
  9. Unity解析OpenDRIVE地图数据,并生成路网模型
  10. UEFI BIOS和 传统BIOS 启动模式对比