gpt4 book ai didi

c++ - 仅解析街道名称的 QGeoAddress::street()

转载 作者:行者123 更新时间:2023-11-27 23:14:57 25 4
gpt4 key购买 nike

我已经为此苦苦挣扎了一段时间,所以希望有人能帮助我。我愿意接受任何和所有的建议。

当我查询 QGeoAddress::street() 时,我(可能)会同时收到街道号码和街道名称。我想获取只是街道名称。

例子:

King St W -> King St W
99 King St W -> King St W
99a King St W -> King St W ...

1st St -> 1st St
99 1st St -> 1st St
99a 1st St -> 1st St ...

315 W. 42nd -> W. 42nd
42 St. Paul Drive -> St. Paul Drive

我需要这样做,以便可以通过最近的街道名称比较两个独立设备的位置。如果设备位于“99 King St W”,则它与“113 King St W”或“113a King St W”在同一条街道上。

就目前而言,我不认为正则表达式是一个好的、可靠的解决方案,因为有太多的规则需要强加,而且街道名称的可变性对我不利。理论上,可能有一条名为“1 St”的街道,这将使正则表达式规范化“1 1st St”失败。

编写我自己的模糊匹配器可能会提供更好的结果,但对于较短的街道名称可能会失败。

我也考虑过查询 REST Web 服务,但是许多免费服务对每天的请求数或请求之间的最短时间有限制,这会使该方法过于昂贵。

就像我说的,我很想听听你们能想出什么。

非常感谢:)

最佳答案

正如我在评论中所说,这里的问题是错误的正在问问题。但如果你必须这样做,并且你可以排除邮政信箱(字符串以数字结尾?),您限制自己在美国的地址(因为你不相信你在英国看到的一些东西),那么你可以从检测前导数字,然后附加不是的所有内容与它隔开一个空格。它并不完美,因为总会有人写 "99 A King St..",而不是比“99a King St.”。 (但是,首先,是街道 “King St..” 还是 “A King St.”?除非你知道street yourself,你不能确定。)的正则表达式这将是 "\\d+\\w*"。除此之外,您可以尝试某些结果的启发式:如果它们是一个单词,则完全匹配 "St""Street""Ave" 等(可能有大约 20 个不同的词你应该检查,有或没有尾随 "." 在缩写的情况下),那么你可能有刚街。

但在开始之前,我会坚持要求您查询任务。众所周知,例如,当输入地址,你所能做的就是 "First line:", "Second
line:"
等。即使询问邮政编码也可能很棘手。

关于c++ - 仅解析街道名称的 QGeoAddress::street(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16968015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com