Beim Erstellen einer Tabelle oder Hinzufügen einer Spalte zur Tabelle einer Datenbank definieren Sie einen bestimmten Datentyp für die Spalte. Durch Datentypen wird Folgendes festgelegt:
- Welche Werte in der Spalte gespeichert werden können
- Welche Operationen mit den Daten in dieser Spalte ausgeführt werden dürfen
- Wie die Daten aus dieser Spalte in der Datenbank gespeichert werden
ArcGIS verwendet bestimmte Datentypen. Wenn Sie über eine Datenbankverbindung, einen Abfrage-Layer oder einen Web-Service auf eine Datenbanktabelle zugreifen, filtert ArcGIS alle nicht unterstützten Datentypen heraus. In ArcGIS werden keine nicht unterstützten Datentypen angezeigt, und Sie können nicht unterstützte Datentypen nicht in ArcGIS bearbeiten. Wenn beispielsweise ArcGIS zum Kopieren und Einfügen von Tabellen, die nicht unterstützte Datentypen enthalten, von einer Datenbank in eine andere verwendet wird, fügt ArcGIS nur die Spalten ein, deren Datentyp unterstützt wird.
Die erste Spalte der folgenden Tabelle enthält die ArcGIS-Datentypen. In der zweiten Spalte sind die von ArcGIS erstellten PostgreSQL-Datentypen aufgeführt. In der dritten Spalte ist aufgelistet, welche weiteren PostgreSQL-Datentypen (sofern vorhanden) dem ArcGIS-Datentyp zugeordnet werden, wenn Sie eine Tabelle anzeigen, die außerhalb von ArcGIS erstellt (und nicht in der Geodatabase registriert) wurde. Die letzte Spalte enthält ggf. zusätzliche Informationen.
ArcGIS-Datentyp | Erstellte PostgreSQL-Datentypen | Andere PostgreSQL-Datentypen, die angezeigt werden können | Hinweise |
---|---|---|---|
Big Integer | bigint | ||
BLOB | bytea | ||
Datum | timestamp without time zone | timestamp with time zone | |
Nur Datum | date | ||
Double | numeric(p,s) | double precision | Die Genauigkeit (p) und die Anzahl der Dezimalstellen (s), die in ArcGIS angegeben sind, können Auswirkungen auf den resultierenden Datentyp haben, der in der Datenbank erstellt wird. Weitere Informationen finden Sie unter ArcGIS-Felddatentypen. |
Float | numeric(p,s) | decimal, double precision, numeric, real | Die Genauigkeit (p) und die Anzahl der Dezimalstellen (s), die in ArcGIS angegeben sind, können Auswirkungen auf den resultierenden Datentyp haben, der in der Datenbank erstellt wird. Weitere Informationen finden Sie unter ArcGIS-Felddatentypen. |
Geometrie | ST_Geometry, Geometry (PostGIS), Geography (PostGIS) | In einer Geodatabase wird der in der Datenbank erstellte Datentyp durch die Einstellung GEOMETRY_STORAGE des Konfigurationsschlüsselwortes, das beim Erstellen der Feature-Class verwendet wird, bestimmt. Um den Typ "ST_Geometry" in einer Datenbank (nicht Geodatabase) verwenden zu können, müssen Sie ihn installieren. Weitere Informationen finden Sie unter Hinzufügen des Typs "ST_Geometry" zu einer PostgreSQL-Datenbank. Sie müssen PostGIS in Ihrem PostGIS-Datenbank-Cluster installieren, und die Datenbank muss für die Verwendung von PostgreSQL aktiviert werden, damit Sie die PostGIS-Typen "geometry" oder "geography" verwenden können. Weitere Informationen finden Sie in der PostgreSQL-Dokumentation. | |
Global ID | varchar(38) | Global-IDs werden nur in Geodatabases unterstützt. | |
GUID | varchar(38) | UUID | |
Long Integer | integer | Serial | |
Object ID | integer (32 Bit) oder bigint (64 Bit) in einer Geodatabase SERIAL in einer Datenbank | Der ArcGIS-Datentyp "Object ID" (Objekt-ID) stellt die registrierte Zeilen-ID-Spalte für die Tabelle oder Feature-Class dar. Pro Tabelle gibt es nur eine. | |
Raster | bytea | Der ArcGIS-Datentypen "Raster" wird nur in Geodatabases unterstützt. | |
Short Integer | smallint | ||
Text | character varying | character, text | Wenn Sie ein Textfeld mit einem SQL-Client oder einer Drittanbieteranwendung erstellen und keine Länge definieren (d. h. die Länge 0 ist), wird dieses Feld von ArcGIS als CLOB gelesen. |
Nur Zeit | time | time without time zone, time with time zone | |
Zeitstempelversatz | Nicht anwendbar | Nicht unterstützt |
Wenn die Tabelle eine Spalte mit einem Datentyp enthält, der nicht in ArcGIS unterstützt wird, können Sie die Spalte in Text umwandeln. Dies sollte jedoch nur dann erfolgen, wenn Sie die Werte in der Spalte lediglich anzeigen möchten, keinesfalls, um Analysen anhand der Werte in dieser Spalte durchzuführen. Sie können z. B. eine SELECT-Anweisung ausführen, um die Spalten in "tableb" auszuwählen und die Dezimalspalte (total) in Text umzuwandeln:
SELECT id, name, total::text
FROM me.mydb.tableb;
Geometriedatentypen
Wie in der Tabelle angegeben, können von ArcGIS drei räumliche Datentypen in PostgreSQL erstellt und verwendet werden: "ST_Geometry" von Esri und "PostGIS geometry" und "PostGIS geography" . Die nächsten zwei Abschnitte enthalten weitere Hintergrundinformationen zu diesen Datentypen.
ST_Geometry
Nachfolgend finden Sie eine allgemeine Beschreibung des räumlichen Datentyps "ST_Geometry". Spezifische Informationen zur PostgreSQL-Implementierung finden Sie unter "ST_Geometry" in PostgreSQL.
Der Datentyp "ST_Geometry" implementiert die SQL 3-Spezifikation benutzerdefinierter Datentypen (UDTs) und ermöglicht es Ihnen, Spalten zu erstellen, die zum Speichern von räumlichen Daten wie der Lage eines Orientierungspunktes, einer Straße oder eines Flurstückes geeignet sind. Er stellt den ISO (International Organization for Standards)- und Open Geospatial Consortium (OGC)-kompatiblen SQL-Zugriff (Structured Query Language) auf die Geodatabase und die Datenbank bereit. Dieser Speichertyp erweitert die Funktionen der Datenbank, indem er die Speicherung von Objekten (Punkte, Linien und Polygone) ermöglicht, die geographische Features darstellen. Er wurde für die effiziente Verwendung von Datenbankressourcen, die Kompatibilität mit Datenbank-Features, wie z. B. Replikation und Partitionierung, und den schnellen Zugriff auf räumliche Daten entwickelt.
"ST_Geometry" ist eine abstrakte, nicht instanziierte übergeordnete Objektklasse. Ihre Subclasses können jedoch instanziiert sein. Bei einem instanziierten Datentyp handelt es sich um einen Datentyp, der als Tabellenspalte definiert werden kann und darin eingefügte Werte seines Typs aufweisen kann.
Eine Spalte kann zwar als Typ "ST_Geometry" definiert werden, es werden jedoch keine ST_Geometry-Werte in die Spalte eingefügt, da sie nicht instanziiert werden kann. Stattdessen werden die Subclass-Werte eingefügt.
Die Subclasses von "ST_Geometry" sind in zwei Kategorien unterteilt: die Subclasses der Basisgeometrie und die Subclasses der homogenen Sammlung. Die Basisgeometrien umfassen "ST_Point", "ST_LineString" und "ST_Polygon", während die homogenen Sammlungen "ST_MultiPoint", "ST_MultiLineString" und "ST_MultiPolygon" umfassen. Wie der Name schon besagt, handelt es sich bei den homogenen Sammlungen um Sammlungen der Basisgeometrien. Homogene Sammlungen weisen neben den mit der Basisgeometrie gemeinsamen Eigenschaften auch eigene Eigenschaften auf.
Jede Subclass speichert den durch ihren Namen implizierten Geometrietyp: "ST_MultiPoint" speichert beispielsweise Multipoints. In der folgenden Tabelle finden Sie eine Liste mit den Subclasses und die dazugehörigen Beschreibungen:
Subtype | Beschreibung |
---|---|
ST_Point |
|
ST_LineString |
|
ST_Polygon |
|
ST_MultiPoint |
|
ST_MultiLineString |
|
ST_MultiPolygon |
|
Jede Subclass erbt die Eigenschaften der übergeordneten Objektklasse "ST_Geometry", verfügt aber auch über eigene Eigenschaften. Bei Funktionen, die für den Datentyp "ST_Geometry" verwendet werden können, sind alle Subclass-Entitätstypen zulässig. Einige Funktionen wurden jedoch auf Subclass-Ebene definiert und nehmen nur bestimmte Subclasses an. Die Funktion "ST_GeometryN" akzeptiert beispielsweise nur die Subtype-Werte "ST_MultiLinestring", "ST_MultiPoint" oder "ST_MultiPolygon" als Eingabe.
Räumliche PostGIS-Datentypen
PostGIS ist ein Produkt, das PostgreSQL-Datenbanken räumlich aktiviert. PostGIS folgt der OGC-Spezifikation "Simple Features" für SQL. Es verwendet das OGC Well-Known Binary (WKB)- und Well-Known Text (WKT)-Format für Geometrie.
PostGIS verfügt über zwei räumliche Typoptionen: GEOMETRY oder GEOGRAPHY. Damit Sie sie verwenden können, müssen Sie PostGIS auf Ihrem PostgreSQL-Datenbank-Cluster installieren und anhand der PostGIS-Vorlagendatenbank die Datenbank erstellen, in der die Geodatabase gespeichert werden soll. Installieren Sie eine PostGIS-Version, die von der verwendeten ArcGIS-Version unterstützt wird.
Für die Verwendung eines räumlichen PostGIS-Speichertyps mit ArcGIS ist Folgendes zu beachten:
- Sie müssen die PostGIS-Datenbank-Vorlage verwenden, um die PostgreSQL-Datenbank zu erstellen, die Sie für die Geodatabase verwenden, oder Sie müssen PostGIS in der Datenbank aktivieren.
- Dem SDE-Benutzer und allen anderen Benutzern, die auf PostGIS-Daten in der Geodatabase oder Datenbank zugreifen, müssen Berechtigungen für bestimmte PostGIS-Sichten gewährt werden.
- Von Ihnen erstellte Feature-Classes können nur die in der PostGIS-Sicht "public.spatial_ref_sys" aufgeführten Raumbezüge verwenden. Wenn Sie einen Raumbezug angeben, der nicht in dieser Tabelle enthalten ist, schlägt die Erstellung der Feature-Class fehl.
- Sie müssen ein Konfigurationsschlüsselwort angeben, in dem der Parameter GEOMETRY_STORAGE auf PG_GEOMETRY (für PostGIS-Typ "geometry") oder auf PG_GEOGRAPHY (für PostGIS-Typ "geography") festgelegt wurde, um eine Feature-Class zu erstellen, die einen dieser beiden räumlichen Datentypen verwendet.
- Feature-Classes in einer Geodatabase in PostgreSQL, die die PostGIS-Typen verwenden, enthalten ein Feld für CAD- und Kurvenspeicherung, GDB_GEOMATTR_DATA. Wenn Sie außerhalb von ArcGIS eine räumliche Tabelle erstellen, und die Tabelle dann bei der Geodatabase registrieren, wird dieses Feld zur Tabelle hinzugefügt.
- Durch den PostGIS-Typ "geography" ist die Größe der verarbeitbaren Formen begrenzt. Weitere Informationen finden Sie in der PostGIS-Dokumentation.
Gewähren von Berechtigungen zum Erstellen von PostGIS-Spalten vom Typ "geometry" oder "geography"
Wenn Sie eine Datenbank für PostGIS aktivieren, werden dem öffentlichen Schema drei Sichten hinzugefügt: "geometry_columns", "geography_columns" und "spatial_ref_sys". Sie müssen allen Benutzern in der Geodatabase, einschließlich des SDE-Benutzers, SELECT-Berechtigungen für die Sichten "geometry_columns", "geography_columns"und "spatial_ref_sys" gewähren.
GRANT select
ON public.geometry_columns
TO <login_name>;
GRANT select
ON public.geography_columns
TO <login_name>;
GRANT select
ON public.spatial_ref_sys
TO <login_name>;
Erstellen von Feature-Classes, die einen räumlichen PostGIS-Datentyp verwenden
ArcGIS verwendet eine Konfigurationsparametereinstellung, um zu bestimmen, welcher räumliche Datentyp bei der Erstellung einer Feature-Class verwendet werden soll. Es handelt sich um den Parameter GEOMETRY_STORAGE. In PostgreSQL-Geodatabases kann dieser auf ST_GEOMETRY, PG_GEOMETRY (die Einstellung für den PostGIS-Typ "geometry") oder PG_GEOGRAPHY (die Einstellung für den PostGIS-Typ "geography") festgelegt werden. Daher müssen Sie das Konfigurationsschlüsselwort angeben, bei dem der Parameter GEOMETRY_STORAGE auf den von Ihnen benötigten räumlichen PostGIS-Datentyp eingestellt ist: entweder PG_GEOMETRY oder PG_GEOGRAPHY.
Wenn Sie eine Geodatabase erstellen, um den räumlichen Typ "ST_Geometry" zu verwenden, ist für den Parameter GEOMETRY_STORAGE unter dem Konfigurationsschlüsselwort DEFAULTS der Wert ST_GEOMETRY eingestellt. Wenn Sie eine Geodatabase erstellen, um den räumlichen PostGIS-Typ zu verwenden, ist für den Parameter GEOMETRY_STORAGE unter dem Konfigurationsschlüsselwort DEFAULTS der Wert PG_GEOMETRY eingestellt.
Wenn Sie jedoch einen Großteil der Daten in einem anderen räumlichen Typ speichern möchten, können Sie den Wert des Parameters GEOMETRY_STORAGE unter dem Konfigurationsschlüsselwort DEFAULTS ändern. Wenn Sie nur einige wenige Feature-Classes im PostGIS-Speichertyp speichern möchten, können Sie beim Erstellen der Feature-Class das Konfigurationsschlüsselwort PG_GEOMETRY oder PG_GEOGRAPHY angeben. Beim Export aus der Geodatabase werden diese Schlüsselwörter folgendermaßen angezeigt:
##PG_GEOMETRY GEOMETRY_STORAGE "PG_GEOMETRY" UI_TEXT "User Interface text description for POSTGIS geometry storage" END
##PG_GEOGRAPHY GEOMETRY_STORAGE "PG_GEOGRAPHY" UI_TEXT "User Interface text description for POSTGIS geography storage" END
Wenn Sie eines dieser Konfigurationsschlüsselwörter verwenden, wird der Rest der Speicherparameter aus dem Schlüsselwort DEFAULTS abgerufen. Weitere Informationen zu Konfigurationsparametern finden Sie unter Konfigurationsparameter in PostgreSQL.
Verwenden von vorhandenen Tabellen vom Typ "geometry" oder "geography"
ArcGIS kann Tabellen mit den PostGIS-Spalten "geometry" oder "geography" verwenden, die extern von anderen Anwendungen oder mithilfe von SQL erstellt wurden (auch als Tabellen von Drittanbietern bezeichnet), solange die Tabellen die folgenden Voraussetzungen erfüllen:
- Die Tabelle darf nur eine räumliche Spalten enthalten. Sollte dies nicht zutreffen, definieren Sie einen Abfrage-Layer oder eine Sicht, die nur eine der räumlichen Spalten enthält.
- Die Tabelle darf keine weiteren benutzerdefinierten Spalten enthalten.
- Die Tabelle darf nur einen Feature-Typ aufweisen (Punkte, Linien oder Polygone), der Multipart-Feature-Typ ist jedoch zulässig.
- Die Tabelle muss eine eindeutige Spalte vom Typ "Integer" ohne NULL-Werte (NOT NULL) enthalten, die sich als Objekt-ID-Spalte eignet.
- Die Tabelle muss einen räumlichen Index haben.
Informationen zum Erstellen von Tabellen mit einer PostGIS-Spalte mithilfe von SQL finden Sie in der PostGIS-Dokumentation.
Sie können über PostgreSQL eine Verbindung zu einer ArcGIS AllSource-Datenbank herstellen und in der Geodatabase Tabellen registrieren, die PostGIS-Spalten enthalten. Weitere Informationen finden Sie unter Registrieren einer Tabelle oder Ansicht in der Geodatabase.