Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 (Deutsch) » SQL Anywhere Server - Unterstützung für räumliche Daten » Verwendung räumlicher Daten » Praktische Einführung: Mit den räumlichen Funktionen experimentieren

 

Lektion 5: Ausgabe von räumlichen Daten in SVG

In dieser Lektion erstellen Sie ein SVG-Dokument, um ein Multipolygon in WKT anzuzeigen. Sie können Geometrien in das SVG-Format zur Anzeige in Interactive SQL oder in einer SVG-kompatiblen Anwendung exportieren.

 Ausgabe einer Geometrie in SVG zur Anzeige
  1. Führen Sie folgende Anweisung in Interactive SQL aus, um eine Variable mit einer Beispielgeometrie zu erstellen:

    CREATE OR REPLACE VARIABLE @svg_geom 
    ST_Polygon = (NEW ST_Polygon('Polygon ((1 1, 5 1, 5 5, 1 5, 1 1), (2 2, 2 3, 3 3, 3 2, 2 2))'));
  2. Führen Sie folgende SELECT-Anweisung in Interactive SQL aus, um die ST_AsSVG-Methode aufzurufen:

    SELECT @svg_geom.ST_AsSVG() AS svg;

    Die Ergebnismenge hat eine einzelne Zeile, die sich in einem SVG-Bild befindet. Sie können das Bild mit der Funktion SVG-Vorschau in Interactive SQL anzeigen. Hierzu doppelklicken Sie auf die Ergebniszeile und wählen Sie die Registerkarte SVG-Vorschau.

    Wenn Sie einen Fehler erhalten, der darauf hinweist, dass der vollständige Wert nicht aus der Datenbank gelesen werden konnte, müssen Sie die Einstellung Kürzungslänge für Interactive SQL ändern. Hierzu klicken Sie in Interactive SQL auf Extras » Optionen » SQL Anywhere und setzen Kürzungslänge auf einen hohen Wert, z. B. 100000. Führen Sie die Abfrage nochmals aus und sehen Sie sich die Geometrie an.

  3. Der letzte Schritt zeigte, wie ein SVG-Bild in Interactive SQL in der Vorschau angezeigt wird. Es kann jedoch sinnvoller sein, das resultierende SVG-Bild in eine Datei zu schreiben, sodass es von einer externen Anwendung gelesen werden kann. Hierzu können Sie die xp_write_file-Systemprozedur oder die WRITE_CLIENT_FILE-Funktion [Zeichenfolge] verwenden, um in eine Datei des Datenbankservers oder des Clientcomputers zu schreiben. In diesem Beispiel wird die OUTPUT-Anweisung [Interactive SQL] verwendet.

    Führen Sie in Interactive SQL folgende SELECT-Anweisung aus, um die ST_AsSVG-Methode aufzurufen und die Geometrie in eine Datei namens myPolygon.svg auszugeben.

    SELECT @svg_geom.ST_AsSVG();
    OUTPUT TO 'c:\\myPolygon.svg' 
    QUOTE '' 
    ESCAPES OFF 
    FORMAT TEXT

    Sie müssen die Klauseln QUOTE '' und ESCAPES OFFeinbeziehen, da Zeilenvorschubzeichen und einfache Anführungszeichen sonst zur Beibehaltung von Leerzeichen in den XML-Code eingefügt werden, wodurch eine ungültige SVG-Datei ausgegeben würde.

  4. Öffnen Sie die SVG-Datei in einem Webbrowser oder in einer Anwendung, die die Anzeige von SVG-Bildern unterstützt. Alternativ dazu können Sie die SVG-Datei auch in einem Texteditor öffnen, um den XML-Code für die Geometrie anzuzeigen.

  5. Die ST_AsSVG-Methode generiert aus einer einzelnen Geometrie ein SVG-Bild. In manchen Fällen soll ein SVG-Bild mit allen Formen in einer Gruppe generiert werden. Die ST_AsSVGAggr-Methode ist eine Aggregatfunktion, die mehrere Geometrien in einem einzigen SVG-Bild kombiniert. Erstellen Sie zunächst in Interactive SQL eine Variable, um das SVG-Bild zu speichern, und generieren Sie sie mit der ST_AsSVGAggr-Methode.

    CREATE OR REPLACE VARIABLE @svg XML;
    SELECT ST_Geometry::ST_AsSVGAggr( geometry, 'attribute=fill="black"' )
    INTO @svg
    FROM Massdata;

    Die Variable @svg enthält nun ein SVG-Bild, das alle PLZ-Regionen in der Massdata-Tabelle darstellt. 'attribute=fill="black"' gibt die Füllfarbe an, die für das generierte Bild verwendet wird. Wenn keine Farbe angegeben wird, verwendet der Datenbankserver eine willkürliche Füllfarbe. Nachdem die Variable mit dem gewünschten SVG-Bild erstellt wurde, kann sie in eine Datei zur Anzeige in anderen Anwendungen geschrieben werden. Führen Sie folgende Anweisung in Interactive SQL aus, um das SVG-Bild in eine Datei auf dem Datenbankserver zu schreiben.

    CALL xp_write_file( 'c:\\temp\\Massdata.svg', @svg );

    Die Funktion WRITE_CLIENT_FILE könnte auch verwendet werden, um eine Datei für die Clientanwendung zu schreiben. Hierbei könnten weitere Schritte erforderlich sein, um sicherzustellen, dass entsprechende Berechtigungen aktiviert sind. Wenn Sie das SVG-Bild in einer Anwendung öffnen, das SVG-Daten unterstützt, sollte folgendes Bild angezeigt werden.

    Das SVG-Bild, das das Aggregat aller PLZ-Regionen im Staat Massachusetts darstellt.

    Das Bild ist nicht einheitlich schwarz. Es sind kleine Lücken zwischen den Grenzen aneinander grenzender PLZ-Regionen zu erkennen. Dies sind weiße Linien zwischen den Geometrien, die charakteristisch dafür sind, wie das SVG-Bild gerendert wird. In den Daten sind nicht tatsächlich Lücken vorhanden. Breitere weiße Linien sind Flüsse und Seen.

    Siehe:

  6. Fahren Sie fort mit Lektion 6: Räumliche Daten projizieren.