Очистка данных геокодирования с помощью r

#r

Вопрос:

Я очищаю свой набор данных и не знаю, как очистить данные GPS. когда я использую функцию таблицы, я обнаруживаю, что они вводятся в разных формах. «547140», «35.6997», «251825.7959», «251470.43», «54/4077070001», и «54/305495»

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

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

1. Есть ли способ выяснить, в какой географической системе координат находится GPS?

Ответ №1:

Ваша главная проблема заключается в стандартизации GPS путем проецирования GPS в выбранную систему координат. Допустим, у нас есть GPS Амстердама в двух разных системах координат, одна в амерсфорте/rd new (espg 28992) и одна в wsg1984 (espg 4326).:

               x            y  location  espg
1: 1.207330e 05 486632.35593 amsterdam 28992
2: 4.884088e 00     52.36651 amsterdam  4326


structure(list(x = c(120733.012428048, 4.88408811380055), y = c(486632.355933105, 
52.3665054922233), location = c("amsterdam", "amsterdam"), espg = c(28992, 
4326)), row.names = c(NA, -2L), class = "data.frame")
 

Что мы хотим сделать, так это перенастроить наши координаты в одну выбранную географическую систему координат. В этом случае я использовал WSG1984 (espg 4326).

 library(sf)

#here I tell R which columns contain the coordinates
coordinates(dt) <- ~x y

#I now convert the table to a spatial object
dt <- st_as_sf(dt)

#here I split by the different ESPG's present
dt <- split(dt, dt$espg)

#here I loop through every individual espg present in the dataset
for(i in 1:length(dt)){
  #here I say in which coordinate system (espg) the GPS data is in
  st_crs(dt[[i]]) <- unique(dt[[i]]$espg)

  #here I transform the coordinates to another projection (in this case WSG1984, espg 4326)
  dt[[i]] <- dt[[i]] %>% st_transform(4326)
}

#here I bind the items of the list together
dt <- do.call(rbind, dt)

head(dt)
Simple feature collection with 2 features and 2 fields
Geometry type: POINT
Dimension:     XY
Bounding box:  xmin: 4.884088 ymin: 52.36651 xmax: 4.884088 ymax: 52.36651
Geodetic CRS:  WGS 84
       location  espg                  geometry
4326  amsterdam  4326 POINT (4.884088 52.36651)
28992 amsterdam 28992 POINT (4.884088 52.36651)
 

В столбце геометрия теперь вы видите, что координаты равны друг другу.

Суть в том, что вам нужно знать географическую систему координат, в которой находятся данные GPS. Затем вы можете преобразовать свои данные из таблицы в пространственный объект и преобразовать данные GPS в выбранную проекцию.

Кроме того, всегда полезно проверить, правильно ли ваше предположение об исходном ESPG, например, построив график данных.

 library(ggplot2)
library(ggspatial)

ggplot(dt)   annotation_mape_tile()   geom_sf(size = 4)   theme(text = element_text(size = 15)   facet_wrap(~espg)

 

На рисунке ниже мы видим, что проекция прошла хорошо для обоих espg.

фигура

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

1. большое спасибо за ваши подробные объяснения @maarvd. Я новичок в r, и мой вопрос может показаться глупым. я установил пакеты sf и geoR и пытаюсь сделать то, что вы сказали. но получите эту ошибку. не удалось найти функцию «координаты

2. «координаты» взяты из пакета «sp».