Data Geospasial Lanjutan (PostGIS)
Integrasikan PostGIS untuk menangani data geospasial yang kompleks, menjalankan kueri berbasis lokasi, dan membangun fitur pemetaan dalam aplikasi Anda.
Data Geospasial Lanjutan (PostGIS) adalah pelajaran Supabase Backend as a Service gratis di CoddyKit. Ini adalah pelajaran 2 dari 3. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Supabase Backend as a Service, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Supabase Backend as a Service mencakup 3 pelajaran total.
Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.
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
GEOMETRYandGEOGRAPHYtypes. - Created tables and inserted data using WKT.
- Performed basic spatial queries like distance calculation and proximity searches with
ST_Distance()andST_DWithin().
PostGIS opens up a vast array of possibilities for location-aware applications!
Belajar Supabase Backend as a Service dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 11
- Pelajaran
- 40
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Data Geospasial Lanjutan (PostGIS)” gratis?
Ya — teks lengkap “Data Geospasial Lanjutan (PostGIS)” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Supabase Backend as a Service, upgrade ke CoddyKit PRO. Kursus Supabase Backend as a Service mencakup 3 pelajaran total.
Apa yang akan aku pelajari di “Data Geospasial Lanjutan (PostGIS)”?
Integrasikan PostGIS untuk menangani data geospasial yang kompleks, menjalankan kueri berbasis lokasi, dan membangun fitur pemetaan dalam aplikasi Anda. Kamu berlatih Supabase Backend as a Service dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Supabase Backend as a Service?
Tidak diperlukan pengalaman sebelumnya. Supabase Backend as a Service di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 3.
Berapa lama pelajaran “Data Geospasial Lanjutan (PostGIS)” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Supabase Backend as a Service ini?
Ya. Setiap pelajaran Supabase Backend as a Service menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Memanfaatkan Ekstensi Postgres
- Data Geospasial Lanjutan (PostGIS)
- Pencarian Teks Lengkap dan Penyematan Vektor dengan pgvector