​​​​​​​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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/735963.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Mac提示Could not set environment: 150如何进入恢复模式

原因是系统集成保护 (SIP) 的 macOS 安全功能会影响磁盘权限和操作,需要访问 macOS 恢复窗口以输入一组命令并禁用 SIP。 如何关闭SIP? Intel芯片 1、重启电脑并常摁commandR,直到看到APPLE图标 2、从菜单栏转到Utilities > Terminal。…

docker-compose这下会用了吗?

概要 默认的模板文件是 docker-compose.yml,其中定义的每个服务可以通过 image 指令指定镜像或 build 指令(需要 Dockerfile)来自动构建。 注意如果使用 build 指令,在 Dockerfile 中设置的选项(例如:CMD, EXPOSE, V…

LeetCode 2044.统计按位或能得到最大值的子集数目

给你一个整数数组 nums ,请你找出 nums 子集 按位或 可能得到的 最大值 ,并返回按位或能得到最大值的 不同非空子集的数目 。 如果数组 a 可以由数组 b 删除一些元素(或不删除)得到,则认为数组 a 是数组 b 的一个 子集…

vue如何优化首页加载速度

优化 Vue.js 应用的首页加载速度是提升用户体验的关键之一。以下是一些优化 Vue.js 应用首页加载速度的常见方法: 代码分割(Code Splitting): 将应用代码拆分成多个小块,并按需加载。可以使用 Vue Router 的懒加载功能…

ElasticSearch 与java的结合使用(一)

引入依赖 <dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>7.15.2</version><exclusions><!-- 排除自带的logback依赖 --><exclusion><groupId>org.apac…

docker的安装与使用

1.打开启动或关闭windows功能 2.勾选Hyper-V、适用于Linux的Windows子系统&#xff0c;虚拟机平台三项 若没有Hyper-V&#xff0c;以管理员身份执行以下文件 创建Hyper-V Installer.cmd&#xff0c;然后写入 pushd "%~dp0" dir /b %SystemRoot%\servicing\Package…

51单片机基础篇系列-51单片机基础开发流程和基本I/O口

&#x1f308;个人主页: 会编程的果子君 &#x1f4ab;个人格言:“成为自己未来的主人~” 51开发平台的组成 单片机应用系统&#xff08;也叫目标系统&#xff09; 硬件&#xff1a; 用户可以自己设计制作&#xff0c;也可以采用现成的开发板快捷搭建 软件&#xff1a; …

扁平数据转树形结构,让数据管理更清晰

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

LangChain原理深度解析:构建高效语言模型应用的关键框架

LangChain原理介绍 摘要&#xff1a; 本文将详细介绍LangChain的基本原理&#xff0c;包括其设计思路、核心组件、工作流程以及在语言模型应用开发中的应用。通过通俗易懂的语言&#xff0c;本文旨在让读者对LangChain有一个全面的了解。 关键词&#xff1a; LangChain&#…

1.初学docker

这是在centos7上的基本操作用法。 一、基本操作 # 安装yum源 yum install -y yum-utils # 配置yum源 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 安装docker yum install -y docker-ce-cli containerd.io docker-buildx-plu…

数学计算器

1 问题 该代码提供了一个简单的数学计算器&#xff0c;可以让用户输入一个数学表达式并计算结果。这个计算器可以用于执行各种基本数学运算&#xff0c;如加法、减法、乘法、除法、幂运算等&#xff0c;也可以处理更复杂的表达式&#xff0c;如三角函数、对数、指数等。 2 方法…

C语言——函数指针——函数指针数组 (详解)

函数指针数组 函数指针数组的作用 函数指针数组是一个数组&#xff0c;其中的每个元素都是一个函数指针。函数指针是指向函数的指针变量&#xff0c;可以用来调用相应的函数。函数指针数组的作用是可以根据需要动态地选择并调用不同的函数。 函数指针数组的使用场景有很多&…

MIT 6.858 计算机系统安全讲义 2014 秋季(四)

译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 污点跟踪 注意&#xff1a; 这些讲座笔记是从 2014 年 6.858 课程网站上发布的笔记上稍作修改的。 安卓安全策略 这篇论文试图解决什么问题&#xff1f; 应用程序可以外泄用户的私人数据并发送到某个服务器。 高层次…

Linux bzip2命令教程:文件压缩与解压缩实战(附案例详解和注意事项)

Linux bzip2命令介绍 bzip2是一个基于命令行的文件压缩器&#xff0c;它使用Burrows-Wheeler块排序文本压缩算法和哈夫曼编码来进行压缩。它的主要功能是压缩和解压缩文件&#xff0c;将多个文件绑定成一个单一的文件&#xff0c;这样可以减少原始文件所占用的存储空间。 Lin…

微服务day06-Docker

Docker 大型项目组件较多&#xff0c;运行环境也较为复杂&#xff0c;部署时会碰到一些问题&#xff1a; 依赖关系复杂&#xff0c;容易出现兼容性问题 开发、测试、生产环境有差异 1.什么是Docker? 大型项目组件很多&#xff0c;运行环境复杂&#xff0c;部署时会遇到各种…

WatchBird: 新一代纯PHP防火墙

WatchBird: 新一代纯PHP防火墙 工具安装 广大研究人员可以使用下列命令直接将项目源码克隆至本地 git clone https://github.com/leohearts/awd-watchbird.git工具部署 1.进入下载好的文件夹目录 2.编译waf.c生成.so文件,参考命令:gcc waf.c -shared -fPIC -o waf.so 3.将w…

大数(long long 也存不下)求余数

现在有一个数n为&#xff1a;12345678901234567890123456789012345678901234567890&#xff0c;要你求 n / 2023 和 n % 2023 的数值 模拟长除法 平时我们在进行除法时&#xff0c;用的是长除法&#xff0c;我们可以用代码来模拟这种思路 #include<iostream> #include<…

Beans模块之工厂模块BeanFactory

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

SDK集群模式数据库中,ETCD起什么作用?

在云计算中&#xff0c;数据库使用 ETCD 和 SDK 集群模式可以提高数据库的可用性、可扩展性和灵活性。具体来说&#xff0c;可以使用 ETCD 来存储和管理数据库的配置信息、状态信息、元数据等&#xff0c;然后使用 SDK 集群模式来开发和部署数据库应用程序。 在使用 ETCD 和 SD…

Linux 之九:CentOS 上 Tomcat 安装、SpringBoot 项目打包和部署

安装 Tomcat 下载 a. 方式一&#xff1a;可以在windows 真机上下载后&#xff0c;再上传到服务器 b. 方式二&#xff1a;可以在服务器端使用 wget 下载命令来下载 登录官网https://tomcat.apache.org/download-90.cgi&#xff0c;选择 linux 版本 右键&#xff0c;获取下载链接…