gpt4 book ai didi

python - GeoDjango 距离搜索

转载 作者:行者123 更新时间:2023-11-28 16:54:44 24 4
gpt4 key购买 nike

我想使用 GeoDjango 进行基本的位置搜索。具体来说,我想给搜索功能一个邮政编码/城市/县,并找到 5mi、10mi、20mi 等以内的所有邮政编码/城市/县。我在文档中找到了以下段落:

Using a geographic coordinate system may introduce complications for the developer later on. For example, PostGIS does not have the capability to perform distance calculations between non-point geometries using geographic coordinate systems, e.g., constructing a query to find all points within 5 miles of a county boundary stored as WGS84. [6]

如果我想使用 PostGIS 并能够在美国进行上述搜索,这究竟意味着什么?文档建议使用投影坐标系来仅覆盖特定区域。我需要覆盖整个国家,所以我认为这不是一个选择。

基本上最后我希望能够在给定起始位置和距离的情况下找到邻近的邮政编码/城市/县。我真的不在乎这是如何在技术层面上完成的。

另外,我在哪里可以找到包含美国邮政编码/城市/县地理边界的数据库,我可以将其导入 GeoDjango 模型?

更新

我找到了一个包含美国所有邮政编码的经纬度坐标的数据库here .我的计划是将这些点导入到 GeoDjango 模型中,并使用 PostGis 构建查询,以便在给定点的 x 英里范围内找到其他点。这解决了文档中提出的问题,因为所有邮政编码都被视为点而不是多边形。这对我的用例来说很好,因为我不关心完美的准确性。

好处:数据文件是免费的

缺点:这个数据来自 2000 年的人口普查,所以它已经过时了

有点希望:美国人口普查局每10年进行一次人口普查,快到2010年了

结论:对我来说已经足够好了

最佳答案

要绕过报价中的限制,您可以只取用户提供的邮政编码区域的质心,然后从该点找到与从该点发出的 5、10 或任何英里圆相交的所有邮政编码区域.我不确定如何在 geodjango 中实现这一点,但使用 postgis 绝对有可能。

您引用的限制基本上是说您不能编写这样的查询:“给我俄亥俄州边界内侧 5 英里范围内的所有点。”

关于python - GeoDjango 距离搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1937960/

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