$geoIntersects - Amazon DocumentDB

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

$geoIntersects

Der $geoIntersects Operator in Amazon DocumentDB wird verwendet, um Dokumente zu finden, deren Geodaten sich mit einem bestimmten GeoJSON-Objekt überschneiden. Dieser Operator ist nützlich für Anwendungen, bei denen Dokumente anhand ihrer räumlichen Beziehung zu einer bestimmten geographischen Form, wie z. B. einem Polygon oder Multipolygon, identifiziert werden müssen.

Parameter

  • $geometry: Ein GeoJSON-Objekt, das die Form darstellt, bei der nach Überschneidungen gesucht werden soll. Die unterstützten GeoJSON-Objekttypen sindPoint, LineStringPolygon, undMultiPolygon.

Beispiel (MongoDB Shell)

Das folgende Beispiel zeigt, wie der $geoIntersects Operator verwendet wird, um den Namen des Bundesstaates für einen bestimmten Satz von Koordinaten in Amazon DocumentDB zu finden.

Erstellen Sie Beispieldokumente

db.states.insertMany([ { "name": "New York", "loc": { "type": "Polygon", "coordinates": [[ [-74.25909423828125, 40.47556838210948], [-73.70819091796875, 40.47556838210948], [-73.70819091796875, 41.31342607582222], [-74.25909423828125, 41.31342607582222], [-74.25909423828125, 40.47556838210948] ]] } }, { "name": "California", "loc": { "type": "Polygon", "coordinates": [[ [-124.4091796875, 32.56456771381587], [-114.5458984375, 32.56456771381587], [-114.5458984375, 42.00964153424558], [-124.4091796875, 42.00964153424558], [-124.4091796875, 32.56456771381587] ]] } } ]);

Beispiel für eine Abfrage

var location = [-73.965355, 40.782865]; db.states.find({ "loc": { "$geoIntersects": { "$geometry": { "type": "Point", "coordinates": location } } } }, { "name": 1 });

Ausgabe

{ "_id" : ObjectId("536b0a143004b15885c91a2c"), "name" : "New York" }

Codebeispiele

Um ein Codebeispiel für die Verwendung des $geoIntersects Befehls anzuzeigen, wählen Sie die Registerkarte für die Sprache, die Sie verwenden möchten:

Node.js
const { MongoClient } = require('mongodb'); async function findStateByGeoIntersects(longitude, latitude) { const client = await MongoClient.connect('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false'); const db = client.db('test'); const collection = db.collection('states'); const query = { loc: { $geoIntersects: { $geometry: { type: 'Point', coordinates: [longitude, latitude] } } } }; const projection = { _id: 0, name: 1 }; const document = await collection.findOne(query, { projection }); await client.close(); if (document) { return document.name; } else { throw new Error('The geo location you entered was not found in the United States!'); } }
Python
from pymongo import MongoClient def find_state_by_geointersects(longitude, latitude): try: client = MongoClient('mongodb://<username>:<password>@<cluster-endpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false') db = client.test collection_states = db.states query_geointersects = { "loc": { "$geoIntersects": { "$geometry": { "type": "Point", "coordinates": [longitude, latitude] } } } } document = collection_states.find_one(query_geointersects, projection={ "_id": 0, "name": 1 }) if document is not None: state_name = document['name'] return state_name else: raise Exception("The geo location you entered was not found in the United States!") except Exception as e: print('Exception in geoIntersects: {}'.format(e)) raise finally: if client is not None: client.close()