geodjango - 按城市、州或邮政编码搜索
我该如何在我的Django应用中使用GeoDjango来根据城市和州或者邮政编码进行搜索呢?我对GeoDjango还很陌生,只是在努力理解这需要哪些步骤。
另外,有人知道有没有现成的应用可以实现这个功能吗?
2 个回答
0
我最近也打算尝试类似的事情……我有一个小数据库,里面大约有40个地点。我希望用户能够通过输入邮政编码或城市名称来筛选这40个地点,并且使用一个功能来返回在5、10、15、20等半径范围内的地点列表。
我在考虑使用地理编码的网络服务来存储每个地点的经纬度。这样,当用户输入城市名称或邮政编码时,就可以通过一次网络服务调用获取该地点的经纬度,然后在Python中用简单的方式计算(开车距离)来找出距离。
所以,针对这个问题,我觉得这就是它的基本思路,但如果没有办法限制需要进行的计算量,可能会很快变得复杂。
1
首先,你需要创建一个邮政编码模型,这个模型就像一个表格,里面存放着每个邮政编码的几何对象。接着,你还需要另一个模型,这个模型是你要进行搜索的,它需要有一个地理位置的字段。然后你可以这样做:
zip = 10010
zipcode = ZipCode.objects.get(number=zip)
Store.objects.filter(coordinates__in=zipcode)
或者类似的操作。