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:
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.
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.
Stellen Sie in Interactive SQL eine Verbindung mit Ihrer Datenbank her.
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.
Beispiel
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))" |
Stellen Sie in Interactive SQL eine Verbindung mit der Beispieldatenbank (demo.db) her.
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.
Klicken Sie in Interactive SQL auf Extras » Spatial Viewer.
Führen Sie im Spatial Viewer die folgende Anweisung aus, um die Geometrien anzuzeigen:
SELECT * FROM SA_WKT; |
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)))" |
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.
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:
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 |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2013, SAP AG oder ein SAP-Konzernunternehmen. - SAP Sybase SQL Anywhere 16.0 |