ich folgendes Nearest Neighbor-Abfrage in PostGIS mit Flask-SQLAlchemy mit:Wie optimiert man die nächste Nachbarschaftsabfrage in Postgis innerhalb einer gegebenen Entfernung?
def get_neighbor():
pt = WKTElement('POINT(%s %s)' % (longitude, latitude), srid=srid)
# Get total count of neighbor with distance less than 1000m for example.
total_count = db.session.query(User, func.ST_Distance(User.geom, pt)). \
filter(func.ST_DWith(User.geom, pt, 1000).count()
if total_count > 0:
result_list = db.session.query(User, func_ST_Distance(User.geom, pt)). \
filter(func.ST_DWithin(User.geom, pt, 1000).all()
return jsonify({'total_count': total_count, 'result_list':result_list})
else
return jsonify({'total_count': total_count})
Es funktioniert tatsächlich, aber ich habe die gleichen Abfrageanweisungen bemerkt wird zweimal ausgeführt werden, wenn TOTAL_COUNT und result_list abfragt.
- Wie die wiederholte Abfrage Problem in TOTAL_COUNT und result_list optimieren?
- Wenn die Benutzertabelle Tausende von Zeilen enthält, vergleicht die Abfrage jede Zeile in der Benutzertabelle mit dem gegebenen Punkt? Wenn ja, wäre das eine langsame Leistung, wie löse ich das?
jeder Rat würde uns freuen!
Danke!
Danke Mike, ich werde es versuchen. :) – Raindrop