Menambahkan Objek Titik (Point) ke Peta di MapXtreme

Pernahkah anda menambahkan titik (point) suatu lokasi di Goggle earth secara langsung, dengan melakukan klik pada peta dan menambahkan informasi? Di posting ini akan dijelaskan bagaimana menambahkan suatu objek titik ke peta menggunakan mapxtreme.

Asumsikan, kita mempunyai layer peta kosong yang digunakan untuk menyimpan informasi objek yang ditambahkan user dengan nama POSISI_OBJEK.TAB. Peta ini tentunya sudah terdaftar di MWS. Struktur tabel atribut dari peta ini adalah sebagai berikut

Struktur tabel atribut

Struktur tabel atribut layer POSISI_OBJEK

Ketika user melakukan klik di peta untuk menambahkan objek, asumsikan kita mendapat koordinat long-lat lokasi klik. Informasi XY ini digunakan sebagai feature geometry point.

Dim p As New MapInfo.Geometry.Point(peta.GetDisplayCoordSys(), x, y)

Untuk menyimpan informasi ke peta, prinsipnya mirip dengan menambahkan data ke tabel di database. Pertama kita membuat koneksi ke database (dalam hal ini ke mapinfo tabel), lalu membuka tabel yang akan diedit (tabel atribut peta).

Dim MIcon As MapInfo.Data.MIConnection = New MapInfo.Data.MIConnection
MIcon.Open()
Dim MItabel As MapInfo.Data.Table = MIcon.Catalog.GetTable("POSISI_OBJEK")

Bentuk atau simbol kartografis dari objek bisa kita tentukan menggunakan MapInfo font. Font dan kode dari simbol kartografis dapat dilihat di developer guide.

Dim pStyle As New MapInfo.Styles.FontPointStyle
pStyle.Font.Name = "MapInfo Cartographic"
pStyle.Font.Size = 12
pStyle.Code = 41
pStyle.Color = SystemSystem.Drawing.Color.Black

Berikut contoh kode selengkapnya (VB.net)

Sub AddObjekPoint(ByVal x As Double, ByVal y As Double, _
ByVal nama As String, ByVal obj As String, ByVal ket As String)
    Dim peta As Map = MapInfo.Engine.Session.Current.MapFactory(MapControl1.MapAlias)
    Dim MIcon As MapInfo.Data.MIConnection = New MapInfo.Data.MIConnection
    MIcon.Open()

    Dim MItabel As MapInfo.Data.Table = MIcon.Catalog.GetTable("POSISI_OBJEK")
    Dim p As New MapInfo.Geometry.Point(peta.GetDisplayCoordSys(), x, y)

    Dim pStyle As New MapInfo.Styles.FontPointStyle
    pStyle.Font.Name = "MapInfo Cartographic"
    pStyle.Font.Size = 12
    pStyle.Code = 41
    pStyle.Color = System.Drawing.Color.Black

    Dim cs As New MapInfo.Styles.CompositeStyle
    cs.SymbolStyle = pStyle
    Dim k As New MapInfo.Data.Key
    Dim f As New MapInfo.Data.Feature(p, cs)

    Dim csys As MapInfo.Geometry.CoordSys = peta.GetDisplayCoordSys()
    Dim centr As MapInfo.Geometry.DPoint
    centr.x = x
    centr.y = y
    peta.Center = centr

    k = MItabel.InsertFeature(f)

    f = New MapInfo.Data.Feature(MItabel, k)
    f("ID") = f.Key.Value
    f("LAT") = y
    f("LONG") = x
    f("NAMA") = nama
    f("OBYEK") = obj
    f("KETERANGAN") = ket
    f.Update()

    MIcon.Close()
End Sub

Bagaimana jika menambahkan objek point ke layer dimana di layer tersebut tidak ada/belum ada struktur tabel atribut?.
Misalkan kita menambahkan objek point beserta atributnya ke layer temporary yang merupakan layer virtual. Pertama periksa lebih dahulu, apakah layer temporary tersebut sudah ada di daftar layer.

Dim peta As Map = MapInfo.Engine.Session.Current.MapFactory(MapControl1.MapAlias)
Dim lyr As IMapLayer = peta.Layers.Item("TempLayerAlias")

Jika layer tidak ada, maka buat layer beserta tabel atributnya

If lyr Is Nothing Then
   Dim ti As New TableInfoMemTable("TempLayerAlias")
   ti.Columns.Add(ColumnFactory.CreateFeatureGeometryColumn(peta.GetDisplayCoordSys()))
   ti.Columns.Add(ColumnFactory.CreateStyleColumn())

   ti.Columns.Add(ColumnFactory.CreateIntColumn("ID"))
   ti.Columns.Add(ColumnFactory.CreateDoubleColumn("LAT"))
   ti.Columns.Add(ColumnFactory.CreateDoubleColumn("LONG"))
   ti.Columns.Add(ColumnFactory.CreateStringColumn("NAMA", 50))
   ti.Columns.Add(ColumnFactory.CreateStringColumn("OBJEK", 50))
   ti.Columns.Add(ColumnFactory.CreateStringColumn("KETERANGAN", 250))

   Dim tabel As MapInfo.Data.Table = MapInfo.Engine.Session.Current.Catalog.CreateTable(ti)
   peta.Layers.Insert(0, New FeatureLayer(tabel, "templayer", "TempLayerAlias"))
End If

Layer temporary beserta struktur tabel atributnya sudah terbentuk. Langkah berikutnya adalah memasukkan informasi objek seperti yang dijelaskan sebelumnya.
Happy Coding.

About Yuniar

Penulis sekarang lebih banyak bekerja menggunakan teknologi Microsoft .NET secara umum dan TIDAK lagi menggunakan aplikasi MapXtreme.net dari MapInfo. Karena itu mohon maaf, jika pertanyaan-pertanyaan mengenai MapXtreme sudah tidak bisa saya jawab lagi.

Posted on 2 Oktober 2009, in MapXtreme and tagged , , , . Bookmark the permalink. 8 Komentar.

  1. salam,,

    kenalkan saya bayu mahasiswa tingkat akhir IT Telkom.. sekarang saya sedang mengerjakan TA(tugas akhir), temanya adalah LBS,, saya menggunakan mapextreme untuk membuat aplikasinya dengan c# sebagai bahasanya.. setelah saya membaca blog ini ada beberapa kode vb yang saya tidak mengerti.. saya ingin membuat sebuah titik atau point pada map saya,, saya membaca halaman “Menambahkan Objek Titik (Point) ke Peta di MapXtreme”.. dan ada kode “Dim peta As Map = MapInfo.Engine.Session.Current.MapFactory(MapControl1.MapAlias)”

    dalam visual studio yang saya gunakan, Map dan MapAlias tidak ada dalam library.. bisa dijelaskan ga mas??
    bisa minta YM/Gtalk/fb ga mas??

    terimakasih,, mohon bantuannya..

    • Di tulisan blog saya, itu ditujukan untuk applikasi web.
      Mungkin yang Bayu buat adalah aplikasi desktop. Saya tidak pernah membuat aplikasi desktop, dan setahu saya ada perbedaan cara pembacaan objek “Map” dari mapcontrol.
      Mungkin kalo di desktop jadi seperti ini “Dim peta As Map = MapControl1.Map” , coba aja … aku gak tau pasti.

      • saya sudah mencoba mentranslate dari bahasa yang mas buat di blognya mas ke bahasa c#,, ada yang berhasil ada yang gagal,, nah untuk yang membuat point/titik di map itu, varible x dan y dalam bentuk apa mas? dalam bentuk koordinat atau bagaimana? saya sudah coba masukkan x dan y dalam bentuk koordinat, tetapi titik yang terbentuk jauh sekali dari peta..

      • X dan Y itu koordinat Longitude dan Latitude dalam desimal. Coba di plot di mapinfo, apa koordinat yang kamu masukkan bisa muncul di peta.
        Kalo di mapinfo muncul, kemungkinan di coding yang kamu bikin kebalik antara X dan Y.

  2. maaf saya mau nanyak kalo misalnya ingin koneksi mapinfo pada php gmn ya??
    bisa ato ga??
    mohon sarannya

    • Saya tidak ngerti PHP sama sekali. Silahkan di cari di google,mungkin ada software open source yang bisa anda gunakan untuk menggunakan data mapinfo di PHP.

  3. mas, saya andri..
    saya pingin belajar mengenai mapxtreme untuk aplikasi web..
    ada literaturnya mas??
    saya pingin dari dasar, bagaimana cara membuka peta, zoom in, zoom out dan geser peta..
    kalau ada, info ke saya ya mas..
    terima kasih banyak

    • Literaturnya ada di aplikasinya, berupa file pdf maupun chm . Otomatis terkopi di foldelnya mapxtreme, ketika instal aplikasi ini.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: