使用readOGR读取GeoJSON

3
我尝试通过这个git加载一些ggvis映射代码:https://github.com/hrbrmstr/ggvis-maps 该代码在服务器文件的第27行返回错误:
Warning: Error in ogrInfo: Cannot open data source
Stack trace (innermost first):
41: ogrInfo
40: withCallingHandlers
39: suppressMessages
38: readOGR
37: server [\ggvis-maps-master/server.R#27]
 1: runApp
Error in ogrInfo(dsn = dsn, layer = layer, encoding = encoding, use_iconv = 
use_iconv,  : 
Cannot open data source

我尝试使用了path.expand和其他几种解决方案,但目前都没有成功。


2
如果您能发布导致此错误的代码,那将会很有帮助。 - dshkol
shinyServer(function(input, output, session) { ..... maine <- readOGR(dsn="/data/maine.geojson", layer="OGRGeoJSON") - adarvishian
2个回答

2
我也遇到了同样的问题。我正在尝试在Shiny应用程序中嵌入一个leaflet chloropleth地图,在本地工作正常,但是在Shiny上部署时却不行。
我还尝试下载旧版本的rgdal,并在此处找到了一份存档版本列表:https://cran.r-project.org/src/contrib/Archive/rgdal/ 当我输入version = "1.2-15"时,下载成功了,但它要求我下载Rtools(Rtools34)才能安装该版本。
在Rtools和rgdal(1.2-15)安装完成后,我再次发布了Shiny应用程序,但仍然无法正常工作。
以下是我的代码:
counties <- readOGR(dsn = "./gz_2010_us_050_00_20m.json", layer= "gz_2010_us_050_00_20m")

更新: 降级到1.2-15版本,并将我的代码更改为layer = "OGRGeoJSON"后,应用程序成功部署!


1

如果您最近安装了GDAL,这个错误可能会出现,因为readOGR函数正在调用该程序。GDAL 2.2.0 引入了一项API更改来读取GeoJSON文件。您可以在终端中运行gdalinfo --version来检查您的GDAL版本。

如果是这种情况,您可以调整代码的这部分内容:

maine <- readOGR(dsn="/data/maine.geojson", layer="OGRGeoJSON")

to

maine <- readOGR(dsn="/data/maine.geojson", layer="maine")

那我猜想它会起作用。

我重新安装了rgdal包并尝试了你的修复方法,但仍然出现相同的错误。 - adarvishian
请问您能否在终端输入 gdalinfo --version 来检查您计算机上安装的 GDAL 的版本,并在 R 控制台中输入 rgdal::getGDALVersionInfo() 来检查 GDAL R 的版本。 - dshkol
我没有安装GDAL,只有rgdal软件包,版本为2.2.0。 - adarvishian
使用此链接安装GDAL并未解决问题:http://download.gisinternals.com/sdk/downloads/release-1800-x64-gdal-2-2-1-mapserver-7-0-6/gdal-202-1800-x64-core.msi - adarvishian
我正在尝试使用以下命令安装旧版本的rgdal:require(devtools) install_version("rgdal", version = "2.1.0", repos = "http://cran.us.r-project.org")。但是,我收到了一个错误提示,说版本2.1.0不存在。 - adarvishian
完全省略图层名称可能是必要的。 - Cyrille

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接