【发布时间】:2022-12-30 00:33:25
【问题描述】:
对于物种生态位建模,我正在尝试从 TU Delft https://3dbag.nl/nl/download 的 briljant 3D BAG 数据中获取建筑物高度。我想为哈莱姆市做这件事。可以手动选择和下载图块。但这是相当费力的,而且容易出错(一块缺失的瓷砖),我想在更多城市重复这个动作。所以我尝试使用 AFS 服务来下载功能。我为 AFS 请求创建了一个范围为 1.2 的 Haarlem 边界框。然而,服务器传送的最大记录是 5000。尽管有很多替代尝试,但到目前为止我都未能克服这个数字。这部分是由于我对 AWF 语义的混淆,当我检查 GetCapabilities 时,很难找出名称空间、featureTypes 和各个属性(或属性)。我试过的:
添加分页。但是到目前为止我读过的所有教程都需要服务器最大值(resultType =“hits”)之外的实际/最大功能的数量。而且我无法轻松检索边界框限制的最大值。
选择瓷砖。我认为应该可以使用 tile_id(来自 BAG3D_v2:bag_tiles_3k 层的属性)提取与边界框匹配的图块 ID,然后以某种方式构建应用或循环以提取每个图块的特征。但是我已经无法创建一个 cql_filter 来选择一个单独的图块。
创建瓷砖。由于我不完全确定来自 3D BAG 服务的单个图块是否已经超过 5000 个特征限制,因此另一种方法可能是使用 R 包 slippymath 将边界框拆分为许多小图块,然后提取每个图块的特征。但是过滤的挑战仍然是一样的。
对此有任何帮助,我们将不胜感激。我以多种不同方式使用的基本代码:
library(httr)
url <- parse_url("https://data.3dbag.nl/api/BAG3D_v2/wfs")
url$query <- list(service = "WFS",
version = "2.0.0",
request = "GetFeature",
typename = "BAG3D_v2:lod22",
#cql_filter = "BAG3D_v2:tile_id ='4199'",
bbox = "100768.4,482708.5,107923.1,494670.4",
startindex = 10000,
sortBy = "gid")
request <- build_url(url)
test <- st_read(request)
qtm(test)
【问题讨论】: