2016-05-27 6 views
1

Я пытаюсь построить пространственную матрицу весов из шейп-файла (.shp) в R. Дело в том, что у меня даже нет идеи, как это сделать. И у меня проблемы с поиском каких-либо ссылок. В большинстве уроков я нахожу только описание того, как работать с шейп-файлом/картой вообще, или они используют уже доступный список окрестностей (например, columbus.nb).Построение весовой матрицы из файла формы в R

Любая помощь будет действительно оценена. Заранее спасибо.

+0

Возможно, это [сообщение] (http://stackoverflow.com/questions/27304797/r-spatial-weights-asymmetric-adjacency-matrix) станет началом. – lmo

ответ

1

Я надеюсь, что следующий код может помочь:

shapefile <- rgdal::readOGR(“shapefile_file.shp”) 
coordinatess <- sp::coordinates(shapefile) 
shapefile.knn <- spdep::knearneigh(coordinatess, k = number_of_shapefile_rows) 
shapefile.nb <- spdep::knn2nb(shapefile.knn) 

#list: 
dist <- spdep::nbdists(shapefile.nb,coordinates) 
dist2 <- lapply(dist, function(x) 1/(x^2)) 

#listw: 
dist2.listw <- spdep::nb2listw(shapefile.nb, glist=dist2) 

#matrix: 
dist2.mat <- spdep::listw2mat(dist2.mat) 

Это создает перевернутый квадрат расстояния матрица - на мой взгляд, часто лучший выбор в пространственной эконометрики. Его можно легко изменить, чтобы получить матрицу k ближайших соседей или матрицу перевернутого расстояния.

Обязательные пакеты записываются перед оператором «::». Вам необходимо установить их.