ARCGIS API for Python进行城市区域提取
ArcGIS API for Python主要用于Web端的扩展和开发,提供简单易用、功能强大的Python库,以及大数据分析能力,可轻松实现实时数据、栅格数据、空间数据等多源数据的接入和GIS分析、可视化,同时提供对平台的空间数据管理和组织管理功能。本篇博客将和大家分享,使用ArcGIS API for Python进行城市区域提取的方法和流程。
数据准备:
不同时期的landsat影像
一、关于栅格函数
在前面的博客“环境镶嵌数据集的渲染模板使用”,“环境镶嵌数据集栅格函数使用(一)”中我们已经介绍了在镶嵌数据集上配置栅格函数以及发布的方法,我们也可以直接通过ArcGIS API for Python在客户端来使用栅格函数,ArcGIS API for Python包含了很多栅格函数和分析工具,如下图所示:
编辑搜图编辑
二、城市区域提取的流程
城市区域提取的流程如下图所示:
编辑搜图编辑
三、脚本实现过程
第一步:从portal中获取需要进行分析的数据
第二步:计算不同年份的NDVI并进行二值化处理
# 应用ndvi栅格函数生成不同年份ndvi
ndvi2000 = ndvi(selected2000,'4 3')
ndvi2015 = ndvi(selected2015,'4 3')
# ndvi二值化处理,设定阈值0,小于阈值为1表示裸地和水体,其余为0
ndvithreshold = 0
ndvi2000binarization = less_than([ndvi2000,ndvithreshold])*1+greater_than([ndvi2000,ndvithreshold])*0
ndvi2015binarization = less_than([ndvi2015,ndvithreshold])*1+greater_than([ndvi2015,ndvithreshold])*0
编辑搜图编辑
第三步:计算不同年份的NDBI并进行二值化处理
# 应用extract_band函数提取短波红外、近红外波段数据
swir = extract_band(selected2000,[5])
nearir = extract_band(selected2000,[4])
#计算不同年份的ndbi
ndbi2000 = FLOAT([swir-nearir])/FLOAT([swir+nearir])
ndbi2015 = FLOAT([extract_band(selected2015,[5])-extract_band(selected2015,[4])])/FLOAT([extract_band(selected2015,[5])+extract_band(selected2015,[4])])
#ndbi二值化处理,设定阈值0,小于阈值为0,其余为1表示城市建设区域和低密度植被覆盖裸地,可以调整阈值
ndbi2000binarization = less_than([ndbi2000,0])*0+greater_than([ndbi2000,0])*1
ndbi2015binarization = less_than([ndbi2015,0.1])*0+greater_than([ndbi2015,0.1])*1
编辑搜图编辑
第四步:城市建设用地提取
#生成不同年份的城市建设用地数据
citybuildinguse2000 = ndvi2000binarization * ndbi2000binarization
citybuildinguse2015 = ndvi2015binarization * ndbi2015binarization
#计算不同年份的城市建设用地变化
buildinguse_diff = (citybuildinguse2015 - citybuildinguse2000)
#变化结果重映射
threshold_val = 0.1
buildingusediff_remap = remap(buildinguse_diff,input_ranges=[threshold_val,1],output_values=[1],no_data_ranges=[-1,threshold_val],astype='u8')
#变化结果颜色映射
buildingusediff_colormap = colormap(buildingusediff_remap,colormap=[[1,124,252,0]],astype='u8')
#变化结果输出图片
from IPython.display import Image
dataextent = '11541010.6342307,3538686.96622601,11614210.6342307,3628986.96622601'
exportedimg = buildingusediff_colormap.export_image(bbox=dataextent,size=[1200,450],f='image')
Image(exportedimg)
编辑搜图编辑
欢迎大家留言,互相交流学习。
想了解ArcGIS最新的技术动态和最新的应用,请关注地理遥感生态网平台。
地理遥感生态网平台www.gisrs.cn主要由土地利用遥感监测数据、行政区划边界数据(行政村边界、乡镇街道边界、省市县边界)、气象数据(降雨量、气温、蒸散量、辐射、湿度、日照时数、风速、水汽压数据)、水文站点数据(径流量数据)、遥感数据(npp净初级生产力数据数据、NDVI数据、LAI叶面积指数、GPP初级生产力数据、地表温度LST数据、高精度遥感影像等)、土壤数据(土壤类型、土壤质地、土壤有机质、土壤PH值、土壤质地、土壤侵蚀、土壤NPK、土壤厚度土、土壤重金属含量分布、土壤含水量等)、POI兴趣点数据(餐饮服务、道路附属设施、地名地址信息、风景名胜、公共设施、公司企业、购物服务、交通设施服务、金融保险服务、科教文化服务、摩托车服务、汽车服务、汽车维修、汽车销售、商务住宅、生活服务、事件活动、体育休闲服务、通行设施、医疗保健服务、政府机构及社会团体、住宿服务等)、全国作物类型分布数据(大豆、玉米、水稻、甘蔗、小麦空间分布数据等)、生态系统服务空间数据集、中国湿地沼泽分类数据集、城市空气质量监测数据、中国水系流域空间分布数据集、中国道路空间分布数据、中国陆地生态系统类型分布数据、社会经济统计年鉴数据、中国GDP空间分布数据集、中国人口空间分布数据集、城市建筑轮廓空间分布数据、全国地质灾害空间分布数据(崩塌、塌陷、泥石流、地面沉降、地裂缝、滑坡、斜坡、地震等)、地质岩性分布图、地形地貌数字高程DEM数据(地貌类型矢量数据、12.5米高精度DEM数据等)、中国NDVI植被指数空间分布数据集、夜间灯光数据、三级流域矢量边界、植被类型分布、自然保护区分布、建筑轮廓分布等土地利用、生态环境、灾害监测、社会经济和气象气候系列数据。
ArcGIS API for Python主要用于Web端的扩展和开发,提供简单易用、功能强大的Python库,以及大数据分析能力,可轻松实现实时数据、栅格数据、空间数据等多源数据的接入和GIS分析、可视化,同时提供对平台的空间数据管理和组织管理功能。本篇博客将和大家分享,使用ArcGIS API for Python进行城市区域提取的方法和流程。
数据准备:
不同时期的landsat影像
一、关于栅格函数
在前面的博客“环境镶嵌数据集的渲染模板使用”,“环境镶嵌数据集栅格函数使用(一)”中我们已经介绍了在镶嵌数据集上配置栅格函数以及发布的方法,我们也可以直接通过ArcGIS API for Python在客户端来使用栅格函数,ArcGIS API for Python包含了很多栅格函数和分析工具,如下图所示:
编辑搜图编辑
二、城市区域提取的流程
城市区域提取的流程如下图所示:
编辑搜图编辑
三、脚本实现过程
第一步:从portal中获取需要进行分析的数据
第二步:计算不同年份的NDVI并进行二值化处理
# 应用ndvi栅格函数生成不同年份ndvi
ndvi2000 = ndvi(selected2000,'4 3')
ndvi2015 = ndvi(selected2015,'4 3')
# ndvi二值化处理,设定阈值0,小于阈值为1表示裸地和水体,其余为0
ndvithreshold = 0
ndvi2000binarization = less_than([ndvi2000,ndvithreshold])*1+greater_than([ndvi2000,ndvithreshold])*0
ndvi2015binarization = less_than([ndvi2015,ndvithreshold])*1+greater_than([ndvi2015,ndvithreshold])*0
编辑搜图编辑
第三步:计算不同年份的NDBI并进行二值化处理
# 应用extract_band函数提取短波红外、近红外波段数据
swir = extract_band(selected2000,[5])
nearir = extract_band(selected2000,[4])
#计算不同年份的ndbi
ndbi2000 = FLOAT([swir-nearir])/FLOAT([swir+nearir])
ndbi2015 = FLOAT([extract_band(selected2015,[5])-extract_band(selected2015,[4])])/FLOAT([extract_band(selected2015,[5])+extract_band(selected2015,[4])])
#ndbi二值化处理,设定阈值0,小于阈值为0,其余为1表示城市建设区域和低密度植被覆盖裸地,可以调整阈值
ndbi2000binarization = less_than([ndbi2000,0])*0+greater_than([ndbi2000,0])*1
ndbi2015binarization = less_than([ndbi2015,0.1])*0+greater_than([ndbi2015,0.1])*1
编辑搜图编辑
第四步:城市建设用地提取
#生成不同年份的城市建设用地数据
citybuildinguse2000 = ndvi2000binarization * ndbi2000binarization
citybuildinguse2015 = ndvi2015binarization * ndbi2015binarization
#计算不同年份的城市建设用地变化
buildinguse_diff = (citybuildinguse2015 - citybuildinguse2000)
#变化结果重映射
threshold_val = 0.1
buildingusediff_remap = remap(buildinguse_diff,input_ranges=[threshold_val,1],output_values=[1],no_data_ranges=[-1,threshold_val],astype='u8')
#变化结果颜色映射
buildingusediff_colormap = colormap(buildingusediff_remap,colormap=[[1,124,252,0]],astype='u8')
#变化结果输出图片
from IPython.display import Image
dataextent = '11541010.6342307,3538686.96622601,11614210.6342307,3628986.96622601'
exportedimg = buildingusediff_colormap.export_image(bbox=dataextent,size=[1200,450],f='image')
Image(exportedimg)
编辑搜图编辑
欢迎大家留言,互相交流学习。
想了解ArcGIS最新的技术动态和最新的应用,请关注地理遥感生态网平台。
地理遥感生态网平台www.gisrs.cn主要由土地利用遥感监测数据、行政区划边界数据(行政村边界、乡镇街道边界、省市县边界)、气象数据(降雨量、气温、蒸散量、辐射、湿度、日照时数、风速、水汽压数据)、水文站点数据(径流量数据)、遥感数据(npp净初级生产力数据数据、NDVI数据、LAI叶面积指数、GPP初级生产力数据、地表温度LST数据、高精度遥感影像等)、土壤数据(土壤类型、土壤质地、土壤有机质、土壤PH值、土壤质地、土壤侵蚀、土壤NPK、土壤厚度土、土壤重金属含量分布、土壤含水量等)、POI兴趣点数据(餐饮服务、道路附属设施、地名地址信息、风景名胜、公共设施、公司企业、购物服务、交通设施服务、金融保险服务、科教文化服务、摩托车服务、汽车服务、汽车维修、汽车销售、商务住宅、生活服务、事件活动、体育休闲服务、通行设施、医疗保健服务、政府机构及社会团体、住宿服务等)、全国作物类型分布数据(大豆、玉米、水稻、甘蔗、小麦空间分布数据等)、生态系统服务空间数据集、中国湿地沼泽分类数据集、城市空气质量监测数据、中国水系流域空间分布数据集、中国道路空间分布数据、中国陆地生态系统类型分布数据、社会经济统计年鉴数据、中国GDP空间分布数据集、中国人口空间分布数据集、城市建筑轮廓空间分布数据、全国地质灾害空间分布数据(崩塌、塌陷、泥石流、地面沉降、地裂缝、滑坡、斜坡、地震等)、地质岩性分布图、地形地貌数字高程DEM数据(地貌类型矢量数据、12.5米高精度DEM数据等)、中国NDVI植被指数空间分布数据集、夜间灯光数据、三级流域矢量边界、植被类型分布、自然保护区分布、建筑轮廓分布等土地利用、生态环境、灾害监测、社会经济和气象气候系列数据。
ARCGIS API for Python进行城市区域提取的更多相关文章
- 关于ArcGIS API for JavaScript中basemap的总结介绍(一)
实际上basemap这个概念并不只在arcgis中才有,在Python中有一个matplotlib basemap toolkit(https://pypi.python.org/pypi/basem ...
- ArcGIS API for Silverlight 调用GP服务准备---GP模型建立、发布、测试
原文:ArcGIS API for Silverlight 调用GP服务准备---GP模型建立.发布.测试 第一篇.GP降雨量等值线建模.发布及测试 在水利.气象等行业中,要在WebGIS中实现空间分 ...
- ArcGIS API for Silverlight开发入门
你用上3G手机了吗?你可能会说,我就是喜欢用nokia1100,ABCDEFG跟我 都没关系.但你不能否认3G是一种趋势,最终我们每个人都会被包裹在3G网络中.1100也不是一成不变,没准哪天为了打击 ...
- ArcGIS API for JavaScript 4.0(一)
原文:ArcGIS API for JavaScript 4.0(一) 最近ArcGIS推出了ArcGIS API for JavaScript 4.0,支持无插件3D显示,而且比较Unity和Sky ...
- ArcGIS API for Silverlight中加载Google地形图(瓦片图)
原文:ArcGIS API for Silverlight中加载Google地形图(瓦片图) 在做水利.气象.土地等行业中,若能使用到Google的地形图那是再合适不过了,下面就介绍如何在ArcGIS ...
- ArcGIS API for JavaScript介绍
ArcGIS API for JavaScript中的类是按照模块组织的,主要包含esri.esri/geometry.esri/renderers.esri/symbols.esri/symbols ...
- 使用ArcGIS API for Silverlight 进行复合多条件空间查询
原文:使用ArcGIS API for Silverlight 进行复合多条件空间查询 这两天帮网上认识的一个兄弟做了一个查询的示例,多多少少总结一下,在此和大家分享. 为什么说是复合多条件呢?因为进 ...
- 使用ArcGIS API for Silverlight实现地形坡度在线分析
原文:使用ArcGIS API for Silverlight实现地形坡度在线分析 苦逼的研究生课程终于在今天结束了,也许从今以后再也不会坐在大学的课堂上正式的听老师讲课了,接下来的时间就得开始找工作 ...
- arcgis api 3.x for js 入门开发系列二十二地图模态层(附源码下载)
前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...
随机推荐
- Python学习笔记: 装饰器Decorator
介绍 装饰器是对功能函数的加强. 在原来的功能函数之外,另外定义一个装饰器函数,对原来的功能函数进行封装(wrapper)并在wrapper的过程中增加一些辅助功能. 应用场景 如下场景: 业务函数f ...
- 数据交换格式 JSON
1. 什么是 JSON 概念 : JSON 的英文全称是 JavaScript ObjEct Notation, 即 "JavaScript 对象表示法" . 简单来讲 : JSO ...
- Java实用类
//String类常用方法 public int length()//获取String对象的字符序列的长度 n=s.length(); public boolean equals(String s)/ ...
- 为什么建议大家使用 Linux 开发?
关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ Linux 能用吗? 我身边还有些朋友对 linux 的印象似乎还停留在黑乎乎的命令行界面上. ...
- vue实例vm的方法
import wbMessage from './wb-message' let Constructor = Vue.extend(wbMessage) let vm = new Constructo ...
- java实现空心金字塔
前言 最近在学习java,遇到了一个经典打印题目,空心金字塔,初学者记录,根据网上教程,有一句话感觉很好,就是先把麻烦的问题转换成很多的简单问题,最后一一解决就可以了,然后先死后活,先把程序写死,后面 ...
- Nginx代理websocket为什么要这样做?
Nginx反向代理websocket 示例: http { map $http_upgrade $connection_upgrade { default upgrade; '' close; } s ...
- 中国电子云数据库 Mesh 项目 DBPack 的实践
作者:刘晓敏 2022 年 4 月,中国电子云开源了其云原生数据库 Mesh 项目 DBPack.该项目的诞生,旨在解决用户上云过程中面临的一些技术难点,诸如分布式事务.分库分表等.由于它数据库 Me ...
- 组织:ISO
国际标准化组织(ISO)是一个全球性的非政府组织,成立于1947年,总部位于瑞士日内瓦. 该组织负责绝大部分领域(包括军工.石油.船舶等垄断行业)的标准化活动,中国是其正式成员,代表中国参加的国家机构 ...
- JavaScript数组操作常用方法
@ 目录 数组基础遍历方法. for for of for in 数组的基础操作方法. push:尾部追加元素 pop:尾部移出元素 unshift:头部追加元素 shift:头部移出元素 splic ...