Рабочий процесс. Создание таблиц с SQL и регистрация их в базе геоданных

Эта тема относится только к ArcGIS for Desktop Standard и ArcGIS for Desktop Advanced.

Уровень сложности: Средний Требования к данным: Используйте собственные данные Задача: Создавайте пространственные и непространственные таблицы с помощью SQL, а затем регистрируйте их в базе геоданных.

Для создания таблиц можно использовать SQL. Если таблица содержит пространственный столбец, таблица считается пространственной. Можно использовать SQL для заполнения непространственных и пространственных таблиц данными. Затем для использования функциональности ArcGIS и базы геоданных можно зарегистрировать таблицу в базе геоданных.

Это можно сделать, если вы используете пользовательское приложение для создания пространственных и непространственных таблиц, или если таблицы баз данных получены от другого агентства или подрядчика, но вы хотите использовать преимущества функциональности базы геоданных и ArcGIS.

Создание непространственной таблицы с помощью SQL

Шаги:
  1. Откройте клиент SQL и войдите в базу данных в качестве пользователя с правами на создание таблиц в базе данных.
  2. Используйте выражение SQL CREATE TABLE для создания непространственной таблицы patients, которая содержит столбцы со следующими именами: PID, f_name, l_name и 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);
    

Добавление данных в непространственную таблицу с помощью SQL

Используйте выражения SQL INSERT для добавления таблицы patients с помощью SQL.

Шаги:
  1. Вставьте четыре записи в таблицу patients:

    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);
    

Создание пространственной таблицы с помощью SQL

Можно также использовать выражение CREATE TABLE для создания таблицы с пространственным столбцом.

Шаги:
  1. Создайте таблицу outbreaks, которая содержит целочисленный OID, целочисленный dwel_id, адрес улицы, целочисленный city_code и столбец ST_Geometry:

    Oracle

    CREATE TABLE outbreaks 
    (OID integer NOT NULL, address nvarchar2(120), city_code integer, loc sde.st_geometry);
    

    PostgreSQL

    CREATE TABLE outbreaks 
    (OID integer NOT NULL UNIQUE, address varchar(120), city_code integer, loc sde.st_geometry);
    

    DB2

    CREATE TABLE outbreaks 
    (OID integer NOT NULL, address nvarchar2(120), city_code integer, loc st_geometry);
    

    Informix

    CREATE TABLE outbreaks 
    (OID integer NOT NULL UNIQUE, address varchar(120), city_code integer, loc st_geometry);
    

Добавление данных в пространственную таблицу с помощью SQL

Вставьте три записи в таблицу outbreaks.

ПримечаниеПримечание:

В этих примерах значение SRID равно 0. Задайте другое число.

Шаги:
  1. Используйте выражения SQL INSERT и функцию ST_Point для добавления записей в таблицу outbreaks:

    Oracle

    INSERT INTO OUTBREAKS (OID, address, city_code, loc)
    VALUES (1, 
    '1420 kirchestrasse', 
    43, 
    sde.st_geometry (0.00003, 0.00051, null, null, 4326)
    );
    
    INSERT INTO OUTBREAKS (OID, address, city_code, loc)
    VALUES (2, 
    '638 villa arbol', 
    10, 
    sde.st_geometry (0.00020, -0.00029, null, null, 4326)
    );
    
    INSERT INTO OUTBREAKS (OID, address, city_code, loc)
    VALUES (3, 
    '5579 riverview dr', 
    96, 
    sde.st_geometry (-0.00048, -0.00009, null, null, 4326)
    );
    

    PostgreSQL

    INSERT INTO outbreaks (OID, address, city_code, loc)
    VALUES (1, 
    '1420 kirchestrasse', 
    43, 
    sde.st_point (0.00003, 0.00051, null, null, 4326)
    );
    
    INSERT INTO outbreaks (OID, address, city_code, loc)
    VALUES (2, 
    '638 villa arbol', 
    10, 
    sde.st_point (0.00020, -0.00029, null, null, 4326)
    );
    
    INSERT INTO outbreaks (OID, address, city_code, loc)
    VALUES (3, 
    '5579 riverview dr', 
    96, 
    sde.st_point (-0.00048, -0.00009, null, null, 4326)
    );
    

    DB2

    INSERT INTO OUTBREAKS (OID, address, city_code, loc)
    VALUES (1, 
    '1420 kirchestrasse', 
    43, 
    st_point (0.00003, 0.00051, null, null, 0)
    );
    
    INSERT INTO OUTBREAKS (OID, address, city_code, loc)
    VALUES (2, 
    '638 villa arbol', 
    10, 
    st_point (0.00020, -0.00029, null, null, 0)
    );
    
    INSERT INTO OUTBREAKS (OID, address, city_code, loc)
    VALUES (3, 
    '5579 riverview dr', 
    96, 
    st_point (-0.00048, -0.00009, null, null, 0)
    );
    

    Informix

    INSERT INTO outbreaks (OID, address, city_code, loc)
    VALUES (1, 
    '1420 kirchestrasse', 
    43, 
    st_point (0.00003, 0.00051, null, null, 0)
    );
    
    INSERT INTO outbreaks (OID, address, city_code, loc)
    VALUES (2, 
    '638 villa arbol', 
    10, 
    st_point (0.00020, -0.00029, null, null, 0)
    );
    
    INSERT INTO outbreaks (OID, address, city_code, loc)
    VALUES (3, 
    '5579 riverview dr', 
    96, 
    st_point (-0.00048, -0.00009, null, null, 0)
    );
    

Регистрация таблиц в базе геоданных

ArcGIS for Desktop можно использовать, чтобы зарегистрировать таблицу в базе геоданных.

Следующие действия используются для регистрации таблицы в базе геоданных ArcGIS for Desktop:

Шаги:
  1. Запустите ArcMap и откройте окно Каталога или запустите ArcCatalog.
  2. Подключитесь к многопользовательской базе геоданных, содержащей таблицу, которую необходимо зарегистрировать.

    Подключение осуществляется через папку Подключения баз данных (Database Connections) в дереве Каталога. Убедитесь, что вы подключились как владелец таблицы.

  3. Щелкните правой кнопкой таблицу patients и выберите Зарегистрировать в базе геоданных (Register with Geodatabase).
  4. Поле PID было определено как столбец целочисленных значений, отличных от NULL, поэтому оно используется как ObjectID для зарегистрированной таблицы.
  5. Щелкните правой кнопкой таблицу outbreaks и выберите Зарегистрировать в базе геоданных (Register with Geodatabase).
  6. Пространственная привязка была определена для вставленных полей и только один тип объекта был вставлен (points), поэтому ArcGIS обнаруживает это при регистрации использует эту информацию для определения класс объектов. Поле OID, которое было определено как столбец целочисленных значений, отличных от NULL, используется как ObjectID для зарегистрированного класса объектов.
12/10/2012