Возникли проблемы при расчете области Home Range
У меня много проблем с расчетом площади домашнего ареала животного. Я подумал, что однажды я произвел домашний диапазон (если я сделал это правильно), вычислить площадь будет легко, но нет
Я вставил часть кода, который я пробовал. Интересно, у кого-нибудь есть понимание?
# Load package
library(adehabitat)
#Load file Frodo
dd <- read.csv(file.choose(), header = T)
# Plot the home range
xy <- dd[,c("X","Y")]
id <- dd[,"name"]
hr<- mcp(xy,id,percent=95)
plot(hr)
points(xy[xy$id=="frodo",])
#Great. Home range produced. Now calculate area
area <- mcp.area(xy, id,percent = 95),
# Result 2.287789e-09 Ha. Way to small. Maybe it doesnt like Lat / Long.
# Will try and convert coordinates into M or Km
# Load map project
library(mapproj)
x<-mapproject(t$X,t$Y,projection="mercator")
# Its converted it to something but its not M's or Km's.
# I'll try and run it anyway
xy <- x[,c("X","Y")]
# incorrect number of dimensions
# Ill try Project 4
library(proj4)
xy <- dd[,c("X","Y")]
tr <- ptransform(xy/180*pi, '+proj=latlong +ellps=sphere',
'+proj=merc +ellps=sphere')
View(tr)
# There seems to be a Z column filled with 0's.
# It that going to affect anything?
# Let's look at the data
plot(tr)
# Looks good, Lets try and create a home range
xy <- tr[,c("x","y")]
# 'incorrect number of dimensions'
Понятия не имею, в чем проблема. Не знаю, нахожусь ли я на правильном пути или делаю что-то не так
1 ответ
Чтобы рассчитать площадь, вам нужны ваши точки в проекционных системах координат (площадь в long/lat будет просто единицами градуса). Тип проекции, которую вы используете, будет иметь большое влияние на результирующую область. Например, проекция Меркатора искажает область вдали от экватора - вы, возможно, захотите посмотреть лучшую проекцию равной области для вашего местоположения. Я собираюсь ответить на программную часть вашего вопроса, как только вы найдете правильные прогнозы для использования, вы можете заменить их.
require(sp)
require(rgdal)
orig.points <- dd[,c("X","Y")]
# geographic coordinate system of your points
c1 <- CRS("+proj=latlong +ellps=sphere")
# define as SpatialPoints
p1 <- SpatialPoints(orig.points, proj4string=c1)
# define projected coordinate system of your choice, I am using the one you
# defined above, but see:
# http://www.remotesensing.org/geotiff/proj_list/mercator_1sp.html
# to make sure your definition of the mercator projection is appropriate
c2 <- CRS("+proj=merc ellps=sphere")
p2 <- spTransform(p1, c2) # project points
# convert to Polygon (this automatically computes the area as an attribute)
poly <- Polygon(p2)
poly@area #will print out the area