¿Qué son las Consultas Geoespaciales?

Actualizado: septiembre de 2026

Una consulta geoespacial es una búsqueda en la base de datos que filtra y ordena registros por ubicación — cerca de un punto, dentro de un radio o de un área. Es la que impulsa el pedido de feature que llega en el segundo mes de casi todo producto: encontrar X cerca — cafés, conductores, tiendas, otros usuarios. Y es el caso más claro de una clase de consulta que la indexación B-tree común no puede atender: la cercanía es bidimensional, y una estructura ordenada en una sola dimensión no la ve.

Puntos clave

PreguntaRespuesta
El tipo de campoGeoPoint — un par latitud/longitud que la base entiende
Las consultasNear (ordenada por distancia), dentro del radio, dentro de la caja/polígono
El índiceEstilo 2dsphere: el globo mapeado en celdas indexables
Sin élDistancia calculada a cada fila — un full scan con trigonometría
La feature canónica”Encontrar X cerca”, compuesta con filtros comunes

La consulta de cercanía, escrita y sentida

// JavaScript / Node.js — Back4app JS SDK
// "Find cafes within 2 km, nearest first" — the canonical geo query
const here = new Parse.GeoPoint({ latitude: 40.7484, longitude: -73.9857 });

const query = new Parse.Query('Cafe');
query.withinKilometers('location', here, 2); // radius filter, nearest-first
query.equalTo('openNow', true);              // geo + ordinary filters compose
query.limit(20);
const cafes = await query.find();

cafes.forEach((c) => {
  const km = here.kilometersTo(c.get('location'));
  console.log(`${c.get('name')} — ${km.toFixed(2)} km away`);
});

La misma física en SQL, vía PostGIS — y el índice que la hace viable:

-- Un índice espacial sobre la columna geography:
CREATE INDEX cafe_location_gix ON cafe USING GIST (location);

-- "Cafés a menos de 2 km, el más cercano primero":
SELECT name, ST_Distance(location, ST_MakePoint(-73.9857, 40.7484)::geography) AS meters
FROM cafe
WHERE ST_DWithin(location, ST_MakePoint(-73.9857, 40.7484)::geography, 2000)
ORDER BY location <-> ST_MakePoint(-73.9857, 40.7484)::geography
LIMIT 20;
--  con el índice: toca solo las celdas que cubren el círculo de 2 km
--  sin él:        calcula una distancia para cada fila de la tabla

Cómo el índice ve el globo

Cómo un índice geo esférico responde una consulta por radioLa superficie de la Tierra se divide en celdas jerárquicas guardadas en orden. Una consulta por radio selecciona las pocas celdas que cubren el círculo de búsqueda, recorre solo los puntos candidatos dentro de ellas y calcula distancias exactas para esa lista corta.

Globo dividido en
celdas jerárquicas

Celda gruesa
(escala de ciudad)

Celdas finas cubriendo
el círculo de 2 km

Puntos candidatos
solo en esas celdas

Chequeo de distancia exacta
+ orden por cercanía

La superficie de la Tierra se divide en celdas jerárquicas guardadas en orden. Una consulta por radio selecciona las pocas celdas que cubren el círculo de búsqueda, recorre solo los puntos candidatos dentro de ellas y calcula distancias exactas para esa lista corta.

Un índice estilo 2dsphere vuelve la cercanía indexable al mapear la superficie curva en celdas jerárquicas cuyo orden preserva la adyacencia — puntos cercanos en el globo caen en entradas cercanas del índice. Una consulta por radio se lee entonces como cualquier lookup en índice: identifica las pocas celdas que cubren el círculo, recorre sus candidatos, verifica las distancias exactas sobre esa lista corta. La geometría esférica — en lugar de la matemática de plano — mantiene los resultados correctos a escalas reales, al cruzar el antimeridiano y hacia los polos.

La regla de composición se sigue de la mecánica común de consultas: las restricciones geo se combinan libremente con filtros de igualdad, rango y pointer (openNow == true en las pestañas de arriba), y los filtros no-geo selectivos de las consultas calientes pueden merecer índices propios.

La paginación merece nota aparte, porque los resultados ordenados por distancia rompen el hábito del offset. Saltarse la primera página de una consulta near obliga al motor a reclasificar todo lo saltado, y un punto que se movió entre solicitudes puede barajar el orden bajo los pies del usuario. Los patrones más sólidos: ampliar el radio progresivamente para el “cargar más”, o paginar por una clave estable dentro de un radio fijo. El orden por cercanía es un ranking sobre datos vivos — trata los límites de página como orientativos, no como filas de un libro contable.

Near vs. within vs. consultas en plano

¿Qué consulta geo deberías usar?

Forma de la consultaRespondeOrdenUso típico
Near (proximidad)¿Qué está más cerca de aquí?Del más cercano al más lejanoListas de “cafés cercanos”, matching de conductores
Dentro del radio¿Qué está a menos de r km de aquí?Ninguno implícitoElegibilidad de entrega, alertas
Dentro de la caja¿Qué hay en este rectángulo?NingunoRenderizado del viewport del mapa
Dentro del polígono¿Qué está dentro de esta forma?NingunoBarrios, zonas, geofences
Plano (2d)Lo mismo, en un plano proyectadoVaríaMapas de juegos, planos de piso — no la Tierra

La distinción near/within es lógica de producto, no pedantería: near es un ranking (acótalo con un limit y un radio máximo, o las ciudades densas devuelven miles de filas), within es un predicado (acompáñalo con la geometría del viewport o de la cerca). La fila del plano es la nota al pie honesta — para coordenadas que no están sobre una esfera, los índices esféricos son la herramienta equivocada.

Casos de uso comunes

  • “Encontrar X cerca”. Cafés, gimnasios, cajeros, estaciones de carga — la lista de proximidad canónica, con radio acotado y el más cercano primero.
  • Matching y despacho. Pasajeros con conductores, pedidos con repartidores — consultas near sobre GeoPoints actualizados con frecuencia.
  • Viewports de mapa. Consultas dentro de la caja que alimentan los pines mientras el usuario arrastra el mapa — baratas, sin orden, del tamaño del viewport.
  • Geofencing. Chequeos dentro del polígono para zonas de entrega, áreas de servicio y lógica disparada por ubicación.
  • Features sociales locales. Gente cerca y eventos de este fin de semana, compuestos con filtros de privacidad y relaciones por pointer.

¿Deberías usar consultas geo o precomputar regiones? Matriz de decisión

Consulta en vivo con índice geo cuando…Precomputa etiquetas de región cuando…
Los radios y formas varían por solicitudLos límites son fijos (tiendas, zonas, distritos)
Los puntos se mueven a menudo (conductores, usuarios)La pertenencia cambia rara vez
El orden por cercanía importaSolo filtras por igualdad de región
Las formas son genuinamente espacialesUna columna region simple lo responde todo
Tienes un índice espacial disponibleEstás agrupando, no midiendo

La salida de emergencia importa: cuando toda consulta se reduce a “¿está en la zona A?”, una columna de texto indexada común le gana a la maquinaria espacial — más barata, más simple y cubierta por B-trees comunes. La indexación espacial se gana su lugar exactamente cuando la geometría es dinámica: centros arbitrarios, puntos en movimiento, distancias reales.

Limitaciones y trade-offs

  • Los índices geo son especialistas. Sirven solo predicados espaciales; tus otros filtros siguen necesitando índices propios, y mantener un índice cuesta escrituras — el mismo impuesto, tarifa espacial.
  • Las consultas near sin límite son trampas. Ordenar por cercanía en una ciudad densa sin radio máximo ni limit clasifica media tabla. Acota siempre la búsqueda.
  • Los puntos que se mueven escriben constantemente. Ubicaciones de conductores en vivo significan actualizaciones de GeoPoint de alta frecuencia, cada una manteniendo el índice — agrupa en lotes o limita la frecuencia de las posiciones donde el producto lo permita.
  • Un punto por fila es el modelo base. Una tienda con cinco sucursales son cinco registros; formas más ricas que puntos (rutas, áreas de cobertura) empujan hacia bases de datos espaciales completas.
  • La precisión tiene pisos. El error esfera-vs-elipsoide es despreciable, pero el ruido del GPS es de metros en un buen día — diseña la lógica del producto (zonas, umbrales) para tolerarlo.

Consultas geoespaciales en Back4app

Back4app es una plataforma open-source de Backend as a Service (BaaS) que combina base de datos gestionada, APIs REST y GraphQL generadas automáticamente, autenticación, almacenamiento de archivos y funciones serverless con Cloud Code. GeoPoint es un tipo de columna nativo en el almacenamiento gestionado respaldado por MongoDB, y los operadores de proximidad, radio y caja — withinKilometers, near, withinGeoBox — vienen en las APIs generadas automáticamente y en todos los SDKs, exactamente como los usan las pestañas de código de arriba. Los índices geo se gestionan junto con el resto de tu estrategia de índices en el dashboard, lo que convierte el habitual proyecto de infraestructura de “encontrar X cerca” en una decisión de esquema y tres líneas de query.

Preguntas frecuentes

¿Qué es una consulta geoespacial?

Una búsqueda en la base de datos cuyo filtro es espacial y no por valor: devuelve registros cerca de un punto, dentro de un radio o dentro de una caja o polígono, normalmente ordenados del más cercano al más lejano. La base guarda coordenadas como un tipo de primera clase — un GeoPoint de latitud y longitud — y un índice espacial responde la pregunta sin calcular la distancia a cada fila.

¿Qué es un campo GeoPoint?

Un tipo de columna que guarda un par latitud/longitud, con latitud de -90 a 90 y longitud de -180 a 180. Como la base sabe que el campo es geográfico — y no solo dos floats —, puede indexarlo espacialmente y exponer operadores de distancia: a menos de X kilómetros o millas de aquí, dentro de esta bounding box, contenido en este polígono, ordenado por proximidad.

¿Cómo funciona un índice geoespacial estilo 2dsphere?

Mapea la superficie curva de la Tierra en celdas ordenadas e indexables — celdas gruesas subdivididas en otras más finas —, de modo que la cercanía en el globo se vuelve adyacencia en el índice. Una consulta de proximidad inspecciona el puñado de celdas que cubren el área de búsqueda en vez de cada fila, y la geometría esférica mantiene las distancias honestas, incluso al cruzar el antimeridiano y cerca de los polos.

¿Por qué una búsqueda de cercanía es lenta sin índice geo?

Porque sin él el motor debe calcular la distancia desde tu punto hasta cada fila y luego ordenarlo todo — un full scan disfrazado de trigonometría, repetido en cada solicitud. Un índice geo invierte el trabajo: va directo a las celdas que cubren el radio de búsqueda y toca solo candidatos plausibles. La brecha crece con el tamaño de la tabla, exactamente como con cualquier índice ausente, solo que más cara por fila.

¿Cuál es la diferencia entre una consulta near y una within?

Una consulta near responde "¿qué está más cerca?" — ordena por distancia desde un punto y suele acotar el resultado con un limit o un radio máximo. Una consulta within responde "¿qué está adentro?" — filtra por contención en un radio, caja o polígono, sin implicar orden. Las listas de cafés cercanos son near; "tiendas en este viewport del mapa" y los chequeos de geofence son within.

¿Puedo combinar filtros geo con filtros comunes de consulta?

Sí, y las features reales casi siempre lo hacen: a menos de 2 km *y* abierto ahora *y* con calificación superior a cuatro estrellas. La restricción geo se compone con filtros de igualdad, rango y pointer en una misma consulta. Cuida la interacción con la indexación — el índice espacial acota primero por ubicación, y los filtros comunes muy selectivos pueden merecer índice propio para que la consulta combinada siga siendo barata.

¿Qué tan precisas son las consultas por radio a grandes distancias?

Los cálculos esféricos modelan la Tierra como una esfera, que difiere del elipsoide real hasta en aproximadamente un tercio de un por ciento — metros en distancias urbanas, y en general irrelevante para la lógica del producto. Lo que muerde antes es la precisión de los puntos almacenados: las coordenadas del GPS de un teléfono cargan metros de error al aire libre, y más en interiores. Para "encontrar X cerca", ambos efectos son ruido.

Términos relacionados

Compara con

Lecturas recomendadas

¿Listo para construir tu backend?

Empieza tu proyecto en Back4app en minutos — base de datos, autenticación, APIs y Cloud Code incluidos. Sin tarjeta de crédito.

Escrito y revisado por Back4app Engineering, Back4app Engineering · Publicado el 2026-09-04