You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TNMAccess API无结果返回求助:边界框验证失败及空结果问题

TNMAccess API查询1米DEM数据无结果及边界框验证问题

我调用TNMAccess API查询Digital Elevation Model (DEM) 1 meter数据时,无论使用何种边界框参数,请求始终返回0条结果;同时通过官方文档调试页面发起请求时,边界框无法通过验证,提示“不是数字”。

调用代码

import requests
API = "https://tnmaccess.nationalmap.gov/api/v1/products"

def search(dataset, bbox):
    params = {
        "datasets": dataset,
        "bbox": bbox,
        "outputFormat": "JSON",
        "prodFormats": "GeoTIFF"
    }
    r = requests.get(API, params=params)
    r.raise_for_status()
    print(r.content)
    print(r.json())
    return r.json()["items"]

bbox = "-80.5199, 39.7198, -74.6895, 42.5167" # Pennsylvania

dataset = "Digital Elevation Model (DEM) 1 meter"

dem_products = search(dataset, bbox)

返回结果

{'total': 0, 'items': [], 'errors': [], 'messages': ['The offset is greater than the total number of results for this query. No items returned.'], 'sciencebaseQuery': 'https://www.sciencebase.gov/catalog/items?filter=tagslq%3D%28%28tags.scheme%3A%22The+National+Map+Collection+Thesaurus%22+AND+tags.name%3A%22Digital+Elevation+Model+%28DEM%29+1+meter%22%29+OR+%28tags.scheme%3A%223D+Elevation+Program+%283DEP%29%22+AND+tags.name%3A%22Digital+Elevation+Model+%28DEM%29+1+meter%22%29%29&filter=tagslq%3Dtags.scheme%3A%22The+National+Map+Product+Format+Thesaurus%22+AND+%28tags.name%3A+%22GeoTIFF%22%29&filter=spatialQuery%3D%7B%22wkt%22%3A%22POLYGON%28%28-80.5199++39.7198%2C+-74.6895++39.7198%2C+-74.6895++42.5167%2C-80.5199++42.5167%2C-80.5199++39.7198%29%29%22%2C%22relation%22%3A%22intersects%22%7D&max=50&offset=0&fields=id%2Ctitle%2Csummary%2Cbody%2Ctags%2CwebLinks%2Cdates%2Cspatial%2Cidentifiers&format=json&sort=title&order=asc', 'filteredOut': 0}

问题原因

  1. 边界框格式错误:bbox字符串中包含空格,API解析时会将带空格的内容判定为非数字,导致调试页面验证失败,同时查询无法匹配空间范围。
  2. 数据集名称不匹配:使用的Digital Elevation Model (DEM) 1 meter是显示名称,而非API要求的标准标识符,导致无法正确匹配数据集。

修复方案

  • 修正边界框格式:移除bbox参数中的所有空格,格式严格遵循minlon,minlat,maxlon,maxlat。
  • 使用标准数据集标识符:将dataset参数改为"3DEP 1m DEM",这是API认可的官方标识符。

修正后的代码

import requests
API = "https://tnmaccess.nationalmap.gov/api/v1/products"

def search(dataset, bbox):
    params = {
        "datasets": dataset,
        "bbox": bbox,
        "outputFormat": "JSON",
        "prodFormats": "GeoTIFF"
    }
    r = requests.get(API, params=params)
    r.raise_for_status()
    print(r.content)
    print(r.json())
    return r.json()["items"]

# 移除边界框内的空格
bbox = "-80.5199,39.7198,-74.6895,42.5167" # Pennsylvania

# 使用API标准数据集标识符
dataset = "3DEP 1m DEM"

dem_products = search(dataset, bbox)

验证说明

修正后,API可正确解析边界框参数,同时精准匹配1米DEM数据集,将返回符合条件的结果;官方调试页面也能顺利通过边界框验证。


内容的提问来源于stack exchange,提问作者Noah P

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 00:05:13