PUTU Herry (G651114041)

TUGAS GEOINFORMATIC


Leave a comment

Modifikasi Fitur Terhadap WFS-T

3.3. Modifikasi Fitur Thd WFS-T

Sampai GeoExt menyediakan writers, kita harus bergantung pada OpenLayers utk menulis modifikasi kembali ke WFS. Hal ini bukanlah hal yang besar karena WFS-T support pada OpenLayers adalah solid. Namun membutuhkan perhatian ekstra utk fiturnya.

3.3.1. Mengatur Keadaan Fitur

Dalam mempertahankan track dari operasi “create”, “update” and “delete”, fitur OpenLayers vector memiliki state property. WFS protocol berdasar pada property ini dalam menentukan fitur mana yang memakai transaksi “Insert”, “Update” atau “Delete”. jadi harus dipastikan  state property bekerja dg baik:

  • OpenLayers.State.INSERT utk fitur yg baru dibuat. Kita tdk perlu melakukan apapun, karena DrawFeature control handles yang melakukannya.
  • OpenLayers.State.UPDATE utk fitur dg atribut termodifikasi, kecuali fitur yang sdh punya OpenLayers.State.INSERT. utk modifikasi geometries, dipakai ModifyFeature control handles.
  • OpenLayers.State.DELETE utk fitur yg ingin dihilangkan user, kecuali fitur yg punya OpenLayers.State.INSERT, yg bisa dipindahkan.

Tasks

  1. buka map.html pada teks editor. Temukan tombol “Delete” handler dan rubah hingga dpt mengeset dg baik fitur state DELETE dan tambahkan kembali fitur ke layer sehingga server tahu kita ingin mendeletenya:
2.  handler: function() {
3.      app.featureGrid.store.featureFilter = new OpenLayers.Filter({
4.          evaluate: function(feature) {
5.              return feature.state != OpenLayers.State.DELETE;
6.          }
7.      });
8.      app.featureGrid.getSelectionModel().each(function(rec) {
9.          var feature = rec.getFeature();
10.        modifyControl.unselectFeature(feature);
11.        vectorLayer.removeFeatures([feature]);
12.        if (feature.state != OpenLayers.State.INSERT) {
13.            feature.state = OpenLayers.State.DELETE;
14.            vectorLayer.addFeatures([feature]);
15.        }
16.    });
17.}

3.3.1.1. Memahami Kode

Dg mengeset featureFilter pada store kami mencegah fitur ditambahkan kembali ke store. Pada OpenLayers, fitur dg DELETE state tidak akan digunakan, namun pada Ext JS, jika kita tidak ingin fitur yg telah dihapus muncul lagi pada grid, maka harus dipastikan fitur tsb tdk ada pada store. Setelah menghilangkan fitur terdelete dari vectorLayer, kita tambahkan kembali kecuali fitur tsb memiliki INSERT state (namun tdk akan tampak karena OpenLayers state handling dan featureFilter). Hal ini penting karena transaksi saat menyimpan perubahan harus menyertakan informasi mengenai fitur terdelete, shg dpt didelete pada server.

3.3.2. Menambahkan Tombol Save

Cara menyimpan modifikasi fitur pada OpenLayers umumnya membutuhkan vector layer utk dikonfigurasi bersama OpenLayers.Strategy.Save. namun karena kita punya GeoExt store (dan bukan OpenLayers layer) yg terkonfigurasi dg WFS protocol, maka tidak dapat melakukan hal tsb. Namun kita bisa memanggil protocol’s commit() method secara langsung utk menyimpan perubahan.

Tasks

  1. Temukan definisi tombol grid toolbar’s Delete dan Create pada file map.html file dan tambahkan konfigurasi dan handler tombol “Save” . saat selesai, seluruh definisi tombol seperti di bawah ini:
  2. Simpan file anda dan reload @workshop_url@/map.html. buat beberapa perubahan dan tekan “Save”. Reload page utk melihat perubahan yg anda buat tidak berubah.
2.  bbar.add([{
3.      text: "Delete",
4.      handler: function() {
5.          app.featureGrid.store.featureFilter = new OpenLayers.Filter({
6.              evaluate: function(feature) {
7.                  return feature.state != OpenLayers.State.DELETE;
8.              }
9.          });
10.        app.featureGrid.getSelectionModel().each(function(rec) {
11.            var feature = rec.getFeature();
12.            modifyControl.unselectFeature(feature);
13.            vectorLayer.removeFeatures([feature]);
14.            if (feature.state != OpenLayers.State.INSERT) {
15.                feature.state = OpenLayers.State.DELETE;
16.                vectorLayer.addFeatures([feature]);
17.            }
18.        });
19.    }
20.}, new GeoExt.Action({
21.    control: drawControl,
22.    text: "Create",
23.    enableToggle: true
24.}), {
25.    text: "Save",
26.    handler: function() {
27.        app.featureGrid.store.proxy.protocol.commit(
28.            vectorLayer.features, {
29.                callback: function() {
30.                    var layers = app.mapPanel.map.layers;
31.                    for (var i=layers.length-1; i>=0; --i) {
32.                        layers[i].redraw(true);
33.                    }
34.                    app.featureGrid.store.reload();
35.                }
36.        });
37.    }
38.}]);

3.3.2.1. The Commit Callback Explained

Dg memanggil commit() method memakai callback option,kita dpt menampilkan aksi saat operasi commit selesai. Pada kasus ini, kami ingin redraw semua layer utk mencerminkan perubahan pada WMS dan group layers. Kami juga mereload fitur store, utk menghapus semua fitur state dan mengisi semua fitur dg fitur ids yg sesuai.

callback: function() {
    for (var i=layers.length-1; i>=0; --i) {
        layers[i].redraw(true);
    }
    app.featureGrid.store.reload();
}

Reloading store hanya penting utk GeoServer layers yang memakai shapefile sebagai data store, karena WFS Insert tidak melaporkan inserted feature ids utk itu.


Leave a comment

Digitasi : Menambah layer vektor bertipe Garis pada Quantum Gis;

Ada bebebrapa tahapan yang dapat dilakukan dalam menambah layer vektor bertipe garis pada Quantum GIS;

Langakah-Langkahnya adalah:

  1. Buka Quantum GIS kemudian pilih menu Lapisan, Kemudian Pilih Lapisan Raster atau dengan mentkan pilihan Ctrl+Shift+R

2. Menampilkan atau Memilih gambar dalam kasus ini dengan nama ipb_modified.tif.

3. Kemudian tahap berikutnya pilih menu Lapisan, Baru dan pilih shafile baru atau bisa dengan mengunakan Ctrl+Shift+N

4. Dari tahapan sebelumnya maka akan tampil form Lapisan Vektor Baru, pilih garis pada pilihan type, kemudian pada data atribut tambahakan field sesuai dengan kebutuhan.

5. Tahap selanjutnya pilih Toggle Editing pada menu lapisan

6. Pilih Add Feature pada menu edit

7. Lakukan digitasi Garis pada jalan di area kampus IPB. Hasilnya adalah seperti gambar dibawah ini