使用 geojsonio、geojsonR 读取 .geojson 文件

Reading in a .geojson file with geojsonio, geojsonR

我正在尝试读取 R 中的 geojson 文件 (https://www.svz-bw.de/fileadmin/verkehrszentrale/RadNETZ-BW_Daten_GeoJSON_2018-20.zip)。

我尝试过不同的包,但我的知识太有限,无法找到错误并解决它们。我是 R 中空间数据的新手,尤其是阅读 geojson 文件格式。 在 Whosebug 中谷歌搜索和搜索没有帮助。

geojsonR::FROM_geojson("../Sonstiges/RadNETZ.geojson")

Error in unlink(x) : file name conversion problem -- name too long?

geojsonR::FROM_GeoJson("../Sonstiges/RadNETZ.geojson")

Error in export_From_geojson(url_file_string, Flatten_Coords, Average_Coordinates, : invalid GeoJson geometry object --> geom_OBJ() function

您的文件不符合当前的 GeoJSON 标准;它使用投影坐标参考系统,这违反了 RFC 7946 - https://www.rfc-editor.org/rfc/rfc7946#page-12

这可能是也可能不是 geojson 特定包难以解释它的原因。

为了处理您的文件,我建议使用 {sf},它能够通过 GDAL 和 PROJ 消化文件。

library(dplyr)
library(sf)

asdf <- st_read("RadNETZ.geojson") %>% 
  st_transform(4326) # safety of unprojected CRS

plot(st_geometry(asdf))

正如@Jindra Lacko 提到的,您的 'RadNETZ.geojson' 文件不符合 RFC 7946,这就是您收到错误的原因。如果除了 'sf' 包之外,您的操作系统上没有安装 GDAL,您可以使用 geojsonR::shiny_from_JSON(不遵循 RFC,旨在用于闪亮的应用程序),

dat = geojsonR::shiny_from_JSON("../Sonstiges/RadNETZ.geojson")
str(dat)

List of 4
 $ crs     :List of 2
  ..$ properties:List of 1
  .. ..$ name: chr "urn:ogc:def:crs:EPSG::31467"
  ..$ type      : chr "name"
 $ features:List of 70097
  ..$ :List of 3
  .. ..$ geometry  :List of 2
  .. .. ..$ coordinates:List of 6
  .. .. .. ..$ :List of 2
  .. .. .. .. ..$ : num 3563993
  .. .. .. .. ..$ : num 5353055
  .. .. .. ..$ :List of 2
  .. .. .. .. ..$ : num 3564002
  .. .. .. .. ..$ : num 5353070
  .. .. .. ..$ :List of 2
  .. .. .. .. ..$ : num 3564009
  .. .. .. .. ..$ : num 5353087
  .. .. .. ..$ :List of 2
  .. .. .. .. ..$ : num 3564013
  .. .. .. .. ..$ : num 5353103
  .. .. .. ..$ :List of 2
  .. .. .. .. ..$ : num 3564016
  .. .. .. .. ..$ : num 5353109
  .. .. .. ..$ :List of 2
  .. .. .. .. ..$ : num 3564030
  .. .. .. .. ..$ : num 5353121
  .. .. ..$ type       : chr "LineString"
  .. ..$ properties:List of 24
  .....

jsonlite::fromJSON函数,

dat = jsonlite::fromJSON("../Sonstiges/RadNETZ.geojson")
str(dat)

List of 4
 $ type    : chr "FeatureCollection"
 $ name    : chr "sql_statement"
 $ crs     :List of 2
  ..$ type      : chr "name"
  ..$ properties:List of 1
  .. ..$ name: chr "urn:ogc:def:crs:EPSG::31467"
 $ features:'data.frame':   70097 obs. of  3 variables:
  ..$ type      : chr [1:70097] "Feature" "Feature" "Feature" "Feature" ...
  ..$ properties:'data.frame':  70097 obs. of  24 variables:
  .. ..$ gid     : int [1:70097] 4 15 23 22 45 72 60 74 13072 75 ...
  .. ..$ lrvn_kat: int [1:70097] 3 1 1 3 1 1 3 1 3 1 ...
  .....

郑重声明,我是 geojsonR 包的作者/维护者