2017-07-24 4 views
2

Je demande le support de vos compétences R. Pour l'un de mes articles, je modélise la répartition des espèces d'arbres en Amazonie à l'aide de variables de télédétection (bandes LT 3, 4, 5, 7, DEM et NDVI) et je prévois de masquer tous les sites hors des zones convexes. coque "de mes prédicteurs. J'ai passé en revue plusieurs paquets et fonctions dans R (convhull, convhulln) mais sans succès.Fichier raster avec NAs comme zones d'une coque convexe environnementale

J'ai extrait toutes les valeurs des variables de plus de 6000 points de présence. Je dois faire une coque convexe à cet ensemble de points et ensuite l'emmener dans l'espace géographique, puis masquer tout. Donc, fondamentalement, je besoin d'un fichier raster avec NAs et de 1 (zones NAs de la coque convexe et les zones 1s dans la coque convexe)

dbase <-read.csv("dbase.csv") 
names(dbase) 
# [1] "id"  "pca"  "block"  "strip"  "tree.n" "plaque" 
# [7] "species" "diameter" "height" "volume" "x"   "y"   
# [13] "condition" "sector" 
coordinates(dbase)<-~x+y 

files <- list.files("C:/Users/...", 
        pattern="asc", full.names=TRUE) 
predictors <-stack(files) # b3, b4, b5, b7, ndvi and dem 
presence_var <-extract(predictors,dbase) 

The predictor variables

#  B3 B4 B5 B7 DEM  ndvi 
    # [1,] 25 75 57 18 349 0.5000000 
    # [2,] 22 79 64 19 332 0.5643564 
    # [3,] 24 79 62 20 336 0.5339806 
    # [4,] 23 79 62 20 341 0.5490196 
    # [5,] 25 80 63 21 307 0.5238096 
    # [6,] 24 83 63 20 342 0.5514019 
    # ... 

conhull <-convHull(presence_var) 
pr <- predict(conhull, predictors) 
plot(pr) # empty results 

Toutes les suggestions?

+0

Il est bon de voir une question 'SDM' :) Cependant, si vous voulez augmenter vos chances d'obtenir une bonne réponse, veuillez écrire un exemple reproductible minimum. Cela inclut des exemples de données et du code de ce que vous avez essayé jusqu'à présent. Cet article pourrait vous aider: https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example – JanLauGe

+0

Merci JanLauGe, je l'ai déjà fait. Espérons que quelqu'un pourrait être en mesure d'aider :) –

Répondre

2

J'ai créé quelques exemples de données pour illustrer l'approche que je pense serait bon pour vous:

library(raster) 
library(tidyverse) 

# an empty raster of global extent 
r <- raster() 
# make up some raster values 
values(r) <- runif(length(r)) 

# make up some random coordinates around north america 
coords <- cbind( 
    lon = runif(100, min = -120, max = -60), 
    lat = runif(100, min = 30, max = 50)) 

# let's have a look 
plot(r) 
points(coords, add = TRUE) 

enter image description here


Ci-dessous je donne l'exemple des données à

  1. identifier les points qui composent la coque convexe
  2. créer une coque convexe SpatialPolygon
  3. masque la trame de sorte que seules les cellules interceptant la coque convexe restent

# get the convex hull 
hull_points <- coords[chull(coords),] 

# convert to polygon 
hull_polygon <- hull_points %>% 
    Polygon() %>% 
    list() %>% 
    Polygons(1) %>% 
    list() %>% 
    SpatialPolygons() 

# mask the raster 
rr <- mask(r, hull_polygon) 

# let's have another look 
plot(rr) 

enter image description here

Une remarque: Si je comprends bien ce que vous essayez Pour faire, je vous recommande d'ajouter un tampon autour de votre polygone spatial avant de faire le masquage. C'est parce qu'il y a des zones très probablement avec une haute adaptation de l'habitat juste à côté de vos occurrences marginales, mais à l'extérieur de la coque convexe et vous devriez faire attention à les couper.

+0

Merci beaucoup JanLauGe –

+0

Mon plaisir. Veuillez accepter ma réponse avec la coche sur le côté gauche. Merci! – JanLauGe

+0

Merci beaucoup @JanLauGe. J'ai essayé cela aussi avec la fonction de coque convexe du paquet de géométrie. J'ai besoin de faire une coque convexe environnementale avec toutes les 6 variables que j'ai (pas une "coque convexe géographique" avec des coordonnées seulement). Ensuite, essayez de créer un fichier raster contenant des NA pour les pixels qui sont hors de cette coque convexe en 6 dimensions. –