gpt4 book ai didi

r - 如何使用osmar提取osm数据

转载 作者:行者123 更新时间:2023-12-03 11:10:15 30 4
gpt4 key购买 nike

this question类似,我从get_osm收到错误

library(maptools)
library(osmar)
url <- "http://osmar.r-forge.r-project.org/"
file <- "muenchen.osm.gz"
# download.file(sprintf("%s%s", url, file), file)
# gzip is linux only, on windows I unzipped this manually with 7zip!
# unzip("gzip -d muenchen.osm.gz")

src <- osmsource_osmosis(file = "140-muenchen.osm")
muc_bbox <- center_bbox(11.575278, 48.137222, 3000, 3000)
muc <- get_osm(x = muc_bbox, source = src)

错误是

Fehler in file(con, "r") : kann Verbindung nicht öffnen Zusätzlich: Warnmeldung: In file(con, "r") : kann Datei 'C:\Users\sqc\AppData\Local\Temp\RtmpQtndOZ\file3bc03a7b5127' nicht öffnen: No such file or directory



我以管理员身份运行RStudio,安装了gzip,但仍然无法正常运行。有任何想法吗?我在 window 上。

(示例来自 here)

编辑:

我的路径看起来像 C:/07 Rprogress/00 Erste Testprogramme/140-muenchen.osm.gz,但我希望这不是问题
file.exists("muenchen.osm.gz")
[1] TRUE
> shell("7z e muenchen.osm.gz")
Der Befehl "7z" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
Warnmeldung:
In shell("7z e muenchen.osm.gz") :
'7z e muenchen.osm.gz' Ausführung mit Fehlerkode 1 fehlgeschlagen
> shell.exec("7z e muenchen.osm.gz")
Fehler in shell.exec("7z e muenchen.osm.gz") :
'7z e 140-muenchen.osm.gz' nicht gefunden
> system("7z e muenchen.osm.gz")
[1] 127

我按照 here的指示进行设置
set PATH=%PATH%;C:\Program Files\7-Zip\
echo %PATH%

编辑2 :
st_layers("myfile.osm", do_count = TRUE)
Driver: OSM
Available layers:
layer_name geometry_type features fields
1 points Point 61 10
2 lines Line String 0 9
3 multilinestrings Multi Line String 0 4
4 multipolygons Multi Polygon 0 25
5 other_relations Geometry Collection 0 4
Warnmeldungen:
1: In CPL_get_layers(dsn, options, do_count) :
GDAL Error 1: Non increasing node id. Use OSM_USE_CUSTOM_INDEXING=NO
2: ...

最佳答案

以下代码应可用于将muenchen.osm.gz文件读入R。

# packages
library(sf)
#> Linking to GEOS 3.8.0, GDAL 3.0.4, PROJ 6.3.1
options(width = 120)

# download muenchen.osm.gz file
download.file(
url = "http://osmar.r-forge.r-project.org/muenchen.osm.gz",
destfile = "muenchen.osm.gz",
mode = "wb"
)
# Unzip using 7zip. You can also do this manually.
shell("7z e muenchen.osm.gz")

我现在使用 sf方法进行编码。我很确定可以使用 osmdata在R中读取相同的 .osm文件,但是暂时无法使它工作。

# 1. List all the layers
st_layers("muenchen.osm", do_count = TRUE)
#> Driver: OSM
#> Available layers:
#> layer_name geometry_type features fields
#> 1 points Point 37583 10
#> 2 lines Line String 56325 9
#> 3 multilinestrings Multi Line String 96 4
#> 4 multipolygons Multi Polygon 32328 25
#> 5 other_relations Geometry Collection 337 4

# 2. Read the lines layer (or any other layer)
muenchen_lines <- read_sf("muenchen.osm", layer = "lines")

在SO中,对象的打印非常困惑,但是如果您将代码复制并粘贴到R中,则会更加清楚。

# 3. Print the result
muenchen_lines
#> Simple feature collection with 56325 features and 9 fields
#> geometry type: LINESTRING
#> dimension: XY
#> bbox: xmin: 11.30704 ymin: 48.0155 xmax: 11.82806 ymax: 48.28529
#> geographic CRS: WGS 84
#> # A tibble: 56,325 x 10
#> osm_id name highway waterway aerialway barrier man_made z_order other_tags geometry
#> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <int> <chr> <LINESTRING [°]>
#> 1 98 <NA> tertia~ <NA> <NA> <NA> <NA> 4 "\"junction\"=>\"r~ (11.36604 48.1764, 11.36607 4~
#> 2 99 <NA> tertia~ <NA> <NA> <NA> <NA> 4 "\"junction\"=>\"r~ (11.36614 48.17414, 11.36617 ~
#> 3 100 <NA> second~ <NA> <NA> <NA> <NA> 6 "\"junction\"=>\"r~ (11.33037 48.18013, 11.33031 ~
#> 4 101 <NA> second~ <NA> <NA> <NA> <NA> 6 "\"junction\"=>\"r~ (11.32986 48.18367, 11.32973 ~
#> 5 102 <NA> primary <NA> <NA> <NA> <NA> 7 "\"junction\"=>\"r~ (11.45455 48.1672, 11.45424 4~
#> 6 680 <NA> motorw~ <NA> <NA> <NA> <NA> 29 "\"bridge\"=>\"yes~ (11.54136 48.22608, 11.543 48~
#> 7 1939 Gerani~ reside~ <NA> <NA> <NA> <NA> 3 <NA> (11.48282 48.10904, 11.48291 ~
#> 8 1945 Sonnen~ reside~ <NA> <NA> <NA> <NA> 3 <NA> (11.48714 48.10564, 11.48732 ~
#> 9 122956 Berber~ reside~ <NA> <NA> <NA> <NA> 3 "\"maxspeed\"=>\"3~ (11.42325 48.15542, 11.42308 ~
#> 10 122957 Otto-K~ reside~ <NA> <NA> <NA> <NA> 3 "\"maxspeed\"=>\"3~ (11.42276 48.15559, 11.42251 ~
#> # ... with 56,315 more rows

# 4. Plot
par(mar = rep(0, 4))
plot(st_geometry(muenchen_lines))

reprex package(v0.3.0)创建于2020-05-26

如果要构建自己的查询以从Open Street Map下载数据,也应检查 osmdata vignettes

引用

如果您想查看有关 sf的一些引用资料,建议您阅读软件包的 vignettes(请参阅文章)以及 Geocomputation with R的第1至7章。如果要检查如何使用 osmdata创建自己的“开放街道 map ”查询,建议阅读 vignettes。两种方法之间存在一些差异,但是您可以在小插图中阅读它们。

使用AFAIK的建议方法(请参阅 hereherehere)使用 .osmsf数据读入R中是:1)将 .osm数据转换为 .gpkg格式(可以使用 sf::gdal_utils);以及2)读取.gpkg文件。如果您可以共享.osm文件,则可以从笔记本电脑中进行检查。

在OP中显示的错误已提到 here,如果可以共享 .osm文件,我可以测试读取它。

关于r - 如何使用osmar提取osm数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62005168/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com