2017-02-26 2 views
0

Ich brauche Hilfe bei der Geodatenabfrage.mongodb java driver 3.4.x geoquery

Ich habe zwei Sammlungen: Punkte und Multipolygon

ich alle in einem bestimmten Multipolygon enthaltenen Punkte abrufen möchten.

Die Struktur der beiden Elemente sind:

{_id : someID, "geometry" : { "type" : "Point", "coordinates" : [ 12.54638671875, 41.85319643776675 ] }} 

{_id: "id", "type": "MultiPolygon", 
"coordinates": [[[[102.0, 2.0], [103.0, 2.0], [103.0, 3.0], [102.0, 3.0], [102.0, 2.0]]],[[[100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0]],[[100.2, 0.2], [100.8, 0.2], [100.8, 0.8], [100.2, 0.8], [100.2, 0.2]]]]} 

zu tun, dass ich eine Abfrage auf Multipolygon Sammlung machen, um die Form abzurufen, die ich eine geoIntersect Abfrage verwenden müssen zu machen, aber ohne Erfolg.

Insbesondere habe ich Probleme, Koordinaten von Datacenter-Dokumenten in BSON-Element von Filter-Klasse zu konvertieren.

Bitte könnte mir jemand helfen?

Danke

Antwort

0

Sie mögen das Multipolygon Objekt des MongoDB-Treiber verwenden, kann dies

List<PolygonCoordinates> polygonList = new ArrayList<>(); 
// Add your Positions in polygonList. 
MultiPolygon multiPolygon = new MultiPolygon(polygonList); 

this.mongoCollection.find(geoIntersects("geometry", multiPolygon)); 

Sie weitere Informationen über die JavaDoc MongoDB finden konnten: https://static.javadoc.io/org.mongodb/mongo-java-driver/3.2.0-rc0/com/mongodb/client/model/geojson/MultiPolygon.html

+0

wenn ich auf Ihre Frage zu beantworten, bitte upvote meinen Beitrag und klicke auf das Antwortsymbol;) –

Verwandte Themen