Registrieren einer ST_Geometry-Spalte in PostgreSQL

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 wird vermieden, dass Benutzer, die Datensätze über SQL einfügen, versehentlich Datensätze mit anderen Raumbezügen oder Dimensionen einfügen. Verwenden Sie hierzu die Funktion "sde.st_register_spatial_column". Die Syntax zum Verwenden dieser Funktion 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" 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, und melden Sie sich bei psql an. 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.

  2. 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.

  3. 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
    

Verwandte Themen

9/12/2013