2017-02-10 3 views
0

Я думаю, что хочу сделать что-то очень основное, но, похоже, я не нахожу сообщений о том, как это сделать. В случае, если я ошибаюсь, и на этой теме уже было сообщение, прошу прощения!Пересечение двух шейп-файлов с помощью R

У меня есть два шейп, которые вы можете найти через этот link:

setwd("~/where you saved your data") 
nuts <- readOGR(".", layer = "NUTS_RG_60M_2010") 
aqueduct <- readOGR(".", layer = "aqueduct_global_dl_20150409") 

И честно говоря, сейчас я уже застрял. Я хотел бы добавить значения всех переменных файла формы акведука в пересекающиеся области орехов3 файла орехов.

Я пробовал gIntersection, пересекаюсь, извлекаю ... но безуспешно. Может кто-нибудь, пожалуйста, помогите мне правильно добраться до пересечения? Конечные результаты представляют собой файл с ореховым шейпом со всеми переменными файла формы aqueduct.

спасибо!

ответ

1

Это пространственное соединение двух полигональных слоев. Если каждая особенность в орехах точно совпадает с одной особенностью акведука, нет простого/единственного способа сделать пространственное соединение.

Вместо этого, вы можете получить список строк из таблицы атрибутов акведука, соответствующих каждому признаку орехов -

nuts_over1 = over(nuts, aqueduct, returnList = TRUE) 

Или обобщать конкретные атрибуты с функцией, в этом случае результат может быть присоединен к таблице атрибутов орехов. Например, страны акведука пересекающих шесть первых функций следующим образом -

nuts_over2 = over(
    nuts, 
    aqueduct[, "COUNTRY"], 
    fn = function(x) paste(x, collapse = ", ") 
) 
head(nuts_over2) 
                  COUNTRY 
1        Austria, Hungary, Austria, Hungary 
2 Austria, Hungary, Austria, Hungary, Slovakia, Austria, Slovakia 
3      Austria, Austria, Hungary, Austria, Hungary 
4               Austria 
5      Austria, Austria, Austria, Austria, Austria 
6            Austria, Austria 

Этой информация может быть соединен назад к таблице атрибутов орехов следующим образом -

[email protected] = cbind([email protected], nuts_over2) 
head([email protected]) 
    NUTS_ID STAT_LEVL_ SHAPE_Leng SHAPE_Area 
0 AT111   3 1.089017 0.08091455 
1 AT112   3 2.257319 0.20926007 
2 AT113   3 2.002492 0.17728455 
3 AT121   3 3.158370 0.40147321 
4 AT122   3 2.956927 0.42675504 
5 AT123   3 2.010415 0.14145865 
                  COUNTRY 
0        Austria, Hungary, Austria, Hungary 
1 Austria, Hungary, Austria, Hungary, Slovakia, Austria, Slovakia 
2      Austria, Austria, Hungary, Austria, Hungary 
3               Austria 
4      Austria, Austria, Austria, Austria, Austria 
5            Austria, Austria 
Смежные вопросы