PostGIS memperluas Hologres dengan tipe data spasial, fungsi, dan operator untuk menyimpan, mengkueri, serta menganalisis data geografis — mulai dari filter kotak pembatas dan pencarian kedekatan hingga pemeriksaan irisan poligon dan perhitungan jarak.
Hologres mendukung PostGIS 3.0.0.
Dukungan mesin
Di Hologres V1.3 dan versi lebih baru, sebagian besar fungsi PostGIS berjalan pada Hologres Query Engine (HQE) yang dikembangkan oleh Alibaba Cloud, sehingga memberikan performa kueri lebih baik dibandingkan PostgreSQL Query Engine (PQE). Pada versi sebelum V1.3, fungsi-fungsi tersebut berjalan di PQE, sehingga performanya mungkin lebih rendah. Untuk mengetahui mesin yang digunakan setiap fungsi, lihat Fungsi spasial: setiap tabel fungsi menyebutkan mesin untuk seluruh kelompok atau mencantumkannya di kolom Required engine.
Instal dan uninstal ekstensi PostGIS
Jalankan pernyataan berikut sebagai superuser untuk menginstal PostGIS ke dalam database. Instalasi dilakukan per database — ulangi langkah ini untuk setiap database yang memerlukan dukungan spasial.
-- Install PostGIS secara eksplisit ke dalam skema public.
CREATE EXTENSION IF NOT EXISTS postgis SCHEMA public;
PostGIS tidak dapat diinstal di skema pg_catalog.
Untuk memverifikasi instalasi, jalankan:
SELECT public.postgis_full_version();
Instalasi yang berhasil mengembalikan string versi seperti POSTGIS="3.0.0 ...".
postgis_full_version() adalah fungsi PL/pgSQL di skema public. search_path default di Hologres mencakup public, sehingga Anda dapat memanggil fungsi tanpa awalan skema. Jika search_path sesi saat ini tidak mencakup public, pemanggilan akan gagal dengan pesan function postgis_full_version() does not exist. Contoh dalam topik ini menggunakan awalan public. agar berfungsi di bawah search_path apa pun.
Uninstal PostGIS
Untuk menghapus ekstensi:
DROP EXTENSION postgis;
Jika database masih berisi objek yang bergantung pada tipe geometry atau geography — misalnya, tabel yang dibuat seperti dijelaskan dalam Buat dan kueri tabel geometry — pernyataan tersebut akan gagal dengan pesan cannot drop extension postgis because other objects depend on it. Hapus terlebih dahulu objek yang bergantung tersebut:
-
Cari objek dan kolom yang masih menggunakan tipe spasial:
SELECT n.nspname AS schema_name, c.relname AS object_name, a.attname AS column_name, t.typname FROM pg_attribute a JOIN pg_class c ON c.oid = a.attrelid JOIN pg_type t ON t.oid = a.atttypid JOIN pg_namespace n ON n.oid = c.relnamespace WHERE t.typname IN ('geometry', 'geography') AND c.relkind IN ('r', 'p', 'm', 'f') AND a.attnum > 0 AND NOT a.attisdropped AND n.nspname NOT LIKE 'pg_%'; -
Hapus setiap tabel yang dikembalikan oleh kueri, atau hapus hanya kolom spasialnya:
DROP TABLE <TABLE_NAME>;CatatanJika recycle bin tabel diaktifkan — yang merupakan pengaturan default di Hologres V3.1 dan versi lebih baru —
DROP TABLEmemindahkan tabel ke recycle bin, sehingga Anda harus menyelesaikan langkah berikutnya. Untuk melewati recycle bin dan menghindari langkah berikutnya, jalankanDROP TABLE <TABLE_NAME> FORCE;. Untuk informasi lebih lanjut, lihat Recycle bin tabel. -
Kosongkan recycle bin. Tabel di recycle bin masih bergantung pada tipe spasial, sehingga tipe tersebut tetap sedang digunakan sampai recycle bin dikosongkan:
CALL hologres.hg_purge_all_tables();Pentinghg_purge_all_tables()menghapus secara permanen semua tabel di recycle bin database saat ini. Tindakan ini tidak dapat dibatalkan. Sebelum menjalankannya, pastikan recycle bin tidak berisi tabel yang masih Anda perlukan. Perintah ini harus dijalankan oleh superuser instans saat ini. -
Uninstal ekstensi:
DROP EXTENSION postgis;
Hapus objek yang bergantung seperti dijelaskan di atas daripada menggunakan DROP EXTENSION postgis CASCADE, meskipun pesan error PostgreSQL menyarankan opsi CASCADE. Opsi CASCADE menghapus data ekstensi (data PostGIS, RoaringBitmap, Proxima, Binlog, dan BSI) bersama dengan semua objek yang bergantung pada ekstensi, termasuk metadata, tabel, tampilan, dan data server. Tindakan ini tidak dapat dibatalkan.
Selesaikan konflik spatial_ref_sys
Jika CREATE EXTENSION postgis gagal dengan error relation spatial_ref_sys already exists, database berisi sisa tabel sistem spatial_ref_sys dari instalasi sebelumnya. Perintah DROP EXTENSION postgis biasa tidak meninggalkan sisa apa pun, sehingga error ini biasanya muncul setelah migrasi dari database lain atau ketika tabel dengan nama yang sama dibuat secara manual. Selesaikan konflik sebagai berikut:
-
Hapus ekstensi yang terinstal sebagian:
DROP EXTENSION IF EXISTS postgis; -
Hapus tabel sistem sisa. Sebelum menjalankan pernyataan ini, pastikan bahwa tabel tersebut merupakan sisa dari instalasi sebelumnya, bukan tabel bisnis:
DROP TABLE IF EXISTS spatial_ref_sys CASCADE; -
Instal ulang ekstensi PostGIS:
CREATE EXTENSION IF NOT EXISTS postgis SCHEMA public; -
Verifikasi instalasi:
SELECT public.postgis_full_version();
Buat dan kueri tabel geometry
PostGIS mendukung dua tipe data spasial di Hologres: geometry (koordinat planar/Kartesius) dan geography (koordinat bujur/latitude bola). Untuk detail tentang tipe geography, lihat dokumentasi geography PostGIS.
Tipe geometry lebih umum digunakan. Langkah-langkah berikut menunjukkan cara membuat tabel geometry dan menjalankan kueri spasial.
1. Buat tabel geometry
Saat membuat tabel, Anda dapat menentukan subtipe geometry. Subtipe yang didukung: Point, MultiPoint, LineString, MultiLineString, Polygon, MultiPolygon.
Tanpa subtipe:
CREATE TABLE holo_gis_1 (
id INT,
geom geometry,
PRIMARY KEY (id)
);
Dengan subtipe dan identifier sistem referensi spasial (SRID):
CREATE TABLE holo_gis_2 (
id INT,
geom geometry(point, 4326),
PRIMARY KEY (id)
);
Pada contoh ini, subtipe adalah Point dan SRID-nya adalah 4326 (WGS 84). Jika SRID tidak ditentukan, nilai default-nya adalah 0. SRID geometri yang Anda masukkan atau gunakan dalam predikat kueri harus sesuai dengan SRID kolom. Jika tidak, pernyataan akan gagal dengan error seperti Geometry SRID (0) does not match column SRID (4326) atau Operation on mixed SRID geometries. Untuk informasi lebih lanjut tentang SRID, lihat dokumentasi PostGIS.
2. Masukkan data spasial
-- Tanpa SRID
INSERT INTO holo_gis_1 VALUES (1, ST_GeomFromText('point(116 39)'));
-- Dengan SRID 4326
INSERT INTO holo_gis_2 VALUES (1, ST_GeomFromText('point(116 39)', 4326));
Untuk informasi lebih lanjut tentang fungsi spasial, lihat Fungsi spasial.
3. Kueri data spasial
Setelah memasukkan data, Anda dapat menjalankan jenis kueri berikut.
Kueri rentang persegi panjang
Mengembalikan semua titik dalam kotak pembatas.
Tanpa SRID:
SELECT st_astext(geom)
FROM holo_gis_1
WHERE ST_Covers(
ST_MakeBox2D(ST_Point(116, 39), ST_Point(117, 40)),
geom
);
Dengan SRID:
SELECT st_astext(geom)
FROM holo_gis_2
WHERE ST_Covers(
ST_SetSRID(ST_MakeBox2D(ST_Point(116, 39), ST_Point(117, 40)), 4326),
geom
);
Kedua kueri mengembalikan:
st_astext
-------------
POINT(116 39)
Untuk dataset besar, gunakan operator kotak pembatas && sebagai filter kasar sebelum menjalankan predikat spasial eksak. Ini mengurangi jumlah baris yang mencapai perhitungan eksak. Operator && berjalan di HQE, sehingga biayanya lebih rendah dibandingkan fungsi topologis seperti ST_Intersects dan ST_Covers, yang dipush down ke PQE. Contohnya:
SELECT st_astext(geom)
FROM holo_gis_1
WHERE geom && ST_MakeBox2D(ST_Point(116, 39), ST_Point(117, 40))
AND ST_Intersects(ST_GeomFromText('POLYGON((116 39,117 39,117 40,116 40,116 39))'), geom);
Jika Anda hanya membutuhkan filter rentang persegi panjang dan tidak memerlukan semantik topologis eksak, gunakan geom && ST_MakeBox2D(...) saja. Jika kolom memiliki SRID, bungkus kotak tersebut dalam ST_SetSRID dengan SRID yang sama. Jika tidak, pernyataan akan gagal dengan error Operation on mixed SRID geometries.
Pemeriksaan irisan poligon
Untuk menemukan titik yang berada di dalam poligon arbitrer atau berada di batasnya, gunakan ST_Intersects dengan poligon tersebut. Berbeda dengan kotak pembatas yang dibuat oleh ST_MakeBox2D, poligon dapat memiliki bentuk apa pun, dan ST_Intersects menganggap kontak batas sebagai kecocokan.
Tanpa SRID:
SELECT st_astext(geom)
FROM holo_gis_1
WHERE ST_Intersects(
ST_GeomFromText('POLYGON((116 39,117 39,117 40,116 40,116 39))'),
geom
);
Dengan SRID:
SELECT st_astext(geom)
FROM holo_gis_2
WHERE ST_Intersects(
ST_SetSRID(ST_GeomFromText('POLYGON((116 39,117 39,117 40,116 40,116 39))'), 4326),
geom
);
Kedua kueri mengembalikan:
st_astext
-------------
POINT(116 39)
Fungsi spasial
PostGIS menyediakan fungsi spasial untuk mengonversi dan menganalisis nilai geometry. Sintaks fungsi menggunakan parameter berikut:
-
geom: nilai
geometryatau ekspresi yang dievaluasi menjadigeometry -
precision:
INTEGERyang mengontrol presisi output koordinat. Nama parameter, semantik, dan nilai default berbeda-beda tergantung fungsinya:-
ST_AsText(geom [, precision]): jumlah digit signifikan. Nilai default15. -
ST_AsGeoJSON(geom [, maxdecimaldigits]): jumlah maksimum tempat desimal. Nilai default9. Tentukan parameter ini secara eksplisit jika Anda perlu mempertahankan presisi lebih tinggi; jika tidak, koordinat yang diekspor akan kehilangan presisi.
Kami merekomendasikan Anda menentukan nilai antara 1 hingga 20. Nilai di luar rentang ini diterima tetapi tidak menghasilkan digit tambahan yang bermakna, karena float presisi ganda hanya membawa sekitar 15 hingga 17 digit signifikan.
-
-
index:
INTEGER; indeks berbasis 1 kecuali dinyatakan lain -
srid:
INTEGER; identifier sistem referensi spasial
Setiap fungsi berjalan pada salah satu mesin kueri berikut:
| Mesin | Kapan berlaku | Performa |
|---|---|---|
| HQE (Hologres Query Engine) | Hologres V1.3 dan versi lebih baru | Lebih tinggi — dioptimalkan untuk beban kerja analitis |
| PQE (PostgreSQL Query Engine) | Semua versi; diperlukan untuk fungsi tertentu | Lebih rendah — mode kompatibilitas |
Untuk spesifikasi lengkap fungsi PostGIS, lihat dokumentasi referensi PostGIS.
-
Penugasan mesin dalam tabel berikut mencerminkan perilaku yang diukur pada Hologres V4.2 dan hanya menyebutkan mesin saat ini (HQE atau PQE). Mesin yang digunakan fungsi dapat berubah di berbagai versi. Untuk mengonfirmasi mesin untuk instans Anda, periksa apakah output
EXPLAINberisi node PQE. Untuk dukungan mesin keseluruhan berdasarkan versi, lihat Dukungan mesin. -
Tabel berikut mencantumkan signature yang umum digunakan untuk setiap fungsi. Beberapa fungsi menerima overload tambahan — misalnya,
ST_MakeLinejuga menerima array geometri, danST_AddPointjuga menerima posisi penyisipan. Lihat dokumentasi referensi PostGIS untuk daftar lengkap overload, serta fungsi yang muncul dalam contoh tetapi tidak tercantum dalam tabel ini, sepertiST_MakeBox2D.
Konstruktor geometry
Semua fungsi dalam kelompok ini berjalan di HQE.
| Fungsi | Sintaks | Nilai Kembali | Deskripsi |
|---|---|---|---|
ST_LineFromMultiPoint |
ST_LineFromMultiPoint(geom) |
GEOMETRY |
Membuat linestring dari geometri multipoint, mempertahankan urutan titik. Geometri yang dikembalikan memiliki SRID yang sama dengan input. |
ST_MakeEnvelope |
ST_MakeEnvelope(xmin, ymin, xmax, ymax [, srid]) |
GEOMETRY (POLYGON) |
Membuat poligon persegi panjang yang didefinisikan oleh koordinat sudut yang diberikan, di mana koordinat menentukan sudut kiri bawah dan kanan atas. Hasilnya selalu POLYGON, bahkan ketika koordinat runtuh menjadi garis atau titik tunggal. Jika SRID disediakan, geometri yang dikembalikan menggunakan SRID tersebut; jika tidak, SRID-nya adalah 0. |
ST_MakeLine |
ST_MakeLine(geom1, geom2) |
GEOMETRY (LINESTRING) |
Membuat linestring dari dua geometri input. |
ST_MakePoint |
ST_MakePoint(x, y) |
GEOMETRY (POINT) |
Membuat titik dari nilai koordinat. |
ST_Point |
ST_Point(x, y) |
GEOMETRY (POINT) |
Membuat titik dari nilai koordinat. |
ST_Polygon |
ST_Polygon(linestring, srid) |
GEOMETRY (POLYGON) |
Membuat poligon yang cincin luarnya adalah linestring input, dengan SRID yang diberikan. |
Aksesor geometry
Semua fungsi dalam kelompok ini berjalan di HQE, kecuali ST_IsPolygonCCW, yang berjalan di PQE. Fungsi-fungsi ini bukan komplemen: ketika cincin luar dan cincin dalam memiliki orientasi yang sama, keduanya mengembalikan false. Jangan menegasikan ST_IsPolygonCW untuk menguji orientasi berlawanan arah jarum jam. Saat Anda memfilter tabel besar berdasarkan orientasi cincin, perhatikan juga bahwa kedua fungsi ini berjalan di mesin yang berbeda.
| Fungsi | Sintaks | Nilai Kembali | Deskripsi |
|---|---|---|---|
GeometryType |
GeometryType(geom) |
TEXT |
Mengembalikan nama subtipe geometri input sebagai string, tanpa awalan dan dalam huruf kapital, seperti POINT atau POLYGON. |
ST_Boundary |
ST_Boundary(geom) |
GEOMETRY |
Mengembalikan batas geometri input. Geometri kosong mengembalikan input apa adanya; titik atau multipoint tidak kosong mengembalikan koleksi geometri kosong; linestring mengembalikan multipoint dari titik batasnya; poligon tanpa cincin dalam mengembalikan linestring tertutup; poligon dengan cincin dalam atau multipolygon mengembalikan multilinestring dari semua cincin batas. |
ST_Dimension |
ST_Dimension(geom) |
INTEGER |
Mengembalikan dimensi intrinsik dari subtipe geometri. |
ST_Envelope |
ST_Envelope(geom) |
GEOMETRY |
Mengembalikan kotak pembatas minimum dari geometri input. Mengembalikan titik jika kotak tersebut runtuh menjadi titik, linestring dua titik jika berdimensi satu, atau poligon berorientasi searah jarum jam jika tidak. Geometri yang dikembalikan memiliki SRID yang sama dengan input. |
ST_ExteriorRing |
ST_ExteriorRing(geom) |
GEOMETRY (LINESTRING) |
Mengembalikan cincin luar poligon sebagai linestring tertutup. |
ST_GeometryN |
ST_GeometryN(geom, index) |
GEOMETRY |
Mengembalikan geometri pada indeks berbasis 1 yang diberikan. Untuk geometri sederhana (titik, linestring, poligon) dengan indeks 1, mengembalikan geometri itu sendiri; jika tidak, mengembalikan null. Untuk koleksi, mengembalikan elemen pada indeks tersebut. |
ST_GeometryType |
ST_GeometryType(geom) |
TEXT |
Mengembalikan nama subtipe geometri input sebagai string, dengan awalan ST_, seperti ST_Point atau ST_Polygon. Awalan ini adalah satu-satunya perbedaan dari GeometryType, jadi pertimbangkan formatnya saat menulis kondisi kesetaraan. |
ST_InteriorRingN |
ST_InteriorRingN(geom, index) |
GEOMETRY (LINESTRING) |
Mengembalikan cincin dalam poligon pada posisi indeks yang diberikan sebagai linestring tertutup. |
ST_IsClosed |
ST_IsClosed(geom) |
BOOLEAN |
Mengembalikan true jika geometri tertutup. Titik atau multipoint selalu tertutup. Linestring tertutup jika titik awal dan akhirnya berimpit. Poligon tertutup jika semua cincin tidak kosong dan titik awal serta akhirnya berimpit. |
ST_IsCollection |
ST_IsCollection(geom) |
BOOLEAN |
Mengembalikan true jika geometri adalah GEOMETRYCOLLECTION, MULTIPOINT, MULTILINESTRING, atau MULTIPOLYGON. |
ST_IsEmpty |
ST_IsEmpty(geom) |
BOOLEAN |
Mengembalikan true jika geometri tidak berisi titik. |
ST_IsPolygonCCW |
ST_IsPolygonCCW(geom) |
BOOLEAN |
Mengembalikan true jika cincin luar poligon input berorientasi berlawanan arah jarum jam dan semua cincin dalam berorientasi searah jarum jam. Mengembalikan false jika cincin luar dan cincin dalam memiliki orientasi yang sama. Juga mengembalikan true untuk titik, linestring, multipoint, dan multilinestring, untuk koleksi geometri yang elemen poligonnya memenuhi kondisi sebelumnya, dan untuk poligon kosong (POLYGON EMPTY). |
ST_IsPolygonCW |
ST_IsPolygonCW(geom) |
BOOLEAN |
Mengembalikan true jika cincin luar poligon input berorientasi searah jarum jam dan semua cincin dalam berorientasi berlawanan arah jarum jam. Mengembalikan false jika cincin luar dan cincin dalam memiliki orientasi yang sama. Juga mengembalikan true untuk titik, linestring, multipoint, dan multilinestring, untuk koleksi geometri yang elemen poligonnya memenuhi kondisi sebelumnya, dan untuk poligon kosong (POLYGON EMPTY). |
ST_IsSimple |
ST_IsSimple(geom) |
BOOLEAN |
Mengembalikan true jika geometri tidak memiliki titik geometris anomali seperti self-intersections. |
ST_NPoints |
ST_NPoints(geom) |
INTEGER |
Mengembalikan jumlah titik dalam geometri. |
ST_NRings |
ST_NRings(geom) |
INTEGER |
Mengembalikan jumlah cincin dalam geometri. |
ST_NumGeometries |
ST_NumGeometries(geom) |
INTEGER |
Mengembalikan jumlah elemen dalam koleksi geometri. |
ST_NumInteriorRings |
ST_NumInteriorRings(geom) |
INTEGER |
Mengembalikan jumlah cincin dalam pada poligon. |
ST_NumPoints |
ST_NumPoints(geom) |
INTEGER |
Mengembalikan jumlah titik dalam geometri. |
ST_PointN |
ST_PointN(geom, index) |
GEOMETRY (POINT) |
Mengembalikan titik pada indeks yang diberikan dalam linestring. Nilai indeks negatif dihitung dari akhir: -1 mengembalikan titik terakhir. |
ST_Points |
ST_Points(geom) |
GEOMETRY (MULTIPOINT) |
Mengembalikan semua titik tidak kosong dalam geometri sebagai multipoint. Titik duplikat, termasuk titik awal dan akhir cincin, dipertahankan. |
ST_StartPoint |
ST_StartPoint(geom) |
GEOMETRY |
Mengembalikan titik pertama linestring. Geometri yang dikembalikan memiliki SRID yang sama dengan input. |
ST_X |
ST_X(point) |
DOUBLE PRECISION |
Mengembalikan koordinat X dari titik. |
ST_Y |
ST_Y(point) |
DOUBLE PRECISION |
Mengembalikan koordinat Y dari titik. |
Editor geometry
Semua fungsi dalam kelompok ini berjalan di HQE.
| Fungsi | Sintaks | Nilai Kembali | Deskripsi |
|---|---|---|---|
ST_AddPoint |
ST_AddPoint(geom1, geom2) |
GEOMETRY |
Mengembalikan linestring dengan titik yang ditambahkan. |
ST_Multi |
ST_Multi(geom) |
GEOMETRY (MULTIPOINT, MULTILINESTRING, MULTIPOLYGON, atau GEOMETRYCOLLECTION) |
Mengonversi geometri ke tipe multi yang sesuai. Jika input sudah bertipe multi atau koleksi, mengembalikan salinan. |
ST_RemovePoint |
ST_RemovePoint(geom, index) |
GEOMETRY |
Mengembalikan linestring dengan titik pada indeks berbasis nol yang diberikan dihapus. Geometri yang dikembalikan memiliki SRID yang sama dengan input. |
ST_Reverse |
ST_Reverse(geom) |
GEOMETRY |
Membalik urutan vertex geometri linear atau areal. Untuk titik atau multipoint, mengembalikan salinan. Untuk koleksi, membalik vertex setiap elemen. |
ST_SetPoint |
ST_SetPoint(geom1, index, geom2) |
GEOMETRY |
Mengembalikan linestring dengan titik pada indeks yang diberikan diganti dengan koordinat titik input. |
Validasi geometry
| Fungsi | Sintaks | Mengembalikan | Mesin yang diperlukan | Deskripsi |
|---|---|---|---|---|
ST_IsValid |
ST_IsValid(geom) |
BOOLEAN |
PQE | Mengembalikan true jika geometri valid menurut spesifikasi OGC. |
Fungsi sistem referensi spasial
Semua fungsi dalam kelompok ini berjalan di HQE.
| Fungsi | Sintaks | Nilai Kembali | Deskripsi |
|---|---|---|---|
ST_SetSRID |
ST_SetSRID(geom, srid) |
GEOMETRY |
Mengembalikan geometri input dengan SRID-nya diperbarui ke nilai yang diberikan. Tidak mereproyeksikan koordinat. |
ST_SRID |
ST_SRID(geom) |
INTEGER |
Mengembalikan SRID dari geometri input. |
Input geometry
| Fungsi | Sintaks | Nilai Kembali | Mesin yang diperlukan | Deskripsi |
|---|---|---|---|---|
ST_GeomFromText |
ST_GeomFromText(wkt_string [, srid]) |
GEOMETRY |
PQE | Membangun geometri dari representasi well-known text (WKT)-nya. |
Output geometry
Semua fungsi dalam kelompok ini berjalan di HQE.
| Fungsi | Sintaks | Nilai Kembali | Deskripsi |
|---|---|---|---|
ST_AsBinary |
ST_AsBinary(geom) |
BYTEA |
Mengembalikan representasi well-known binary (WKB) dari geometri, dikodekan sebagai string heksadesimal menggunakan karakter ASCII 0–9 dan A–F. |
ST_AsEWKB |
ST_AsEWKB(geom) |
BYTEA |
Mengembalikan representasi extended well-known binary (EWKB) dari geometri. |
ST_AsEWKT |
ST_AsEWKT(geom) |
TEXT |
Mengembalikan representasi extended well-known text (EWKT) dari geometri. |
ST_AsGeoJSON |
ST_AsGeoJSON(geom [, maxdecimaldigits]) |
TEXT |
Mengembalikan representasi GeoJSON dari geometri. |
ST_AsText |
ST_AsText(geom [, precision]) |
TEXT |
Mengembalikan representasi WKT dari geometri. |
Predikat hubungan spasial
Mesin bervariasi tergantung fungsinya dalam kelompok ini. Lihat kolom Mesin yang diperlukan.
| Fungsi | Sintaks | Nilai Kembali | Mesin yang diperlukan | Deskripsi |
|---|---|---|---|---|
ST_Contains |
ST_Contains(geom1, geom2) |
BOOLEAN |
PQE | Mengembalikan true jika setiap titik geom2 berada di geom1 dan interior keduanya beririsan. Setara dengan ST_Within(geom2, geom1). |
ST_ContainsProperly |
ST_ContainsProperly(geom1, geom2) |
BOOLEAN |
PQE | Mengembalikan true jika kedua geometri tidak kosong dan semua titik geom2 berada di interior (bukan batas) geom1. |
ST_CoveredBy |
ST_CoveredBy(geom1, geom2) |
BOOLEAN |
HQE | Mengembalikan true jika setiap titik geom1 berada di geom2. Setara dengan ST_Covers(geom2, geom1). |
ST_Covers |
ST_Covers(geom1, geom2) |
BOOLEAN |
PQE | Mengembalikan true jika setiap titik geom2 berada di geom1. Setara dengan ST_CoveredBy(geom2, geom1). |
ST_Crosses |
ST_Crosses(geom1, geom2) |
BOOLEAN |
HQE | Mengembalikan true jika kedua geometri beririsan. |
ST_Disjoint |
ST_Disjoint(geom1, geom2) |
BOOLEAN |
HQE | Mengembalikan true jika kedua geometri tidak berbagi titik. |
ST_DWithin |
ST_DWithin(geom1, geom2, threshold) |
BOOLEAN |
PQE | Mengembalikan true jika jarak Euclidean antara kedua geometri tidak melebihi ambang batas. |
ST_DWithin_S2 |
ST_DWithin_S2(x1, y1, x2, y2, threshold) |
BOOLEAN |
HQE | Mengembalikan true jika jarak bola antara dua lokasi geografis kurang dari atau sama dengan threshold (satuan: meter). Parameter secara berurutan: bujur Lokasi 1, latitude Lokasi 1, bujur Lokasi 2, latitude Lokasi 2, ambang batas jarak. Didukung di Hologres V2.0.8 dan versi lebih baru. Input konstan tidak didukung di versi saat ini. |
ST_Equals |
ST_Equals(geom1, geom2) |
BOOLEAN |
HQE | Mengembalikan true jika kedua geometri memiliki himpunan titik yang sama dan interior keduanya beririsan. |
ST_Intersects |
ST_Intersects(geom1, geom2) |
BOOLEAN |
PQE | Mengembalikan true jika kedua geometri berbagi setidaknya satu titik. |
ST_Touches |
ST_Touches(geom1, geom2) |
BOOLEAN |
HQE | Mengembalikan true jika kedua geometri saling menyentuh — mereka beririsan tetapi tidak berbagi titik interior. |
ST_Within |
ST_Within(geom1, geom2) |
BOOLEAN |
PQE | Mengembalikan true jika setiap titik geom1 berada di geom2 dan interior keduanya beririsan. Setara dengan ST_Contains(geom2, geom1). |
Fungsi pengukuran
| Fungsi | Sintaks | Nilai Kembali | Mesin yang diperlukan | Deskripsi |
|---|---|---|---|---|
ST_Angle |
ST_Angle(geom1, geom2, geom3 [, geom4]) |
DOUBLE PRECISION |
HQE | Mengembalikan sudut searah jarum jam dalam radian pada rentang [0, 2π). Dengan tiga titik, mengukur rotasi dari P1 ke P3 mengelilingi P2. Dengan empat titik, mengukur sudut antara garis berarah P1–P2 dan P3–P4; mengembalikan null jika P1 sama dengan P2 atau P3 sama dengan P4. |
ST_Area |
ST_Area(geom) |
DOUBLE PRECISION |
HQE | Mengembalikan luas Kartesius geometri dalam satuan yang sama dengan sistem koordinat. Mengembalikan 0 untuk titik, linestring, dan tipe multi-nya. Untuk koleksi, mengembalikan jumlah luas semua elemen. |
ST_Azimuth |
ST_Azimuth(point1, point2) |
DOUBLE PRECISION |
HQE | Mengembalikan azimuth Kartesius berbasis utara yang didefinisikan oleh dua titik. |
ST_Distance |
ST_Distance(geom1, geom2) |
DOUBLE PRECISION |
HQE | Mengembalikan jarak Kartesius antara dua geometri, dinyatakan dalam satuan yang sama dengan koordinat input. Untuk menghitung jarak bola dalam meter, gunakan ST_Distance_Sphere_S2, yang menerima nilai bujur dan latitude daripada geometri. |
ST_Distance_Sphere_S2 |
ST_Distance_Sphere_S2(x1, y1, x2, y2) |
DOUBLE PRECISION |
HQE | Mengembalikan jarak bola antara dua lokasi geografis dalam meter. Parameter secara berurutan: bujur Lokasi 1, latitude Lokasi 1, bujur Lokasi 2, latitude Lokasi 2. Rentang latitude valid: [-90, +90]. Rentang bujur valid: [-180, +180]. Didukung di Hologres V2.0.8 dan versi lebih baru. Input konstan tidak didukung di versi saat ini. |
ST_Length |
ST_Length(geom) |
DOUBLE PRECISION |
HQE | Mengembalikan panjang Kartesius geometri linear dalam satuan yang sama dengan sistem koordinat. Mengembalikan 0 untuk titik, multipoint, dan geometri areal. Untuk koleksi, mengembalikan panjang total. |
ST_Perimeter |
ST_Perimeter(geom) |
DOUBLE PRECISION |
HQE | Mengembalikan perimeter Kartesius (panjang batas) geometri areal dalam satuan yang sama dengan sistem koordinat. Mengembalikan 0 untuk titik, multipoint, dan geometri linear. Untuk koleksi, mengembalikan jumlah perimeter semua elemen. |
Fungsi overlay
| Fungsi | Sintaks | Mengembalikan | Mesin yang diperlukan | Deskripsi |
|---|---|---|---|---|
ST_Intersection |
ST_Intersection(geom1, geom2) |
GEOMETRY |
HQE | Mengembalikan irisan geometris dari dua geometri. |
Fungsi pemrosesan geometry
| Fungsi | Sintaks | Mengembalikan | Mesin yang diperlukan | Deskripsi |
|---|---|---|---|---|
ST_Buffer |
ST_Buffer(geom, radius) |
Sama dengan tipe input: GEOMETRY untuk input geometry, GEOGRAPHY untuk input geography |
PQE | Mengembalikan geometri yang merepresentasikan semua titik dalam radius yang diberikan dari geometri input. |
ST_ConvexHull |
ST_ConvexHull(geom) |
GEOMETRY |
HQE | Mengembalikan convex hull dari semua titik tidak kosong dalam geometri input. |
ST_Simplify |
ST_Simplify(geom, tolerance) |
GEOMETRY |
HQE | Mengembalikan salinan geometri yang disederhanakan menggunakan algoritma Ramer-Douglas-Peucker dengan toleransi yang diberikan. Topologi mungkin tidak dipertahankan. |
Fungsi kotak pembatas
Semua fungsi dalam kelompok ini berjalan di PQE.
| Fungsi | Sintaks | Pengembalian | Deskripsi |
|---|---|---|---|
ST_XMax |
ST_XMax(geom) |
DOUBLE PRECISION |
Mengembalikan koordinat X maksimum dari kotak pembatas geometri. Tipe parameter adalah box3d; input geometry dikonversi secara implisit. |
ST_XMin |
ST_XMin(geom) |
DOUBLE PRECISION |
Mengembalikan koordinat X minimum dari kotak pembatas geometri. Tipe parameter adalah box3d; input geometry dikonversi secara implisit. |
ST_YMax |
ST_YMax(geom) |
DOUBLE PRECISION |
Mengembalikan koordinat Y maksimum dari kotak pembatas geometri. Tipe parameter adalah box3d; input geometry dikonversi secara implisit. |
ST_YMin |
ST_YMin(geom) |
DOUBLE PRECISION |
Mengembalikan koordinat Y minimum dari kotak pembatas geometri. Tipe parameter adalah box3d; input geometry dikonversi secara implisit. |
Fungsi referencing linear
| Fungsi | Sintaks | Nilai Kembali | Mesin yang diperlukan | Deskripsi |
|---|---|---|---|---|
ST_LineInterpolatePoint |
ST_LineInterpolatePoint(geom, fraction) |
GEOMETRY (POINT) |
HQE | Mengembalikan titik pada jarak fraksional sepanjang garis, diukur dari awal. Misalnya, fraction=0.5 mengembalikan titik tengah. |
Praktik terbaik penggunaan fungsi spasial
Untuk contoh end-to-end pola analisis geografis umum, lihat Gunakan fungsi spasial untuk mengkueri data.