Monday, December 22, 2014

ArcGIS Server, Optimizing Map Services part 2, Registering Data

Melanjutkan postingan yang lalu, sekarang saya akan membahas bagaimana cara meregistrasikan data spasial yang digunakan dalam sebuah Map Service.

Ada dua cara registrasi data spasial agar bisa dikonsumsi dan di-publish dalam bentuk Map Service di ArcGIS Server.

1. Upload Data to the Server

Fitur ini tersedia di ArcGIS Server versi 10 ke atas dan menjadi metode registrasi data secara default untuk ArcGIS Server 10 ke atas. Pada metode ini seluruh data di dalam MXD Project yang akan di-publish sebagai map service diupload ke dalam ArcGIS Server site. Prosesnya bisa dilakukan di ArcMap atau ArcGIS Server Manager. Dari menu file, klik Share As>Service.


Metode ini paling simpel tapi mempunyai beberapa kelemahan. Yang pertama, karena seluruh data dicopy ke Server, kita akan bermasalah dengan kapasitas storage server apabila services yang di-publish jumlah dan volume datanya besar. Selain itu proses upload bisa jadi cukup lama dan menguras bandwith dan memory baik server maupun client (bisa menyebabkan crash pada akhirnya). Data yang di-upload pun menjadi data mati, dalam artian jika kita meng-update data, perubahan tidak akan nampak pada Map Service karena data di server independen dan tidak tersinkronisasi dengan data di luar Server. Metode ini hanya layak digunakan apabila kita menggunakan cloud service untuk meng-hosting ArcGIS Server dimana kita tidak mempunyai pilihan lain selain meng-upload data ke Cloud.

2. Registering Data Sources. 

Metode kedua ini mempunyai pendekatan berbeda dengan metode upload. Daripada data di-upload ke server, akan lebih baik jika ArcGIS Server Site diberi akses ke dalam sebuah folder di dalam sebuah machine/network storage/server. Metode ini memperbaiki kelemahan data yang tidak tersinkronisasi, dimana kita dapat melakukan perubahan/update data di dalam data source (bisa folder, file/personal geodatabase, atau SDE geodatabase) dan perubahan tersebut akan langsung muncul di Map Service. Selain itu Server Site bisa langsung mengakses data ke Data Source sehingga kita tidak perlu khawatir dengan proses upload yang memakan waktu dan menguras memory.

2.1 Registering Folder, Personal/File Geodatabase

Data spasial yang tersimpan di dalam sebuah folder atau file/personal geodatabase dapat diregistrasikan ke dalam sebuah server site sehingga Map Service yang dibuat akan mengakses data ke folder teregister tersebut. Hal penting yang harus dilakukan dalam metode ini adalah lokasi penyimpanan data harus dapat diakses oleh setiap machine/server/storage yang terlibat di dalam server site. Untuk itu, folder tersebut harus di-share kepada Windows Account dari ArcGIS Server site. Setelah di-share, registrasi bisa dilakukan di ArcGIS Server site di menu Site>Data Store>Register Folder. Jangan lupa klik Validate All.



Untuk proses publishing service sama dengan metode upload data dimana data di dalam folder dipanggil di ArcMap, kemudian dilakukan simbolisasi, simpan MXD lalu publish As Service.

2.2  Registering SDE Geodatabase

Registering folder dalam beberapa hal memang cukup efektif untuk berbagai kepentingan publishing Map Services, tetapi metode ini bukan tanpa kelemahan. Yang paling utama, karena proses sharing folder dilakukan di OS account level, maka akses ke data pun masih terbatas karena setiap client yang mengakses harus berada di dalam satu domain/local network agar bisa mengakses data di level OS authentication. Untuk client di level aplikasi webGIS dan jaringan publik/internet tentu tidak bisa mengakses data, karena OS-nya tidak terdaftar di dalam domain/network dari server. Oleh karena itu, untuk kepentingan publishing Map Services yang bersifat publik/internet akan lebih baik jika data yang di-publish disimpan di dalam sebuah SDE geodatabase dalam sebuah DBMS yang diinstal di Server. DBMS yang lazim digunakan antara lain PostgreSQL, Microsoft SQL Server dan Oracle. Dengan menggunakan DBMS maka koneksi dan otontifikasi bisa dilakukan di level Database User yang memungkinkan client di internet dapat mengakses data sesuai dengan privileges-nya. Proses registrasinya sama dengan registrasi folder, hanya yang digunakan adalah register Database.




Wednesday, December 17, 2014

ArcGIS Server, Optimizing Map Services part 1

Map services, baik yang menggunakan ArcGIS server, Geoserver, Map Server, Mapguide, dan lain-lain memerlukan memory dan processing power agar dapat berfungsi sebagaimana peruntukannya. Namun demikian ketersediaan memory (RAM) dan processing power (CPU processor) di Server kita pada umumnya terbatas, sehingga kita perlu memikirkan strategi agar Map Services yang kita publish dapat melayani kebutuhan user secara efektif dan efisien (bahasa sederhananya, tidak lemot).

Untuk penggunaan ArcGIS Server sebagai Map Services engine, ada tiga teknik atau fasilitas yang dapat digunakan untuk mengoptimalisasi ketersediaan Server Resources (RAM dan CPU) dengan goals dari Map Services yang kita bangun sehingga Map Services yang dipublish dapat berfungsi sebagaimana mestinya dan tidak lemot.

1. Pooling

Pooling pada dasarnya adalah pengaturan pembatasan waktu untuk sebuah request dari client ke GIS Server untuk melaksanakan perintah tertentu terhadap Map Services. Request ini akan dilaksanakan oleh GIS Server dalam sebuah "instance". Instance dapat diatur untuk melayani satu koneksi client untuk setiap request/query, atau lebih. Ketika sebuah request masuk ke server, server akan melihat ke instance yang tersedia dan kemudian menempatkan request tersebut ke instance untuk kemudian diproses/eksekusi lalu hasilnya dikirimkan ke client. Setelah request dipenuhi, instance akan kembali berstatus "free" untuk melayani request selanjutnya yang datang. Jika request yang masuk dalam waktu yang bersamaan ada banyak, dan instance yang sedang berjalan masih "busy" memproses sebuah request, server akan menciptakan instance baru guna menampung request tersebut. Permasalahannya adalah apabila request yang masuk jumlahnya bejibun dan dan instance yang ada sudah terpakai semua, maka yang terjadi adalah request itu harus menunggu sampai ada proses di salah satu instance selesai. Hal inilah yang sering kita kenal dengan istilah "LEMOT".

Untuk mencegah kelemotan ini berlanjut dan membahayakan umur hardware server, kita perlu mengatur bagaimana instance memproses request dalam skema "pooling". Instance perlu diatur karena instance berkaitan langsung dengan penggunaan RAM dan CPU di dalam server.

Pooling diatur ketika kita mempublish semua Map Services baru atau meng-edit Map Services Eksisting.


Dalam Konfigurasi pooling, ada dua komponen utama, yaitu jumlah instance per machine dan Service Timeouts.

Instance per machine adalah jumlah minimum dan maksimum instance yang dialokasikan ke sebuah map service. Dalam gambar diatas, minimum instance di set ke 1 dan maksimum instance ke angka 2. Jika kita mempunyai dua server/machine yang bergabung dalam sebuah ArcGIS Server site (clustering configuration), maka instance minimum berarti 2 dan instance maksimum adalah 4 (karena diitung per machine). Aturan untuk pengaturan jumlah instance ini adalah, jika sebuah map services jarang diakses, maka kita cukup berikan angka 0 untuk minimum instance guna menghindari alokasi instance ke Map service yang tidak perlu. Jangan khawatir, Server secara otomatis akan mengalokasikan sebuah instance ke Map service ini apabila nanti ada request ke Map Service. Adapun untuk maksimum instance, apabila request ke Map Service hanya operasi sederhana seperti zoom dan pan, maka setingnya pun tidak usah terlalu banyak, cukup 1 atau 2 instance. Sebagaimana ditulis diawal, satu instance dapat digunakan oleh beberapa client, sehingga untuk request sederhana zoom dan pan, client yang antri tidak akan menunggu lama untuk terbebasnya sebuah instance sehingga cukup aman untuk diberikan satu atau dua instance.

Service Timeouts adalah konfigurasi waktu maksimal sebuah client untuk memperoleh dan menggunakan instance. ada tiga komponen, waktu penggunaan sebuah service, waktu tunggu untuk memperoleh service dan alokasi waktu tunggu sebuah client dalam menggunakan instance. Untuk map service yang digunakan secara sederhana (zoom dan pan) jangan berikan waktu tunggu untuk memperoleh service terlalu lama, cukup 10-15 detik agar instance bisa secepatnya free dan dimanfaatkan request/client yang mengantri. Untuk waktu penggunaan service akan tergantung pada jenis request, kalau request sederhana zoom dan pan berikan waktu yang sedikit, sedangkan untuk request berat berikan waktu lebih lama. Hal ini untuk mengantisipasi agar request tidak dibatalkan oleh server karena melebihi batas waktu timeouts. demikian pula untuk Idle Instance time, bergantung pada jenis request yang dikenakan pada map service,

2. Isolation

Isolation adalah pengaturan bagaimana instance bekerja dalam sebuah proses. Ada dua jenis isolation, Low isolation dan High Isolation. Low isolation berarti dalam satu proses dapat memuat lebih dari satu instance, sedangkan high isolation adalah sebaliknya. Untuk konfigurasi high isolation, kelebihannya adalah kecil kemungkinan terjadinya failure dalam pemenuhan request karena setiap instance diberikan proses yang terpisah, sedangkan untuk low isolation, ketika satu proses bermasalah, seluruh instance yang bernaung dibawah proses tersebut akan mengalami failure dan down. Namun demikian high isolation memerlukan lebih banyak konsumsi RAM karena proses yang terjadi lebih banyak.


Recycling setting mengatur untuk pe-nonaktif-an Map services guna membersihkan memory dan menjamin performa dan stabilitas services. Adapun health settings adalah setingan untuk mengecek koneksi data di Map services ke instance untuk memastikan mereka masih terkoneksi.

3. Caching

Caching adalah proses pembuatan gambar peta temporer yang disimpan dalam storage server yang dapat diakses oleh client secara berulang. Adanya caching memungkinkan seluruh request peta tidak masuk ke dalam database, sehingga meringankan kinerja database dan client bisa lebih cepat memperoleh informasi yang diminta. Namun demikian, caching mengharuskan adanya ruang ekstra storage untuk menyimpan cache. Selain itu caching juga kurang efektif untuk map services yang datanya sering diupdate karena cache sifatnya tetap dan tidak tersinkronisasi dengan data, sehingga jika ada update, proses caching harus diulang dan biasanya memakan waktu lama dan memberatkan kinerja server.


Pembuatan cache idealnya dilakukan di ArcCatalog (dekstop) daripada di ArcGIS Manager (Browser web) karena biasanya dekstop client lebih powerful dan mampu menangani operasi berat dibanding eksekusi via web client.



Demikian sedikit tips tentang optimalisasi Map Services agar tidak mudah lemot dan bisa memberdayakan secara optimal hardware yang tersedia.

Tuesday, December 9, 2014

Vector Georeferencing / Spatial Adjusment, Consider the transformation method before your head explode!

Georeferencing, sederhananya adalah proses mentransformasikan koordinat lokal (kartesian) ke koordinat bumi (geodetik/kartesian).  Georeferencing bisa dilakukan baik untuk data format raster maupun vektor. Georeferencing raster contohnya antara lain transformasi koordinat peta hasil scan ke peta yang sudah tergeoreferensi. Koreksi geometrik citra satelit (termasuk orthorektifikasi) termasuk juga dalam kategori raster georeferencing. Sedangkan georeferencing vektor kalau di dalam terminologi ArcGIS dikenal dengan istilah "spatial Adjustment".

Orang sering mengatakan vector georeferencing adalah proses georeferencing yang sangat menyakitkan karena seringkali hasilnya malah tidak karuan, peta yang dihasilkan terdeformasi kemana-mana dan tidak persis berimpit dengan data referensi. Well, sebenarnya tidak jika anda memahami karakteristik error dari data yang akan digeoreferensi. Error pada data vektor yang tidak terdefinisi koordinatnya (menggunakan koordinat lokal, atau dari peta dasar yang berbeda) sebenarnya dapat disederhanakan menjadi tiga kategori

1. Perbedaan skala, perbedaan sudut, dan pergeseran posisi tapi dimensi data (aspect ratio) sama
2. Perbedaan skala, perbedaan sudut, dan pergeseran posisi dengan dimensi data berbeda (skew)
3. Perbedaan dimensi ke segala arah.

Nah dengan memahami kesalahan dari data yang anda miliki, anda dapat memilih strategi transformasi yang tepat untuk vector georeferencing sehingga proses transformasi sesuai dengan jenis kesalahan dan hasil yang diperoleh lebih akurat.

Untuk implementasi di ArcGIS, proses vector georeferencing disediakan lima metode transformasi, yaitu affine, similarity, projective, rubber sheet, dan edge snap. Kita bahas empat yang pertama.

1. Similarity Transform

Similarity transform digunakan untuk mentransformasikan data yang mempunyai perbedaan skala, sudut dan posisi, tapi dimensi luas (aspect ratio)-nya sama.

Rumusnya seperti di bawah ini

x’ = Ax + By + Cy’ = -Bx + Ay + F
where
A = s * cos t
B = s * sin t
C = translation in x direction
F = translation in y direction 
and

s = scale change (same in x and y directions)
t = rotation angle, measured counterclockwise from the x-axis

Contoh kasusnya sebagai berikut.

Saya punya dua layer peta yang mempunyai dimensi sama, tapi posisinya tidak berimpit. Layer warna merah adalah data referensi, dan layer warna hijau adalah data yang akan ditransform. Untuk kasus seperti ini kita dapat menggunakan transformasi similarity di dalam spatial adjustment dimana proses transformasi tidak akan mengubah dimensi. 


Selanjutkan kita buat links antara kedua data, untuk similarity transform minimal titik ikat adalah dua. 


Hasilnya seperti di bawah ini. 



2. Affine Transform

Affine transform digunakan untuk mentransformasikan data yang mempunyai perbedaan skala, sudut dan posisi, dan dimensi luas (aspect ratio)-nya berbeda (menceng/skew). 
Rumusnya :
x’ = Ax + By + C
y’ = Dx + Ey + F 
where x and y are coordinates of the input layer and x’ and y’ are the transformed coordinates. A, B, C, D, E, and F are determined by comparing the location of source and destination control points.

Contoh kasusnya sebagai berikut.


Affine transform memerlukan minimal tiga titik ikat. 


Hasilnya seperti di bawah.


3. Projective Transform
Projective transform digunakan untuk data yang memiliki kesalahan/perbedaan dimensi ke segala arah. Kesalahan projective biasanya ditemui di peta hasil interpretasi foto udara yang belum direktifikasi. Misalnya peta kertas transparansi/kalkir hasil interpretasi foto udara cetak belum terkoreksi, yang lalu discan dan didigitasi ulang di dalam GIS. 
Rumusnya seperti di bawah ini
x’ = (Ax + By + C) / (Gx + Hy + 1)
y’ = (Dx + Ey + F) / (Gx + Hy + 1) 
Contoh kasusnya sebagai berikut.
Transformasi ini minimal memerlukan empat titik ikat untuk mengidentifikasi pergeseran di setiap arah.
Hasilnya seperti ini
4. Rubber Sheet
Rubber sheet merupakan transformasi paling menyakitkan dan kalau bisa dihindari karena untuk transformasi ini diasumsikan perbedaan geometri antara data target dan data referensi adalah seperti baju yang belum diseterika. Kusut dan terlipat dimana mana, sehingga memerlukan titik ikat yang banyak dan tersebar merata, Jumlah titik ikat yang tidak proporsional dan tersebar merata mungkin akan menyebabkan hasil transformasi semakin kacau dan tidak karuan, Jadi itulah, sebenarnya asal kita paham karakteristik data yang akan ditransform, proses spatial adjusment seharusnya tidak begitu sulit (setidaknya itu yang saya pahami sebelum menulis postingan ini) Last tip, untuk transformasi data yang jumlah featuresnya banyak, setelah proses adjusting sebaiknya jangan di-save edit, karena load memory di RAM akan menjadi besar dan ArcGIS bisa hang. Sebaiknya setelah ditransform data dicopy dalam kondisi editing mode ke layer lain.