Google překladač: English Deutsch

Práce s geografickými a geometrickými daty v databázích – technologie Spatial

Tags: Data | GIS | Spatial

lacko-01Velké množství ekonomických rozhodnutí má vztah ke geografické poloze, takže pro podporu rozhodovacích procesů se často vyžadují informace týkající se rozmístění zkoumaných entit. Tento okruh úkolů není jen doménou tradičních GIS systémů, ale práci s geografickými a geometrickými daty prostřednictvím technologie Spatial (v jazyce našeho kmene prostorový) podporují i všechny moderní databázové platformy.

Hranice mezi GIS a Spatial se definovat nedá, obecně platí, že v GIS systémech se řeší vysloveně geograficky zaměřené problémy, naproti tomu primárním cílem úkolů řešených pomocí technologie Spatial je podpora byznysu, přičemž do hry významně vstupuje geografická dimenze, například vzájemná poloha distribučních center a skladů u zásobovacích úkolů a podobně. Často oba typy systémů spolupracují, nejčastěji tak, že Spatial pracuje s údaji získanými z GIS aplikací. Na všech databázových platformách (Oracle, Microsoft SQL Server, IBM DB2...) je funkčnost Spatial dostupná jen ve vyšších „enterprise" edicích.

Princip fungování a okruhy úkolů

Technologie Spatial umožňuje práci s vícerozměrnými vektorovými nebo rastrovými daty, například body, vektory, mnohoúhelníky, a rastrovými obrázky, například digitalizovanými snímky. Přesněji řečeno, technologie Spatial pracuje s jejich reprezentací uloženou v databázi. Databázový server těmto údajům rozumí a dokáže nad nimi dělat různé výpočty, vyhledávání a jiné operace. Pro vizualizaci dat je možné využít buď nástroje dodávané s příslušnou databázovou platformou, nebo nástroje třetích stran.

Řeší se dvourozměrné úlohy typu: Je město XY ve spádové oblasti distribuční firmy Z? Jaké jsou ceny pozemků v okruhu dva kilometry od místa, kde chceme vybudovat průmyslový objekt, případně úkoly prostorové. Údaje o n-rozměrných objektech (body, čáry, mnohoúhelníky, kruhy, vektory...) jsou v databázi uloženy ve formě souřadnic. V databázi jsou uloženy zeměpisné a geometrické údaje ve formě souřadnic.

lacko-02

Geometrické versus geografické údaje

Geometrické údaje jsou v planární nebo euklidovské (flat-earth) souřadnicové soustavě definované konsorciem OGC (Open Geospatial Consortium). Planární geometrický model definuje body, čáry a oblasti pomocí souřadnic. Uživatel si může sám zvolit, s jakými jednotkami bude pracovat. Mohou to být milimetry, metry, kilometry, palce, stopy, yardy... Tento model je vhodný například pro lokální mapové systémy nebo plány vnitřních prostor.

Geografické údaje jsou brány z elipsoidního (round-earth) modelu, čili využívají klasické souřadnice – zeměpisnou délku a šířku, podobně jako GPS systémy. Body, linie a oblasti jsou definovány pomocí délky a šířky. Pod pojmem bod můžete v širším pojetí rozumět například libovolný objekt, třeba benzínovou pumpu, kostel nebo restauraci. Linie jsou například cesty a oblasti pozemky, katastrální území, území správních celků a podobně.

S geografickými údaji se pracuje podobně jako s geometrickými. Rozdíl je v metodice výpočtu ploch a vzdáleností.

Pokud se zamyslíte nad principem dotazovacího databázového jazyka SQL, je to vlastně velmi zjednodušená angličtina, a jelikož se jedná o příkazy, které má databázový server provést, využívá vlastně jen jediné gramatické pravidlo – rozkazovací způsob. Pokud byste chtěli do jazyka SQL zformulovat na první pohled jednoduchou geografickou úlohu: „Které cesty protínají určitou oblast", nejprve byste definovali příslušnou oblast a následně byste mohli zformulovat dotaz, v závislosti na struktuře objektů a jejich názvů.

Praktická ukázka možností technologie Spatial

Praktické příklady hlavně z oblasti geografických byznys analýz jsou ve většině případů vztaženy na zeměpisné souřadnice a řeší úkoly pokrytí zákazníků a podobně. Námětem příkladu bude situace, kdy firma má v rámci efektivního pokrytí globálního ekonomického prostoru několik zásobovacích skladů. Řešit se bude typický úkol – pro každou pobočku určit, z kterého skladu je nejvýhodnější tuto pobočku zásobovat, nebo exaktně řečeno, na základě zeměpisných souřadnic zásobovacích skladů a poboček je nutné rozhodnout, od kterého skladu je nejblíže k příslušné pobočce. V tomto příkladu má firma v Evropě dva zásobovací sklady. Jeden v Mnichově a druhý v Římě. Úloha se bude řešit pro dvě pobočky. První z nich sídlí v Praze a druhá v Benátkách. Zeměpisné souřadnice uvedených míst jsou:

lacko-03

Nejprve je třeba vytvořit výchozí struktury pro příklad, tedy vytvořit a naplnit databázové tabulky s údaji o skladech a pobočkách.

Tabulka skladů

CREATE TABLE Sklady
(
id int PRIMARY KEY,
mesto varchar (20),
souradnice Geography
);

INSERT INTO Sklady
VALUES (1, 'Rím', Geography::STGeomFromText ('POINT (12.4833 41.9601)', 4326));
INSERT INTO Sklady
VALUES (2, 'Mnichov', Geography::STGeomFromText ('POINT (11.5424 48.2231)', 4326));

Tabulka poboček

CREATE TABLE Pobocky
(
id int PRIMARY KEY,
mesto varchar (20),
souradnice Geography
);

INSERT INTO Pobocky
VALUES (1, 'Praha', Geography::STGeomFromText ('POINT (14.41935 50.09193)', 4326));

INSERT INTO Pobočky
VALUES (2, 'Benatky', Geography :: STGeomFromText ('POINT (12.28389 45.45233)', 4326));

Konstanta 4326 znamená použití systému zeměpisných souřadnic WGS 84.

Po vytvoření a naplnění cvičných tabulek a přípravných úkonech můžete začít řešit geografické úlohy. Nejdříve můžete zjistit vzdálenosti poboček od skladů.

SELECT P.mesto AS 'Pobocka', S.mesto AS 'Sklad',
P.souradnice.STDistance (S.souradnice)
FROM Sklady S, Pobočky P

Pobocka Sklad
Praha Rim 906.14 km
Praha Mnichov 377.36 km
Benatky Rim 380.40 km
Benatky Mnichov 312.78 km

Můžete řešit úkol optimálního zásobování, neboli ze kterého skladu je nejvýhodnější zásobovat kterého zákazníka. Intuitivně byste pravděpodobně odpověděli, že zákazníka z Benátek budete zásobovat z Říma a zákazníka z Prahy z mnichovského skladu. Pokud se však podíváte na mapu, zjistíte, že do Benátek je blíže z Mnichova než z Říma. A potvrdí to i databázový dotaz, při zadání příkazu pro výpočet vzdáleností skladů od pobočky v Benátkách

SELECT S.mesto AS 'Sklad', P.souradnice.STDistance (S.souradnice)
FROM Sklady S, Pobocky P
WHERE P.mesto = 'Benatky'

Výsledkem bude

Sklad
-----------------------------------
Rim           388.34 km
Mnichov    313.16 km

Tento výsledek je v podobě vypočítaných vzdáleností, ze kterých je potřeba si vybrat. Můžete využít možnosti vnořených dotazů a vytvořit je přímo pro nalezení skladu s minimální vzdáleností

SELECT S.mesto AS 'Sklad', P.souradnice.STDistance (S.souradnice)
FROM Sklady S, Pobočky P
WHERE P.mesto = 'Benatky'
AND P.souradnice.STDistance (S.souradnice) =
(SELECT MIN (P1.souradnice.STDistance (S1.souradnice)) FROM Sklady S1, Pobocky P1 WHERE P1.mesto = 'Benatky')


Mohlo by vás zajímat: