使用ArcGIS API for Python进行城市区域提取

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中获取需要进行分析的数据
#从Portal中检索landsat影像发布的影像服务
from IPython.display import display
landsatitems = gis.content.search('ndvisourceprj','Imagery Layer')
landsat = landsatitems[0].layers[0]

# 过滤得到不同年份的数据
selected2000 = landsat.filter_by("Name='city2000prj'")
selected2015 = landsat.filter_by("Name='city2015prj'")
  • 第二步:计算不同年份的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)

在这里插入图片描述
  上述示例的完整代码已经上传至网盘https://pan.baidu.com/s/19jKvdYhT_7LDvpiv9iOHjA
提取码:fcw0,欢迎大家留言,互相交流学习。

  想了解ArcGIS最新的技术动态和环保最新的应用,请关注微信公众号“环保GIS技术与应用”

内容概要:本文档展示了对太平洋岛国城市气候数据的收集与处理过程。首先定义了包括美属萨摩亚、库克群岛、斐济等多个国家和地区的重要城市的地理坐标,并创建了每个城市点周围10公里的缓冲区。接着设定日期范围为2012年全年,从ECMWF/ERA5/DAILY影像集合中筛选出每日平均、最高、最低2米空气温度以及总降水量的数据。所有温度数据由开尔文转换为摄氏度。对于每张图像和所有城市提取相应的气候统计数据并将其扁平化为特征集合。最后,将处理后的平均温度、最高温度、最低温度和降水量数据导出为CSV文件存储于Google Drive。此外,打印了各数据集的统计信息,如城市数量及各类气候数据点的数量。 适合人群:地理信息系统(GIS)研究人员、气象学爱好者、环境科学工作者以及需要研究或分析太平洋地区气候变化的人士。 使用场景及目标:①用于研究太平洋岛屿城市2012年的气候状况;②为相关领域的科研项目提供基础数据支持;③帮助理解气候变化趋势及其对特定区域的影响。 阅读建议:读者应具备一定的GIS基础知识,熟悉地球引擎平台操作。建议重点关注数据处理流程,特别是如何利用Earth Engine API进行空间数据分析和大规模遥感数据处理。同时,可以通过查阅相关文献来加深对所涉及的气候变量的理解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值