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 为什么要写析构函数 前言 今天我们要讨论一下它的“孪生兄弟”,析构函数,它们在某些方面非常相似。 与构造函数相反,当对象结束其生命周期,如对象所在的函数已调用完毕时&…

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

泊松镇贴 二项分布和泊松分布的表达式 二项分布: 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万亿元,最近几年围绕“数字生态、数字资产、数字技术、数字基建、数字基因”五维布局,深入推进数字化转型,加快形成体系化、生态化实施路径,促进科技与业务加速融合&…

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

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

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

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

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

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

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

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

qt pdf 模块简介

文章目录 1. 技术平台2. Qt pdf 模块3. cmake 使用模块4. 许可证5. 简单示例5.1 CMakeLists.txt5.2 main.cpp 6. 总结 1. 技术平台 项目说明OSwin10 x64Qt6.6compilermsvc2022构建工具cmake 2. Qt pdf 模块 Qt PDF模块包含用于呈现PDF文档的类和函数。 QPdfDocument 类加载P…

监控同一局域网内其它主机上网访问信息

1.先取得网关IP 2.安装IPTABLES路由表 sudo apt-get install iptables 3.启用IP转发 sudo sysctl -p 查看配置是否生效 4.配置路由 iptables -t nat -A POSTROUTING -j MASQUERADE 配置成功后,使用sudo iptables-save查看

[leetCode]257. 二叉树的所有路径(两种方法)

257. 二叉树的所有路径 题目描述: 给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。 叶子节点 是指没有子节点的节点。 示例: 输入:root [1,2,3,null,5]输出:["1-&g…

【Spring】Spring事务失效问题

📫作者简介:小明java问道之路,2022年度博客之星全国TOP3,专注于后端、中间件、计算机底层、架构设计演进与稳定性建设优化,文章内容兼具广度、深度、大厂技术方案,对待技术喜欢推理加验证,就职于…

基于uniapp+vue微信小程序的健康饮食管理系统 907m6

设计这个微信小程序系统能使用户实现不需出门就可以在手机或电脑前进行网上查询美食信息、 运动视频等功能。 本系统由用户和管理员两大模块组成。用户界面显示在应用程序中,管理员界面显示在后台服务中,通过小程序端与服务端间进行数据交互与数据传输实…

自建CA实战之 《0x03 代码签名》

自建CA实战之 《0x03 代码签名》 本文针对Windows平台,介绍如何使用自建CA来签发代码签名证书。 之前的文章中,我们介绍了如何自建CA,以及如何使用自建CA来签发Web服务器证书、客户端证书。 本文将介绍如何使用自建CA来签发代码签名证书。…