Geodaten prozessieren mit WPS (Web Processing Service) Matthias Lendholt 6. Januar 2010
Geodatenprozessierung
Warum auslagern? –Performanzgewinn -Hoher Ressourcenbedarf -Parallelisierbarkeit –Wiederverwendbarkeit –Komplexitätsreduktion –Übersichtlichere Architektur -Stärkere Kohäsion -Höhere Kapselung -Losere Kopplung
-Corba (†) -RPC -Web Services: SOAP -REST (direct HTTP) -Sprachspezifisch, z.B. Java RMI -WPS Remote
WPS -OGC Standard –Spezifiziert für HTTP –SOAP optional -GeoDaten (XML) direkt in Prozessaufruf Typsicherheit! (jenseits von int und String) -Synchroner Aufruf -Rückgabewerte –Entweder direkt in Antwort –Oder als separater Download (URL)
WPS - Operationen -GetCapabilities Liste verfügbarer Prozesse -Describe Process Liste Eingabe- und Rückgabeparameter -Execute Operation
Anwendungsfall 1: Eigenen Prozess auslagern Anwendungsfall 2: Fremden WPS integrieren
AAIS (I) + Projekt DEWS: Affected Area Identification Service (AAIS)
DEWS AAIS (II) GUIAWI-SimulationResource-Service AAIS
DEWS AAIS (III) GUIAWI-SimulationResource-Service AAIS
DEWS AAIS (IV) GUIAWI-SimulationResource-Service AAIS WPS Execute Process
DEWS AAIS (V) GUIAWI-SimulationResource-Service AAIS
DEWS AAIS (VI) GUIAWI-SimulationResource-Service AAIS +
DEWS AAIS (VII) GUIAWI-SimulationResource-Service AAIS
<wps:Execute service="WPS" version="1.0.0" xmlns:wps=" xmlns:ows=" xmlns:xlink=" AffectedAreaIdentificationProcess ISOCountryCode TH SimulationResultURL AAIS – wps:Execute (I)
EtaAttribute arrivaltim SshAttribute ssh_max MinSsh 0.5 AAIS – wps:Execute (II)
AffectedAreaIdentificationProcess NumberOfIdentifiedAffectedAreas 61 FeatureCollection UEsDBBQAC1ycDsAAA … = AAIS – wps:ExecuteResponse ~ Bytes Base64 encodiertes und zuvor geziptes Shapefile
Diskussion Anwendungsfall AAIS + Service ausgelagert + Separation of Concerns + Präzisere Architektur (Nutzung von Standards) + Wiederverwendbarkeit + Erhöhte Flexibilität + Server Performance > Client Performance - Zweifelhaft: · Prozessor-Geschwindigkeit? · Parallelisierung? · RAM? - Up- und Downloadzeiten NONSENSE
Fazit Anwendungsfall AAIS (I) Sinnvolle Auslagerung / bessere Architektur Client unabhängig von GeoDaten Keine volle Nutzung der WPS Fähigkeiten (Shapefiles statt GML) Kein Performancegewinn Zu hoher Anteil von Up- und Download Nur geringer Gewinn bei Prozessierungszeit Alternative wäre leichter zu realisieren Kein Deegree WPS Server z.B. Java RMI oder XML RPC
Fazit Anwendungsfall AAIS (II) Warum auslagern? –Performanzgewinn -Hoher Ressourcenbedarf -Parallelisierbarkeit –Wiederverwendbarkeit –Komplexitätsreduktion –Übersichtlichere Architektur -Stärkere Kohäsion -Höhere Kapselung -Losere Kopplung ? ?
Anwendungsfall 1: Eigenen Prozess auslagern Anwendungsfall 2: Fremden WPS integrieren
DEWS AWI-Simulation (I) GUIAWI-Simulation als WPS Resource-Service AAIS Sensordaten
AWI-Simulation (I) GUIAWI-Simulation als WPS Sensordaten observations T01:12:00+02 <swe:CompositePhenomenon gml:id="comp_123" dimension="1"> DLR <swe:TextBlock decimalSeparator="." tokenSeparator="," /> T01:12:00+02,109.12,8, T01:20:00+02
AWI-Simulation (III) GUIAWI-Simulation als WPS Sensordaten
Komplexitätsfalle <Execute xmlns=" xmlns:ows=" xmlns:xsi=" xmlns:xlink=" xmlns:smf=" xmlns:om=" xmlns:gml=" xmlns:swe=" service="WPS" version="1.0.0">
Java Code XML 1.XML-Schema Java Bibliothek (z.B. XMLBeans) Nicht möglich 2.Generische Objektbäume (Map-List-Schachtelung) Nicht typsicher und nicht praktikabel 3.Templates mit String Ersetzung Wie bitte? ExecuteProcess-XML kann nicht sinnvoll erzeugt werden
AWI-Simulation GUIAWI-Simulation als WPS Sensordaten Nicht sinnvoll realisierbar
WPS -GeoDaten (XML) direkt in Prozessaufruf Typsicherheit! (jenseits von int und String) Generik = Beliebigkeit (XML Schema zu mächtig für Java) Warum auslagern? -Komplexitätsreduktion Komplexität wird weitergereicht (schlechtes Schnittstellendesign)
Fazit Anwendungsfall AWI-Simulation Warum auslagern? –Performanzgewinn -Hoher Ressourcenbedarf -Parallelisierbarkeit –Wiederverwendbarkeit –Komplexitätsreduktion –Übersichtlichere Architektur -Stärkere Kohäsion -Höhere Kapselung -Losere Kopplung
WPS Fazit „Wann lohnt sich ein WPS?“ Einzelfallentscheidung
WPS Fazit -Performanzgewinn bei –Hoher Parallelisierung –Hohem Arbeitsspeicher-Bedarf –Abwägung gegenüber Transferzeiten -Typsicherheit nur bei –Nutzung von GML (statt Shapefiles) –in Java erzeugbarem XML (Schema Bibliothek) -Verbesserung der Architektur –Übersichtlichkeit, Verständlichkeit –Funktionale Trennung –Flexibilität und Wiederverwendbarkeit