You are on page 1of 10

Simple

SQL
SQL, atau Structured Query Language, adalah sebuah fasilitas untuk melakukan kueri berupa perintah untuk menampilkan, memutakhirkan data dalam relational database. Sebelumnya kita sudah berhasil memuat data spasial ke dalam geo- database, yang tersimpan dalam PostgreSQL/PostGIS. Selanjutnya kita akan mendalami penggunaan SQL dalam mengelola data spasial. Sebagai contoh, gunakan SQL untuk menjawab pertanyaan berikut ini: Tampilkan nama-nama kota tetangga dari Kota New York? Untuk menjawabnya kita akan menggunakan jendela SQL query yang terdapat dalam aplikasi PgAdmin. Buka aplikasi PgAdmin (klik link PgAdmin), kemudian bukan jendela SQL dengan menekan tombol SQL . kemudian ketik perintah SQL berikut ini: SELECT name FROM nyc_neighborhoods; Dan klik tombol execute query. Dan hasilnya akan tampil sebagai berikut;

Untuk memahami lebih lanjut tentang SQL, mari kita mulai dengan 4 (empat) kata kunci dalam SQL, yakni:
SELECT; mengembalikan/menyajikan baris data sebagai respon dari kueri INSERT; untuk menyisipkan baris data ke dalam sebuah tabel UPDATE; memutakhirkan baris data dalam sebuah tabel DELETE; menghapus baris data dari sebuah tabel

Kita akan banyak menggunakan perintah SELECT untuk menjawab pertanyaaan terkait fungsi-fungsi spasial. 1.1. SELECT Query Struktur perintah kueri SELECT, secara umum adalah sebagai berikut:
SELECT [diikuti nama field] FROM [diikuti nama tabel] WHERE [diikuti definisi klausa/syarat/kondisi]

Nama field adalah nama-nama kolom dalam sebuah tabel atau lebih yang dihubungkan melalui kesamaan atribut kunci atau kondisi, sedangkan kondisi merupakan batasan yang harus dipenuhi oleh baris nilai yang dikembalikan/disajikan. Contoh perintah SQL berikut: Apakah nama-nama kota yang bertetanggaan di New York dan berada di wilayah Brooklyn? Menterjemahkan pertanyaan ini ke dalam SQL adalah dengan menambahkan kondisi pada sintaks SQL untuk menampilkan nama-nama kota di sekitar New York, sehingga perintah SQL menjadi sebagai berikut: SELECT name FROM nyc_neighborhoods WHERE boroname = Brooklyn; Menggunakan data nyc_census_blocks, berikut contoh-contoh pertanyaan yang dijawab menggunakan perintah SQL. Berapakah populasi Kota New York?

SELECT Sum(popn_total) AS population FROM nyc_census_blocks; 8008278 Berapakan popupasi di Bronx?


SELECT Sum(popn_total) AS population FROM nyc_census_blocks WHERE boroname = The Bronx;

1332650 Berapakan rata-rata jiwa yang tinggal dalam setiap unit rumah di Kota New York?
SELECT Sum(popn_total)/Sum(hous_total) AS pop_per_house FROM nyc_census_blocks;

2.6503540522400804 Selain sum, fungsi agregasi lain yang juga dapat digunakan dalam SQL adalah: avg() untuk memperoleh nilai rata-rata, dan count() untuk menghitung jumlah baris data (records) dalam sebuah tabel. 1.2. Geometri Pada sesi sebelumnya kita telah berhasil memuat data ke dalam geo-database. Sebelum lebih lanjut bekerja dengan data tersebut, berikut akan dikenalkan perintah SQL untuk membuat table dan menyisipkan data ke dalam tabel tersebut. Silahkan salin perintah SQL berikut ke dalam jendela editor dalam PgAdmin.
CREATE TABLE geometries (name varchar, geom geometry); INSERT INTO geometries VALUES ('Point', 'POINT(0 0)'), ('Linestring', 'LINESTRING(0 0, 1 1, 2 1, 2 2)'), ('Polygon', 'POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))'), ('PolygonWithHole', 'POLYGON((0 0, 10 0, 10 10, 0 10, 0 0),(1 1, 1 2, 2 2, 2 1, 1 1))'), ('Collection', 'GEOMETRYCOLLECTION(POINT(2 0),POLYGON((0 0, 1 0, 1 1, 0 1, 0 0)))'); SELECT Populate_Geometry_Columns(); SELECT name, ST_AsText(geom) FROM geometries;

Perintah di atas membuat tabel dengan nama geometries, kemudian dengan menggunakan perintah INSERT, ditambahkan data pada field nama dengan tipe data geometry ; titik (Point), garis (Linestring), poligon (Polygon), poligon dengan poliline di tengahnya (PolygonWithHole) dan koleksi (Collection). Data yang telah ditambahkan kemudian dipanggil dengan perintah SELECT, sehingga hasilnya sebagai berikut:

1.3. Tabel Metadata Mengacu pada spesifikasi Simple Features for SQL (SFSQL), PostGIS menyertakan dua tabel yang menyimpan informasi geometry dan referensi yang tersedia dalam database. Kedua tabel tersebut adalah:

Mari kita lihat tabel geometry_columns dalam database, dengan mengetik perintah SQL berikut ini pada jendela editor: SELECT * FROM geometry_columns; Hasilnya tampak seperti pada gambar di bawah ini:

Tabel geometry_columns mengandung informasi penting diantaranya mengenai nama-nama tabel yang menyimpan data spasial, proyeksi, tipe serta dimensi data yang diperlukan pada proses kueri menggunakan perintah SQL. 1.4. Penggambaran Obyek Nyata di permukaan Bumi Spesifikasi SFSQL merupakan acuan standar bagi PosGIS dalam menggambarkan obyek nyata di permukaan bumi. Pada contoh tabel geometries yang sudah dibuat sebelumnya mengandung beberapa obyek dengan tipe geometri yang berbeda-beda. Untuk menyajikan informasi umum mengenai masing-masing obyek dapat menggunakan fungsi-fungsi sebagai berikut: 1. ST_GeometryType(geometry) mengembalikan tipe geometri dari obyek. 2. ST_NDims(geometry) mengembalikan dimensi dari obyek. 3. ST_SRID(geometry) mengembalikan kode referensi spasial dari setiap obyek. Contoh perintah SQL berikut: SELECT name, ST_GeometryType(geom), ST_NDims(geom), ST_SRID(geom) FROM geometries;
Name | st_geometrytype | st_ndims | st_srid ----------------+-----------------------+----------+--------Point | ST_Point | 2 | -1 Polygon | ST_Polygon | 2 | -1 PolygonWithHole | ST_Polygon | 2 | -1 Collection | ST_GeometryCollection | 2 | -1 Linestring | ST_LineString | 2 | -1

1.5. Points Point, merepresentasikan sebuah posisi tunggal pada permukaan bumi, yang digambarkan sebagai koordinat tunggal. Tipe geometri points digunakan jika objek yang digambarkan terlalu kecil dalam sebuah obyek yang memiliki bentuk dan ukuran seperti poligon, yang sangat erat kaitannya dengan skala. Sebagai ilustrasi, sebuah kota dalam batasan skala tertentu (skala kecil), hanya dapat digambarkan dalam bentuk titik (point), sedangkan pada skala besar digambarkan sebagai obyek yang detil atau misalnya dalam tipe geometri poligon. Untuk menampilkan

koordinat obyek Point dari tabel geometries, menggunakan perintah SQL sebagai berikut:
SELECT ST_AsText(geom) FROM geometries WHERE name = 'Point'; POINT(0 0)

Fungsi spasial lainnya yang dapat digunakan untuk menampilkan obyek berupa titik adalah: ST_X(geometry) mengembalikan nilai ordinat X ST_Y(geometry) mengembalikan nilai ordinat Y Dengan demikian, untuk menampilkan koordinat dari sebuah titik, digunakan perintah SQL sebagai berikut:
SELECT ST_X(geom), ST_Y(geom) FROM geometries WHERE name = 'Point';

Silahkan coba perintah SQL berikut ini dan perhatikan, hasil yang dikembalikan:
SELECT name, ST_AsText(the_geom) FROM nyc_subway_stations LIMIT 1;

1.6. Linestrings Linestring berupa lintasan/alur yang menghubungkan beberapa lokasi yang dibentuk oleh dua atau lebih titik. Pada skala tertentu, jalan dan sungai dapat digambarkan dengan tipe geometri ini. Linestring terdiri dari dua jenis yakni closed jika titik awal dan akhir berada pada korodinat yang sama/bertampalan, serta simple, jika tidak saling memotong atau saling bertampalan. Berikut perintah SQL untuk menampilkan obyek linestring dari tabel geomtris:
SELECT ST_AsText(geom) FROM geometries WHERE name = 'Linestring'; LINESTRING(0 0, 1 1, 2 1, 2 2)

Beberapa fungsi spasial yang dapat digunakan dalam perintah SQL ketika kita bekerja dengan obyek dengan tipe geometri linestring; ST_Length(geometry) mengembalikan panjang dari obyek linestrings ST_StartPoint(geometry) menampilkan koordinat titik awal ST_EndPoint(geometry) menampilkan koordinat titik akhir ST_NPoints(geometry) mengembalikan jumlah koordinat (titik) yang membentuk linestring. Dengan demikian perintah untuk menghitung panjang dari sebuah linestring, sebagai berikut:
SELECT ST_Length(geom) FROM geometries WHERE name = 'Linestring'; 3.41421356237309

1.7. Polygon Sebuah poligon merepresentasikan obyek yang memiliki area/luasan. Wilayah administrasi, bangunan, taman, tutupan lahan, dan sejenisnya umumnya disajikan sebagai poligon. Pada skala besar, jalan dan sungai dapat disajikan dalam poligon juga. Perintah SQL berikut akan menampilkan obyek dengan tipe geometri poligon:
SELECT ST_AsText(geom) FROM geometries WHERE name LIKE 'Polygon%';


POLYGON((0 0, 1 0, 1 1, 0 1, 0 0)) POLYGON((0 0, 10 0, 10 10, 0 10, 0 0),(1 1, 1 2, 2 2, 2 1, 1 1))

Beberapa fungsi spasial yang dapat digunakan dalam SQL, saat berasosiasi dengan oyek poligon. ST_Area(geometry) mengembalikan area

ST_NRings(geometry) mengembalikan jumlah ring (biasanya 1, kecuali jika ada lubang di dalam poligon tersebut.) ST_ExteriorRing(geometry) mengembalikan ring terluar sebagai sebuah linestrings. ST_InteriorRingN(geometry,n) mengembalikan ring interior sebagai sebuah linestrings. ST_Perimeter(geometry) mengembalikan nilai panjang dari ring, Contoh penggunaan dalam perintah SQL:
SELECT name, ST_Area(geom) FROM geometries WHERE name LIKE 'Polygon%'; Polygon PolygonWithHole 1 99

1.8. Collection Terdapat empat tipe collection, yakni: MultiPoint, koleksi dari beberapa titik (point) MultiLineString, koleksi dari beberapa linestring MultiPolygon, koleksi dari beberapa poligon GeometryCollection, koleksi dari beberapa tipe geometri.

Berikut perintah SQL yang mengembalikan obyek dengan tipe geometri collection;
SELECT name, ST_AsText(geom) FROM geometries WHERE name = 'Collection'; GEOMETRYCOLLECTION(POINT(2 0),POLYGON((0 0, 1 0, 1 1, 0 1, 0 0)))

Beberapa fungsi spasial yang dapat digunakan dalam SQL, ketika bekerja dengan collection, yakni:

ST_NumGeometries(geometry) mengembalikan jumlah bagian-bagian dari collection. ST_GeometryN(geometry,n) mengembalikan bagian tertentu sesuai nilai n ST_Area(geometry) mengembalikan total area dari seluruh poligon ST_Length(geometry) mengembalikan panjang dari dari semua bagian yan linear (berbentuk garis).

You might also like