Python 如何表示地理位置

Python 如何表示地理位置,python,html,google-app-engine,google-maps,geocoding,Python,Html,Google App Engine,Google Maps,Geocoding,我使用户界面看起来与facebook集成,并使搜索与类别和位置相结合: 这给我带来了一些问题,不仅是facebook的整合问题,还有位置问题。我不从数据存储中获取位置,我只是将它们放在纯html中: <select name="w" id="searcharea"> <option value="1" >Entire India</option> <option value="2" > Andaman &

我使用户界面看起来与facebook集成,并使搜索与类别和位置相结合:

这给我带来了一些问题,不仅是facebook的整合问题,还有位置问题。我不从数据存储中获取位置,我只是将它们放在纯html中:

<select name="w" id="searcharea">    
<option value="1" >Entire India</option>            
<option value="2" > Andaman & Nicobar Islands</option>          
<option value="3" > Andhra Pradesh</option>
使用geomodel works实现基本搜索:

m=int(self.request.get('r')) if self.request.get('r') else 804670#radius
lat = self.request.get('lat')
lon = self.request.get('lon')
articles = A.proximity_fetch(A.all(),db.GeoPt(lat, lon),max_results=PAGESIZE+1, max_distance=m)
articles = sorted(articles, key=lambda x: x.modified, reverse=True)
但是,既然选项值只允许一个值,那么如何将视图与后端集成呢?我应该将3个值(lon、lat、radius)编码为单个值吗?还是其他解决办法?
谢谢你

很可能你在找一个四钥匙。四键是一种空间索引或空间填充电路。它看起来像四叉树或分形,并将2d复杂度降低为1d复杂度。谷歌地图和必应地图使用z曲线,因为它很容易解决。希尔伯特曲线在空间填充方面更好,但更难求解。四边形键的思想是从左到右搜索平铺及其位置。例如,如果您的四键是12333222244,您可以搜索1233*并从该磁贴以及该磁贴之后或之下获取所有位置,因为它是一个树数据结构。

为什么不这样做:

<option value="{lat:-22.45,long:-43.12,r:294200}">Rio De Janeiro</option>
里约热内卢

然后可以对值进行jsondecode以获取其组件。

最简单的方法是在代码中的配置文件中定义一个查找表。例如:

location_map = {
  1: {'name': Rio De Janeiro', 'lat': -22.45, 'long': -43.12, 'radius': 294200},
  # ...
}

然后,您可以简单地使用选项值作为在数组中查找值的键。您还可以使用此数组通过对其进行迭代并输出名称/值对来生成表单字段。

谢谢Jitamaro,因为您似乎理解了我不想为地理位置实现自己的ID的问题。我要研究quadkey以便更好地理解你的意思。我现在不明白一个四键如何表示或编码我对一个位置的定义(lon,lat,radius)太棒了!与为城市、国家和其他地区(如区号)创建自己的ID相比,此解决方案的唯一缺点是半径边界不清晰。这种方法的优势在于,它允许任何“类型”的位置,因为它不需要知道它是一个城市、一个国家还是一个电话区号,而且它可以扩展到参数化,使用一个定义多边形的函数,而不仅仅是一个半径来指定边界。
location_map = {
  1: {'name': Rio De Janeiro', 'lat': -22.45, 'long': -43.12, 'radius': 294200},
  # ...
}