R sf: извлечь вложенные объекты geoJSON, вложенные в JSON - PullRequest
0 голосов
/ 02 апреля 2019

У меня есть файл JSON, в который вложены коллекции объектов geoJSON.

Можно ли прочитать в файле JSON, используя jsonlite::read_json(), извлечь биты geoJSON, а затем преобразовать полученный list в sf объект? Альтернативой является запись list обратно в JSON (текст) и чтение geoJSON с использованием пакета, подобного geojsonio.

Вот как выглядит мой код JSON:

{
  "all": [
    {
      "type": "Feature",
      "geometry": {
        "type": "GeometryCollection",
        "geometries": [
          {
            "type": "Point",
            "coordinates": [
              -75.155727,
              39.956318
            ]
          },{
            "type": "LineString",
            "coordinates": [
              [
                -75.15567895337301,
                39.95653558798881
              ],[
                -75.15575995337292,
                39.95616931624319
              ]
            ]
          },{
            "type": "Point",
            "coordinates": [
              -75.15566,
              39.956432
            ]
          }
        ]
      },
      "properties": {
        # properties
      }
    },{ 
      # more features of mixed type
    }
  ]
}

1 Ответ

1 голос
/ 03 апреля 2019

возможно

x <- '{
  "all": [
    {
      "type": "Feature",
      "geometry": {
        "type": "GeometryCollection",
        "geometries": [
          {
            "type": "Point",
            "coordinates": [
              -75.155727,
              39.956318
            ]
          },{
            "type": "LineString",
            "coordinates": [
              [
                -75.15567895337301,
                39.95653558798881
              ],[
                -75.15575995337292,
                39.95616931624319
              ]
            ]
          },{
            "type": "Point",
            "coordinates": [
              -75.15566,
              39.956432
            ]
          }
        ]
      },
      "properties": null
    }
  ]
}'
sf::st_read(jqr::jq(x, ".all[]"))

(строка отредактирована, чтобы быть действительной JSON)

...