Pengindeksan Geospasial dengan PostGIS
Tambahkan ekstensi PostGIS, simpan geometri/geografi, dan kueri hubungan spasial dengan indeks GiST
Pengindeksan Geospasial dengan PostGIS adalah pelajaran SQL Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. 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 SQL Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL Academy mencakup 4 pelajaran total.
Apa Itu PostGIS?
Ekstensi geospasial paling canggih dalam basis data sumber terbuka mana pun. Ekstensi ini menambahkan tipe geometri/geografi, ratusan fungsi spasial, serta indeks GiST/SP-GiST untuk kueri spasial yang cepat.
Mengaktifkan PostGIS
PostGIS adalah ekstensi contrib:
CREATE EXTENSION postgis;
SELECT PostGIS_Version();GEOMETRY vs GEOGRAPHY
- GEOMETRY — planar, cepat, satuannya mengikuti sistem koordinat (biasanya meter / derajat)
- GEOGRAPHY — bumi berbentuk bola, lebih lambat, satuannya selalu meter
Pilih GEOGRAPHY untuk "jarak di bumi" dengan data dari berbagai wilayah; pilih GEOMETRY untuk sistem koordinat terproyeksi (GIS regional, operasi cepat).
Menyimpan Titik
Pola umum: simpan lintang/bujur sebagai titik 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
"ID Referensi Spasial" menentukan sistem koordinat. WGS84 (id 4326) adalah standar untuk lintang/bujur GPS.
Indeks Spasial GiST
Indeks kolom geometri Anda dengan GiST:
CREATE INDEX places_location_idx ON places USING GIST (location);
-- Now spatial filters are fast.Tetangga Terdekat: <->
Operator KNN <-> dengan indeks mengembalikan hasil terdekat dalam hitungan milidetik:
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;Dalam Jarak
Temukan tempat dalam jarak 2 km dari suatu titik:
SELECT name FROM places
WHERE ST_DWithin(
location,
ST_GeogFromText('SRID=4326;POINT(13.4 52.5)'),
2000 -- meters
);Poligon dan Area
Simpan dan kueri poligon (batas kota, zona pengiriman):
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';Berpotongan, Memuat, Berada di Dalam
Kumpulan predicate spasial yang kaya: ST_Intersects, ST_Contains, ST_Within, ST_Touches, ST_Disjoint, ST_Equals.
Memuat GeoJSON
Impor GeoJSON langsung ke PostGIS:
INSERT INTO zones (name, area)
SELECT 'Mitte', ST_GeogFromGeoJSON('{"type":"Polygon","coordinates":[...]}');Pembuatan Tile Vektor
PostGIS 3.0+ dapat membuat tile vektor Mapbox secara langsung dengan ST_AsMVT — memberdayakan antarmuka peta langsung dari basis data.
Ringkasan
PostGIS mengubah Postgres menjadi mesin GIS yang mumpuni.
- GEOMETRY untuk data terproyeksi, GEOGRAPHY untuk jarak di bumi
- indeks GiST untuk filter spasial dan KNN
- ST_DWithin, ST_Distance, ST_Within
- SRID 4326 = WGS84 lintang/bujur
Pemeriksaan Singkat
Anda menyimpan lokasi pengguna sebagai GEOGRAPHY(POINT). Jenis indeks apa yang mempercepat kueri "temukan dalam jarak 5 km"?
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Pengindeksan Geospasial dengan PostGIS” gratis?
Ya — teks lengkap “Pengindeksan Geospasial dengan PostGIS” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus SQL Academy, upgrade ke CoddyKit PRO. Kursus SQL Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Pengindeksan Geospasial dengan PostGIS”?
Tambahkan ekstensi PostGIS, simpan geometri/geografi, dan kueri hubungan spasial dengan indeks GiST Kamu berlatih SQL Academy 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 SQL Academy?
Tidak diperlukan pengalaman sebelumnya. SQL Academy 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 3 dari 4.
Berapa lama pelajaran “Pengindeksan Geospasial dengan 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 SQL Academy ini?
Ya. Setiap pelajaran SQL Academy 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
- Pencarian Trigram (pg_trgm) untuk Pencocokan Samar
- Pencarian Teks Lengkap dengan tsvector dan GIN
- Pengindeksan Geospasial dengan PostGIS
- Pencarian Vektor dengan pgvector