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

SAP Sybase SQL Anywhere 16.0 (Deutsch) » SQL Anywhere Server - Unterstützung für räumliche Daten » Räumliche Daten

 

Laden von räumlichen Daten aus einer WKT-Datei (Well Known Text)

Sie können zum Hinzufügen räumlicher Daten zu einer Tabelle eine WKT-Datei (Well Known Text) verwenden. Diese enthält Text, mit dessen Hilfe räumliche Daten in eine Datenbank geladen und als Geometrie dargestellt werden können.

Voraussetzungen

Welche Privilegien zum Laden der Daten erforderlich sind, hängt von der Serveroption -gl ab. Wenn -gl auf ALL gesetzt ist, muss eine der folgenden Bedingungen erfüllt sein:

  • Sie sind der Eigentümer der Tabelle
  • Sie haben das LOAD-Privileg für die Tabelle
  • Sie haben das LOAD ANY TABLE-Systemprivileg
  • Sie haben das ALTER ANY TABLE-Systemprivileg

Wenn die Option -gl auf DBA gesetzt ist, müssen Sie das LOAD ANY TABLE-Systemprivileg oder das ALTER ANY TABLE-Systemprivileg haben.

Wenn -gl auf NONE gesetzt ist, wird LOAD TABLE nicht zugelassen.

Beim Laden aus einer Datei von einem Clientcomputer gilt Folgendes:

  • Das READ CLIENT FILE-Privileg ist ebenfalls erforderlich.

  • Leseprivilegien sind in dem Verzeichnis erforderlich, aus dem gelesen werden soll.

  • Die Datenbankoption allow_read_client_file muss aktiviert sein.

  • Die gesicherte Funktion read_client_file muss aktiviert sein.

 Laden von räumlichen Daten aus einer WKT-Datei
  1. Erstellen Sie eine Datei mit räumlichen Daten im WKT-Format, die Sie in die Datenbank laden können.

    Die Datei kann jedes beliebige Format aufweisen, das durch die LOAD TABLE-Anweisung unterstützt wird.

  2. Stellen Sie in Interactive SQL eine Verbindung mit Ihrer Datenbank her.

  3. Erstellen Sie eine Tabelle und laden Sie die Daten aus der Datei mit einer Anweisung ähnlich der folgenden:

    DROP TABLE IF EXISTS SA_WKT;
    CREATE TABLE SA_WKT (
        description CHAR(24),
        sample_geometry ST_Geometry(SRID=1000004326)
    );
    
    LOAD TABLE SA_WKT FROM 'C:\\Documents and Settings\\All Users\\Documents\\SQL Anywhere 16\\Samples\\wktgeometries.csv' DELIMITED BY ',';

    Die Daten werden in die Tabelle eingelesen.

Ergebnisse

Die räumlichen Daten werden erfolgreich aus der WKT-Datei geladen.

Nächste Schritte

Sie können die Daten in Interactive SQL mit dem Spatial Viewer anzeigen.

Beispiel

  1. Speichern Sie den folgenden Text in einer Textdatei namens wktgeometries.csv.

    Der folgende Text enthält eine Gruppe von in WKT festgelegten Geometrien.



    head,"CircularString(1.1 1.9, 1.1 2.5, 1.1 1.9)"
    left iris,"Point(0.96 2.32)"
    right iris,"Point(1.24 2.32)"
    left eye,"MultiCurve(CircularString(0.9 2.32, 0.95 2.3, 1.0 2.32),CircularString(0.9 2.32, 0.95 2.34, 1.0 2.32))"
    right eye,"MultiCurve(CircularString(1.2 2.32, 1.25 2.3, 1.3 2.32),CircularString(1.2 2.32, 1.25 2.34, 1.3 2.32))"
    nose,"CircularString(1.1 2.16, 1.1 2.24, 1.1 2.16)"
    mouth,"CircularString(0.9 2.10, 1.1 2.00, 1.3 2.10)"
    hair,"MultiCurve(CircularString(1.1 2.5, 1.0 2.48, 0.8 2.4),CircularString(1.1 2.5, 1.0 2.52, 0.7 2.5),CircularString(1.1 2.5, 1.0 2.56, 0.9 2.6),CircularString(1.1 2.5, 1.05 2.57, 1.0 2.6))"
    neck,"LineString(1.1 1.9, 1.1 1.8)"
    clothes and box,"MultiSurface(((1.6 1.9, 1.9 1.9, 1.9 2.2, 1.6 2.2, 1.6 1.9)),((1.1 1.8, 0.7 1.2, 1.5 1.2, 1.1 1.8)))"
    holes in box,"MultiPoint((1.65 1.95),(1.75 1.95),(1.85 1.95),(1.65 2.05),(1.75 2.05),(1.85 2.05),(1.65 2.15),(1.75 2.15),(1.85 2.15))"
    arms and legs,"MultiLineString((0.9 1.2, 0.9 0.8),(1.3 1.2, 1.3 0.8),(0.97 1.6, 1.6 1.9),(1.23 1.6, 1.7 1.9))"
    left cart wheel,"CircularString(2.05 0.8, 2.05 0.9, 2.05 0.8)"
    right cart wheel,"CircularString(2.95 0.8, 2.95 0.9, 2.95 0.8)"
    cart body,"Polygon((1.9 0.9, 1.9 1.0, 3.1 1.0, 3.1 0.9, 1.9 0.9))"
    angular shapes on cart,"MultiPolygon(((2.18 1.0, 2.1 1.2, 2.3 1.4, 2.5 1.2, 2.35 1.0, 2.18 1.0)),((2.3 1.4, 2.57 1.6, 2.7 1.3, 2.3 1.4)))"
    round shape on cart,"CurvePolygon(CompoundCurve(CircularString(2.6 1.0, 2.7 1.3, 2.8 1.0),(2.8 1.0, 2.6 1.0)))"
    cart handle,"GeometryCollection(MultiCurve((2.0 1.0, 2.1 1.0),CircularString(2.0 1.0, 1.98 1.1, 1.9 1.2),CircularString(2.1 1.0, 2.08 1.1, 2.0 1.2),(1.9 1.2, 1.85 1.3),(2.0 1.2, 1.9 1.35),(1.85 1.3, 1.9 1.35)),CircularString(1.85 1.3, 1.835 1.29, 1.825 1.315),CircularString(1.9 1.35, 1.895 1.38, 1.88 1.365),LineString(1.825 1.315, 1.88 1.365))"
  2. Stellen Sie in Interactive SQL eine Verbindung mit der Beispieldatenbank (demo.db) her.

  3. Erstellen Sie eine Tabelle namens SA_WKT und laden Sie die Daten aus der Datei wktgeometries.csv in die Tabelle. Ersetzen Sie den Pfad zur .csv-Datei durch den Pfad, in dem Sie die Datei gespeichert haben:

    DROP TABLE IF EXISTS SA_WKT;
    CREATE TABLE SA_WKT (
        description CHAR(24),
        sample_geometry ST_Geometry(SRID=1000004326)
    );
    
    LOAD TABLE SA_WKT FROM 'C:\\Documents and Settings\\All Users\\Documents\\SQL Anywhere 16\\Samples\\wktgeometries.csv' DELIMITED BY ',';

    Die Daten werden in die Tabelle eingelesen.

  4. Klicken Sie in Interactive SQL auf Extras » Spatial Viewer.

  5. Führen Sie im Spatial Viewer die folgende Anweisung aus, um die Geometrien anzuzeigen:

    SELECT * FROM SA_WKT;
    Polygone, Linien und Punkte, die zusammen wie eine Person aussehen, die ein Quadrat hält und neben einem Wagen voll geometrischer Formen steht
  6. Ihre Daten können mehrere Spalten räumlicher Daten enthalten. Sie können eine Datei mit WKT-Daten erstellen, die jeweils einen der verschiedenen unterstützten räumlichen Datentypen enthält, gespeichert in einzelnen Spalten.

    Kopieren Sie den folgenden Code in Ihren Texteditor und speichern Sie die Datei unter dem Namen wktgeometries2.csv:



    "Point(0 0)",,,,,,,,,,,,,,
    ,"LineString(0 0, 1 1)",,,,,,,,,,,,,
    ,,"CircularString(0 0, 1 1, 0 0)",,,,,,,,,,,,
    ,,,"CompoundCurve(CircularString(0 0, 1 1, 1 0),(1 0, 0 1))",,,,,,,,,,,
    ,,,,"CompoundCurve(CircularString(0 0, 1 1, 1 0),(1 0, 0 1),(0 1, 0 0))",,,,,,,,,,
    ,,,,,"Polygon((-1 0, 1 0, 2 1, 0 3, -2 1, -1 0))",,,,,,,,,
    ,,,,,,"CurvePolygon(CompoundCurve(CircularString(0 0, 1 1, 1 0),(1 0, 0 0)))",,,,,,,,
    ,,,,,,,"CurvePolygon(CompoundCurve(CircularString(0 0, 2 1, 2 0),(2 0, 0 0)))",,,,,,,
    ,,,,,,,,"MultiPoint((2 0),(0 0),(3 0),(1 0))",,,,,,
    ,,,,,,,,,"MultiPolygon(((4 0, 4 1, 5 1, 5 0, 4 0)),((-1 0, 1 0, 2 1, 0 3, -2 1, -1 0)))",,,,,
    ,,,,,,,,,,"MultiSurface(((4 0, 4 1, 5 1, 5 0, 4 0)),CurvePolygon(CompoundCurve(CircularString(0 0, 2 1, 2 0),(2 0, 0 0))))",,,,
    ,,,,,,,,,,,"MultiLineString((2 0, 0 0),(3 0, 1 0),(-2 1, 0 4))",,,
    ,,,,,,,,,,,,"MultiCurve((3 2, 4 3),CircularString(0 0, 1 1, 0 0))",,
    ,,,,,,,,,,,,,"GeometryCollection(MultiPoint((2 0),(0 0),(3 0),(1 0)),MultiSurface(((4 0, 4 1, 5 1, 5 0, 4 0)),CurvePolygon(CompoundCurve(CircularString(0 0, 2 1, 2 0),(2 0, 0 0)))),MultiCurve((3 2, 4 3),CircularString(0 0, 1 1, 0 0)))",
    ,,,,,,,,,,,,,,"GeometryCollection(Point(0 0),CompoundCurve(CircularString(0 0, 1 1, 1 0),(1 0, 0 1),(0 1, 0 0)),CurvePolygon(CompoundCurve(CircularString(0 0, 2 1, 2 0),(2 0, 0 0))),MultiPoint((2 0),(0 0),(3 0),(1 0)),MultiSurface(((4 0, 4 1, 5 1, 5 0, 4 0)),CurvePolygon(CompoundCurve(CircularString(0 0, 2 1, 2 0),(2 0, 0 0)))),MultiCurve((3 2, 4 3),CircularString(0 0, 1 1, 0 0)))"
  7. Erstellen Sie eine Tabelle namens SA_WKT2 und führen Sie die folgenden Anweisungen aus, um die Daten aus der Datei wktgeometries2.csv in die Tabelle zu laden. Achten Sie darauf, dass der Pfad zur .csv-Datei durch den Pfad ersetzt wird, in dem Sie die Datei gespeichert haben:



    DROP TABLE IF EXISTS SA_WKT2;
    CREATE TABLE SA_WKT2 (
        point          ST_Point,
        line           ST_LineString,
        circle         ST_CircularString,
        compoundcurve  ST_CompoundCurve,
        curve          ST_Curve,
        polygon1       ST_Polygon,
        curvepolygon   ST_CurvePolygon,
        surface        ST_Surface,
        multipoint     ST_MultiPoint,
        multipolygon   ST_MultiPolygon,
        multisurface   ST_MultiSurface,
        multiline      ST_MultiLineString,
        multicurve     ST_MultiCurve,
        geomcollection ST_GeomCollection,
        geometry       ST_Geometry
    );
    
    LOAD TABLE SA_WKT2 FROM 'C:\\Documents and Settings\\All Users\\Documents\\SQL Anywhere 16\\Samples\\wktgeometries2.csv' DELIMITED BY ',';

    Die Daten werden in die Tabelle eingelesen.

  8. Führen Sie im Spatial Viewer die folgende Anweisung aus, um die Geometrien anzuzeigen:

    SELECT * FROM SA_WKT2;

    Sie können jeweils nur eine Datenspalte sehen. Um die Geometrien der anderen Spalten anzuzeigen, müssen Sie im Bereich Ergebnisse die Dropdown-Liste Spalte verwenden. Folgende Ansicht zeigt die Geometrie in der Spalte curvepolygon:

    Bild eines Polygons. Das obere Ende des Polygons ist gewölbt, während das untere Ende plan ist.
  9. Um die Geometrien aller Spalten gleichzeitig anzuzeigen, können Sie für jede Spalte eine SELECT-Anweisung ausführen und alle Ergebnisse mit UNION ALL wie folgt vereinigen:



    SELECT point FROM SA_WKT2
    UNION ALL SELECT line FROM SA_WKT2
    UNION ALL SELECT circle FROM SA_WKT2
    UNION ALL SELECT compoundcurve FROM SA_WKT2
    UNION ALL SELECT curve FROM SA_WKT2
    UNION ALL SELECT polygon1 FROM SA_WKT2
    UNION ALL SELECT curvepolygon FROM SA_WKT2
    UNION ALL SELECT surface FROM SA_WKT2
    UNION ALL SELECT multipoint FROM SA_WKT2
    UNION ALL SELECT multipolygon FROM SA_WKT2
    UNION ALL SELECT multisurface FROM SA_WKT2
    UNION ALL SELECT multiline FROM SA_WKT2
    UNION ALL SELECT multicurve FROM SA_WKT2
    UNION ALL SELECT geomcollection FROM SA_WKT2
    UNION ALL SELECT geometry FROM SA_WKT2
    Gesamtbild aller Geometrien in der Spalte SA_WKT2.

 Siehe auch