Servidor Couchbase

Soporte geoespacial avanzado añadido al servicio de búsqueda

El servicio Couchbase Search está introduciendo capacidades de indexación y consulta geoespacial de mayor dimensión con la versión 7.1.2 de Couchbase Server.

Hasta esta nueva función, el servicio de búsqueda se limitaba a indexar campos de geopuntos/localizaciones unidimensionales. Las consultas se limitaban a consultas de delimitación como punto-distancia, rectángulo delimitado y polígono delimitado contra el campo geopunto indexado. Pero sabemos que los geopuntos por sí solos no son eficaces para representar los diversos detalles espaciales de las formas o estructuras de la vida real.

El soporte de estas estructuras espaciales de mayor dimensión permite a los usuarios aproximarse a una gran variedad de formas de la vida real, como los límites de una región postal o jurisdiccional, las rutas de los vehículos de reparto o de una compañía aérea o los límites de diversas masas de agua, como un río, un lago, un arroyo, etc.

El servicio de búsqueda ahora admitirá el GeoJSON formatos de datos espaciales en geodésicas esféricas en esta versión. Esto permite a los usuarios abordar casos de uso como encontrar todos los documentos con cualquier forma GeoJSON que:

    • contienen la forma de la consulta
    • residen en la forma de la consulta
    • se cruzan con la forma de la consulta

Las formas GeoJSON admitidas son:

Además de las formas anteriores, Search también admite un par de formas personalizadas adicionales para facilitar a los usuarios las aproximaciones espaciales. Las formas adicionales soportadas son:

    • Círculo
    • Sobre

Los nuevos tipos GeoJSON

Echemos un vistazo rápido a todos estos tipos de formas.

Todas las geometrías sencillas en GeoJSON constan de un elemento tipo y una colección de coordenadas.

Punto 

A continuación se especifica un GeoJSON Punto de un documento:

Un punto es una única coordenada geográfica, como la ubicación de un edificio o la posición actual dada por cualquier API de geolocalización.

Nota : La norma sólo admite una única forma de especificar las coordenadas, como un formato de matriz de longitud seguido de latitud, es decir: [lng, lat].

Cadena

A continuación se especifica un GeoJSON Cadena de un documento:

Una cadena de líneas está definida por una matriz de dos o más posiciones. Especificando sólo dos puntos, la cadena de líneas representará una línea recta. Especificando más de dos puntos se crea una trayectoria arbitraria.

Polígono

A continuación se especifica un GeoJSON Polígono de un documento:

Un polígono está definido por una lista de una lista de puntos. El primer y el último punto de cada lista (exterior) deben ser iguales (es decir, el polígono debe ser cerrado). Y las coordenadas exteriores tienen que estar en Orde en sentido contrario a las agujas del relojr (CCW) en un polígono.

También se admiten polígonos con agujeros. Los agujeros tienen que seguir En el sentido de las agujas del reloj Pida para los vértices límite.

Para Polígonos con un solo anillo, el anillo no puede auto-intersectarse.

NOTA: El orden CCW de los vértices es estrictamente obligatorio para las geoformas en la versión 7.1.2 de Couchbase Server y cualquier violación de este requisito daría lugar a resultados de búsqueda inesperados.

Multipunto

A continuación se especifica un GeoJSON Multipunto de un documento:

MultiLineString

A continuación se especifica un GeoJSON MultiLineString de un documento:

MultiPolígono

A continuación se especifica un GeoJSON MultiPolígono de un documento:

GeometryCollection

A continuación se especifica un GeoJSON GeometryCollection de un documento:

Una GeometryCollection tiene un miembro con el nombre "geometries". El valor de "geometries" es un array. Cada elemento de esta matriz es un objeto GeoJSON Geometry. Es posible que esta matriz esté vacía.

A diferencia de los otros tipos de geometría descritos anteriormente, una GeometryCollection puede ser una composición heterogénea de objetos Geometry más pequeños. Por ejemplo, un objeto Geometría con la forma de una "i" romana minúscula puede estar compuesto por un punto y una LineString.

Las GeometryCollections anidadas no son válidas.  

Círculo

Si el usuario desea cubrir una región circular sobre la superficie terrestre, puede utilizar esta forma.

A continuación se muestra un ejemplo de forma circular.

El círculo se especifica sobre las coordenadas del punto central junto con el radio.

Algunos ejemplos de formatos compatibles con radius son: 

"5in" , "5inch" , "7yd" , "7yards", "9ft" , "9feet", "11km", "11kilometers", "3nm" "3nauticalmiles", "13mm" , "13millimeters", "15cm", "15centimeters", "17mi", "17miles" "19m" or "19meters".

Si no se puede determinar la unidad, se analiza toda la cadena y se determina la unidad de metros se supone.

Sobre

Tipo de envolvente, que consiste en las coordenadas de los puntos superior izquierdo e inferior derecho de la forma para representar un rectángulo delimitador con el formato  [[minLon, maxLat], [maxLon, minLat]].

Indexación de los campos espaciales - noticias geoshape tipo de campo

Search ha introducido un tipo de campo denominado geoshape para representar las formas espaciales mencionadas.

Si usted tiene un campo llamado "geometría" en el documento que contiene la información geoforma que se adhiere al formato geoJSON, entonces primero puede incluir el campo geoespacial bajo los mapeos de tipo en la definición del índice como a continuación.

Couchbase geospatial JSON indexing

Geospatial field indexing with JSON

Por último, haga clic en el botón Crear índice y ya está listo para consultar sus datos geoespaciales.

Nota geoshape es capaz de indexar cualquiera de los tipos espaciales mencionados anteriormente, incluyendo Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon, GeometryCollection, Circle y Envelope.

Consulta de los campos espaciales - nueva consulta GeoShape

La búsqueda admite principalmente tres tipos de capacidad de consulta espacial a través de esos tipos heterogéneos de geoformas indexadas.

Estructura de la consulta:

Detalles:

    • shapeDesc - Puede ser cualquiera de los 9 tipos como Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon, GeometryCollection, Circle y Envelope.
    • relación - Puede ser cualquiera de los 3 tipos como intersects , contains y within.
Relación Resultado
INTERSECTS  Devuelve todos los documentos cuyo espacial se cruza con la geometría de la consulta.
CONTIENE Devuelve todos los documentos cuyo espacial contiene la geometría de la consulta
EN Devuelve todos los documentos cuyo espacial está dentro de la geometría de la consulta.

Veamos algunos ejemplos de consultas. 

Un punto contiene consulta devuelve todos los documentos coincidentes con formas que contienen el punto dado en la consulta:

lineString se cruza con consulta devuelve todos los documentos coincidentes con formas que se cruzan con la cadena de líneas de la consulta:

 

Polígono conEn consulta devuelve todos los documentos coincidentes con formas que residen completamente dentro del área del polígono de la consulta:

Consejos adicionales

El servicio de búsqueda utiliza la geometría geodésica o esférica para soportar las características espaciales avanzadas. Esto significa que se tiene en cuenta la curvatura de la superficie terrestre al realizar los filtros espaciales. Por favor, tenga esto en cuenta al observar cualquier diferencia en la alineación de los límites de la forma dada.

Estos recursos están disponibles para ayudarle a comprender y validar las geometrías en sus datos de prueba:

    • Referencia para el mapeador esférico - gcmap
    • Referencia para comprobar las formas geojson - geojson.io
    • Referencia para validar el orden de los vértices o la corrección de GeoJSON - geojsonlint 

 

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por Sreekanth Sivasankaran

Sreekanth Sivasankaran es Ingeniero Principal/Gerente Superior de Ingeniería en Couchbase R&D. Dirige el diseño y desarrollo de la funcionalidad de búsqueda distribuida y de alto rendimiento. Cuenta con más de 17 años de experiencia en el desarrollo de productos en diversos ámbitos como las telecomunicaciones, los teléfonos móviles, el software empresarial, las tecnologías de big data y los sistemas distribuidos.

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.