Пакет Осмар в R (OpenStreetMap)
osmar
Пакет в R имеет демонстрационный файл под названием demo("navigator")
, Он предназначен для иллюстрации возможностей и функций пакета. Когда я запускаю сценарий, я получаю следующую строку и ошибку:
R> muc <- get_osm(muc_bbox, src)
sh: osmosis: command not found
Error in file(con, "r") : cannot open the connection
In addition: Warning message:
In file(con, "r") :
cannot open file '/var/folders/81/4k487q0969q1d8rfd1pyhyr40000gs/T//RtmpdgZSOy/file13a473cb904c': No such file or directory
Команда предназначена для преобразования osmosis
объект данных в osmar
объект. Я правильно установил осмос для MacOSX, обновил определение пути в оболочке bash, указав на исполняемый файл осмоса.
Я не уверен, что означает сообщение об ошибке и как лучше всего ответить. Любую помощь оценил Брэд
2 ответа
Эй, я только что получил эту штуку. Проблема не в системной переменной пути для осмоса. Именно с помощью системного вызова, который делает скрипт, который использует приложение "gzip", чтобы распаковать файл.gz, который он скачал ранее. Таким образом, возникает ошибка, когда gzip не установлен на вашем компьютере или gzip отсутствует в переменной системного пути. поэтому установка gzip и добавление его в переменную path уменьшит эту ошибку. В качестве альтернативы вы можете разархивировать файл вручную по тому же пути и снова запустить скрипт.
Вы перезапустили R? Похоже, что осмос не на вашем пути, хотя вы упоминаете, что установили это. Убедитесь, что вы можете запустить одну из команд осмоса в Терминале:
osmosis --read-xml SloveniaGarmin.osm --tee 4 --bounding-box left=15 top=46 --write-xml SloveniaGarminSE.osm --bounding-box left=15 bottom=46 --write-xml SloveniaGarminNE.osm --bounding-box right=15 top=46 --write-xml SloveniaGarminSW.osm --bounding-box right=15 bottom=46 --write-xml SloveniaGarminNW.osm
Пример не имеет значения, пока он не говорит osmosis
файл не найден.
Кроме того, убедитесь, что у вас есть gzip
на вашем пути. Я почти уверен, что это по умолчанию, но demo
Пакет полагается на него для запуска. Просто откройте терминал и введите gzip
чтобы убедиться, что это там.
Наконец, если вам нужно отладить это, запустите это:
library(osmar)
download.file("http://osmar.r-forge.r-project.org/muenchen.osm.gz","muenchen.osm.gz")
system("gzip -d muenchen.osm.gz")
# At this point, check the directory listed by getwd(). It should contain muenchen.osm.
src <- osmsource_osmosis(file = "muenchen.osm",osmosis = "osmosis")
muc_bbox <- center_bbox(11.575278, 48.137222, 3000, 3000)
debug(osmar:::get_osm_data.osmosis)
get_osm(muc_bbox, src)
# Press Enter till you get to
# request <- osm_request(source, what, destination)
# Then type request to get the command it is sending.
После ввода Enter один раз, а затем request
вы получите строку, которую он отправляет в вашу ОС. Это должно быть что-то вроде:
osmosis --read-xml enableDateParsing=no file=muenchen.osm --bounding-box top=48.1507120588903 left=11.5551240885889 bottom=48.1237319411097 right=11.5954319114111 --write-xml file=<your path>
Попробуйте вставить это в свой терминал. Это должно работать из любого каталога.
Ох и типа undebug(osmar:::get_osm_data.osmosis)
прекратить отладку. Тип Q
выйти из отладчика.