Workflow: Erstellen von Tabellen mit SQL und Registrieren bei ArcSDE und der Geodatabase

Dieses Thema gilt nur für ArcEditor und ArcInfo.

Komplexität: Fortgeschritten Erforderliche Daten: Eigene Daten verwenden Ziel: Erstellen Sie mit SQL räumliche und nicht räumliche Tabellen, registrieren Sie die Tabellen bei ArcSDE, und registrieren Sie sie dann bei der Geodatabase.

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

Schritte:
  1. Öffnen Sie einen SQL-Client, und melden Sie sich bei der Datenbank als Benutzer mit Berechtigungen an, um Tabellen in der Datenbank zu erstellen.
  2. 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.

Schritte:
  1. 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.

Schritte:
  1. 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.

HinweisHinweis:

Die 0 in diesen Beispielanweisungen ist die SRID. Sie können eine andere Zahl angeben.

Schritte:
  1. 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:

Schritte:
  1. Ändern Sie Verzeichnisse in SDEHOME > bin.
  2. 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:

Schritte:
  1. 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.

Schritte:
  1. Starten Sie ArcMap, und öffnen Sie das Fenster Katalog, oder starten Sie ArcCatalog.
  2. 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.

  3. Klicken Sie mit der rechten Maustaste auf die Tabelle "patients".
  4. Klicken Sie auf In Geodatabase registrieren.
  5. 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.
  6. Klicken Sie auf OK.
  7. Klicken Sie mit der rechten Maustaste auf den Layer "outbreaks".
  8. Klicken Sie auf In Geodatabase registrieren.
  9. Klicken Sie auf OK.

3/6/2012