mongodb Prüfe ob der Punkt im Polygon ist

8

mongo 2.6

Ich habe einige gespeicherte Polygone. Und ich habe einen Punkt. I was zu wissen, wenn dieser Punkt irgendwelchen von gespeicherten Polygonen

passt

Dokumentbeispiel

%Vor%

Es gibt schon fast die gleiche Frage Mongodb: Überprüfen Sie, ob sich ein Punkt in einem gespeicherten Polygon befindet . Aber es funktioniert nicht für mich - diese Abfrage muss mindestens ein Ergebnis (das im Beispiel) geben - aber das tut es nicht.

%Vor%

Eigentlich, wenn ich einen Punkt an einer Grenze eines Polygons gewählt habe - das tut er.

$geoWithin method muss die Arbeit erledigen, wie mondodb documentation sagt.

aber keine dieser Abfragen funktioniert nicht

%Vor%

Es scheint, ich vermisse etwas, aber kann nicht verstehen, was und wo.

Ich wäre dankbar für Hilfe.

    
user3806072 04.07.2014, 16:45
quelle

1 Antwort

18

Es scheint, mit der Bestellung zu tun zu haben. Wenn Sie $ geoWithin verwenden und versuchen, Punkte innerhalb eines Polygons zu finden, ist das Feld, nach dem Sie suchen, das, was darin enthalten ist. GeoIntersects funktioniert jedoch in beiden Richtungen, sodass Sie nach Punkten innerhalb von Polygonen oder Polygonen mit Punkten suchen können, z. B.

%Vor%

Beachten Sie auch, dass Sie den ersten Punkt des Polygons am Ende wiederholen müssen. Wenn Sie das letzte Paar entfernen, erhalten Sie einen "$ err": Fehler "Kann Abfrage nicht kanalisieren: BadValue schlechte Geo-Abfrage".

MongoDB erlaubt Ihnen, ungültige Geometrien einzufügen und beschwert sich nur, wenn Sie versuchen, einen 2Dsphere-Index hinzuzufügen oder eine intersects / within / near-Abfrage auszuführen, was vernünftig ist, da GeoJSON ein gültiger JSON sein kann, ohne ein gültige Geometrie.

    
John Powell aka Barça 07.07.2014, 08:06
quelle