0Pricing
Supabase Backend as a Service · Lección

Datos geoespaciales avanzados (PostGIS)

Integre PostGIS para gestionar datos geoespaciales complejos, realizar consultas basadas en la ubicación y crear funciones de mapas en su aplicación.

Datos geoespaciales avanzados (PostGIS) es una lección gratuita de Supabase Backend as a Service en CoddyKit. Esta es la lección 2 de 3. 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 Supabase Backend as a Service, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Supabase Backend as a Service incluye 3 lecciones en total.

Partes de esta lección aún no han sido traducidas y se muestran en inglés.

Unlocking Geospatial Power

Welcome to Advanced Geospatial Data (PostGIS)! In this lesson, we'll explore how to handle location-based data directly within your Supabase database.

Geospatial data is crucial for apps that deal with maps, locations, navigation, or proximity services.

What is PostGIS?

PostGIS is a powerful, open-source extension for PostgreSQL that adds support for geographic objects.

  • It transforms your database into a spatial database.
  • It allows you to store, query, and analyze location data (points, lines, polygons).
  • Supabase, being built on PostgreSQL, fully supports PostGIS.

Why Use PostGIS?

Traditional databases store locations as separate latitude/longitude columns, making complex queries difficult.

PostGIS provides specialized functions to:

  • Calculate distances between points.
  • Find locations within a specific radius.
  • Determine if points are inside an area.
  • Perform complex spatial joins and analyses.

Enabling PostGIS Extension

Before using PostGIS, you need to enable the extension in your Supabase project. This is a one-time step done via the SQL Editor in your Supabase dashboard.

Simply run the following command:

CREATE EXTENSION IF NOT EXISTS postgis;

Geospatial Data Types

PostGIS introduces new data types to store spatial information:

  • GEOMETRY: Stores data on a 2D Cartesian plane (flat earth model). Good for small-scale, local areas.
  • GEOGRAPHY: Stores data on a spherical globe (real-world coordinates). Best for large-scale, global applications.

We'll primarily use GEOMETRY for simplicity in examples, but GEOGRAPHY is often preferred for real-world distances.

Creating a Table with Spatial Data

Let's create a table to store points of interest, like coffee shops, using a GEOMETRY column. The SRID (Spatial Reference ID) 4326 is standard for latitude/longitude.

CREATE TABLE coffee_shops (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  name TEXT NOT NULL,
  location GEOMETRY(Point, 4326)
);

Inserting Geospatial Points

To insert a point, we use the ST_GeomFromText() function, which converts a Well-Known Text (WKT) representation into a PostGIS geometry object. The format is 'POINT(longitude latitude)'.

INSERT INTO coffee_shops (name, location) VALUES
('Espresso Hub', ST_GeomFromText('POINT(-0.1278 51.5074)', 4326)),
('Bean Scene', ST_GeomFromText('POINT(-0.1419 51.5085)', 4326)),
('Daily Grind', ST_GeomFromText('POINT(-0.1000 51.5200)', 4326));

Finding Nearest Locations

One common task is finding locations near a specific point. We can use ST_Distance() to calculate the distance between two geometry points. The unit of distance depends on the SRID (e.g., meters for 4326 on GEOGRAPHY type, degrees for GEOMETRY type).

Here, we find shops near a reference point (e.g., user's current location).

SELECT
  name,
  ST_Distance(
    location,
    ST_GeomFromText('POINT(-0.1300 51.5090)', 4326)
  ) AS distance_in_degrees
FROM
  coffee_shops
ORDER BY
  distance_in_degrees
LIMIT 1;

Efficient Proximity Search

For more efficient proximity searches, especially when working with GEOGRAPHY types for real-world distances, ST_DWithin() is excellent. It checks if two geometries are within a specified distance.

Let's find all coffee shops within 1000 meters of a specific point using GEOGRAPHY for accurate distance calculation.

SELECT
  name
FROM
  coffee_shops
WHERE
  ST_DWithin(
    location::geography,
    ST_GeomFromText('POINT(-0.1300 51.5090)', 4326)::geography,
    1000 -- 1000 meters
  );

PostGIS Query Check

You've learned how to enable PostGIS, create tables with spatial columns, and insert/query geospatial data.

Which PostGIS function would you typically use to find all points of interest that are located within 500 meters of a user's current position, assuming you're using the GEOGRAPHY type?

Recap: Geospatial Data

Great job! You've taken your first steps into the world of geospatial data with PostGIS and Supabase.

  • We enabled the PostGIS extension.
  • Learned about GEOMETRY and GEOGRAPHY types.
  • Created tables and inserted data using WKT.
  • Performed basic spatial queries like distance calculation and proximity searches with ST_Distance() and ST_DWithin().

PostGIS opens up a vast array of possibilities for location-aware applications!

Preguntas frecuentes

¿La lección «Datos geoespaciales avanzados (PostGIS)» es gratis?

Sí — el texto completo de «Datos geoespaciales avanzados (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 Supabase Backend as a Service, actualiza a CoddyKit PRO. El curso de Supabase Backend as a Service incluye 3 lecciones en total.

¿Qué aprenderé en «Datos geoespaciales avanzados (PostGIS)»?

Integre PostGIS para gestionar datos geoespaciales complejos, realizar consultas basadas en la ubicación y crear funciones de mapas en su aplicación. Practicas Supabase Backend as a Service 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 Supabase Backend as a Service?

No se requiere experiencia previa. Supabase Backend as a Service 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 2 de 3.

¿Cuánto tiempo toma la lección «Datos geoespaciales avanzados (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 Supabase Backend as a Service?

Sí. Cada lección de Supabase Backend as a Service 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. Uso de extensiones de Postgres
  2. Datos geoespaciales avanzados (PostGIS)
  3. Búsqueda de texto completo y embeddings vectoriales con pgvector
← Volver a Supabase Backend as a Service