формат данных о местоположении для пакета adehabitat - PullRequest
2 голосов
/ 28 октября 2011

У меня есть файл в этом формате:

ASCII формат

Первые строки выглядят так:

ncols 1440
nrows 720
xllcorner -180.0
yllcorner -90
cellsize 0.25
NODATA_value -9999

В основном у меня естьмир с 1440 «тайлами» в направлении х (долгота) и 720 «тайлами» в направлении у (широта).Каждая «плитка» представляет собой квадрат длиной 0,25 градуса.Я думаю, что у меня есть xllcorner и yllcorner правильно.Я могу нарисовать эту карту следующим образом: R:

library("adehabitat")
bio1 <- import.asc("D:/ENFA/data.asc")
maps <- as.kasc(list(data = bio1))
image(maps, col = cm.colors(256), clfac = list(Aspect = cl))

Карта выглядит отлично.

Я хотел бы провести некоторый анализ экологического нишевого фактора (ENFA) с использованием пакета adehabitat, и я неслишком уверен насчет данных о местоположении.По сути, на данный момент у меня они представлены в виде долготы и широты, но я также мог бы генерировать их как «индекс плитки» (например, в левом нижнем углу есть широта -90 и долгота -180, поэтому «индекс плитки» будет 0, 0 - верно?).Какой правильный формат данных о местоположении?Я бы использовал код ENFA следующим образом:

locs <- read.table("D:/ENFA/Locs.txt", header = TRUE, sep="\t")
dataenfa1 <- data2enfa(maps, locs)
pc <- dudi.pca(dataenfa1$tab, scannf = FALSE)
enfa1 <- enfa(pc, dataenfa1$pr,scannf = FALSE)
hist(enfa1)

Буду признателен за любые комментарии, пожалуйста.Заранее спасибо.

Ответы [ 2 ]

7 голосов
/ 01 ноября 2011

Проблема с сохранением ваших координат в широтно-длинной форме состоит в том, что в большинстве мест на земле градус долготы имеет длину, отличную от градуса широты.Это может привести к искажению ENFA из-за преувеличения расстояний в одних направлениях относительно расстояний в других.

Особенно, если ваши данные получены из сравнительно небольшой области, я бы рекомендовал повторно выражать координаты в метрах вдоль W / Eось X и S / N ось Y.Если все ваши очки попадают в одну UTM-зону , то вы можете выполнить преобразование в пределах R, используя project() в пакете rgdal:

Вот один пример, взято отсюда :

library(rgdal)

# Make a two-column matrix, col1 = long, col2 = lat
xy <- cbind(c(118, 119), c(10, 50))
# Convert it to UTM coordinates (in units of meters)
project(xy, "+proj=utm +zone=51 ellps=WGS84")
          [,1]    [,2]
[1,] -48636.65 1109577
[2,] 213372.05 5546301 

Более подробная информация о том, как управлять пространственными данными, доступна в "Прикладном анализе пространственных данных с помощью R" Биванда, Пебесмы и Гомеса-Рубио.Если вам нужна более конкретная помощь, попробуйте список рассылки R-sig-Geo .

Надеюсь, это поможет.

1 голос
/ 02 ноября 2011

Может быть, вы хотите преобразовать координаты в

GHAM (глобальный, иерархический, буквенно-цифровой и с кодировкой Мортона)

, представляющий глобус ячейками произвольногоТочность (настолько высокая или грубая, насколько вы пожелаете), поэтому любой широта / долгота имеет один буквенно-цифровой адрес, который остается сортируемым.

Вот аннотация GHAM: компактный глобальный геокод, пригодный для сортировки , Дункан Агнью :

Код GHAM представляет собойТехника для маркировки географических мест на основе их позиции.Он определяет адреса для ячеек равной площади, ограниченных постоянной широтой и долготой, с произвольно высокой точностью.Коды ячеек определяются путем применения порядка Мортона к рекурсивному делению на сетку 16 на 16 с результирующими числами, закодированными в пары букв и цифр.Лексический вид списков точек, помеченных таким образом, приблизит соседей (обычно) близко друг к другу;тесты на множестве глобальных наборов данных показывают, что в большинстве случаев фактическая ближайшая точка находится рядом в списке 50% времени и в пределах 5 записей 80% времени.

Исходный код является IAMG хранилище, но если вы не можете получить к нему доступ, я уверен, что он предоставит его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...