0Pricing
SQL Academy · Lección

Indexación geoespacial con PostGIS

Añada la extensión PostGIS, almacene geometría/geografía y consulte relaciones espaciales con índices GiST.

Indexación geoespacial con PostGIS es una lección gratuita de SQL Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de SQL Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de SQL Academy incluye 4 lecciones en total.

¿Qué es PostGIS?

La extensión geoespacial más potente de cualquier base de datos de código abierto. Añade tipos geometry/geography, cientos de funciones espaciales e índices GiST/SP-GiST para realizar consultas espaciales rápidamente.

Activar PostGIS

Es una extensión contrib:

CREATE EXTENSION postgis;

SELECT PostGIS_Version();

GEOMETRY frente a GEOGRAPHY

  • GEOMETRY — plano, rápido; las unidades son las del sistema de coordenadas (normalmente metros/grados)
  • GEOGRAPHY — Tierra esférica, más lento; las unidades siempre son metros

Elija GEOGRAPHY para las «distancias sobre la Tierra» con datos de distintas regiones; elija GEOMETRY para sistemas de coordenadas proyectadas (SIG regional y operaciones rápidas).

Almacenar puntos

Un patrón habitual consiste en almacenar latitud/longitud como un punto GEOGRAPHY:

CREATE TABLE places (
  id BIGSERIAL PRIMARY KEY,
  name TEXT NOT NULL,
  location GEOGRAPHY(POINT, 4326)
);

INSERT INTO places (name, location)
VALUES ('Berlin', ST_GeogFromText('SRID=4326;POINT(13.405 52.520)'));

SRID

El «Spatial Reference ID» define el sistema de coordenadas. WGS84 (id 4326) es el estándar para la latitud/longitud del GPS.

Índice espacial GiST

Indexe la columna de geometría con GiST:

CREATE INDEX places_location_idx ON places USING GIST (location);
-- Now spatial filters are fast.

Vecino más cercano: <->

El operador KNN <->, junto con un índice, devuelve los resultados más cercanos en milisegundos:

SELECT name, ST_Distance(location, ST_GeogFromText('SRID=4326;POINT(13.4 52.5)')) AS m
FROM places
ORDER BY location <-> ST_GeogFromText('SRID=4326;POINT(13.4 52.5)')
LIMIT 10;

Dentro de una distancia

Busque lugares a menos de 2 km de un punto:

SELECT name FROM places
WHERE ST_DWithin(
  location,
  ST_GeogFromText('SRID=4326;POINT(13.4 52.5)'),
  2000  -- meters
);

Polígonos y áreas

Almacene y consulte polígonos (límites de ciudades y zonas de reparto):

CREATE TABLE zones (
  id BIGSERIAL PRIMARY KEY,
  name TEXT,
  area GEOGRAPHY(POLYGON, 4326)
);

-- Find places inside a zone:
SELECT p.name FROM places p
JOIN zones z ON ST_Within(p.location::GEOMETRY, z.area::GEOMETRY)
WHERE z.name = 'Mitte';

Intersección, contiene, dentro

Amplio conjunto de predicados espaciales: ST_Intersects, ST_Contains, ST_Within, ST_Touches, ST_Disjoint, ST_Equals.

Cargar GeoJSON

Importe GeoJSON directamente en PostGIS:

INSERT INTO zones (name, area)
SELECT 'Mitte', ST_GeogFromGeoJSON('{"type":"Polygon","coordinates":[...]}');

Generación de teselas vectoriales

PostGIS 3.0+ puede generar teselas vectoriales de Mapbox directamente con ST_AsMVT: permite crear interfaces de mapas directamente desde la base de datos.

Resumen

PostGIS convierte Postgres en un motor SIG sólido.

  • GEOMETRY para datos proyectados y GEOGRAPHY para distancias sobre la Tierra
  • Índice GiST para filtros espaciales y KNN
  • ST_DWithin, ST_Distance, ST_Within
  • SRID 4326 = WGS84 latitud/longitud

Comprobación rápida

Almacena las ubicaciones de los usuarios como GEOGRAPHY(POINT). ¿Qué tipo de índice acelera las consultas para «buscar dentro de un radio de 5 km»?

Preguntas frecuentes

¿La lección «Indexación geoespacial con PostGIS» es gratis?

Sí — el texto completo de «Indexación geoespacial con PostGIS» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de SQL Academy, actualiza a CoddyKit PRO. El curso de SQL Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Indexación geoespacial con PostGIS»?

Añada la extensión PostGIS, almacene geometría/geografía y consulte relaciones espaciales con índices GiST. Practicas SQL Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar SQL Academy?

No se requiere experiencia previa. SQL Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Indexación geoespacial con PostGIS»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de SQL Academy?

Sí. Cada lección de SQL Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Búsqueda por trigramas (pg_trgm) para coincidencias aproximadas
  2. Búsqueda de texto completo con tsvector y GIN
  3. Indexación geoespacial con PostGIS
  4. Búsqueda vectorial con pgvector
← Volver a SQL Academy