bekerja dgn type data Spatial ternyata sungguh mengasyikkan bahkan jika diperkaya dengan aplikasi yang berbasis GIS tentunya akan lebih seru lagi dan jika anda beruntung akan menghasilkan tambahan project yang berarti menambah penghasilan :)

disini saya akan coba demokan bagaimana menggunakan salah satu Open Geospatial Consortium (OGC) methods yang ada di SQL Server Spatial yaitu STContains.

Method STContains itu digunakan untuk memeriksa apakah sebuah instance Geometry/Geography itu mengandung instance yang lain.

untuk memperjelasnya saya akan membuat menjadi lebih terang dengan membuat sebuah kasus seperti ini dibawah ini. (SQL Server yang digunakan adalah versi SQL Server 2008 keatas)

Saya memiliki data beberapa polygon yang menggambarkan batasan-batasan kecamatan yang ada di kota Banjarmasin 



untuk data polygonnya silahkan download disini : http://sdrv.ms/17AzONo

Karena data yang ada di http://sdrv.ms/17AzONo dalam bentuk WKT, maka anda saat menyimpannya ke dalam field type data Geomtry harus merubahnya ke type data tersebut dengan cara sebagai berikut :

misal polygon Kecamatan A adalah sebagai berikut : 'POLYGON ((5 5, 10 5, 10 10, 5 5)) maka cara merubahnya ke type geometry adalah :

DECLARE @g geometry;
SET @g = geometry::STPolyFromText('POLYGON ((5 5, 10 5, 10 10, 5 5))', 32750);
SELECT @g

dikarenakan projection kota kalimantan selatan berada di UTM 84 50S maka srid yang digunakan adalah 32750.

masukkan informasi polygon 5 kecamatan tersebut kedalam sebuah tabel bernama BATAS_KCMT sehingga datanya akan tampak seperti berikut apabila sudah diletakkan di dalam tabel :

Tabel BATAS_KCMT terdiri dari Field Kecamatan (Varchar(25)) dan Field GEOM (Geometry)



kemudian saya mempunyai sebuah polygon yang mewakili salah satu rumah penduduk Banjarmasin (kita beri nama: RUMAH A) dengan polygon sebagai berikut :

POLYGON ((236221.822271232 9629626.31999697,
236230.529811861 9629631.1887976,
236233.269523893 9629626.28866855,
236224.823287023 9629621.56629154,
236221.822271232 9629626.31999697))

Pertanyaannya adalah berada di kecamatan apakah RUMAH A tersebut ?

maka cara menjawabnya adalah dengan menjalankan Query berikut :

declare @g Geometry
SET @g = geometry::STPolyFromText('POLYGON ((236221.822271232 9629626.31999697,
236230.529811861 9629631.1887976,
236233.269523893 9629626.28866855,
236224.823287023 9629621.56629154,
236221.822271232 9629626.31999697))', 32750)
select kecamatan from PDAMPROD.BATAS_KCMT where geom.MakeValid().STContains(@g) =1

dan jawabannya adalah BANJARMASIN TIMUR.



jadi method STContains berdasarkan kasus diatas memiliki kemampuan untuk memeriksa sebuah instance atau lebih apakah mengandung instance tertentu atau tidak.

Demikian, semoga bermanfaat.