GEE 22:基于GEE实现物种分布模型(更新中。。。。。。)

物种分布模型

  • 1. 数据点准备
    • 1.1 数据加载
    • 1.2 去除指定距离内的重复点
    • 1.3 定义研究区范围
    • 1.4 选择预测因子
    • 1.5 伪不存在点生成

1. 数据点准备

1.1 数据加载

  首先需要将CSV文件导入到GEE平台中,同样也可以导入shp格式文件。

在这里插入图片描述

// 1.Loading and cleaning your species data *********************************************************************
var Data = ee.FeatureCollection("projects/ee-**********736/assets/Tree_sample").aside(print) // 导入本地上传的站点信息.map(function(fea){return ee.Feature(ee.Geometry.Point([fea.get('Longitude'),fea.get('Latitude')]))//设置经纬度.copyProperties(fea) // 拷贝原有属性信息}).aside(print)

1.2 去除指定距离内的重复点

  物种分布建模的一个重要步骤是限制地理采样偏差对模型输出的潜在影响,这种影响是由于多个附近观测结果导致的数据聚集。在选定的空间分辨率下,将位置数据细化为每像素随机选择的一个事件记录。所以需要将相隔在一定距离之内的点删除,如去掉在10km以内的重复点:

// Define spatial resolution to work with (m)
var GrainSize = 10000; // e.g. 10 kmMap.addLayer(Data.style({color:'red',pointSize:4}),{},'randomPoints')function RemoveDuplicates(data){// 生成一个随机栅格图像,使用随机值填充,然后重新投影到经纬度坐标系(EPSG:4326)var randomraster = ee.Image.random().reproject('EPSG:4326', null, GrainSize);// 从随机栅格图像中获取样本点的值,样本点来自于输入数据集(data)// scale为: 缩放因子,控制样本点的间隔var randpointvals = randomraster.sampleRegions({collection:ee.FeatureCollection(data), scale: 10, geometries: true});// 返回去重后的样本点,通过 'random' 字段进行去重return randpointvals.distinct('random');
}var Data = RemoveDuplicates(Data);
Map.addLayer(Data.style({color:'blue',pointSize:4}),{},'randomPoints')print(ee.FeatureCollection('projects/ee-**********736/assets/Tree_sample').size())
print(Data.size())

1.3 定义研究区范围

在这里插入图片描述

// 2.Define your area of interest for modeling *********************************************************************
// Load region boundary from data catalog if working at a larger scale
var AOI = ee.FeatureCollection('USDOS/LSIB_SIMPLE/2017').filter(ee.Filter.eq('country_co', 'CH'));// Add AOI to the map
Map.addLayer(AOI, {}, 'AOI');
Map.centerObject(AOI, 3);

1.4 选择预测因子

  在Google Earth Engine中实现sdm的主要优点之一是可以利用大量可用的数据集作为预测变量。这不仅包括Hijmans等人(2005)的生物气候变量,还包括高程数据及其衍生物(坡度、坡向、山坡等)、各种植被指数、人类改造指数、夜间灯光图像、水体、小时气候数据、土地覆盖分类、道路或其他基础设施,甚至卫星数据的原始像素值。根据感兴趣的领域,某些区域具有更高的数据可用性。
  选择预测变量是研究人员需要依赖于研究物种的现有知识的一个步骤,例如可能影响其分布的变量等。
  要查找空间数据集,可以使用搜索栏。点击产品名称即可获得与每个空间数据集相关的所有信息。导入数据集所需的代码如下图所示。

在这里插入图片描述

// 3.Selecting predictor variables *********************************************************************
// Example of code to import the SRTM Digital Elevation Data 30m
var Elev = ee.Image("USGS/SRTMGL1_003");

注意:GEE中的 ee.Algorithms.Terrain() 函数可以从高程数据集计算坡度、坡向和山阴。

1.5 伪不存在点生成

  当使用仅存在数据时,重要的是定义创建伪不存在点的区域。这里展示如何实现三种不同的方法。在这三种情况中,我们首先创建了在场数据位置的掩码,以避免在与在场相同的像素上随机生成伪不存在点。

//4.Generate random pseudo-absences across the entire study area  *********************************************************************
// Make an image out of the presence locations. The pixels where we have presence locations will be removed from the area to generate pseudo-absences.
// This will prevent having presence and pseudo-absences in the same pixel. 
var mask = Data.reduceToImage({properties: ['random'],reducer: ee.Reducer.first()
}).reproject('EPSG:4326', null, ee.Number(GrainSize)).mask().neq(1).selfMask();var AreaForPA = mask.clip(AOI);

  在距离出现地点一定距离内生成伪缺失点,以将伪缺失点限制在物种可能到达的区域,并通过创建具有类似采样偏差的伪缺失点来考虑出现记录的潜在地理或环境采样偏差。buffer() 函数用于确定可用于生成伪缺失的区域,假定这些区域与记录具有相同的采样偏差,并代表动物可以散布的区域。
  buffer() 函数有两个参数,一个是缓冲区的距离(以米为单位),另一个是近似缓冲区圆时可容忍的最大误差。最大误差越大,计算效率越高。

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

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

相关文章

P17C++析构函数

目录 前言 01 什么是析构函数 1.1 举个栗子 02 为什么要写析构函数 前言 今天我们要讨论一下它的“孪生兄弟”,析构函数,它们在某些方面非常相似。 与构造函数相反,当对象结束其生命周期,如对象所在的函数已调用完毕时&…

Linux学习笔记-芯片性能检测

文章目录 概述Dhrystone(单核性能测试工具)简介:源码下载:源码编译:使用及输出结果 coremark(多核性能测试工具)简介:源码下载:源码编译:使用及输出结果&…

如何深刻理解从二项式分布到泊松分布

泊松镇贴 二项分布和泊松分布的表达式 二项分布: P ( x k ) C n k p k ( 1 − p ) n − k P(xk) C_n^kp^k(1-p)^{n-k} P(xk)Cnk​pk(1−p)n−k 泊松分布: P ( x k ) λ k k ! e − λ P(xk) \frac{\lambda^k}{k!}e^{-\lambda} P(xk)k!λk​e−…

坚鹏:中国工商银行数字化背景下银行公司业务如何快速转型培训

中国工商银行作为全球最大的银行,资产规模超过40万亿元,最近几年围绕“数字生态、数字资产、数字技术、数字基建、数字基因”五维布局,深入推进数字化转型,加快形成体系化、生态化实施路径,促进科技与业务加速融合&…

【2023 年终盘点】今年用的最多的 10 款 Mac 应用

分享顺哥今年用的最多的 10 款 Mac 应用。 排名不分先后,涉及各个方面的应用。 大家有好用的软件也欢迎在评论区留言分享! 顺哥博客 部分软件下载地址:顺哥的文件站 Mac 篇 以下 10 款应用大多数为免费应用,收费的会标明。 部分收费软件的破解版可以到这边下载 https:…

Vue框架学习笔记——数据代理

文章目录 前文提要数据代理的概念MVVM模型和Vue中的数据代理M,模型V,视图VM,视图模型 前文提要 本人仅做个人学习记录,如有错误,请多包涵 数据代理的概念 使用一个对象代理对另一个对象中属性的操作。 MVVM模型和Vu…

开发、测试、生产环境

开发环境:开发环境是程序猿们专门用于开发的服务器,配置可以比较随意, 为了开发调试方便,一般打开全部错误报告。简单讲就是项目尚且处于编码阶段,一般这时候会把代码放在开发环境中,不会放在生产环境中。 …

【JMeter】不同场景下的接口请求

场景1: 上传文件接口即Content-Type=multipart/form-data 步骤: 1. 接口url,method以及path正常填写 2.文件上传content-type是multipart/form-data,所以可以勾选【use multipart/form-data】,如果还有其他请求头信息可以添加一个请求头元件 3.请求参…

ubuntu 使用快照启动polygon主网

文章目录 一、 环境部署1.1 golang环境部署1.2 git安装1.3 gcc安装1.4 zstd 安装1.5 pv 安装1.6 aria2c 安装二、安装 polygon2.1 heimdall 安装2.1.1 heimdall 编译2.1.2 初始化 heimdall2.1.3 修改配置文件2.2 bor 安装2.2.1 bor 编译2.2.2 创建bor数据目录2.2.3 修改配置文件…

痤疮分类-yolov5 学习过程

1、在github上下载yolov5-5.0的源码。 GitHub - ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite

【数据中台】开源项目(2)-Dbus系统架构

大体来说,Dbus支持两类数据源: RDBMS数据源 日志类数据源 1 RMDBMS类数据源的实现 以mysql为例子. 分为三个部分: 日志抽取模块(最新版DBus已经废弃该模块,使用canal直接输出到kafka) 增量转换模块 全量拉取模块 1.1 日志抽…

【JavaEE初阶】线程安全问题及解决方法

目录 一、多线程带来的风险-线程安全 1、观察线程不安全 2、线程安全的概念 3、线程不安全的原因 4、解决之前的线程不安全问题 5、synchronized 关键字 - 监视器锁 monitor lock 5.1 synchronized 的特性 5.2 synchronized 使用示例 5.3 Java 标准库中的线程安全类…

【Spring Boot】如何集成Swagger

Swagger简单介绍 Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务。功能主要包含以下几点: 可以使前后端分离开发更加方便,有利于团队协作接口文档可以在线自动生成,有利于降低后端开发人员编写…

【源码分析】zeebe actor模型源码解读

zeebe actor 模型🙋‍♂️ 如果有阅读过zeebe 源码的朋友一定能够经常看到actor.run() 之类的语法,那么这篇文章就围绕actor.run 方法,说说zeebe actor 的模型。 环境⛅ zeebe release-8.1.14 actor.run() 是怎么开始的🌈 Lon…

【python】Python将100个PDF文件对应的json文件存储到MySql数据库(源码)【独一无二】

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

那些年,关于CKACKS认证的那些事儿?

前言 遥想2020年的年初,疫情封城封村之际,工作之余在B站将尚硅谷的linux中的k8s视频完整系统的学习了一遍,自此像是打通了任督二脉一般,开启了对k8s的探索之旅,一路也是磕磕绊绊的在工作中使用k8s。 终于在23年的6月仲…

【办公软件】电脑开机密码忘记了如何重置?

这个案例是家人的电脑,已经使用多年,又是有小孩操作过的,所以电脑密码根本不记得是什么了?那难道这台电脑就废了吗?需要重新装机吗?那里面的资料不是没有了? 为了解决以上问题,一般…

编程语言发展史:Python语言的兴起和特点

预计更新 第一部分:早期编程语言 1.1布尔代数和机器语言 1.2汇编语言的出现和发展 1.3高级语言的兴起 第二部分:主流编程语言 1.1 C语言的诞生及其影响 1.2 C语言的发展和应用 1.3 Java语言的出现和发展 1.4 Python语言的兴起和特点 1.5 JavaScript语言…

技术前沿探索:人工智能与大数据融合的未来

技术前沿探索:人工智能与大数据融合的未来 摘要:本博客将探讨人工智能与大数据融合领域的最新技术趋势、前沿研究方向以及挑战与机遇。通过介绍相关技术和案例,我们希望激发读者对这一领域的兴趣,并为其职业发展提供有益参考。 一…

万字解析设计模式之模板方法与解释器模式

一、模板方法模式 1.1概述 定义一个操作中算法的框架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 例如,去银行办理业务一般要经过以下4个流程:取号、排队、办理具体业…