【问题标题】:How to load geojson data from a FeatureCollection into a data.frame?如何将 FeatureCollection 中的 geojson 数据加载到 data.frame 中?
【发布时间】:2018-11-21 13:36:06
【问题描述】:

您好,我希望使用 httr 包将来自英国国家统计局 API 的 geojson FeatureCollection 带入 data.frame。

library(httr)

HealthGeog <- GET("https://opendata.arcgis.com/datasets/f0095af162f749ad8231e6226e1b7e30_0.geojson")

并获得成功的响应:

> HealthGeog
Response [https://opendata.arcgis.com/datasets/f0095af162f749ad8231e6226e1b7e30_0.geojson]
  Date: 2018-11-21 13:28
  Status: 200
  Content-Type: application/json; charset=utf-8
  Size: 9.59 MB

但是刚接触 JSON,不知道如何导航到 FeatureCollection 中的列表并将其加载到 data.frame 中?

【问题讨论】:

  • sf &lt;- geojsonsf::geojson_sf( 'https://opendata.arcgis.com/datasets/f0095af162f749ad8231e6226e1b7e30_0.geojson' ) 也会直接将geojson文件读入sf对象

标签: r json geojson


【解决方案1】:

我们可以使用 R 空间工具来阅读它,但请参阅本节之后的部分,了解您可能不需要阅读的原因:

library(sf)
library(tidyverse)

health_geog_url <- "https://opendata.arcgis.com/datasets/f0095af162f749ad8231e6226e1b7e30_0.geojson"

# don't be one of 'those people' and waste bandwidth that isn't yours:
httr::GET(
  url = health_geog_url,
  httr::write_disk(basename(health_geog_url)),
  httr::progress()
)

health_geog <- st_read(basename(health_geog_url))
## Reading layer `OGRGeoJSON' from data source `/Users/bob/Desktop/f0095af162f749ad8231e6226e1b7e30_0.geojson' using driver `GeoJSON'
## replacing null geometries with empty geometries
## Simple feature collection with 32844 features and 10 fields (with 32844 geometries empty)
## geometry type:  GEOMETRYCOLLECTION
## dimension:      XY
## bbox:           xmin: NA ymin: NA xmax: NA ymax: NA
## epsg (SRID):    4326
## proj4string:    +proj=longlat +datum=WGS84 +no_defs

health_geog
## Simple feature collection with 32844 features and 10 fields (with 32844 geometries empty)
## geometry type:  GEOMETRYCOLLECTION
## dimension:      XY
## bbox:           xmin: NA ymin: NA xmax: NA ymax: NA
## epsg (SRID):    4326
## proj4string:    +proj=longlat +datum=WGS84 +no_defs
## First 10 features:
##     LSOA11CD       LSOA11NM   CCG18CD CCG18CDH           CCG18NM   STP18CD
## 1  E01011388     Leeds 019B E38000225      15F     NHS Leeds CCG E54000005
## 2  E01011865 Wakefield 042D E38000190      03R NHS Wakefield CCG E54000005
## 3  E01011833 Wakefield 025E E38000190      03R NHS Wakefield CCG E54000005
## 4  E01011390     Leeds 087A E38000225      15F     NHS Leeds CCG E54000005
## 5  E01011866 Wakefield 045B E38000190      03R NHS Wakefield CCG E54000005
## 6  E01011834 Wakefield 015A E38000190      03R NHS Wakefield CCG E54000005
## 7  E01011391     Leeds 087B E38000225      15F     NHS Leeds CCG E54000005
## 8  E01011867 Wakefield 042E E38000190      03R NHS Wakefield CCG E54000005
## 9  E01011835 Wakefield 012A E38000190      03R NHS Wakefield CCG E54000005
## 10 E01011392     Leeds 087C E38000225      15F     NHS Leeds CCG E54000005
##           STP18NM   LAD18CD   LAD18NM  FID                 geometry
## 1  West Yorkshire E08000035     Leeds 1001 GEOMETRYCOLLECTION EMPTY
## 2  West Yorkshire E08000036 Wakefield 1002 GEOMETRYCOLLECTION EMPTY
## 3  West Yorkshire E08000036 Wakefield 1003 GEOMETRYCOLLECTION EMPTY
## 4  West Yorkshire E08000035     Leeds 1004 GEOMETRYCOLLECTION EMPTY
## 5  West Yorkshire E08000036 Wakefield 1005 GEOMETRYCOLLECTION EMPTY
## 6  West Yorkshire E08000036 Wakefield 1006 GEOMETRYCOLLECTION EMPTY
## 7  West Yorkshire E08000035     Leeds 1007 GEOMETRYCOLLECTION EMPTY
## 8  West Yorkshire E08000036 Wakefield 1008 GEOMETRYCOLLECTION EMPTY
## 9  West Yorkshire E08000036 Wakefield 1009 GEOMETRYCOLLECTION EMPTY
## 10 West Yorkshire E08000035     Leeds 1010 GEOMETRYCOLLECTION EMPTY

这似乎是一个没有几何图形的 GeoJSON 文件,因此这可能意味着它实际上只是“数据”。许多opendata.arcgis.com 端点也有一个 CSV 选项,而这个有:

health_geog_url_csv <- "https://opendata.arcgis.com/datasets/f0095af162f749ad8231e6226e1b7e30_0.csv"

httr::GET(
  url = health_geog_url_csv,
  httr::write_disk(basename(health_geog_url_csv)),
  httr::progress()
)

read_csv(basename(health_geog_url_csv))
## # A tibble: 32,844 x 10
##    LSOA11CD  LSOA11NM  CCG18CD  CCG18CDH CCG18NM  STP18CD STP18NM  LAD18CD
##    <chr>     <chr>     <chr>    <chr>    <chr>    <chr>   <chr>    <chr>  
##  1 E01011388 Leeds 01… E380002… 15F      NHS Lee… E54000… West Yo… E08000…
##  2 E01011865 Wakefiel… E380001… 03R      NHS Wak… E54000… West Yo… E08000…
##  3 E01011833 Wakefiel… E380001… 03R      NHS Wak… E54000… West Yo… E08000…
##  4 E01011390 Leeds 08… E380002… 15F      NHS Lee… E54000… West Yo… E08000…
##  5 E01011866 Wakefiel… E380001… 03R      NHS Wak… E54000… West Yo… E08000…
##  6 E01011834 Wakefiel… E380001… 03R      NHS Wak… E54000… West Yo… E08000…
##  7 E01011391 Leeds 08… E380002… 15F      NHS Lee… E54000… West Yo… E08000…
##  8 E01011867 Wakefiel… E380001… 03R      NHS Wak… E54000… West Yo… E08000…
##  9 E01011835 Wakefiel… E380001… 03R      NHS Wak… E54000… West Yo… E08000…
## 10 E01011392 Leeds 08… E380002… 15F      NHS Lee… E54000… West Yo… E08000…
## # ... with 32,834 more rows, and 2 more variables: LAD18NM <chr>,
## #   FID <int>

我会使用 CSV 选项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-21
    • 1970-01-01
    • 1970-01-01
    • 2017-01-08
    • 1970-01-01
    • 1970-01-01
    • 2020-11-09
    相关资源
    最近更新 更多