代码之家  ›  专栏  ›  技术社区  ›  MonikaP

在R中从geojson FeatureCollection读取单个特性的通用方法

  •  1
  • MonikaP  · 技术社区  · 7 年前

    具体来说,该文件是通过天桥查询生成的公交线路: http://overpass-turbo.eu/s/BdB . 我尝试了来自geojsonio库的各种命令组合,比如

    x<-geojson_atomize(file_to_geojson(name))
    

    这个问题的答案 How to load *part* of a multifeature geojson file in R? 给出了一种方法,但它对一个特定的情况有效,并且需要了解特定geojson的结构。另外,答案是3年前,我假设软件包是从那以后开发的。

    1 回复  |  直到 7 年前
        1
  •  2
  •   HAVB    7 年前

    如果你使用 sf

    #install.packages("sf)
    library(sf)
    # I have downloaded the Overpass query as a GeoJSON file
    route <- st_read("export.geojson")
    

    结果是一个数据帧,每个特征表示为一行,因此您可以对其进行子集(即route[1:3,]),以仅提取您感兴趣的特征。

    就这样!

    让我们看看你的案子。

    nrow(route)
    
    [1] 89 
    

    有12个属性(最后一列,数字13,出现在所有 对象并保存几何数据)

    names(route)
    
    [1] "id"                       "X.id"                     "from"                    
     [4] "name"                     "network"                  "public_transport.version"
     [7] "ref"                      "route"                    "source"                  
    [10] "to"                       "type"                     "X.relations"             
    [13] "geometry"  
    

    看起来像这样:

    plot(route)
    

    (只有前十个属性显示为 plot() 除非你用 max.plot = 10 )

    enter image description here

    summary(route$geometry)
    MULTILINESTRING           POINT       epsg:4326   +proj=long... 
                  2              87               0               0 
    

    前两行包含行,其余表示点。

    head(route)
    
    Simple feature collection with 6 features and 12 fields
    geometry type:  GEOMETRY
    dimension:      XY
    bbox:           xmin: 20.89744 ymin: 52.21596 xmax: 21.10796 ymax: 52.25929
    epsg (SRID):    4326
    proj4string:    +proj=longlat +datum=WGS84 +no_defs
                    id             X.id                    from
    1 relation/4254149 relation/4254149 PKP Olszynka Grochowska
    2 relation/4254150 relation/4254150            Stare Bemowo
    3    node/32920674    node/32920674                    <NA>
    4   node/209094035   node/209094035                    <NA>
    5   node/251880529   node/251880529                    <NA>
    6   node/302874515   node/302874515                    <NA>
                                                  name      network public_transport.version  ref route
    1 Bus 523: PKP Olszynka Grochowska => Stare Bemowo ZTM Warszawa                        2  523   bus
    2 Bus 523: Stare Bemowo => PKP Olszynka Grochowska ZTM Warszawa                        2  523   bus
    3                                             <NA>         <NA>                     <NA> <NA>  <NA>
    4                                             <NA>         <NA>                     <NA> <NA>  <NA>
    5                                             <NA>         <NA>                     <NA> <NA>  <NA>
    6                                             <NA>         <NA>                     <NA> <NA>  <NA>
                                                        source                      to  type
    1 Rozkład jazdy ZTM Warszawa, trasa wygenerowana przez bot            Stare Bemowo route
    2 Rozkład jazdy ZTM Warszawa, trasa wygenerowana przez bot PKP Olszynka Grochowska route
    3                                                     <NA>                    <NA>  <NA>
    4                                                     <NA>                    <NA>  <NA>
    5                                                     <NA>                    <NA>  <NA>
    6                                                     <NA>                    <NA>  <NA>
                                                                                                                                                                                                                                                                                                                                                      X.relations
    1                                                                                                                                                                                                                                                                                                                                                        <NA>
    2                                                                                                                                                                                                                                                                                                                                                        <NA>
    3 [ { "role": "stop", "rel": 4254149, "reltags": { "from": "PKP Olszynka Grochowska", "name": "Bus 523: PKP Olszynka Grochowska => Stare Bemowo", "network": "ZTM Warszawa", "public_transport:version": "2", "ref": "523", "route": "bus", "source": "Rozkład jazdy ZTM Warszawa, trasa wygenerowana przez bot", "to": "Stare Bemowo", "type": "route" } } ]
    4 [ { "role": "stop", "rel": 4254150, "reltags": { "from": "Stare Bemowo", "name": "Bus 523: Stare Bemowo => PKP Olszynka Grochowska", "network": "ZTM Warszawa", "public_transport:version": "2", "ref": "523", "route": "bus", "source": "Rozkład jazdy ZTM Warszawa, trasa wygenerowana przez bot", "to": "PKP Olszynka Grochowska", "type": "route" } } ]
    5 [ { "role": "stop", "rel": 4254150, "reltags": { "from": "Stare Bemowo", "name": "Bus 523: Stare Bemowo => PKP Olszynka Grochowska", "network": "ZTM Warszawa", "public_transport:version": "2", "ref": "523", "route": "bus", "source": "Rozkład jazdy ZTM Warszawa, trasa wygenerowana przez bot", "to": "PKP Olszynka Grochowska", "type": "route" } } ]
    6 [ { "role": "stop", "rel": 4254150, "reltags": { "from": "Stare Bemowo", "name": "Bus 523: Stare Bemowo => PKP Olszynka Grochowska", "network": "ZTM Warszawa", "public_transport:version": "2", "ref": "523", "route": "bus", "source": "Rozkład jazdy ZTM Warszawa, trasa wygenerowana przez bot", "to": "PKP Olszynka Grochowska", "type": "route" } } ]
                            geometry
    1 MULTILINESTRING ((21.10695 ...
    2 MULTILINESTRING ((20.89804 ...
    3      POINT (21.07858 52.23575)
    4      POINT (21.08457 52.24583)
    5      POINT (21.07847 52.23509)
    6      POINT (21.08454 52.24331)
    

    如果您只需要,比如说,第一个特性,那么您可以相应地简化数据帧的子集:

    myfeature <- route[1,]
    

    route_lines <- route[1:2,]
    
    plot(route_lines)
    

    enter image description here

    或要点:

    route_stations <- route[3:89,]
    
    plot(route_stations)
    

    enter image description here

    st_write(route_stations, "route_stations.geojson")
    

    https://cran.r-project.org/web/packages/sf/vignettes/sf1.html 有关 平方英尺 .