0 Práce s WKT řetězci v MarushkaDesignu
OBSAH 1 CÍL PŘÍKLADU...2 2 PRÁCE S PŘÍKLADEM...2 3 STRUČNÝ POPIS PŘÍKLADU V MARUSHKADESIGNU...3-1 -
1 Cíl příkladu V tmt příkladu si ukážeme práci s WKT řetězci v MarushkaDesignu. Příklad byl vytvřen ve verzi 4.0.1.0 a nemusí být tedy kmpatibilní se staršími verzemi. 2 Práce s příkladem D slžky c:\marushkaexamples\ rzbalíme bsah subru WrkingWithWKTString_CZ.zip. Cílvu slžku je nutné respektvat kvůli prvázansti cest s prjektem. V případě umístění subrů d jiné cesty by nebyl mžné s příkladem pracvat. V prstředí MarushkaDesignu tevřeme prjekt WrkingWithWKTString_CZ.xml. Označíme frmální vrstvu TEST v datvém skladu SQLite (Exprt), v kntextvém menu vybereme Data Načti vše: V mapvém kně zvlíme zbrazit Vše : Spustíme lkální webvý server: - 2 -
3 Stručný ppis příkladu v MarushkaDesignu MarushkaDesign je knstruván tak, že výchzími subry (se kterými nejčastěji pracuje), jsu WKB (Well Knwn Binary). Více WKB gemetrii se můžete dčíst zde. MarushkaDesign pdpruje však i WKT (Well Knwn Text) frmát, cž je textvá alternativa k WKB. WKT je textvý jazyk pr reprezentaci bjektů vektrvé gemetrie. Více WKT si můžete přečíst zde. Na začátku uživatel dstane data např. v Excelu, která bsahují údaje suřadnicích GPS a nějaké dplňující infrmace, které chce v těcht suřadnicích uživatel zbrazit. Pr efektivní publikaci prstrvých dat je ptřeba, aby data byla prstrvě indexvána (subry s přípnu FRX u WKB subru, virtuální tabulka SPATKEY v SQLite datvých skladech). Pkud data nejsu prstrvě indexvána, tak jsme v prstředí MarushkaDesign schpni tat data puze načíst a následně exprtvat d jinéh datvéh skladu. V následujících dstavcích si ukážeme, jak data z jednduché tabulky, nazveme ji TEST tvaru ID CITY LATITUDE LONGTITUDE, kde jedntlivé řádky představují prvky bdvé gemetrie, načteme, pmcí frmátu WKT a následně knvertujeme d nvé gemetrické tabulky již s prstrvým indexem a ve frmátu WKB. S takt upravenými daty jsme schpni data již efektivně publikvat. Během tét knverze prvedeme i transfrmaci suřadnicvých systému prvků z WGS84 d Mercatru. Připjíme datvý sklad d MarushkaDesign a nastavíme transfrmaci suřadnicvéh systému z WGS84 d Mercatr. Tent datvý sklad si pr přehlednst přejmenujeme na SQLite (Exprt). Řádek tabulky reprezentuje bd na suřadnicích LATITUDE, LONGTITUDE s atributem city. My jej budeme reprezentvat jak bdvý (textvý) prvek daných suřadnic. Ve WKT frmátu tut gemetrii zapíšeme jak řetězec POINT(LATITUDE LONGTITUDE). Pr načtení dat d MarushkaDesign musíme nejdříve tabulku TEST dplnit slupec GEOM, který definuje gemetrii (gemetrii ve frmátu WKT) pr každý záznam v tabulce TEST. T můžeme udělat: a) V případech kdy není žáducí měnit databázvý sklad, tak ve vlastnstech frmální vrstvy Name nebudeme definvat jmén fyzické (tabulky) vrstvy, ale výraz. Tent výraz musí bsahvat systémvé slupce danéh skladu a všechny další slupce, které chceme pužít (ve vlastnstech DBClumnsTClient, DBWhereClause atd.). Knkrétně výraz: (SELECT ID, LAT, LON, CITY, 'POINT (' ln ' ' lat ')' GEOM FROM TEST) s tím že slupec GEOM definuje gemetrii ve frmátu WKT. V příkladu frmální vrstva TEST. b) V případě, že můžeme prvést úpravu v datvém skladu, vytvříme si nvu tabulku, řekněme TEST_GEOM se slupcem GEOM. Tu pak načteme přím stejně jak běžnu gemetricku tabulku. Tedy definujeme atribut Name u frmální vrstvy jak Name nvě vytvřené tabulky TEST_GEOM. Systém sám pzná, že slupec je typu TEXT neb VARCHAR a pkusí se jeh bsah knvertvat z frmátu WKT d frmátu WKB. CREATE TABLE TEST_GEOM AS SELECT ID, LAT, LON, 'POINT (' ln ' ' lat ')' GEOM FROM TEST V příkladu je t frmální vrstva TEST_GEOM. Tabulka TEST_GEOM bsahuje ve slupci GEOM záznamy typu POINT(LATITUDE LONGTITUDE). Nicméně nic nebrání, aby slupec v případě ptřeby bsahval i slžitější gemetrii jak je LINESTRING, POLYGON, GEOMETRYCOLLECTION atd. - 3 -
c) V případě, že nechceme vytvářet nvu tabulku, můžeme se stejným efektem využít příkaz CREATE VIEW. V příkladu je t frmální vrstva TEST_VIEW. CREATE VIEW TEST_VIEW AS SELECT [id],[city],[lat],[ln],'point (' ln ' ' lat ')' GEOM FROM TEST V příkladu je t frmální vrstva TEST_VIEW. Aktuálně máme připravené struktury v datvém skladu. Již pmcí funkce Načti vše (Označíme si frmální vrstvu TEST neb TEST_GEOM -> pravé tlačítk myši -> Data -> Načti vše -> V mapvém kně Vše) t se prvede stejně jak na brázku na začátku tht příkladu - jsme schpni načíst data, tudíž můžeme přistupit k samtné knverzi. Vytvříme si cílvu gemetricku tabulku TEST_WKB, ta bude bsahvat krmě pvinných slupců ještě slupec City, může bsahvat i slupce lat a ln. SQL (zakládací skript) najdete v subru TEST_WKB.sql. Knverzi frmátu WKT vs. WKB prvede systém sám. Knverzi mezi suřadnicvými systémy prvedeme tak, že sklad, z kteréh data čteme, nastavíme na transfrmaci WGS84 -> Mercatr. Dále připjíme stejnu databázi ještě jedenu (pjmenujeme ji SQLite WKB), nastavíme transfrmaci suřadnicvéh systému Mercatr -> Mercatr. Tat knverze mezi dvěma datvými sklady byla prvedena z th důvdu, že není mžné prvádět Exprt dat v rámci jednh datvéh skladu, který má rzdílný zdrjvý a cílvý suřadnicvý systém. Vytvříme si fyzicku vrstvu v datvém skladu SQLite (WKB) s názvem TEST_WKB. Nyní klikneme pravým tlačítkem na frmální vrstvu TEST, TEST_GEOM neb TEST_VIEW a zvlíme mžnst Exprt -> Ulž d databáze stejně jak na brázku níže. P tmt úknu vyskčí dialg, který se nás zeptá, jestli chceme zachvat půvdní ID, zde zvlíme ne. Nyní si vytvříme nvu frmální vrstvu, nazveme ji TEST_WKB, u které definujeme vlastnst Name jak TEST_WKB. Naknec už zbývá jen značit frmální vrstvu TEST_WKB (Klik pravéh tlačítka myši -> Data -> Načti vše -> V mapvém kně zvlit Vše) stejně jak na brázku na začátku tht příkladu. Pté je ještě ptřeba přidat frmální vrstvu d publikačních vrstev a v tmt kamžiku je již připravená k publikaci. - 4 -