Я пытаюсь сделать интерактивную карту с помощью пакета leafletR в соответствии с блогом ZevRoss. Но в коде ошибка

Блог 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, я много искал эту проблему и не получил хорошего ответа.

Я использую Rstudio R версии 3.1.1 (2014-07-10) на Windows 7 32bit. Моя версия rgdal 0.9-1.

Другой код в блоге работает успешно, это предложение кажется единственным трудным моментом.


person wjy_202    schedule 25.09.2014    source источник
comment
У вас есть диск d: на вашем компьютере? Если да, то папку с именем Leaflet?   -  person    schedule 25.09.2014
comment
Привет, я только что запустил код с той же версией rgdal (хотя и на Mac), и у меня не было проблем. Как утверждает логика @Pascal, это, вероятно, связано с проблемой записи, а не с R. У вас есть разрешение на запись на диск D:/? Может попробовать записать на флешку?   -  person Richard    schedule 30.09.2014
comment
Я повторно протестировал код и, кажется, работает нормально. В исходном коде leafdat создается путем вставки каталога назначения (в вашем коде есть каталог загрузки). Подобно Паскалю, мне интересно, пишете ли вы путь/папку, которая не существует.   -  person ZRoss    schedule 02.10.2014


Ответы (3)


Вы можете создать GeoJSON с помощью пакета leafletR:

library('leafletR')
Your_GeoJSON <- toGeoJSON(data=YourData, dest=getwd())
person Jot eN    schedule 24.11.2014

Некоторое время я пытался найти решение этой загадочной ошибки.

В конце концов я нашел этот пост на сайте ошибок пакетов Gdal, который прояснил проблему и дал решение.

В основном проблема заключается в интерфейсе между 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 по-прежнему не работает.

person Enzo    schedule 20.04.2015

Даже если на вашем компьютере уже есть диск «d:» и у вас есть разрешение на запись на этот диск, попробуйте сделать следующее:

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

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

> leafdat

> "d:/Leaflet/.geojson"

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

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

Затем вы можете получить файл ".geojson" на "d:/Leaflet". Измените имя файла «.geojson» на «County_2010Census_DP1.geojson».

person Sungchan Kang    schedule 02.10.2014