8 Stimmen

Mongoengine geografische Suche

Hat jemand geospatiale Suche mit Mongengine verwendet? Ich kann es einfach nicht zum Laufen bringen! Was ist das Format der Daten, die in das GeoPointField eingegeben werden müssen?

Wie soll ich es formatieren? Ich kann nichts über die Formatierung in der Dokumentation finden!

0 Stimmen

Bitte markieren Sie die Antwort als korrekt - dies wird anderen helfen, wenn sie bei Google suchen.

0 Stimmen

Entschuldigung, ich war im Urlaub, behoben!

10voto

dm03514 Punkte 52971

Kannst du posten, was du versuchst zu tun?

Die Punktdaten müssen in einem Feld mit dem Schlüssel gespeichert werden

"loc": {"lon": 51.10682735591432, "lat": -114.11773681640625} oder

loc: [22.23432, 21.23212]

Mit mongoengine gibt es Unterstützung für ein Geopoint-Feld

Klasse Ort:
  point = GeoPointField()

neuer_ort = Ort(point=[21.1232, 23.23432])
neuer_ort.save()

so etwas wie oben sollte funktionieren.

Klasse GeoPointField(db_field=None, name=None, required=False, default=None, unique=False, unique_with=None, primary_key=False, validation=None, choices=None, verbose_name=None, help_text=None):

Eine Liste, die einen Breiten- und Längengrad speichert.

Neu in Version 0.4.

http://mongoengine-odm.readthedocs.org/en/latest/apireference.html#mongoengine.GeoPointField

3 Stimmen

Hast du irgendwelche Ideen, wie man mit MongoEngine abfragen kann? MongoDB bietet Dinge wie: db.places.find( { loc : {$near : [50,50] } } ).limit(20) aber ich kann es nicht in der MongoEngine-Dokumentation finden.

0 Stimmen

Bitte beachten Sie, dass GeoPointField jetzt veraltet ist zugunsten von PointField.

3voto

alexef Punkte 432

Ich habe die Antwort in den mongoengine-Dokumenten gefunden:

Es gibt einige spezielle Operatoren zur Durchführung geografischer Abfragen, die mit GeoPointFields verwendet werden können:

within_distance - geben Sie eine Liste mit einem Punkt und einer maximalen Entfernung an (z.B. [(41.342, -87.653), 5])

within_spherical_distance - dasselbe wie oben, jedoch unter Verwendung des sphärischen geo-Modells (z.B. [(41.342, -87.653), 5/earth_radius])

near - ordnen Sie die Dokumente nach ihrer Nähe zu einem gegebenen Punkt near_sphere - dasselbe wie oben, jedoch unter Verwendung des sphärischen geo-Modells

within_box - filtern Sie Dokumente auf diejenigen innerhalb eines bestimmten Begrenzungsrahmens (z.B. [(35.0, -125.0), (40.0, -100.0)])

within_polygon - filtern Sie Dokumente auf diejenigen innerhalb eines bestimmten Polygons (z.B. [(41.91,-87.69), (41.92,-87.68), (41.91,-87.65), (41.89,-87.65)]). .. Hinweis:: Erfordert Mongo Server 2.0

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X