Пакет Осмар в 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 выйти из отладчика.

Другие вопросы по тегам