R中的osmar包(OpenStreetMap)

时间:2012-07-23 20:12:26

标签: r openstreetmap osmar

R中的osmar包有一个名为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 shell中更新了我的路径定义,指向渗透可执行文件。

我不确定错误消息的含义以及最佳响应方式。任何帮助赞赏 布拉德

2 个答案:

答案 0 :(得分:1)

重新启动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退出调试器。

答案 1 :(得分:1)

嘿,我刚才这件事有用了。问题不在于渗透的系统路径变量。正是系统调用脚本使用“gzip”应用程序解压缩之前下载的.gz文件。因此,当您的计算机中未安装gzip或gzip不在系统路径变量中时会出现错误。所以安装gzip并将其添加到路径变量将缓解此错误。或者,您可以手动将文件解压缩到同一路径并再次运行脚本。