Registrieren einer ST_Geometry-Spalte

Wenn Sie zum Erstellen einer Tabelle mit einer ST_Geometry-Spalte SQL verwenden, können Sie die Spalte zur Verwendung eines bestimmten Raumbezugs und einer Dimensionalität registrieren. Auf diese Weise können Sie Datensätze, die Sie über SQL einfügen, nicht unbeabsichtigt einfügen, wenn die Datensätze einen anderen Raumbezug verwenden.

Registrieren einer ST_Geometry-Spalte in PostgreSQL

Verwenden Sie "st_register_spatial_column", um die Spalte "ST_Geometry" in einer mit SQL erstellten PostgreSQL-Tabelle zu registrieren. Die Syntax für die Funktion "st_register_spatial_column" lautet wie folgt:

SELECT st_register_spatial_column (
 '<database_name>',
 '<schema_name>',
 '<table_name>',
 '<spatial_column_name>',
 <srid>,
 <coordinate_dimension>
);

Die von Ihnen zu spezifizierende SRID muss in der Tabelle "public.sde_spatial_references" in PostgreSQL enthalten sein. Durch die Koordinatendimension wird angegeben, ob die Daten nur über XY-Koordinaten (2), XYZ-Koordinaten (3), XYZM-Koordinaten (4) oder XYM-Koordinaten (5) verfügen. Wenn Sie keine Koordinatendimension angeben, werden die Daten standardmäßig so konfiguriert, als ob sie nur XY-Dimensionen enthielten.

Die folgenden Schritte veranschaulichen beispielhaft, wie eine ST_Geometry-Spalte in PostgreSQL registriert wird, um eine bestimmte SRID und Dimensionalität zu verwenden:

Schritte:
  1. Öffnen Sie eine Eingabeaufforderung oder eine Shell-Eingabeaufforderung.
  2. Melden Sie sich bei einem SQL-Editor an, und stellen Sie eine Verbindung zu der Datenbank mit der Tabelle her, für die Sie die ST_Geometry-Spalte registrieren möchten.

    In diesem Beispiel stellt der Benutzer "horace" eine Verbindung zur Datenbank "spatdat" her.

    psql spatdat horace

  3. Rufen Sie an der SQL-Eingabeaufforderung die Funktion "st_register_spatial_column" auf, um die räumliche Spalte einer Tabelle für die Verwendung einer bestimmten SRID und Dimensionalität zu registrieren.

    Hier ist die Spalte "geo" der Wegepunkttabelle im Schema "cleo" mit der SRID 104199 und XYZ-Dimensionalität registriert:

    SELECT sde.st_register_spatial_column(
     'spatdat',
     'cleo',
     'waypoints',
     'geo',
     104199,
     3
    );
    

    Der Benutzer "horace" muss mindestens über SELECT-Berechtigungen für die Tabelle "cleo.waypoints" verfügen, um die räumliche Spalte zu registrieren.

  4. Um zu überprüfen, ob die Tabelle ordnungsgemäß registriert wurde, können Sie die Funktionen "st_isregistered_spatial_column" und "st_get_coord_dimension" verwenden, um die registrierten Informationen zurückzugeben.

    Die Funktion "st_isregistered_spatial_column" gibt 1 (wahr) zurück, wenn die Spalte mit der angegebenen SRID registriert ist.

    SELECT sde.st_isregistered_spatial_column(
     'spatdat',
     'cleo',
     'waypoints',
     'geo',
     104199
    );
    
    st_isregistered_spatial_column
    --------------------------------
    1
    

    Mit der Funktion "st_get_coord_dimension" wird zurückgegeben, welche Koordinatendimensionen in der Tabelle gespeichert werden können:

    SELECT sde.st_get_coord_dimension(
     'cleo',
     'waypoints',
     'geo',
     104199
    );
    
    st_get_coord_dimension
    --------------------------------
    xyz
    

Registrieren einer ST_Geometry-Spalte in SQLite

Verwenden Sie "AddGeometryColumn", um einer Tabelle in SQLite eine ST_Geometry-Spalte hinzuzufügen und sie mit einer bestimmten SRID und Koordinatendimension zu registrieren. Die Syntax für "AddGeometryColumn" lautet wie folgt:

SELECT AddGeometryColumn (
 <'main'|null>,
 <table_name>,
 <spatial_column_name>,
 <srid>,
 <geometry_type>
 <coordinate_dimension>,
 <'null'|'not null'>
);

Wenn Sie eine Verbindung zu SQLite über einen SQL-Client herstellen, stellen Sie eine main-Verbindung her. Sie können "main" oder "NULL" angeben, wobei davon ausgegangen wird, dass eine main-Verbindung hergestellt wird. Die Koordinatendimension ist entweder XY (2), XYZ (3), XYZM (4) oder XYZM (5). Wenn Sie eine Dimension von XY oder 2 angeben, müssen Sie die Dimension nicht in den Geometrietyp einbeziehen. Wenn Sie andere Koordinatendimensionen angeben, müssen Sie diese Informationen auch einbeziehen, wenn Sie den Geometrietyp angeben. Sie können den Geometrietyp oder den Code für den Geometrietyp eingeben. Folgende Werte sind möglich:

Werte für Geometrietypen

Code

st_geometry oder geometry

0

st_point oder point

1

st_linestring oder linestring

2

st_polygon oder polygon

3

st_multipoint oder multipoint

4

st_multilinestring oder multilinestring

5

st_multipolygon oder multipolygon

6

st_geometry oder geometryz

1000

st_pointz oder pointz

1001

st_linestringz oder linestringz

1002

st_polygonz oder polygonz

1003

st_multipointz oder multipointz

1004

st_multilinestringz oder multilinestringz

1005

st_multipolygonz oder multipolygonz

1006

st_geometrym oder geometrym

2000

st_pointm oder pointm

2001

st_linestringm oder linestringm

2002

st_polygonm oder polygonm

2003

st_multipointm oder multipointm

2004

st_multilinestringm oder multilinestringm

2005

st_multipolygonm oder multipolygonm

2006

st_geometryzm oder geometryzm

3000

st_pointzm oder pointzm

3001

st_linestringzm oder linestringzm

3002

st_polygonzm oder polygonzm

3003

st_multipointzm oder multipointzm

3004

st_multilinestringzm oder linestringzm

3005

st_multipolygonzm oder multipolygonzm

3006

Ein Beispiel für die Erstellung einer Tabelle in SQLite und die Verwendung von "AddGeometryColumn" zum Hinzufügen und Registrieren der Spalte "ST_Geometry" finden Sie unter Erstellen von Tabellen mit einer ST_Geometry-Spalte.

Registrieren einer ST_Geometry-Spalte in Oracle

In Oracle wird durch die Erstellung eines räumlichen Indexes für die Spalte "ST_Geometry" die Spalte registriert, die als spezieller Raumbezug verwendet werden soll. Ein Beispiel für die Verwendung von SQL zum Erstellen eines räumlichen Indexes in Oracle finden Sie unter Erstellen von räumlichen Indizes für Tabellen mit einer Spalte "ST_Geometry" mithilfe von SQL.

Verwandte Themen

5/10/2014