GIS DSL
Zajímavou věcí, i když nijak novou, jsou tzv. doménově specifické jazyky (znáte někdo lepší překlad?). Dobrý a docela podrobný popis pojmu lze nalézt např. na Wikipedii, kratší a obecnější vysvětlení pak na root.cz. Co je zvláštní, že v oblasti GIS v podstatě žádné produkty ničím takovým vybaveny nejsou. Nebylo by fajn moci vyjádřit se např. tímto způsobem:
Dataset ds = open "folder://d:/data/shapefiles/";
Features lesy = ds open "lesy.shp";
Features silnice = ds open "silnice.shp";
Features silnice1a2tridy = query silnice {
"TRIDA" in (1, 2)
}
Features vyberLesu = query lesy {
area(.) > 5km2 and . intersects buffer(silnice1a2tridy, 100m)
}
double celkovaRozloha = 0;
foreach(Feature les in vyberLesu) {
celkovaRozloha += area(les);
}
Výše uvedený pseudokód měl zjistit celkovou plochu lesů s výměrou nad 5km2, které leží do vzdálenosti 100m od silnic 1. a 2. třídy. Kdybychom podobnou záležitost měli napsat např. v ArcObjects, vyšlo by to určitě minimálně na 50 řádků kódu (spíš víc). Jistě, ArcGIS od ESRI poskytuje geoprocessing a na něj vázaný ModelBuilder, což v podstatě je grafická forma DSL, ale ten zase na druhou stranu nenabízí takovou kontrolu nad jednotlivými prvky a daty tak, jak bychom často potřebovali (i když výše popsaný příklad by se pomocí něj vzhledem k jednoduchosti dal popsat velice snadno). Geoprocessing v ESRI pomocí Pythonu je už tomuto cíli o něco blíže, ale stále je pro tento účel poněkud těžkopádný, jeho výhoda ovšem leží v dostupnosti široké škály modulů.
Potenciál je veliký – představme si jednotný jazyk nad různými systémy (ESRI, grass, …). Jistě, implementace něčeho takového by určitě byla oříšek, překvapující je snad jen to, že žádný takový projekt v současnosti neexistuje (rád bych se mýlil).
0 Comments