Vissza az előzőleg látogatott oldalra (nem elérhető funkció)Vissza a tananyag kezdőlapjára (P)Ugrás a tananyag előző oldalára (E)Ugrás a tananyag következő oldalára (V)Fogalom megjelenítés (nem elérhető funkció)Fogalmak listája (nem elérhető funkció)Oldal nyomtatása (nem elérhető funkció)Oldaltérkép megtekintése (D)Keresés az oldalon (nem elérhető funkció)Súgó megtekintése (S)

Open source fejlesztő eszközök Windows környezetben / A SharpMap használata: Egy összetettebb alkalmazás VB.NET-ben

Tanulási útmutató

Összefoglalás

Ebben a leckében összeállítunk egy komplexebb GIS alkalmazást a sharpmap segítségével. Közel sem teljes a program, de továbbfejlesztésével egy komplett megjelenítő program készíthető.

Követelmény

A példaalkalmazás önálló továbbfejlesztése.

A SharpMap használata: Egy összetettebb alkalmazás VB.NET-ben

  • Fájl letöltése: Sharpmap demo letöltése című háttéranyag letöltése
  • Információ az állományról:A letöltött fájl kicsomagolás után VisualStudio.net-tel beolvasható, szerkeszthető és futtatható. Egy összetettebb win 32-es vektoros alkalmazás, amellyel vektor térképeket jeleníthetünk meg, színezhetünk át, nagyíthatunk, kicsinyíthetünk
  • Fájlméret: 1.3 MB
A kép (nagyobb változata) külön ablakban is megtekinthető.A SharMapDemo nevű program user interface-e design time16_smdemo_ui_full.jpg16. ábra. A SharMapDemo nevű program user interface-e design time

A következőkben megmutatjuk a program teljes listáját (az About ablak kivételével), majd utána sorra elemezzük a SharpMap specifikus részeket, de csak azokat, mert ez a szöveg nem általános VB.NET tananyag. A programlista után következő 17. ábrán a programot láthatjuk működés közben.

Forráskód
Imports SharpMap
Imports System.IO
Public Class Form1
    Public WithEvents mapBox1 As New SharpMap.Forms.MapBox
    Const zfactor = 0.3
    Private Sub Form1_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
        exitProgram()
    End Sub
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        ToolStripStatusLabel1.Text = ""
        Me.WindowState = FormWindowState.Maximized
        mapBox1.BringToFront()
        mapBox1.Map.Size = New Size(1, 1)
        mapBox1.BackColor = Color.LightYellow
        mapBox1.Dock = DockStyle.Fill
        SplitContainer1.SplitterDistance = 100
        SplitContainer1.Panel2.Controls.Add(mapBox1)
    End Sub
    Sub addLayer()
        ' add new layer
        Dim fopen As New OpenFileDialog
        fopen.Filter = "Shape file|*.shp"
        If fopen.ShowDialog = Windows.Forms.DialogResult.OK Then
            lstLayers.Items.Insert(0, Path.GetFileNameWithoutExtension(fopen.FileName))
            Dim vlay As New SharpMap.Layers.VectorLayer(Path.GetFileNameWithoutExtension(fopen.FileName))
            vlay.DataSource = New SharpMap.Data.Providers.ShapeFile(fopen.FileName, False)
            mapBox1.Map.Layers.Add(vlay)
            If mapBox1.Map.Layers.Count = 1 Then mapBox1.Map.ZoomToExtents()
            mapBox1.Refresh()
        End If
    End Sub
    Sub removeLayer(ByVal shp As String)
        'remove selected layer
        If lstLayers.SelectedIndex <> -1 Then
            mapBox1.Map.Layers.RemoveAt(mapBox1.Map.Layers.Count - 1 - lstLayers.SelectedIndex)
            lstLayers.Items.RemoveAt(lstLayers.SelectedIndex)
            mapBox1.Refresh()
        End If
    End Sub
    Private Sub AddLayerToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AddLayerToolStripMenuItem.Click
        addLayer()
    End Sub
    Private Sub RemoveLayerToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RemoveLayerToolStripMenuItem.Click
        removeLayer(lstLayers.SelectedIndex)
    End Sub
    Private Sub tsAddlayer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsAddlayer.Click
        addLayer()
    End Sub
    Private Sub tsRemoveLayer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsRemoveLayer.Click
        removeLayer(lstLayers.SelectedIndex)
    End Sub
    Private Sub ExitToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExitToolStripMenuItem.Click
        exitProgram()
    End Sub
    Sub exitProgram()
        End
    End Sub
    Private Sub mapBox1_MouseMove(ByVal worldPos As SharpMap.Geometries.Point, ByVal imagePos As System.Windows.Forms.MouseEventArgs) Handles mapBox1.MouseMove
        ToolStripStatusLabel1.Text = "X=" & worldPos.X & "      Y=" & worldPos.Y
    End Sub
    Private Sub tsZoomIn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsZoomIn.Click
        zoomIn()
    End Sub
    Sub zoomIn()
        If mapBox1.Map.Layers.Count = 0 Then Exit Sub
        mapBox1.Map.Zoom -= mapBox1.Map.Zoom * zfactor
        mapBox1.Refresh()
    End Sub
    Sub zoomOut()
        If mapBox1.Map.Layers.Count = 0 Then Exit Sub
        mapBox1.Map.Zoom += mapBox1.Map.Zoom * zfactor
        mapBox1.Refresh()
    End Sub
    Sub zoomFull()
        If mapBox1.Map.Layers.Count = 0 Then Exit Sub
        mapBox1.Map.ZoomToExtents()
        mapBox1.Refresh()
    End Sub
    Sub Pan(ByVal x As Single, ByVal y As Single)
        If mapBox1.Map.Layers.Count = 0 Then Exit Sub
        mapBox1.Map.Center.X = x
        mapBox1.Map.Center.Y = y
        mapBox1.Refresh()
    End Sub
    Private Sub tsZoomOut_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsZoomOut.Click
        zoomOut()
    End Sub
    Private Sub tsZoom2Full_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsZoom2Full.Click
        zoomFull()
    End Sub
    Private Sub mapBox1_MouseDown(ByVal worldPos As SharpMap.Geometries.Point, ByVal imagePos As System.Windows.Forms.MouseEventArgs) Handles mapBox1.MouseDown
        Pan(worldPos.X, worldPos.Y)
    End Sub
    Private Sub AboutToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AboutToolStripMenuItem.Click
        About.ShowDialog()
    End Sub
    Private Sub tsPointStyle_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsPointStyle.Click
        If lstLayers.SelectedIndex <> -1 Then AdjustPointStyle(lstLayers.SelectedIndex)
    End Sub
    Sub AdjustPointStyle(ByVal LayerIndex As Integer)
        frmStyle.TabControl1.SelectTab(0)
        frmStyle.ShowDialog()
    End Sub
    Private Sub tsLineStyle_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsLineStyle.Click
        If lstLayers.SelectedIndex <> -1 Then AdjustLineStyle(lstLayers.SelectedIndex)
    End Sub
    Sub AdjustLineStyle(ByVal LayerIndex As Integer)
        frmStyle.TabControl1.SelectTab(1)
        Dim vlay As SharpMap.Layers.VectorLayer
        vlay = mapBox1.Map.Layers(mapBox1.Map.Layers.Count - 1 - lstLayers.SelectedIndex)
        frmStyle.Tag = LayerIndex
        frmStyle.ShowDialog()
    End Sub
    Private Sub tsPolygonStyle_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsPolygonStyle.Click
        If lstLayers.SelectedIndex <> -1 Then AdjustPolygonStyle(lstLayers.SelectedIndex)
    End Sub
    Sub AdjustPolygonStyle(ByVal LayerIndex As Integer)
        frmStyle.TabControl1.SelectTab(2)
        Dim vlay As SharpMap.Layers.VectorLayer
        vlay = mapBox1.Map.Layers(mapBox1.Map.Layers.Count - 1 - lstLayers.SelectedIndex)
        frmStyle.Tag = LayerIndex
        frmStyle.ShowDialog()
    End Sub
End Class
A kép (nagyobb változata) külön ablakban is megtekinthető.Több réteget is láthatunk nagyítva, a program által beállított stílusban17_smdemo_run_full.jpg17. ábra. Több réteget is láthatunk nagyítva, a program által beállított stílusban

Vissza a tartalomjegyzékhez

Új Széchenyi terv
A projekt az Európai Unió támogatásával, az Európai Szociális Alap társfinanszirozásával valósul meg.

A Társadalominformatika: moduláris tananyagok, interdiszciplináris tartalom- és tudásmenedzsment rendszerek fejlesztése az Európai Unió támogatásával, az Európai Szociális Alap társfinanszírozásával, az ELTE TÁMOP 4.1.2.A/1-11/1-2011-0056 projekt keretében valósult meg.
A tananyag elkészítéséhez az ELTESCORM keretrendszert használtuk.