#r #join #gis #arcgis #shapefile
#r #Присоединиться #гис #arcgis #шейп-файл
Вопрос:
У меня есть два шейп sf1
-файла и sf2
для одной и той же области. sf1 — это данные о населении за 2015 год и имеет 6 переменных.
sf2
это данные о населении за 2010 год и имеет 5 переменных.
Оба имеют один общий атрибут GEOID
. Я хочу получить комбинированный слой с 8 переменными (6 с 2015 года и 2 (переменная и значение) с 2010 года).
Как я могу объединить два шейп-файла, используя общий атрибут GEOID
в R (такой же, как join
в ArcGIS? Я попытался объединить их.
sf3 <- merge(sf1, sf2)
Он объединяет два слоя, чтобы дать мне 11 переменных. Это не то, что я хочу. Я хочу объединить таблицы атрибутов для двух слоев и получить один из общих атрибутов.
Я попробовал inner_join()
, что выдает ошибку
Ошибка: у y не должно быть класса sf; для пространственных соединений используйте
st_join()
.
Я пытался st_join()
, но получил 229 объектов. из 10 переменных. Я просто хочу одинаковое количество переменных с 8 переменными.
Комментарии:
1. Попробуйте
inner_join(sf1, sf2, by="GEOID")
2. Я действительно пробовал это. Я получил сообщение об ошибке «Ошибка в UseMethod («inner_join»): нет применимого метода для ‘inner_join’, применяемого к объекту класса «c (‘SpatialPolygonsDataFrame’, ‘SpatialPolygons’, ‘Spatial’, ‘SpatialVector’)»
3. Похоже, что ваши геометрии не одинаковы для каждого геоида между годами, поэтому
st_join
возвращает то, чего вы не ожидаете. Объединение по умолчанию — ‘st_intersects. Either try another join method for
st_join` или выберите геометрию какого года использовать и отбросьте другую геометрию, допускающую aleft_join
.4. Обычно вы не можете использовать пространственные типы данных с функциями sf. Убедитесь, что ваши данные являются объектами sf, используя
st_as_sf