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://bbs.csdn.net/forums/gisrs?spm=1001.2014.3001.6682

相关推荐
老蒋新思维14 分钟前
创客匠人:当知识IP遇上系统化AI,变现效率如何实现阶跃式突破?
大数据·网络·人工智能·网络协议·tcp/ip·重构·创客匠人
天远云服14 分钟前
Go 语言实战:手撸 AES-128-CBC 加密,对接天远金融风控 API
大数据·服务器·网络·golang
运维行者_39 分钟前
不同规模企业如何选 OPM?参考局域网管理软件与 cpu 温度监控适配指南
大数据·运维·服务器·网络·数据库·postgresql·snmp
是阿威啊1 小时前
【第六站】测试本地项目连接虚拟机上的大数据集群
大数据·linux·hive·hadoop·spark·yarn
老徐电商数据笔记1 小时前
技术复盘第八篇:从“数据烟囱”到“能力引擎”:中型电商数仓重构实战手册
大数据·数据仓库·重构·数据中台·用户画像·技术面试
数据皮皮侠AI1 小时前
数字经济政策工具变量数据(2008-2023)
大数据·数据库·人工智能·笔记·1024程序员节
雷焰财经1 小时前
iBox探索文化产业数字化路径:标准筑基 生态赋能
大数据·人工智能
zhongtianhulian1 小时前
陶瓷行业大会资讯:掌握行业动态,洞察未来趋势
大数据·人工智能·python
Francek Chen1 小时前
【IoTDB】时序数据库选型指南:国产自研技术如何应对数据洪流
大数据·数据库·时序数据库·iotdb
做cv的小昊1 小时前
【TJU】信息检索与分析课程笔记和练习(4)中文文献检索—CNKI
大数据·经验分享·笔记·学习·信息可视化·全文检索·信息检索