Отсутствуют данные при объединении 2 кадров пространственных данных

#r #merge #project #missing-data #sf

Вопрос:

У меня есть фрейм данных (называемый v1), который содержит более 4000 наблюдений за недвижимостью в Мадриде, Испания, с 10 переменными (цена, площадь и т. Д.). Он также имеет переменные долготы и широты (числовые переменные). Я преобразовал такой фрейм данных в пространственный фрейм (называемый v1.espacial), используя st_as_sf функцию и установив crs как 25830. Почему я выбрал 25830 в качестве системы координат? потому что это то же самое, что шейп-файл, с которым я хочу объединить эти данные.

У меня есть шейп-файл (называемый shape), в котором отображаются округа Мадрида. Я хотел объединить оба пространственных кадра с помощью st_join функции, но при этом форма полностью меняется (отсутствуют значения). Кто-нибудь может мне помочь, пожалуйста?

Непрост. данные (v1)

 gt; class(v1) [1] "data.frame" gt; str(v1) 'data.frame': 4087 obs. of 10 variables:  $ id : num 1.53e 08 1.55e 08 1.45e 08 1.57e 08 1.57e 08 ...  $ coordinates.latitude : num 40.5 40.4 40.4 40.5 40.3 ...  $ coordinates.longitude: num -3.47 -3.66 -3.69 -3.87 -3.78 ...  $ location : chr "Constituciu00F3n, 90, Torreju00F3n de Ardoz" "Madrid Capital" "Madrid Capital" "Las Rozas de Madrid" ...  $ description : chr "GARSIERRA. Local muy amplio con 1 bau00F1o. Situado en la segunda planta del centro comercial El Cu00EDrculo, a"| __truncated__ " PISO vende excelente local comercial A PIE DE CALLE.rnrnPropiedad de uso comercial con dos amplias estancias q"| __truncated__ "Local oficina en 2 plantas de 300 meytros cada una, luminoso, 4 bau00F1os, buena finca, excelente zona y muy bien comunicado." "en exclusiva local comercial de 37 m2 a la venta en las Rozas (Madrid). Se encuentra en el centro de la poblaci"| __truncated__ ...  $ rawPrice : num 120343 123000 2500000 93500 481219 ...  $ subtypeId : num 0 0 0 0 0 0 0 0 0 0 ...  $ conservationState : num 2 3 4 NA NA NA NA NA NA NA ...  $ surface : num 119 81 700 37 153 151 95 444 766 54 ...  $ floor : num 7 5 3 NA NA NA NA NA NA NA ...  

Шейп-файл (скачан с сайта правительства Испании)

 gt; class(shape) [1] "sf" "data.frame"   summary(shape)  COD_DIS COD_DIS_TX NOMBRE DISTRI_MAY DISTRI_MT   Length:21 Length:21 Length:21 Length:21 Length:21   Class :character Class :character Class :character Class :character Class :character   Mode :character Mode :character Mode :character Mode :character Mode :character         Area_m2 geometry   Min. : 4679185 POLYGON :21   1st Qu.: 6103168 epsg:25830 : 0   Median : 14048316  proj=utm ...: 0   Mean : 28783577   3rd Qu.: 27626096   Max. :237838370   

Преобразование v1 в пространственные данные

 v1.espaciallt;-st_as_sf(v1,coords=c("coordinates.longitude","coordinates.latitude"), crs=25830)  

Объединение обоих объектов

 v1.espaciallt;-st_join(v1.espacial, shape)  

ПРОБЛЕМА Все значения из фигуры отсутствуют

 str(v1.espacial) Classes ‘sf’ and 'data.frame': 4087 obs. of 15 variables:  $ id : num 1.53e 08 1.55e 08 1.45e 08 1.57e 08 1.57e 08 ...  $ location : chr "Constituciu00F3n, 90, Torreju00F3n de Ardoz" "Madrid Capital" "Madrid Capital" "Las Rozas de Madrid" ...  $ description : chr "GARSIERRA. Local muy amplio con 1 bau00F1o. Situado en la segunda planta del centro comercial El Cu00EDrculo, a"| __truncated__ " PISO vende excelente local comercial A PIE DE CALLE.rnrnPropiedad de uso comercial con dos amplias estancias q"| __truncated__ "Local oficina en 2 plantas de 300 meytros cada una, luminoso, 4 bau00F1os, buena finca, excelente zona y muy bien comunicado." "en exclusiva local comercial de 37 m2 a la venta en las Rozas (Madrid). Se encuentra en el centro de la poblaci"| __truncated__ ...  $ rawPrice : num 120343 123000 2500000 93500 481219 ...  $ subtypeId : num 0 0 0 0 0 0 0 0 0 0 ...  $ conservationState: num 2 3 4 NA NA NA NA NA NA NA ...  $ surface : num 119 81 700 37 153 151 95 444 766 54 ...  $ floor : num 7 5 3 NA NA NA NA NA NA NA ...  $ COD_DIS : chr NA NA NA NA ...  $ COD_DIS_TX : chr NA NA NA NA ...  $ NOMBRE : chr NA NA NA NA ...  $ DISTRI_MAY : chr NA NA NA NA ...  $ DISTRI_MT : chr NA NA NA NA ...  $ Area_m2 : num NA NA NA NA NA NA NA NA NA NA ...  $ geometry :sfc_POINT of length 4087; first list element: 'XY' num -3.47 40.46  - attr(*, "sf_column")= chr "geometry"  - attr(*, "agr")= Factor w/ 3 levels "constant","aggregate",..: NA NA NA NA NA NA NA NA NA NA ...  ..- attr(*, "names")= chr [1:14] "id" "location" "description" "rawPrice" ...  

Комментарии:

1. скорее всего, вы ввели данные в EPSG:4326 (десятичные градусы) и объявили, что они указаны в единицах EPSG:25830 (метры). Что вам нужно сделать, это сначала запустить st_as_sf с EPSG 4326, а затем — в качестве второго шага — преобразовать их в sf::st_transform() EPSG:25830. Вы также можете найти mapview::mapview() полезным при отладке

2. Большое спасибо @JindraLacko, так лучше, отсутствует только 50% данных. Я буду продолжать пытаться это исправить.