Python:构建缓冲带提取区域平均坡度
前一段时间做提取坡度的问题,当时首先想到的是使用ArcEngine来做,因为记得有ITopoOperator接口可以构建缓冲带,用IExtractionRaster可以掩膜栅格数据,利用IPixelBlock3接口可以读取栅格信息,计算像元的平均值。当时花了一段时间实现了,有时间把AE的这段代码分享出来,但是效率不敢恭维。输入4个多边形数据,半个小时愣是只跑了3个结果出来,当时我果断放弃了这条路。此时wangye学长跟我说,python处理栅格数据效率很高,基于C为底层,别说长江中下游区域,就是全国也能很快实现。由此,花了两天学了一下,便动手做了。最后45个要素组成的要素类和坡度栅格数据运算仅仅花了11分钟,这差距!!
数据:湖泊数据,Slope。
要求:湖泊指定距离的缓冲带范围内提取平均坡度
输出:LakeName_BufferDistance_SlopeMean.xls
Arcgis10开始推出了Arcpy模块,利用python调用相应的方法写出脚本语言,可以快速的进行批处理,相对于Ae的环境配置麻烦而言,是一个不错的选择,学习起来很简单,这个和IDL非常类似。
代码:
#!usr/bin/env python
#-*- coding:utf-8 -*-
'create a buffer'
__author__ = 'zhigang'
import arcpy
from arcpy import env
from FilenameWithoutExtension import GetFilenameWithoutExtension
import time
#overwrite output
#
env.overwriteOutput = True
inputLayer = 'D:\\zgcao\\Zhigang\\WaterSheld\\AllData\\database.gdb\\Lakes_50'
distance = [dis for dis in range(5,55,5)]
output = 'D:\\output\\'
start_time=time.localtime(time.time())
nowTime = time.strftime('%Y-%m-%d %H:%M:%S',(start_time))
print 'Start:'+str(nowTime)
print 'Processing....'
for item in distance:
buffer_distance = str(item)+' Kilometers'
outputName = output+str(item)+'_KM.shp'
#create buffer
#
arcpy.Buffer_analysis(inputLayer, outputName,buffer_distance)
#difference
#
#Set Full filename
#
differenceName = GetFilenameWithoutExtension(outputName)+'_Diff.shp'
#Symdifference
#
arcpy.SymDiff_analysis(outputName,inputLayer,differenceName)
# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")
#ZonalStatics
#
slopeData = 'D:/zgcao/Zhigang/WaterSheld/AllData/database.gdb/slope'
fieldName = 'Name_CH'
Sta_Result = GetFilenameWithoutExtension(differenceName)+'_sta'
arcpy.sa.ZonalStatisticsAsTable(differenceName,fieldName,slopeData,Sta_Result,'NODATA','MEAN')
print 'END'
end=time.localtime(time.time())
print str(time.strftime('%Y-%m-%d %H:%M:%S',(end)))
使用到的自定义函数:
def GetFilenameWithoutExtension(filenameFull):
filename = filenameFull.split('.')
return filename[0]
Python:构建缓冲带提取区域平均坡度的更多相关文章
- Python基于共现提取《釜山行》人物关系
Python基于共现提取<釜山行>人物关系 一.课程介绍 1. 内容简介 <釜山行>是一部丧尸灾难片,其人物少.关系简单,非常适合我们学习文本处理.这个项目将介绍共现在关系中的 ...
- 用Python构建你自己的推荐系统
用Python构建你自己的推荐系统 现如今,网站用推荐系统为你提供个性化的体验,告诉你买啥,吃啥甚至你应该和谁交朋友.尽管每个人口味不同,但大体都适用这个套路.人们倾向于喜欢那些与自己喜欢的其他东西相 ...
- 使用Boost.Python构建混合系统(译)
目录 Building Hybrid Systems with Boost.Python 摘要(Abstract) 介绍(Introduction) 设计目标 (Boost.Python Design ...
- 使用OpenCV和Python构建自己的车辆检测模型
概述 你对智慧城市的想法感到兴奋吗?如果是的话,你会喜欢这个关于建立你自己的车辆检测系统的教程的 在深入实现部分之前,我们将首先了解如何检测视频中的移动目标 我们将使用OpenCV和Python构建自 ...
- Zabbix 微信报警Python版(带监控项波动图片)
#!/usr/bin/python # -*- coding: UTF- -*- #Function: 微信报警python版(带波动图) #Environment: python import ur ...
- python构建bp神经网络_曲线拟合(一个隐藏层)__2.代码实现
IDE:jupyter 抽象程度可能不是那么高,以后再优化. 理论和代码实现的差距还是挺大的 数据集请查看 python构建bp神经网络(一个隐藏层)__1.数据可视化 部分代码预览 git上传.ip ...
- 【311】Python 构建 ArcMap 标注表达式
参考:构建标注表达式(官方帮助) 参考:计算字段示例(官方帮助) 说明:以上两者的方法略有不同,一个是通过字段表达式显示标注,一个通过字段计算新的字段,使用的工具方法也不同,前者通过 Layer.la ...
- 用 Python 构建 web 应用
用 Python 构建 web 应用 如果说仅仅要用 Python 构建 web 应用,可以将 socket 连接.HTTP 原始请求和响应格式等涉及网络基础的东西交给现成的库来实现,只需要专注于 w ...
- Python-黑客-004 用Python构建一个SSH僵尸网络-02 手动与SSH交互
用Python构建一个SSH僵尸网络-02 手动与SSH交互 - 登录SSH服务器端的 root 用户 我的电脑(攻击者)的系统:Ubuntu14.04 : 用户名: aobosir@ubuntu:~ ...
随机推荐
- Android 开发环境搭建9传送帖)
---恢复内容开始--- 首先,得安装软件,感觉我所找到的一些课本上写的都比较简略,走过一些弯路后,决定按照这个百度经验来 Android安卓开发环境搭建详细教程 http://jingyan.bai ...
- Java学习IO篇
来吧,同志们,为复习网络编程做准备-- 一.理论准备 流是个抽象的概念,是对输入输出设备的抽象,Java程序中,对于数据的输入/输出操作都是以"流" ...
- iOS出现 Undefined symbols for architecture armv7 std::basic_string<char, std::char_traits<char>
Undefined symbols for architecture i386: “_OBJC_CLASS_$_XXX”, referenced from: objc-class-ref in XXX ...
- Atlassian、Slack 以及 ChatOps 未来的前景如何?
在大家纷纷谈起 DevOps 和 ChatOps 的时候,Martin Giles 也对 ChatOps 的前景有自己的看法.他曾是<经济学人>的记者,现在是 Wing Venture C ...
- MFC应用程序创建窗口的过程 good
MFC应用程序中处理消息的顺序 1.AfxWndProc() 该函数负责接收消息,找到消息所属的CWnd对象,然后调用AfxCallWndProc 2.AfxCallWndProc() 该 ...
- jdk1.5 jdk1.6 jdk1.7 jdk1.8 下载地址
是不是有很多朋友在oracle找不到历史版本的下载地址哈.... 下载我亲情奉献,有人的捧个人场..... 嘻嘻 jdk1.5updatex所有版本下载地址: http://www.oracle.co ...
- 《Apache Spark源码剖析》
Spark Contributor,Databricks工程师连城,华为大数据平台开发部部长陈亮,网易杭州研究院副院长汪源,TalkingData首席数据科学家张夏天联袂力荐1.本书全面.系统地介绍了 ...
- POJ1664
Problem B Time Limit : 2000/1000ms (Java/Other) Memory Limit : 20000/10000K (Java/Other) Total Su ...
- unicode随笔小计
科普字符集: ascii:一个字节,占8位,(0000 0000 - 1111 1111) 如果只是英语那就没什么问题. 后来,不同的语言有了编码诞生.为了统一,出现一个大集合.便有了. unicod ...
- opengl performance optimization
OpenGL 性能优化 作者: Yang Jian (jyang@cad.zju.edu.cn) 日期: 2009-05-04 本文从硬件体系结构.状态机.光照.纹理.顶点数组.LOD.Cull等方面 ...