编程语言
首页 > 编程语言> > python-GeoDjango距离搜索

python-GeoDjango距离搜索

作者:互联网

我想使用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英里内的所有点都给我.”

标签:geodjango,python,django
来源: https://codeday.me/bug/20191210/2101202.html