index - mongodb geospatial
Mongodb: verifica si un punto está dentro de un polígono almacenado (3)
Soy nuevo en las funciones de geolocalización mongodb.
Almacené algunos polígonos que representan las fronteras del país en una base de datos junto con el nombre del país. Ahora, lo que me gustaría hacer es verificar en qué país se encuentra un punto. Por ejemplo, si doy mi propia geolocalización, me gustaría obtener el país donde estoy.
¿Hay alguna manera de hacerlo con mongodb? Tal vez con geoWithin?
Gracias
Debe almacenar sus datos de ubicación como este esquema:
{"loc":
{"coordinates":[
[
[1.0,1.0],
[1.0,10.0],
[10.0,10.0],
[10.0,1.0],
[1.0,1.0]
]
],
"type":"Polygon"
}
}
y luego enviar consultas $geoIntersects
db.polygons.find({"loc":{"$geoIntersects":{"$geometry":{"type":"Point", "coordinates":[x, y]}}}}
Sí, puede usar $geoWithin
para la comprobación, siempre que defina los países como polígonos utilizando GeoJSON
. Para eso, prueba este repo de GitHub .
Tienes que usar $geoIntersects
para eso.
db.features.find({mystoredpolygon:{$geoIntersects:{$geometry:{type:''Point'', coordinates:[22,38]}}}})