1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| library(rgdal)
# Lecture de la couche shape
pol <- readOGR("E:/Stage_2015_QGIS/Echantillonnage_Sissonne/Anemone_sauvage/Echantillonnage_2015/Polygones_emprise _pop", "Polygone_emprise_ech-tampon")
# afficher la projection de la couche
print(proj4string(pol))
# [1] "+proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +units=m +no_defs"
# Génerer la visualisation de la couche
plot(pol, axes=TRUE, border="black")
# Récupérer les données spatiales
maxXY <- bbox(pol)[, 2]
minXY <- bbox(pol)[, 1]
plot(pol, xlim = c(minXY[1], maxXY[1]), ylim = c(minXY[2], maxXY[2]))
C=cbind(maxXY,minXY)
library(spatstat)
# Définition du polygoe, de la longueur des transects et du nombre de transects (points)
data("C")
mywindow <- pol
ltransect <- 200
npoints <- 10
s<- 1:npoints
# Génerer des points aléatoire dans la zone
cosa <- runifpoint(npoints, mywindow)
plot(cosa,title="")
#Dataframe avec les coordonnées de chaque point
cosaxy <- data.frame(cosa$x,cosa$y)
# Calcul d'un cercle autour de chaque point de la longueur du transect
cosadisc<- apply(cosaxy,1, function(x) disc(r=ltransect, x))
# Verifier que les cercles sont bien à l'interieur du polygone
cosadisc.df <- lapply(cosadisc, function(W){
inside.owin(W$bdry[[1]]$x,W$bdry[[1]]$y
,w=mywindow)})
#Fonction pour échantillonner chacun des cercles de points dans le polygone
#(en fonction de la longueur du transect et de l'inclusion dans le polygone)
samplea2 <- function(cosaxy, l1=cosadisc, l2=cosadisc.df){
result<-c(0,0)
for (i in 1:length(l1)){
truinside<-sum(l2[[i]])
inside <-cbind(l1[[i]]$bdry[[1]]$x,l1[[i]]$bdry[[1]]$y)[l2[[i]],]
result<-rbind(result, inside[sample(1:truinside, size=1),])
}
result<-result[-1,]
result<-cbind(cosaxy,result)
return(result)
}
#Le résultat est une matrice avec coordonnées de chaque transect (x0/y0 et x1/y1)
#Afficher dans un dataframe les résultats de la fonction avec les coordonées des transects
segmentos<-samplea2(cosaxy)
#Dessin des transects aléatoire en prenant pour point de départ le point de coordonées x0/yo
segments(segmentos[,1], segmentos[,2],segmentos[,3], segmentos[,4])
#Extraction des coordonées des transect
write.table(segmentos[,c(1,2)], "Coord1.csv", row.names=FALSE, sep="\t",dec=",", na=" ")
write.table(segmentos[,c(3,4)], "Coord2.csv", row.names=FALSE, sep="\t",dec=",", na=" ") |
Partager