如何从空间特征中检索 osmdata 的 bbox?
How to retrieve bbox for osmdata from spatial feature?
如何定义bbox根据空间文件的范围下载OSM数据?
以下示例 returns 一条错误消息:
...the only allowed values are floats between -90.0 and 90.0
这表明 bbox 值超出允许范围。它还表明 NAD27 和 EPSG:3857 之间的转换没有 return 空间数据在它应该在的地方。
对于其他空间数据,我遇到了类似的问题。即使在允许的范围内,数据也没有出现在预期的位置。下载的 OSM 数据出现在与输入空间文件不同的位置。
library(sf)
library(raster)
library(osmdata)
osm_proj <-("+init=epsg:3857")
nc <- st_read(system.file("shape/nc.shp", package="sf"))
nc <- st_transform(nc, osm_proj)
bbox.nc <- as.vector(extent(nc[22,]))/100000
q <- opq(bbox = bbox.nc) %>%
add_osm_feature(key = 'natural', value = 'water')
osm.water <- osmdata_sf(q)
如何准备下载的OSM数据匹配输入空间文件空间扩展的bbox?
OSM 以经纬度工作,即 EPSG:4326。您需要相应地转换坐标。你也不需要 raster::extent()
; sf::st_bbox()
在此用例中就足够了。
或者在您的上下文中考虑这段代码;因为这只是一个玩具示例,所以我没有使用整个北卡罗来纳州,而是使用一个县(否则可能会出现超时错误,这将是另一种问题 - 这个问题是关于边界框的)。
library(sf)
library(osmdata)
nc <- st_read(system.file("shape/nc.shp", package="sf"))
strelitz <- st_transform(nc, 4326) %>%
dplyr::filter(NAME == "Mecklenburg") # as in Charlotte of Mecklenburg-Strelitz
q <- opq(bbox = sf::st_bbox(strelitz)) %>%
add_osm_feature(key = 'natural', value = 'water') %>%
osmdata_sf()
plot(st_geometry(strelitz))
plot(st_geometry(q$osm_lines), col = 'blue', add = T)
A shameles plug:我之前写过关于查询 OSM 的兴趣点,你可能会觉得这个 post 很有趣 :)
如何定义bbox根据空间文件的范围下载OSM数据? 以下示例 returns 一条错误消息:
...the only allowed values are floats between -90.0 and 90.0
这表明 bbox 值超出允许范围。它还表明 NAD27 和 EPSG:3857 之间的转换没有 return 空间数据在它应该在的地方。 对于其他空间数据,我遇到了类似的问题。即使在允许的范围内,数据也没有出现在预期的位置。下载的 OSM 数据出现在与输入空间文件不同的位置。
library(sf)
library(raster)
library(osmdata)
osm_proj <-("+init=epsg:3857")
nc <- st_read(system.file("shape/nc.shp", package="sf"))
nc <- st_transform(nc, osm_proj)
bbox.nc <- as.vector(extent(nc[22,]))/100000
q <- opq(bbox = bbox.nc) %>%
add_osm_feature(key = 'natural', value = 'water')
osm.water <- osmdata_sf(q)
如何准备下载的OSM数据匹配输入空间文件空间扩展的bbox?
OSM 以经纬度工作,即 EPSG:4326。您需要相应地转换坐标。你也不需要 raster::extent()
; sf::st_bbox()
在此用例中就足够了。
或者在您的上下文中考虑这段代码;因为这只是一个玩具示例,所以我没有使用整个北卡罗来纳州,而是使用一个县(否则可能会出现超时错误,这将是另一种问题 - 这个问题是关于边界框的)。
library(sf)
library(osmdata)
nc <- st_read(system.file("shape/nc.shp", package="sf"))
strelitz <- st_transform(nc, 4326) %>%
dplyr::filter(NAME == "Mecklenburg") # as in Charlotte of Mecklenburg-Strelitz
q <- opq(bbox = sf::st_bbox(strelitz)) %>%
add_osm_feature(key = 'natural', value = 'water') %>%
osmdata_sf()
plot(st_geometry(strelitz))
plot(st_geometry(q$osm_lines), col = 'blue', add = T)
A shameles plug:我之前写过关于查询 OSM 的兴趣点,你可能会觉得这个 post 很有趣 :)