Lubomír Dobrovolský, DOB113
Co je to SharpMap Verze Zdroje dat Vektorové formáty Rastrové formáty WMS servery Typy objektů, projekcí Práce se SharpMap Načtení geodat Ukázky kódu pro základní mapové operace
Mapová knihovna pro přístup ke GIS datům Použití v desktopových, ale i ve webových aplikacích SharpMap je postaven na C# a.net Frameworku 2.0 Jedná se open source produkt Licence GNU / LGPL http://sharpmap.codeplex.com
Verze 0.9 z r. 2006 Stabilní verze, produkční Plánuje se 1.0 Verze 2.0 z r. 2008 Alfa verze, nestabilní verze Prostorové analýzy Prostorové indexování napříč vrstvami Možnost vytvoření shapefile Disconnected operation
Vektorové formáty Microsoft SQL Server Oracle OLEDB PostGreSQL/PostGIS SHP (shapefile) vektorový formát pro popis geometrie, obsahuje body, čáry, polygony a k nim případně atributy GPX založený na xml pro popis waypointů, tracků DGN pro uložení technické dokumentace, výkresů, map, schémat, 3D modelů GML v současnosti hlavně používán pro přenos vektorových geodat dat mezi GIS aplikacemi nebo pro přenos dat z mapových serverů
Rastrové formáty JPG BMP TIFF GIF Arc/Info ASCII Grid Arc/Info Binary Grid (.adf) AIRSAR Polarimetric BSB Nautical Chart Format (.kap) VTP Binary Terrain Format (.bt) CEOS (Spot for instance) First Generation USGS DOQ (.doq) DODS / OPeNDAP
WMS servery OGC standard uživatel si může připojit jen ta data (vrstvu), která skutečně potřebuje uživatel není závislý na typu mapového serveru a operačním systému, na němž tento server funguje (je softwarově nezávislý)
Dostupné přes namespace SharpMap.Geometries
Pseudo-Plate Carré Defaultní projekce v SharpMapu, válcová projekce Poledníky a rovnoběžky zobrazeny jako stejně vzdálené rovné čáry, které se protínají pod pravými úhly.
Albers Mercator Transverse mercator Lambert
Mít nainstalované Visual Studio 2008 (2005) Mít stáhnutou knihovnu SharpMap.dll Vytvořit projekt a přidat referenci na knihovnu
SharpMap.Map _map _map = new Map(pbMap.Size); // vytvoříme novou vektorovou vrstu podle názvu souboru ( bez přípony) VectorLayer newlayer = new VectorLayer(info.Name.Remove(info.Name.IndexOf('.'))); // nastavím datový zdroj newlayer.datasource = new SharpMap.Data.Providers.ShapeFile(info.FullName); // pokud mapa vrstvu neobsahuje, přídáme vytvořenou vrstvu do kolekce ostatních vrstev string nazev = newlayer.layername; _map.layers.add(newlayer); // provedeme přiblížení na celou naší vrstvu _map.zoomtoextents(); // vykreslíme mapu pbmap.image = _map.getmap();
string wmsurl = "http://www2.demis.nl/mapserver/request.asp"; SharpMap.Layers.WmsLayer laywms = new SharpMap.Layers.WmsLayer("Demis Map", wmsurl); laywms.spatialreferencesystem = "EPSG:4326"; laywms.addlayer("rivers"); laywms.continueonerror = true; laywms.timeout = 5000; //Set timeout to 5 seconds _map.layers.add(laywms); //Add layer to your map's layer collection _map.zoomtoextents(); pbmap.image = _map.getmap();
string connstr = "Server=127.0.0.1;Port=5432;UserId=postgres;Password=pass; Database=myMapDB"; //Connectionstring string tablename = "Roads"; //Name of table in database string idcolumn = "gid"; //Name of object ID column - MUST be integer! SharpMap.Map mymap = new SharpMap.Map(new System.Drawing.Size(pbMap.size)); SharpMap.Layers.VectorLayer layroads= new SharpMap.Layers.VectorLayer("Roads"); layroads.datasource = new SharpMap.Providers.OleDbPoint(connStr, tablename, gid); mymap.layers.add(layroads); //Add layer to map mymap.zoomtoextents(); pbmap.image = mymap.getmap();
Posun // pozici kliknutí převedu na světovou pozici SharpMap.Geometries.Point point = _map.imagetoworld(new PointF(mouseX, mousey)); // nastavím střed mapy _map.center = point; // vykreslení mapy a zobrazení v pictureboxu pbmap.image = _map.getmap();
Příblížení/oddálení // pozici kliknutí převedu na světovou pozici SharpMap.Geometries.Point point = _map.imagetoworld(new PointF(mouseX, mousey)); // nastavím střed mapy _map.center = point; // nastavení zoom na 5x oddálení _map.zoom *= 5; // _map.zoom /= 5; // vykreslení mapy a zobrazení v pictureboxu pbmap.image = _map.getmap();
Děkuji za pozornost Čas na dotazy, připomínky