Pemrograman MapWindowsGIS menggunakan C#

Membuat Aplikasi GIS dengan MapWindowGIS di .Net

https://www.mapwindow.org/graphics/content/index/mapwingis.PNG
Via : https://www.mapwindow.org

Langkah pertama yang harus dilakukan adalah mengunduh versi terbaru komponen MapWindowGIS yang akan kita gunakan. Untuk mengunduhnya kita dapat mengakses ke alamat berikut :

https://www.mapwindow.org/download.php?file_name=https://svn.mapwindow.org/svnroot/InstallationProjects/4.7/Release/MapWinGIS47RC-x86-Setup.exe&show_details=2&dl=1

 

Setelah sukses mengunduhnya maka langkah selanjutnya adalah meng-install ActiveX tersebut ke komputer kita.

 

 

Setelah selesai langkah selanjutnya adalah menambahkan referensi komponen MapWindowGIS pada aplikasi yang akan kita buat. Berikut adalah langkah-langkahnya :

 

  1. Buat project baru di Visual Studio .Net 2005 dengan menggunakan ‘Windows Application’
  2. Setelah itu klik kanan pada ‘Toolbox Area’ lalu pilih ‘Choose Items …’
  3. Pada jendela ‘Choose Toolbox Items’ plih tab ‘COM Components’ kemudian pilih atau cari komponen ‘Map Control’ dari MapWinGIS.
  4. Setelah melakukan ketiga langkah diatas maka di bagian ‘Toolbox’ akan muncul icon Map Control

 

Setelah selesai melakukan semua langkah-langkah diatas kinilah saatnya kita mendesian tampilan jendela aplikasi kita lengkap dengan ‘Map Control’ componen dan tombol-tombol yang dibutuhkan. Sebagai bahan inspirasi gambar dibawah ini dapat dijadikan acuan (gambar berikut sama dengan yang ada di source aplikasi yang ada di attachment dokumen ini).

 

 

Setelah selasai langkah selanjutnya adalah mengisi code bagi komponen-komponen yang ada di jendela yang sudah kita rancang tadi.

 

Pada saat jendela di load tambahkan code dibawah ini :

 

private void frmMain_Load(object sender, EventArgs e)

{

1           loadGISData();

2           mapMain.CursorMode = MapWinGIS.tkCursorMode.cmNone;

}

 

dimana loadGISData adalah sebuah subrutin yang berfungsi untuk me-load data spatial yang akan kita tampilkan

 

1       // load gis data (shape file)

2       private void loadGISData()

3       {

4           int iCtrShape;

 

5           MapWinGIS.Shapefile sfBatas = new MapWinGIS.Shapefile();

6           sfBatas.Open(“C:/temp/OutputDir/BATAS.shp”, sfBatas.GlobalCallback);

7           mapMain.AddLayer(sfBatas, true);

 

8           for (iCtrShape = 0; iCtrShape < sfBatas.NumShapes; iCtrShape++)

9           {

10               showLabel(sfBatas.QuickPoint(iCtrShape, sfBatas.get_numPoints(iCtrShape) / 2).x, sfBatas.QuickPoint(iCtrShape, sfBatas.get_numPoints(0) / 2).y, iCtrShape);

11           }

12       }

 

pada line 12 terlihat subrutin ini memanggil subruting yang lain yaitu showLabel, dimana subrutin ini berfungsi untuk menampilkan label pada peta yang akan kita tampilkan.

Pada event klik tombol Zoom In tambahkan perintah berikut :

 

private void btnZoomIn_Click(object sender, EventArgs e)

{

1           mapMain.CursorMode = MapWinGIS.tkCursorMode.cmZoomIn;

}

 

Perintah pada line 1 digunakan untuk melakukan proses zoom in di peta kita.

 

Pada even klik tombol Zoom Out tambahkan perintah berikut :

 

private void btnZoomOut_Click(object sender, EventArgs e)

{

1           mapMain.CursorMode = MapWinGIS.tkCursorMode.cmZoomOut;

}

 

Perintah pada line 1 digunakan untuk melakukan proses zoom out di peta kita.

 

Pada even klik tombol Pan tambahkan perintah berikut :

 

private void btnPan_Click(object sender, EventArgs e)

{

1           mapMain.CursorMode = MapWinGIS.tkCursorMode.cmPan;

}

 

Perintah pada line 1 digunakan untuk menggeser-geser peta.

 

Pada even klik tombol Full Extent tambahkan perintah berikut :

 

private void btnFullExtent_Click(object sender, EventArgs e)

{

1           mapMain.ZoomToMaxExtents();

}

 

Perintah pada line 1 digunakan untuk menampilkan peta secara utuh.

Pada even klik tombol Fill Color tambahkan perintah berikut :

 

private void btnFillColor_Click(object sender, EventArgs e)

{

1           UInt32 iLineColor;

2           Single fLineWidth;

3           MapWinGIS.tkLineStipple lsLineStipple;

 

4           // display setting for line

5           mapMain.set_ShapeLayerDrawLine(0,true);

6           iLineColor = Convert.ToUInt32(Color.DarkBlue.ToArgb() & 0x00FFFFFF);

7           fLineWidth = Convert.ToSingle(2);

8           lsLineStipple = MapWinGIS.tkLineStipple.lsDashDotDash;

9           mapMain.set_ShapeLayerLineColor(0, iLineColor);

10           mapMain.set_ShapeLayerLineWidth(0, fLineWidth);

11           mapMain.set_ShapeLayerLineStipple(0, lsLineStipple);

}

 

Ketika tombol ‘Fill Color’ di klik maka yang akan terjadi adalah peta batas yang kita tampilkan akan berwarna biru dan putus-putus.

 

Pada even klik tombol Randering tambahkan perintah berikut :

 

private void btnClrSch_Click(object sender, EventArgs e)

{

1           int iCtrShape;

2           int iID;

3          int iNumOfShp;

 

4           iNumOfShp = 3;

 

5           // randering different shape of a layer

6           for (iCtrShape = 0; iCtrShape <= iNumOfShp; iCtrShape++)

7           {

8               iID = iCtrShape + 1;

9               if (iID == 1) mapMain.set_ShapeFillColor(0, iCtrShape, Convert.ToUInt32(Color.Red.ToArgb() & 0x00FFFFFF));

10               if (iID == 2) mapMain.set_ShapeFillColor(0, iCtrShape, Convert.ToUInt32(Color.Blue.ToArgb() & 0x00FFFFFF));

11               if (iID == 3) mapMain.set_ShapeFillColor(0, iCtrShape, Convert.ToUInt32(Color.Black.ToArgb() & 0x00FFFFFF));

12           }

13       }

 

Ketika tombol ini di klik maka peta akan menampilkan batas dalam 3 warna yang berbeda karen pada data atribut yang menyertai data keruangannya terdapat 3 kategori yang berbeda yaitu ‘1’,’2′ dan ‘3’.

 

Pada even klik tombol Clear Label tambahkan perintah berikut :

 

private void btnLabel_Click(object sender, EventArgs e)

{

1           mapMain.ClearLabels(0);

}

 

Perintah pada line 1 digunakan untuk menghilangkan label yang sebelumnya ada ketika aplikasi di panggil.

 

Setelah melakukan langkah-langkah diatas maka aplikasi GIS yang kita buat dengan menggunkakan komponen MapWindowGIS siap untuk kita compile.

 

 

Penutup

Belum semua fungsi dan kemampuan dari komponen MapWinGIS tereksplorasi secara optimal pada tulisan ini, karena tulisan ini bertujuan untuk mengenalkan apa MapWindow dan bagaimana cara menggunakannya di lingkungan .Net.

 

Salah satu keunggulan dari komponen ini adalah komponen ini bisa digunakan untuk aplikasi desktop dan web based. Tidak semua komponen memiliki kemampuan ini. Biasanya untuk aplikasi desktop dan web akan menggunakan engine yang berbeda.

 

Sebagai informasi source code yang disertakan dalam dokumen ini menggunakan Ms Visual Studio 2005. Selamat mencoba.

 

 

Source

  1. ESRI Shapefile Technical Description, https://www.esri.com/library/whitepapers/pdfs/shapefile.pdf
  2. Shapefile, https://en.wikipedia.org/wiki/Shapefile
  3. Getting Started with the MapWinGIS ActiveX Control, https://www.mapwindow.org/doc/UsingMapWinGIS.pdf
  4. MapWindowGIS, https://www.mapwindow.org/
  5. MapWinGIS Developer’s Guide, https://www.mapwindow.org/wiki/index.php/MapWinGIS_Developer%27s_Guide