我试图根据ZevRoss博客使用leafletR包制作交互式地图。但是代码中存在错误

时间:2014-09-25 05:43:25

标签: r leaflet geojson

ZevRoss博客如下: http://zevross.com/blog/2014/04/11/using-r-to-quickly-create-an-interactive-online-map-using-the-leafletr-package/

有错误的代码是:

# ----- Write data to GeoJSON
leafdat<-paste(downloaddir, "/", filename, ".geojson", sep="") 
writeOGR(subdat, leafdat, layer="", driver="GeoJSON")

错误是:

  

writeOGR中的错误(subdat,leafdat,layer =“”,driver =“GeoJSON”):
  GDAL错误3:无法打开文件'd:/Leaflet/County_2010Census_DP1.geojson'

因为我是R的新生,所以我经常搜索这个问题并没有得到任何好的答案。

我在Windows 7 32bit上使用Rstudio R 3.1.1版(2014-07-10)。 我的rgdal版本是0.9-1。

博客中的其他代码运行成功,这句话似乎是唯一的难点。

3 个答案:

答案 0 :(得分:3)

您可以使用leafletR包创建GeoJSON:

library('leafletR')
Your_GeoJSON <- toGeoJSON(data=YourData, dest=getwd())

答案 1 :(得分:3)

我试图在一段时间内找到解决这个神秘错误的方法。

最终我在Gdal package errors' tickets site上发现了这篇文章,澄清了问题,并给出了解决方案。

基本上问题出在rgdal和Gdal之间的界面上(Gdal改变了他们的工作方式,最新版本的rgdal还没有观看):

writeOGR() calls ogrCheckExists("foo.geojson") to check first if the file exists before creating a new dataset.
In the 1.11 version the OGR GeoJSON driver will emit an error message that this file doesn't exists, whereas previous version didn't emit an error message. 
rgdal catches this error as a fatal one and doesn't go to the writing step. This should be fixed in rgdal.
Meanwhile you have an easy workaround : add check_exists = FALSE as a parameter to writeOGR()

因此,以下代码将起作用:

writeOGR(spDf,'foo.geojson','spDf', driver='GeoJSON',check_exists = FALSE)

当然,如果在该位置已经存在具有所选名称的geojson文件,则writeOGR仍然会失败。

答案 2 :(得分:0)

即使你已经有一个&#39; d:&#39;在您的计算机上驱动并且您有权写入该驱动器,请尝试以下操作:

--------------------------------

leafdat<-paste(downloaddir, "/",  ".geojson", sep="") 

> leafdat

> "d:/Leaflet/.geojson"

writeOGR(subdat, leafdat, layer="", driver="GeoJSON")

--------------------------------

然后你可能得到&#34; .geojson&#34;文件在&#34; d:/ Leaflet&#34;。更改文件名&#34; .geojson&#34;到&#34; County_2010Census_DP1.geojson&#34;。