R: Как проверить, существуют ли Lat и Long в полигоне файла JSON (Uber движение) - PullRequest
0 голосов
/ 04 ноября 2019

Краткое описание проблемы

У меня есть файл json (свободный от Uber Movement), который содержит идентификаторы (от 1 до 107). Кроме того, у меня есть фрейм данных с 2 столбцами - широтой и долготой.

Файл JSON-файла содержит полигоны с кординатами. 107 идентификаторов, представляющих 107 полигонов, т.е. 1,2,3 ... 107. Используя фрейм данных с 2 столбцами, т. Е. Широтой и долготой, я хочу вернуть 3-й столбец, представляющий многоугольник или идентификатор, который ограничивает широту и длину.

Подробная информация о файле JSON #

Бесплатный файл JSON от Uber движения составляет всего 256 КБ. Вот ссылка Uber для загрузки файла. Это последний файл на странице и единственный файл json в разделе «Границы шестнадцатеричных кластеров». Имя файла: 540_sublocations.json

#Load json. There might be a different approach
uber_json <- fromJSON(file = "540_sublocations.json")
uber_json
List of 2
 $ type    : chr "FeatureCollection"
 $ features:List of 107
  ..$ :List of 3
  .. ..$ type      : chr "Feature"
  .. ..$ properties:List of 2
  .. .. ..$ DISPLAY_NAME: chr "Kiwanja"
  .. .. ..$ MOVEMENT_ID : chr "1"
  .. ..$ geometry  :List of 2
  .. .. ..$ type       : chr "Polygon"
  .. .. ..$ coordinates:List of 1
  .. .. .. ..$ :List of 179
  .. .. .. .. ..$ : num [1:2] 36.9 -1.16
  .. .. .. .. ..$ : num [1:2] 36.9 -1.16
  .. .. .. .. ..$ : num [1:2] 36.9 -1.16
.
.
.
  .. .. .. .. ..$ : num [1:2] 36.9 -1.16
  .. .. .. .. ..$ : num [1:2] 36.9 -1.16
  .. .. .. .. ..$ : num [1:2] 36.9 -1.16
  .. .. .. .. ..$ : num [1:2] 36.9 -1.16

Строка выше с MOVEMENT_ID, равным 1, просто означает, что идентификатор равен 1. Таких данных 107.

Сведения о фрейме данных

df <- data.frame(Lat = c(-1.318,-1.351,-1.308), Long = c(36.83,36.89,36.84))
df
     Lat  Long
1 -1.318 36.83
2 -1.351 36.89
3 -1.308 36.84

Ожидаемый результат

Я хочу проверить каждую строку во фрейме данных, чтобы увидеть, какой полигон находится в файле json, т.е. какой идентификатор (от 1 до 107).

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

df

     Lat  Long  ID
1 -1.318 36.83 107
2 -1.351 36.89  56
3 -1.308 36.84  88
...