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