Workflow: Erstellen von Tabellen mit SQL und Registrieren bei ArcSDE und der Geodatabase
Dieses Thema gilt nur für ArcEditor und ArcInfo.
Sie können mit SQL Tabellen erstellen. Wenn die Tabelle eine räumliche Spalte enthält, wird die Tabelle als räumliche Tabelle betrachtet. Sie können sowohl nicht räumliche als auch räumliche Tabellen mithilfe von SQL mit Daten befüllen. Um ArcSDE- und Geodatabase-Funktionalität verwenden zu können, können Sie die Tabelle bei ArcSDE und der Geodatabase registrieren.
Dies ist sinnvoll, wenn Sie eine benutzerdefinierte Anwendung verwenden, um räumliche oder nicht räumliche Tabellen zu erstellen, oder Datenbanktabellen von einer anderen Agentur oder einem anderen Subunternehmer erhalten, jedoch Geodatabase- und ArcGIS-Funktionalität nutzen möchten.
Erstellen einer nicht räumlichen Tabelle mit SQL
- Öffnen Sie einen SQL-Client, und melden Sie sich bei der Datenbank als Benutzer mit Berechtigungen an, um Tabellen in der Datenbank zu erstellen.
- Erstellen Sie mithilfe der SQL-Anweisung CREATE TABLE die nicht räumliche Tabelle "patients", die Spalten mit den folgenden Namen enthält: PID, f_name, l_name und dwel_id.
Oracle
CREATE TABLE patients (PID integer NOT NULL, f_name nvarchar2(25), l_name nvarchar2(38), dwel_id integer);
PostgreSQL
CREATE TABLE patients (PID integer NOT NULL UNIQUE, f_name varchar(25), l_name varchar(38), dwel_id integer);
DB2
CREATE TABLE patients (PID integer NOT NULL, f_name varchar(25), l_name varchar(38), dwel_id integer);
Informix
CREATE TABLE patients (PID integer NOT NULL, f_name varchar(25), l_name varchar(38), dwel_id integer);
Hinzufügen von Daten zu einer nicht räumlichen Tabelle mit SQL
Fügen Sie der Tabelle "patients" Datensätze mithilfe der SQL-Anweisung INSERT hinzu.
- Fügen Sie vier Datensätze in die Tabelle "patients" ein.
Oracle
INSERT INTO PATIENTS (PID, f_name, l_name, dwel_id) VALUES (1, 'wolfgang', 'bruker', 4301); INSERT INTO PATIENTS (PID, f_name, l_name, dwel_id) VALUES (2, 'ida', 'pastens', 4301); INSERT INTO PATIENTS (PID, f_name, l_name, dwel_id) VALUES (3, 'ricardo', 'montoya', 1001); INSERT INTO PATIENTS (PID, f_name, l_name, dwel_id) VALUES (4, 'tukufu', 'endel', 9601);
PostgreSQL
INSERT INTO patients (PID, f_name, l_name, dwel_id) VALUES (1, 'wolfgang', 'bruker', 4301); INSERT INTO patients (PID, f_name, l_name, dwel_id) VALUES (2, 'ida', 'pastens', 4301); INSERT INTO patients (PID, f_name, l_name, dwel_id) VALUES (3, 'ricardo', 'montoya', 1001); INSERT INTO patients (PID, f_name, l_name, dwel_id) VALUES (4, 'tukufu', 'endel', 9601);
DB2
INSERT INTO PATIENTS (PID, f_name, l_name, dwel_id) VALUES (1, 'wolfgang', 'bruker', 4301); INSERT INTO PATIENTS (PID, f_name, l_name, dwel_id) VALUES (2, 'ida', 'pastens', 4301); INSERT INTO PATIENTS (PID, f_name, l_name, dwel_id) VALUES (3, 'ricardo', 'montoya', 1001); INSERT INTO PATIENTS (PID, f_name, l_name, dwel_id) VALUES (4, 'tukufu', 'endel', 9601);
Informix
INSERT INTO patients (PID, f_name, l_name, dwel_id) VALUES (1, 'wolfgang', 'bruker', 4301); INSERT INTO patients (PID, f_name, l_name, dwel_id) VALUES (2, 'ida', 'pastens', 4301); INSERT INTO patients (PID, f_name, l_name, dwel_id) VALUES (3, 'ricardo', 'montoya', 1001); INSERT INTO patients (PID, f_name, l_name, dwel_id) VALUES (4, 'tukufu', 'endel', 9601);
Erstellen einer räumlichen Tabelle mit SQL
Sie können auch eine CREATE TABLE-Anweisung verwenden, um eine Tabelle mit einer räumlichen Spalte zu erstellen.
- Erstellen Sie die Tabelle "outbreaks", die Folgendes enthält: OID (Ganzzahl), dwel_id (Ganzzahl), Zeichenfolgenadresse, city_code (Ganzzahl) und eine ST_Geometry-Positionsspalte.
Oracle
CREATE TABLE outbreaks (OID integer NOT NULL, address nvarchar2(120), city_code integer, location sde.st_geometry);
PostgreSQL
CREATE TABLE outbreaks (OID integer NOT NULL UNIQUE, address varchar(120), city_code integer, location sde.st_geometry);
DB2
CREATE TABLE outbreaks (OID integer NOT NULL, address nvarchar2(120), city_code integer, location st_geometry);
Informix
CREATE TABLE outbreaks (OID integer NOT NULL UNIQUE, address varchar(120), city_code integer, location st_geometry);
Hinzufügen von Daten zu einer räumlichen Tabelle mit SQL
Fügen Sie drei Datensätze in die Tabelle "outbreaks" ein.
Die 0 in diesen Beispielanweisungen ist die SRID. Sie können eine andere Zahl angeben.
- Verwenden Sie die SQL-Anweisung INSERT und die Funktion "ST_Point", um der Tabelle "outbreaks" Datensätze hinzuzufügen.
Oracle
INSERT INTO OUTBREAKS (OID, address, city_code, location) VALUES (1, '1420 kirchestrasse', 43, sde.st_point (0.00003, 0.00051, 0) ); INSERT INTO OUTBREAKS (OID, address, city_code, location) VALUES (2, '638 villa arbol', 10, sde.st_point (0.00020, -0.00029, 0) ); INSERT INTO OUTBREAKS (OID, address, city_code, location) VALUES (3, '5579 riverview dr', 96, sde.st_point (-0.00048, -0.00009, 0) );
PostgreSQL
INSERT INTO outbreaks (OID, address, city_code, location) VALUES (1, '1420 kirchestrasse', 43, sde.st_point (0.00003, 0.00051, 0) ); INSERT INTO outbreaks (OID, address, city_code, location) VALUES (2, '638 villa arbol', 10, sde.st_point (0.00020, -0.00029, 0) ); INSERT INTO outbreaks (OID, address, city_code, location) VALUES (3, '5579 riverview dr', 96, sde.st_point (-0.00048, -0.00009, 0) );
DB2
INSERT INTO OUTBREAKS (OID, address, city_code, location) VALUES (1, '1420 kirchestrasse', 43, st_point (0.00003, 0.00051, 0) ); INSERT INTO OUTBREAKS (OID, address, city_code, location) VALUES (2, '638 villa arbol', 10, st_point (0.00020, -0.00029, 0) ); INSERT INTO OUTBREAKS (OID, address, city_code, location) VALUES (3, '5579 riverview dr', 96, st_point (-0.00048, -0.00009, 0) );
Informix
INSERT INTO outbreaks (OID, address, city_code, location) VALUES (1, '1420 kirchestrasse', 43, st_point (0.00003, 0.00051, 0) ); INSERT INTO outbreaks (OID, address, city_code, location) VALUES (2, '638 villa arbol', 10, st_point (0.00020, -0.00029, 0) ); INSERT INTO outbreaks (OID, address, city_code, location) VALUES (3, '5579 riverview dr', 96, st_point (-0.00048, -0.00009, 0) );
Registrieren von nicht räumlichen Tabellen mit ArcSDE
Nicht räumliche Tabellen werden bei ArcSDE mit dem Befehl "sdetable" registriert. Nach der Registrierung wird der Systemtabelle TABLE_REGISTRY ein Datensatz für die Tabelle hinzugefügt. Außerdem werden der Systemtabelle COLUMN_REGISTRY für jede Spalte in der Tabelle Datensätze hinzugefügt.
Die in diesen Beispielen gezeigten Optionen geben Folgendes an:
- Die Option –o gibt die ausgeführte Operation an, in diesem Fall "register".
- Die Option –t gibt den Namen der Tabelle an, die registriert werden soll – patients.
- Die Option –c gibt den Namen der Spalte, PID, an, die als ObjectID verwendet werden soll.
- Die Option –C gibt an, dass die Spalte ab jetzt vom System befüllt wird.
- Die Option –i gibt die Verbindungssyntax an. In diesem Fall wird eine direkte Verbindung zur Geodatabase verwendet.
- Die Option –s gibt den Server oder die Datenquelle an.
- Die Option –D (wird nicht für Oracle verwendet) gibt den Datenbanknamen an.
- Die Optionen –u und –p sind der Benutzername und das Kennwort des Besitzers der Tabelle.
- Ändern Sie Verzeichnisse in SDEHOME > bin.
- Um die Tabelle "patients" bei ArcSDE zu registrieren, geben Sie den Befehl "sdetable" mit der Operation "register" aus.
Oracle
sdetable -o register -t patients -c PID -C SDE -i sde:oracle11g -s server1 -u creator -p powerup
PostgreSQL
sdetable -o register -t patients -c PID -C SDE -i sde:postgresql:server1 -D postdb -s server1 -u creator -p powerup
DB2
sdetable -o register -t patients -c PID -C SDE -i sde:db2 -D db2db -s server1 -u creator -p powerup
Informix
sdetable -o register -t patients -c PID -C SDE -i sde:informix -D idsdb -s server1 -u creator -p powerup
Registrieren von räumlichen Tabellen mit ArcSDE
Räumliche Tabellen werden bei ArcSDE mit dem Befehl "sdelayer" registriert. Nach der Registrierung wird den Systemtabellen LAYERS und TABLE_REGISTRY ein Datensatz für die Tabelle hinzugefügt. Für jede Spalte in der Tabelle werden der Systemtabelle COLUMN_REGISTRY ferner Datensätze hinzugefügt. Für die räumliche Spalte wird der Systemtabelle GEOMETRY_COLUMNS ein Datensatz hinzugefügt.
Die in diesen Beispielen gezeigten Optionen geben Folgendes an:
- Die Option –o gibt die ausgeführte Operation an, in diesem Fall "register".
- Die Option –l wird verwendet, um den Namen der zu registrierenden Tabelle – outbreaks – und die Geometriespalte – location – anzugeben.
- Die Option –e gibt den in dieser Tabelle gespeicherten Geometrietyp an. In diesem Beispiel werden Punkte in der Tabelle gespeichert. Daher wird p mit der Option –e angegeben.
- Der Geometriedatentyp (ST_Geometry) wird mit der Option –t angegeben.
- Die Option –C legt den Namen der Spalte, RID, fest, die als ObjectID verwendet werden soll, und gibt an, dass die Spalte vom System verwaltet werden soll. In diesem Fall ist die Spalte noch nicht vorhanden. Daher fügt ArcSDE der Tabelle diese Spalte hinzu.
- Die Option –E gibt die X- und Y-Koordinaten des Layers an (Minimum und Maximum).
- Die Raumbezugs-ID (SRID) in der ArcSDE-Systemtabelle wird mit der Option –R angegeben.
- Die Option –i gibt die Verbindungssyntax an. In diesem Fall wird eine direkte Verbindung zur Geodatabase verwendet.
- Die Option –s gibt den Server oder die Datenquelle an.
- Die Option –D (wird nicht für Oracle verwendet) gibt den Datenbanknamen an.
- Die Optionen –u und –p sind der Benutzername und das Kennwort des Besitzers der Tabelle.
- Um die Tabelle "outbreaks" bei ArcSDE zu registrieren, verwenden Sie den Befehl "sdelayer" mit der Operation "register".
Oracle
sdelayer -o register -l outbreaks,location -e p -t ST_GEOMETRY -C RID,SDE -E -498618.389,-243045.144,498618.389,243045.144 -R 0 -i sde:oracle11g -s server1 -u creator -p powerup
PostgreSQL
sdelayer -o register -l outbreaks,location -e p -t ST_GEOMETRY -C RID,SDE -E -498618.389,-243045.144,498618.389,243045.144 -R 0 -i sde:postgresql:server1 -s server1 -D postdb -u creator -p powerup
DB2
sdelayer -o register -l outbreaks,location -e p -t ST_GEOMETRY -C RID,SDE -E -498618.389,-243045.144,498618.389,243045.144 -R 0 -i sde:db2 -s server1 -D db2db -u creator -p powerup
Informix
sdelayer -o register -l outbreaks,location -e p -t ST_GEOMETRY -C RID,SDE -E -498618.389,-243045.144,498618.389,243045.144 -R 0 -i sde:informix -s server1 -D idsdb -u creator -p powerup
Registrieren der Tabelle und des Layers bei der Geodatabase
Sie können eine Tabelle oder einen Layer mithilfe von ArcGIS Desktop oder ArcObjects bei der Geodatabase registrieren.
Verwenden Sie "RegisterAsObjectClass" für die Methode "IClassSchemaEdit3 ArcObjects", um eine Tabelle oder einen Layer bei der Geodatabase zu registrieren. Syntax und Informationen finden Sie in der ArcObjects-Bibliothek.
Die folgenden Schritte zeigen die Registrierung bei der Geodatabase in ArcGIS Desktop.
Klicken Sie im Kataloginhaltsverzeichnis mit der rechten Maustaste auf die Tabelle oder den Layer, die/den Sie bei der Geodatabase registrieren möchten, und klicken Sie auf In Geodatabase registrieren.
- Starten Sie ArcMap, und öffnen Sie das Fenster Katalog, oder starten Sie ArcCatalog.
-
Stellen Sie eine Verbindung mit der ArcSDE-Geodatabase her, die die zu registrierende Tabelle enthält.
Diese Verbindung wird unter dem Knoten "Datenbankverbindungen" des Kataloginhaltsverzeichnisses hergestellt. Stellen Sie sicher, dass Sie eine Verbindung als Besitzer der Tabelle herstellen.
- Klicken Sie mit der rechten Maustaste auf die Tabelle "patients".
- Klicken Sie auf In Geodatabase registrieren.
- Sie haben das OID-Feld als ObjectID angegeben, als Sie die Tabelle bei ArcSDE registriert haben. Wählen Sie dieses Feld daher als Geodatabase-ObjectID-Feld aus.
- Klicken Sie auf OK.
- Klicken Sie mit der rechten Maustaste auf den Layer "outbreaks".
- Klicken Sie auf In Geodatabase registrieren.
- Klicken Sie auf OK.