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

2024-05-29 06:56:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用python库“request”发出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

Tags: httpsurlrequestnlparamscoordsminmax
1条回答
网友
1楼 · 发布于 2024-05-29 06:56:37

我找到了解决办法。为了理解这个问题,我需要找出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) 

相关问题 更多 >

    热门问题