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:
- Öffnen Sie eine Eingabeaufforderung oder eine Shell-Eingabeaufforderung.
- 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
- 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.
- 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.