$geoIntersects - Amazon DocumentDB

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

$geoIntersects

L'$geoIntersectsoperatore in Amazon DocumentDB viene utilizzato per trovare documenti i cui dati geospaziali si intersecano con un oggetto GeoJSON specificato. Questo operatore è utile per le applicazioni che richiedono l'identificazione dei documenti in base alla loro relazione spaziale con una determinata forma geografica, come un poligono o un multipoligono.

Parametri

  • $geometry: Un oggetto GeoJSON che rappresenta la forma da verificare per l'intersezione. I tipi di oggetti GeoJSON supportati Point sonoLineString,, Polygon e. MultiPolygon

Esempio (MongoDB Shell)

L'esempio seguente mostra come utilizzare l'$geoIntersectsoperatore per trovare il nome dello stato per un determinato set di coordinate in Amazon DocumentDB.

Crea documenti di esempio

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] ]] } } ]);

Esempio di query

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

Output

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

Esempi di codice

Per visualizzare un esempio di codice per l'utilizzo del $geoIntersects comando, scegliete la scheda relativa alla lingua che desiderate utilizzare:

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()