Python 使用 bbox 的 wfs 请求导致请求中出现不需要的字符 url

Python wfs request with bbox results in undesired characters in the request url

我使用 python 库“请求”发出 WFS 请求。其中一个参数是一个边界框,其坐标由 4 个变量给出。问题是最后的 url 在 bbox 坐标周围有一些额外的字符导致错误的请求。知道这些字符是如何出现的以及如何摆脱它们吗?

示例坐标:

(136226.446, 456092.217, 136726.446, 456592.217)

我的代码:

coords= (bbx_min_x, bbx_min_y, bbx_max_x, bbx_max_y)
url = 'https://geodata.nationaalgeoregister.nl/bag/wfs/v1_1?'
params = {'bbox' : '{}'.format(coords), 'service' : 'WFS' , 'typeName' : 'bag:pand' , 'version' : '2.0.0' , 'startIndex' : 0, 'request' : 'GetFeature', 'outputFormat' : 'json'}
exp = Request('GET', url, params=params).prepare().url

结果url(来自print(exp)):

https://geodata.nationaalgeoregister.nl/bag/wfs/v1_1?bbox=%28136226.446%2C+456092.217%2C+136726.446%2C+456592.217%29&service=WFS&typeName=bag%3Apand&version=2.0.0&startIndex=0&request=GetFeature&outputFormat=json

我找到了解决方案。为了理解这个问题,我需要找出 URL 编码(参见 here)。 在我的代码中,bbox 坐标被解析为一个元组。

在 url 编码中,虽然左括号是用字符 %28 编码的,但将我的边界框的 X 下坐标从 136226.446 更改为 28136226.446。这导致了错误的边界框。

为了解决这个问题,我分别给出了每个坐标:

'bbox' : "{0},{1},{2},{3}".format(bbx_min_x,bbx_min_y, bbx_max_x,bbx_max_y)