Правильное использование объектов sf: - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь объединить некоторые данные в R, я хочу добавить информацию о переписи о районах, кварталах и т. Д. ... в координаты, которые у меня есть.Мои данные выглядят следующим образом:

census_data <- blocks <- tigris::blocks("NY", "Kings", 2010) #manhattan data
long_lat <- raw_data %>% select(pickup_longitude, pickup_latitude)

long_lat - это фрейм данных и:

head(long_lat)
# A tibble: 6 x 2
  pickup_latitude pickup_longitude
            <dbl>            <dbl>
1            40.8            -74.0
2            40.7            -74.0
3            40.8            -74.0
4            40.7            -74.0
5            40.7            -74.0
6            40.8            -74.0
class(blocks)
[1] "sf"         "data.frame"

head(blocks)
Simple feature collection with 6 features and 17 fields
geometry type:  MULTIPOLYGON
dimension:      XY
bbox:           xmin: -73.98255 ymin: 40.58305 xmax: -73.92447 ymax: 40.62601
epsg (SRID):    4269
proj4string:    +proj=longlat +datum=NAD83 +no_defs

Я конвертирую свои данные long_lat для объединения с данными из моих блоков следующим образом:

long_lat_st <- st_as_sf(long_lat, coords = c("pickup_longitude",
                                         "pickup_latitude"),
                      crs = st_crs(blocks))

Для аргумента crs я просто передаю его в соответствии с данными блоков.Я пытался вручную закодировать его как: "+ proj = longlat + datum = NAD83", но когда я это сделаю, я получу несовпадение crs, несмотря на мои спецификации.

После запуска этой функции у меня есть следующее:

head(long_lat_st)
Simple feature collection with 6 features and 0 fields
geometry type:  POINT
dimension:      XY
bbox:           xmin: -74.01006 ymin: 40.72139 xmax: -73.96774 ymax: 40.77356
epsg (SRID):    4269
proj4string:    +proj=longlat +datum=NAD83 +no_defs
                    geometry
1 POINT (-73.97399 40.75726)
2 POINT (-74.01006 40.72139)
3 POINT (-73.97784 40.77356)
4  POINT (-73.9964 40.73223)
5  POINT (-73.9786 40.72432)
6 POINT (-73.96774 40.76598)

Теперь строки proj4 совпадают.

Можно ли передавать аргумент crs так, как я это сделал, или он делает недействительными мои longlat пары?

Отсюда я могу присоединиться к своим данным без ошибок:

joined <- st_join(long_lat_st, blocks, left = FALSE)

Я думаю, что это сработало правильно, но я просто хочу быть уверен.

1 Ответ

0 голосов
/ 20 февраля 2019

Краткий ответ - да.

Вы применяете систему координат координат / datum (описание формы Земли), оптимизированную для Северной Америки;если ваши данные о доставке получены из Северной Америки, и я не могу представить себе приложение, в котором их не будет, то это все, что вам нужно сделать.

Возможно, вы захотите проверить, нужен ли вам inner_join, который выбирает ваша спецификация left = FALSE, и является ли st_intersects типом st_join, который вас интересует.

st_intersects очень широко определен, поэтому он хорошо работает во многих случаях, но вас может заинтересовать st_within или другие.Обратитесь к разделу справки по ?st_join.

. Также ознакомьтесь с этой онлайн-книгой , где можно найти ответы на некоторые распространенные проблемы геокомпьютерных вычислений, используя sf.

.
...