GISMentors Blog

Mongo a prostorová data

Proboha proč? Objektové, nebo chcete-li, dokumentové, databáze jsou v praxi práce s prostorovými daty poměrně neobvyklé. Jistě, občas se zaslechne něco o NOSQL, uvidí se zajímavý blog, pěkná prezentace, ale o nasazení nad skutečnými daty je možné zaslechnout pouze sporadicky. Přitom v databázovém světě je toto téma skloňováno velmi často, NOSQL datábáze jsou zhusta používány na webových aplikacích. Nezřídka se o nich hovoří ve spojitosti s big data. Protože nebyl zrovna po ruce nikdo, z koho bych mohl tahat rozumy, nezbylo mi, než abych si na věc udělal názor sám. Věnoval jsem tomu pár večerů, mé závěry si tedy nekladou ambice na nějakou definitivnost, musel jsem se popasovat s technologiemi, které mi dosud nic neříkaly, takže není vyloučené, že mi něco podstatného uniklo. Podělím se s vámi o závěry, které jsem udělal a o pár, domnívám se, užitečných ukázek a postřehů. Názor, jestli má cenu toto téma rozvíjet, si udělejte sami. Já osobně se domnívám, že ano, nicméně jedná se o řešení pro specifický use case, rozhodně si nemyslím, že NOSQL databází je možné plnohodnotně nahradit klasickou relační databázi. Jak to funguje Mongo pracuje s daty ve formátu json. Data jsou členěna do databází a databáze dále do collections (nevím, […]

Přejít na článek »

10 dôvodov, prečo vyskúšať nový QGIS 2.12

Je to niečo viac ako mesiac, čo uzrela svetlo sveta nová verzia známeho Open Source geografického informačného systému QGIS. Súčasnú dlhodobú stabilnú verziu LTR (Long Term Release) QGIS 2.8 Wien a krátkodobú vývojovú verziu DEV (Development) QGIS 2.13 tak doplňuje o najnovšiu časť LR (Latest Release) tejto štandardnej trojice. Dostala názov Lyon podľa mesta, v ktorom sa konalo stretnutie vývojárov projektu QGIS v apríli 2012. Verzia 2.12 obsahuje mnoho skvelých vylepšení s cieľom urobiť z najpopulárnejšieho voľného GIS-u ešte atraktívnejší a užitočnejší nástroj. Podrobný changelog na oficiálnej stránke poskytuje prehľad všetkých lákavých zmien spolu s možnosťou inštalácie mnohých verzií pre najrozšírenejšie platformy, akými sú MS Windows, GNU/Linux či Mac OSX. Novinky sú ďalším krokom k zlepšeniu a potvrdzujú, že QGIS rozhodne dokáže konkurovať aj vyspelým komerčným desktopovým GIS. Pozrime sa na niektoré z nich. 1. Správca projektov Po spustení novej verzie užívateľa privíta okno nedávnych projektov v rámci programu QGIS. Okrem miniatúr mapového okna úvodná obrazovka poskytuje aj základné informácie o posledných projektoch akými sú názov (1), cesta k súboru na disku (2) či detaily o súradnicovom systéme (3). Konkrétny projekt je možné otvoriť jednoduchým dvojklikom. Uvítacie okno s náhľadom na posledné projekty. 2. Štýl prostredia Na rozdiel od staších […]

Přejít na článek »

Import dat v S-JTSK do GRASS lokace WGS-84

Na školení GRASS GIS pro začátečníky, které se konalo 27. listopadu 2015, jsme jako jedno z témat probírali problematiku importu vektorových dat v odlišném souřadnicovém systému než je aktuální lokace. Import takovýchto dat  se od verze GRASS 7.0.2 značně zjednodušil a to díky novému nástroji v.import. Tuto funkcionalitu jsme na školení zkoušeli na následujícím scénáři: Vytvořili jsme prázdnou lokaci na základě EPSG kódu 4326 (WGS-84). Do této lokace jsme naimportovali vrstvu pěších tras v souřadnicovém systému S-JTSK (zdroj: IPR) pomocí nástroje v.import. Bohužel jsme zjistili, že data nebyla do WGS-84 natransformována korektně, tj. s jistým posunem, viz obr. níže. Vizualizace vektorové vrstvy pěších tras (S-JTSK) po importu a transformaci do GRASS lokace v souřadnicovém systému WGS-84. Je zřejmý posun v porovnání s ortofotem načteným z WMS ČÚZK. Posun naznačoval, že při transformaci dat chyběla informace o geodetickém datu, resp. transformačních parametrech towgs84. Po kontrole .prj souboru vrstvy pěších tras byla tato domněnka potvrzena. Soubor skutečně transformační parametry towgs84 neobsahuje. PROJCS[“S-JTSK_Krovak_East_North”,GEOGCS[“GCS_S_JTSK”,DATUM[“D_S_JTSK”,SPHEROID[“Bessel_1841”,6377397.155,299.1528128]], PRIMEM[“Greenwich”,0.0],UNIT[“Degree”,0.0174532925199433]],PROJECTION[“Krovak”],PARAMETER[“False_Easting”,0.0], PARAMETER[“False_Northing”,0.0],PARAMETER[“Pseudo_Standard_Parallel_1”,78.5],PARAMETER[“Scale_Factor”,0.9999], PARAMETER[“Azimuth”,30.28813975277778],PARAMETER[“Longitude_Of_Center”,24.83333333333333], PARAMETER[“Latitude_Of_Center”,49.5],PARAMETER[“X_Scale”,-1.0], PARAMETER[“Y_Scale”,1.0],PARAMETER[“XY_Plane_Rotation”,90.0],UNIT[“Meter”,1.0]] Bohužel importní nástroj systému GRASS v.import neumožňoval souřadnicový systém vstupních dat upřesnit. A jelikož školíme open source nástroje a často figurujeme i jako jejich vývojáři, máme tu výhodu, že můžeme chybějící funkcionalitu doimplementovat. A tak […]

Přejít na článek »

PDF verze školení QGIS a GRASS GIS

Minulý pátek proběhl kurz QGIS pro začátečníky a tento pátek se chystáme na kurz GRASS GIS. Všechny naše materiály jsou dostupné pod licencí Creative commons zdarma na internetu. Díky úsilí našich školitelů a editorské práci zejména Martina máme pro vás již delší dobu PDF verzi pro GRASS GIS, ale nově také PDF verzi školení QGIS. Dohromady přes 200 stránek aktuálního českého textu na téma open source desktopové GISy.

Přejít na článek »

Danube Hack a pôdna mapa z WMS do vektorů

Tento víkend jsem se účastnil jako mentor akce DanubeHack a měl jsem tam možnost řešit celou řadu zajímavých úloh. Někdy se snad dostanu ke svojí malé aplikaci, která vyroběla api postavené nad Djangem a RedHatím OpenShiftem. Dneska bych se s vámi rád podělil o to, jak jsme převáděli rastrovou mapu staženou z WMS na vektory pomocí GRASSu. Půdní mapu si vyžádal jeden z týmů a našli dokonce i funkční WMS z Pôdneho portálu Slovenska. Nejdřív jsem si založil GRASS LOCATION a MAPSET a nastavil na hranice Slovenska. Potom jsem stáhnul data z WMS služby – použil jsem formát GeoTIFF, protože JPEG díky ztrátové kompresy potrhá barvy v pixelech a místo rozumných cca 20 kategorií by jich tam bylo asi 3000. Samozřejmě jsem nastavil použitelné rozlišení regionu na 50m (původní mapa je 1:400~000): GRASS> g.region -p projection: 99 (Krovak) zone: 0 datum: hermannskogel ellipsoid: bessel north: -1132700 south: -1334770 west: -591450 east: -165430 nsres: 50.00494927 ewres: 50.00234742 rows: 4041 cols: 8520 cells: 34429320 a stáhnu data pomocí r.in.wms GRASS> r.in.wms url=”http://sscri.vupop.sk/arcgis/services/vupop_wms/MapServer/WMSServer” wms_version=”1.3.0″ srs=102067 format=tiff layers=0 out=podnamapa –o –v Jak můžete vidět, mapa je ošklivá – plná kartografických šraf a nápisů – nic, co byste mohli převézt na rozumně vypadající vektory. Přemýšlel […]

Přejít na článek »

Jak to udělat bez QGISu

Jelen napsal, jak publikovat vybranou mapovou vrstvu pomocí QGIS pluginu. Já napíšu, jak bych to udělal sám: <link rel=”stylesheet” href=”http://cdn.leafletjs.com/leaflet-0.7.5/leaflet.css” /> <script src=”http://cdn.leafletjs.com/leaflet-0.7.5/leaflet.js”></script> <script src=”/wordpress/wp-content/uploads/2015/10/exp_brdyfinal.js”></script>   <style type=”text/css”> img.leaflet-tile {margin: 0px;} #mapicka { height: 300px } </style>   <div id=”mapicka”></div>   <script type=“text/javascript”> // vyrobit mapičku var map = L.map(‘mapicka’); // // přidat podkladovku L.tileLayer(‘http://{s}.tile.osm.org/{z}/{x}/{y}.png?{foo}’, {foo: ‘bar’}).addTo(map); // // přidat vrstvu geojson naimportěnou výše var geojson = L.geoJson(exp_brdyfinal) geojson.addTo(map); // // zoom to map.fitBounds(geojson.getBounds()); </script>

Přejít na článek »

Jak jednoduše vytvořit mapovou aplikaci s Leafletem

Před nějakolika málo dny byla vyhlášena nová chráněná krajinná oblast Brdy. Chtěli jsme se tedy podívat, kde nás po lese bude honit stráž přírody, když si budeme na výletě chtít opéct buřta a kde nás bude otravovat jen četník, hajnej, nebo zelený obejda s flintou. K tomuto účelu je však, bohužel, statická mapka na stránkách AOPK hrubě nedostačující. Proto jsme pro Vás připravili krátký návod, jak vytvořit jednoduchou webovou mapovou aplikaci se zoomovatelnou mapkou. Není k tomu potřeba žádná znalost webových technologií nebo javascriptu, protože použijeme package v open source GIS desktopu QGIS. Bohužel se nám nepodařilo získat aktuální vektorový obrys CHKO, použijeme tedy upravenou verzi návrhu z roku 2013, která se v několika málo drobnostech liší (kontrolováno oproti georeferencovanému obrázku ze stránek AOPK). Budete potřebovat nainstalovaný QGIS. Na horní liště najdeme tlačítko “Vrstva” a vybereme “Přidat vrstvu”->”Přidat vektorovou vrstvu” (také funguje klávesová zkrátka “CTRL+SHIFT+v”). U vrstvy vybereme vlastnosti (levé tlačítko myši) a nastavíme souřadnicový systém na S-JTSK (SRID 5514), pakliže už nastavený není. Vrstvu nastylujeme (doporučuji nastavit průhlednost 50%, šrafování, nebo plocha bez výpně nefunguje ideálně). Z menu “Zásuvné moduly”-> “Spravovat zásuvné moduly” přidáme zásuvný modul qgis2leaf. Pokud všechno provedete správně, objeví se vám na liště nové tlačítko. Aktualizace: […]

Přejít na článek »

MapBox podkladové mapy v QGIS

MabBox je populární služba a platforma pro publikaci prostorových dat. Nepotřebujete server, nepotřebujete podkladovou mapu – prostě si použijete jeden z dostupných podkladů založených buď na datech OpenStreetMap nebo volně dostupných satelitních datech, nahrajete svůj GeoJSON nebo KML soubor a máte mapu, kterou můžete nasdílet světu (postavené je to na Leafletu). Jejich platební politika je pravda asi trochu dražší, ale základ zadarmo je celkem použitelný. Řešil jsem ale problém, jak zobrazit některé podkladové mapy z MapBox např. v QGIS. Na StackOverflow jsem našel zajímavý postup: Nadefinuje se soubor XML, který definuje službu Tile Map Service (TMS) pro GDAL. Například:  <GDAL_WMS> <Service name=”TMS”> <ServerUrl>https://api.tiles.mapbox.com/v4/mapbox.streets-satellite/${z}/${x}/${y}.png</ServerUrl> </Service> <DataWindow> <UpperLeftX>-20037508.34</UpperLeftX> <UpperLeftY>20037508.34</UpperLeftY> <LowerRightX>20037508.34</LowerRightX> <LowerRightY>-20037508.34</LowerRightY> <TileLevel>18</TileLevel> <TileCountX>1</TileCountX> <TileCountY>1</TileCountY> <YOrigin>top</YOrigin> </DataWindow> <Projection>EPSG:3857</Projection> <BlockSizeX>256</BlockSizeX> <BlockSizeY>256</BlockSizeY> <BandsCount>3</BandsCount> <Cache /> </GDAL_WMS> Na tomto souboru pak můžete pustit např. gdalinfo Driver: WMS/OGC Web Map Service Files: mapbox.xml Size is 67108864, 67108864 Coordinate System is: PROJCS[“WGS 84 / Pseudo-Mercator”, GEOGCS[“WGS 84”, DATUM[“WGS_1984”, SPHEROID[“WGS 84”,6378137,298.257223563, AUTHORITY[“EPSG”,”7030″]], AUTHORITY[“EPSG”,”6326″]], PRIMEM[“Greenwich”,0, AUTHORITY[“EPSG”,”8901″]], UNIT[“degree”,0.0174532925199433, AUTHORITY[“EPSG”,”9122″]], AUTHORITY[“EPSG”,”4326″]], PROJECTION[“Mercator_1SP”], PARAMETER[“central_meridian”,0], PARAMETER[“scale_factor”,1], PARAMETER[“false_easting”,0], PARAMETER[“false_northing”,0], UNIT[“metre”,1, AUTHORITY[“EPSG”,”9001″]], AXIS[“X”,EAST], AXIS[“Y”,NORTH], EXTENSION[“PROJ4″,”+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs”], AUTHORITY[“EPSG”,”3857″]] Origin = (-20037508.339999999850988,20037508.339999999850988) Pixel Size = (0.597164283394814,-0.597164283394814) Image Structure Metadata: INTERLEAVE=PIXEL Corner Coordinates: Upper Left (-20037508.340,20037508.340) (180d 0′ 0.00″W, […]

Přejít na článek »

Mapa zastoupení dřevin po ORP (2. díl)

Generujeme SVG z PostGISu Komu se nelení, tomu se jasaní Vyrobíme si mapku zastoupení jasanů. První díl věnovaný získání dat a nahrání dat do PostGISu. Co vrací ST_AsSVG Takže, co tedy vrací? SELECT ST_AsSVG(generalizovanehranice) FROM hratky_se_svg.orpecka LIMIT 1; Ale to nevypadá jako XML! Ano, jistě. Není to totiž celé SVG, pouze zápis vektorových geometrií jednotlivých prvků. Je to kvůli tomu, že budeme chtít prvkům určovat jejich grafickou reprezentaci. Tloušťku čar, barvu a tak dále. Element path Použijeme XML funkce PostGISu k sestavení kompletního elementu path. SET SEARCH_PATH = hratky_se_svg, public; SELECT XMLELEMENT(NAME path, XMLATTRIBUTES( ST_AsSVG(generalizovanehranice, 0, 1) AS d , ‘black’ AS stroke , 50 AS “stroke-width” , ‘none’ AS fill ) ) svg_path from orpecka; Tady se nám již vrací XML elementy. Co jsem to právě povedl? Funkce XMLELEMENT vyrobí, jak již název napovídá XML element. Pomocí funkce XMLATTRIBUTES tento element naplníme atributy. První atribut pojmenujeme d a naplníme ho výstupem z funkce ST_AsSVG. Všimněte si druhého a třetího parametru funkce ST_AsSVG. Druhý parametr rozlišuje, jestli mají být souřadnice lomových bodů v absolutních hodnotách nebo relativně k prvku. Nula značí absolutně, jednička relativně. Druhý je počet desetinných míst. Jednička znamená jedno desetinné místo. Přesnost na deset centimetrů je u […]

Přejít na článek »

Posts navigation