„SharpMap” változatai közötti eltérés

Innen: GIS Wiki
31. sor: 31. sor:
 
Ezzel megvannak a legfontosabb kezdő lépések. A SharpMap importálható és elérhetőek a grafikus vezérlői is.
 
Ezzel megvannak a legfontosabb kezdő lépések. A SharpMap importálható és elérhetőek a grafikus vezérlői is.
  
'''Megjegyzés''': A SharpMap dll fájlok elérési útja megváltozik, akkor a VisualStudio nem fogja őket megtalálni. Ha ilyen történik, a Solution Explorer ablakban a projektünk Reference részét lenyitva kiválasztjuk a SharpMap adott állományát és a Properties-ben módosítjuk a path-ot a megváltozott elérési útra.
+
'''Megjegyzés:''' ''A SharpMap dll fájlok elérési útja megváltozik, akkor a VisualStudio nem fogja őket megtalálni. Ha ilyen történik, a Solution Explorer ablakban a projektünk Reference részét lenyitva kiválasztjuk a SharpMap adott állományát és a Properties-ben módosítjuk a path-ot a megváltozott elérési útra.''
  
  
41. sor: 41. sor:
  
 
A Design ablakban levő Formra tegyünk rá egy MapBox-ot:
 
A Design ablakban levő Formra tegyünk rá egy MapBox-ot:
  - Dupla klikk a Toolbox-ban lévő SharpMap tab MapBox controljára -> megjelenik a formon a MapBox1 nevű objektum
+
  - Dupla klikk a Toolbox-ban lévő SharpMap tab MapBox controljára -> megjelenik a formon a mapBox1 nevű objektum
  
 
A Property ablakban a BackColor tulajdonságot állítsuk fehérre.
 
A Property ablakban a BackColor tulajdonságot állítsuk fehérre.
  
 
Ez az egyszerű program egy shape fájl megjelenítését fogja végezni. Ehhez annyit kell tennünk, hogy a Form1 konstruktorában fogjuk elvégezni a megjelenítést. A következő kódot másoljuk be a konstruktorba:
 
Ez az egyszerű program egy shape fájl megjelenítését fogja végezni. Ehhez annyit kell tennünk, hogy a Form1 konstruktorában fogjuk elvégezni a megjelenítést. A következő kódot másoljuk be a konstruktorba:
 
  //--> initialize the map
 
  _sharpMap = new SharpMap.Map(new Size(600, 300));
 
 
    
 
    
 
   //--> create the countries layer from the shapefile
 
   //--> create the countries layer from the shapefile
 
   SharpMap.Layers.VectorLayer countriesLayer = new SharpMap.Layers.VectorLayer("megye");
 
   SharpMap.Layers.VectorLayer countriesLayer = new SharpMap.Layers.VectorLayer("megye");
 
   countriesLayer.DataSource = new SharpMap.Data.Providers.ShapeFile(@"C:\Users\Bence\Documents\mo_shp\megye_region.shp", true);
 
   countriesLayer.DataSource = new SharpMap.Data.Providers.ShapeFile(@"C:\Users\Bence\Documents\mo_shp\megye_region.shp", true);
   _sharpMap.Layers.Add(countriesLayer);
+
   mapBox1.Map.Layers.Add(countriesLayer);
 +
 
 +
  this.Text = countriesLayer.LayerName;
 
    
 
    
 
   //--> define the layer's style
 
   //--> define the layer's style
59. sor: 58. sor:
 
   countriesLayer.Style.EnableOutline = true;
 
   countriesLayer.Style.EnableOutline = true;
 
   countriesLayer.Style.Outline = Pens.DarkBlue;
 
   countriesLayer.Style.Outline = Pens.DarkBlue;
 +
 
 +
  mapBox1.Map.ZoomToExtents();
 +
  RefreshMap();
 +
 +
Nézzük meg mit jelentenek az egyes sorok a kódban.
 +
 +
Hozzuk létre a countriesLayer nevű SharpMap.Layers objektumot, amely VectorLayer lesz, „megye” névvel. Ezenkívül meg kell adnunk a rétegünk forrását, amely sokféle lehet, jelen esetben egy shape fájl. Argumentumként adjuk meg a megjeleníteni kívánt fájl nevét és elérési útját. Végül adjuk hozzá a réteget a _sharMap.Layers kollekcióhoz.
 +
 +
  //--> create the countries layer from the shapefile
 +
  SharpMap.Layers.VectorLayer countriesLayer = new SharpMap.Layers.VectorLayer("megye");
 +
  countriesLayer.DataSource = new SharpMap.Data.Providers.ShapeFile(@"C:\Users\Bence\Documents\mo_shp\megye_region.shp", true);
 +
  mapBox1.Map.Layers.Add(countriesLayer);
 +
 +
'''Megjegyzés:''' ''Data providers paraméterlistáján az első paraméter egy string, ami a fájl elérhetőségeit tartalmazza. A második paraméter, ami boolean típusú arra utal, hogy van-e térbeli indexelés vagy sem. Ha False, akkor nincs, de ebben az esetben, nagy adatállományokra lassúvá válhat a megjelenítés. True esetében lesz térbeli indexelés, ami az első megjelenítéskor egy kis időt vesz igénybe, viszont a további megjelenítéskor gyorsabb lesz a folyamat.''
 +
 +
A Form1 fejlécében is jelenítsük meg ezt a nevet
 +
 
   this.Text = countriesLayer.LayerName;
 
   this.Text = countriesLayer.LayerName;
    
+
 
   _sharpMap.ZoomToExtents();
+
Következő kódsorok a megjelenési stílusra vonatkozó paraméterek.
 +
 
 +
  //--> define the layer's style
 +
  countriesLayer.Style.Fill = Brushes.LightBlue;
 +
  countriesLayer.Style.EnableOutline = true;
 +
   countriesLayer.Style.Outline = Pens.DarkBlue;
 +
 
 +
Végül be kell állítanunk a viewport sarkait a térképünk térbeli kiterjedésének megfelelő értékre. Erre külön eljárása van a mapBox1.Map-nek. A mapBox1 frissítésével jelenik meg a tényleges térkép.
 +
 
 +
   mapBox1.Map.ZoomToExtents();
 
   RefreshMap();
 
   RefreshMap();
 +
 +
asdf

A lap 2016. május 20., 21:58-kori változata

Bevezetés

A SharpMap egy nyílt forráskódú térinformatikai programkönyvtár, amely alkalmas win32-es és webes alkalmazások fejlesztésére egyaránt. A SharpMap alkalmas arra, hogy VisualStudio-ban fejlesztett alkalmazásokban is felhasználhassuk. A könyvtár motorja C#-ban íródott és a .Net 4.0 keretrendszeren alapszik. Lehetővé teszi térképek megjelenítését, térbeli adatok és még sok más GIS adat kezelését.

A SharpMap-et a következő linken érhetjük el: http://sharpmap.codeplex.com/ . Innen letölthető a legfrissebb verzió, dokumentáció, útmutató, mintapéldák és egyéb hasznos adatok.

- A „downloads” fülre kattintva letölthetjük az alapcsomagot, de lehetőségünk van a csomag bővítményeit is letölteni.
- A „documentation” fül alatt találhatunk némi leírást illetve a ’How to..’ linken hozzáférhetünk példaprogramokhoz és néhány rövid leíráshoz.


Telepítés

A SharpMap Downloads fülére kattintva megjelennek a letölthető csomagok. Először töltsük le a SharpMap (Core+UI) nevű alapcsomagot. Érdemes lehet még letölteni a SharpMap.Extensions kiegészítő csomagot is, illetve webes alkalmazás vagy Oracle adatbázis használata esetén a SharpMap.Web és SharpMap.Data.Providers.OracleSpatial csomagokat. A letöltött .zip fájlok tartalmát tároljuk egy tetszőleges helyen.

A fájlok kicsomagolásával véget is ért a telepítés. A csomagok használatához a VisualStudio projektben referenciaként fel kell venni a fejlesztéshez használni kívánt dll-eket.

SharpMap felvétele a referenciák közé:

- Indítsuk el a VisualStudio-t
- Hozzunk létre egy új projektet (pl. Windows Forms Application)
- SharpMap osztályok felvétele a referenciák közé:
  - VisualStudio főmenüjében Project -> Add reference, itt a Browse fül alatt keressük meg azt a helyet, ahová a SharpMap zip fájlt kicsomagoltuk.
  - Válasszuk ki a számunkra szükséges dll fájlokat

Így már importálhatóak az osztályok, ha a kódból szeretnénk példányosítani őket. Viszont a designer még nem tartalmazza azokat a vezérlőket, amelyekre szükségünk lehet a megjelenítésnél.

Vezérlők hozzáadása a Toolbox-hoz:

- Adjunk hozzá egy új tabot a Toolbox-hoz. Toolbox -> jobb klikk -> Add Tab, az új tab neve legyen SharpMap
- Ebbe a csoportba rakjuk bele a SharpMap vezérlőit a következő módon: Jobb klikk a csoportra -> Choose Items… -> dll fájlok kiválasztása (csak azokat a dll fájlokat tudjuk kiválasztani, amik tartalmaznak grafikus vezérlőket)

Ezzel megvannak a legfontosabb kezdő lépések. A SharpMap importálható és elérhetőek a grafikus vezérlői is.

Megjegyzés: A SharpMap dll fájlok elérési útja megváltozik, akkor a VisualStudio nem fogja őket megtalálni. Ha ilyen történik, a Solution Explorer ablakban a projektünk Reference részét lenyitva kiválasztjuk a SharpMap adott állományát és a Properties-ben módosítjuk a path-ot a megváltozott elérési útra.


Egyszerű példaprogram

A shape fájlok megjelenítése minden GIS szoftver alapfunkciója. A SharpMap is biztosít egy osztályt ezek megjelenítésére. Ez a MapBox osztály, amelyet megtalálhatunk a SharpMap tabon, amelyet az előzőleg készítettünk. A megjelenítendő vektor térkép ebbe az osztályba fog legenerálódni és ez az osztály fogja megjeleníteni nekünk. Ennek a tartalma egyébként egy PictureBox-ban is megjeleníthető a az Image property használatával.

Első lépésként hozzunk létre egy ”Demo1” nevű új projektet.

A Design ablakban levő Formra tegyünk rá egy MapBox-ot:

- Dupla klikk a Toolbox-ban lévő SharpMap tab MapBox controljára -> megjelenik a formon a mapBox1 nevű objektum

A Property ablakban a BackColor tulajdonságot állítsuk fehérre.

Ez az egyszerű program egy shape fájl megjelenítését fogja végezni. Ehhez annyit kell tennünk, hogy a Form1 konstruktorában fogjuk elvégezni a megjelenítést. A következő kódot másoljuk be a konstruktorba:

 //--> create the countries layer from the shapefile
 SharpMap.Layers.VectorLayer countriesLayer = new SharpMap.Layers.VectorLayer("megye");
 countriesLayer.DataSource = new SharpMap.Data.Providers.ShapeFile(@"C:\Users\Bence\Documents\mo_shp\megye_region.shp", true);
 mapBox1.Map.Layers.Add(countriesLayer);
 
 this.Text = countriesLayer.LayerName;
 
 //--> define the layer's style
 countriesLayer.Style.Fill = Brushes.LightBlue;
 countriesLayer.Style.EnableOutline = true;
 countriesLayer.Style.Outline = Pens.DarkBlue;
 
 mapBox1.Map.ZoomToExtents();
 RefreshMap();

Nézzük meg mit jelentenek az egyes sorok a kódban.

Hozzuk létre a countriesLayer nevű SharpMap.Layers objektumot, amely VectorLayer lesz, „megye” névvel. Ezenkívül meg kell adnunk a rétegünk forrását, amely sokféle lehet, jelen esetben egy shape fájl. Argumentumként adjuk meg a megjeleníteni kívánt fájl nevét és elérési útját. Végül adjuk hozzá a réteget a _sharMap.Layers kollekcióhoz.

 //--> create the countries layer from the shapefile
 SharpMap.Layers.VectorLayer countriesLayer = new SharpMap.Layers.VectorLayer("megye");
 countriesLayer.DataSource = new SharpMap.Data.Providers.ShapeFile(@"C:\Users\Bence\Documents\mo_shp\megye_region.shp", true);
 mapBox1.Map.Layers.Add(countriesLayer);

Megjegyzés: Data providers paraméterlistáján az első paraméter egy string, ami a fájl elérhetőségeit tartalmazza. A második paraméter, ami boolean típusú arra utal, hogy van-e térbeli indexelés vagy sem. Ha False, akkor nincs, de ebben az esetben, nagy adatállományokra lassúvá válhat a megjelenítés. True esetében lesz térbeli indexelés, ami az első megjelenítéskor egy kis időt vesz igénybe, viszont a további megjelenítéskor gyorsabb lesz a folyamat.

A Form1 fejlécében is jelenítsük meg ezt a nevet

 this.Text = countriesLayer.LayerName;

Következő kódsorok a megjelenési stílusra vonatkozó paraméterek.

 //--> define the layer's style
 countriesLayer.Style.Fill = Brushes.LightBlue;
 countriesLayer.Style.EnableOutline = true;
 countriesLayer.Style.Outline = Pens.DarkBlue;

Végül be kell állítanunk a viewport sarkait a térképünk térbeli kiterjedésének megfelelő értékre. Erre külön eljárása van a mapBox1.Map-nek. A mapBox1 frissítésével jelenik meg a tényleges térkép.

 mapBox1.Map.ZoomToExtents();
 RefreshMap();

asdf