簡體   English   中英

使用Google App Engine的GeoModel - 查詢

[英]GeoModel with Google App Engine - queries

我正在嘗試使用GeoModel python模塊快速訪問我的Google App Engine應用程序的地理空間數據。 對於我遇到的問題,我只有一些一般性問題。 有兩個主要方法,proximity_fetch和bounding_box_fetch,可用於返回查詢。 它們實際上返回一個結果集,而不是一個過濾的查詢,這意味着你需要在傳遞之前完全准備一個過濾的查詢。它還限制你迭代查詢集,因為結果被提取,你沒有在fetch中輸入偏移量的選項。

如果沒有修改代碼,任何人都可以推薦一個解決方案來指定查詢的偏移量嗎? 我的問題是我需要針對變量檢查每個結果以查看是否可以使用它,否則將其丟棄並測試下一個。 我可能遇到需要進行額外提取的情況,但是從偏移量開始。

您也可以直接使用模型的location_geocells

from geospatial import geomodel, geocell, geomath

# query is a db.GqlQuery
# location is a db.GeoPt

# A resolution of 4 is box of environs 150km
bbox = geocell.compute_box(geocell.compute(geo_point.location, resolution=4))
cell = geocell.best_bbox_search_cells (bbox, geomodel.default_cost_function)

query.filter('location_geocells IN', cell)

# I want only results from 100kms.
FETCHED=200
DISTANCE=100
def _func (x):
  x.dist = geomath.distance(geo_point.location, x.location)
  return x.dist

results = sorted(query.fetch(FETCHED), key=_func)
results = [x for x in results if x.dist <= DISTANCE]

沒有實際的方法可以做到這一點,因為對geoquery的調用會轉換為多個數據存儲區查詢,它會合並到一個結果集中。 如果您能夠指定偏移量,則在返回所請求的結果之前,geoquery仍然必須獲取並丟棄所有前n個結果。

更好的選擇可能是修改地理查詢以支持游標,但每個查詢都必須返回一組游標,而不是一個游標。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM