Использование пространственных видов с таблицами со столбцом ST_Geometry

Пространственные виды — это виды базы данных, которые включают пространственный столбец.

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

При определении представления необходимо выбрать только один из пространственных столбцов, чтобы включить его в вид.

Ниже приведены примеры создания пространственных видов с помощью SQL.

Создание вида с одним пространственным столбцом

CREATE VIEW quake_v 
AS SELECT objectid,shape 
FROM quakes4;

В данном примере создается пространственный вид, после чего на его основе создается пространственное объединение.

CREATE VIEW san_berdoo_quakes_v 
AS SELECT a.objectid, a.location, b.name
FROM quakes4 a, st_counties b
WHERE b.name = 'San Bernardino'
AND st_intersects(a.location,b.boundary)=1;

Ниже приведен тот же пример для базы геоданных в Informix.

CREATE VIEW san_berdoo_quakes_v 
AS SELECT a.objectid, a.location, b.name
FROM quakes4 a, st_counties b
WHERE b.name = 'San Bernardino'
AND st_intersects(a.location,b.boundary);

Создание пространственных материализованных видов

Материализованный вид — это объект базы данных, содержащий результаты запроса. Как правило, эти объекты используются в расширенной репликации материализованных видов (или снимков) Oracle. В DB2 материализованные виды известны как материализованные таблицы запросов.

CREATE MATERIALIZED VIEW quake_mv 
AS SELECT objectid,shape 
FROM quakes4;

DB2

CREATE TABLE quake_mv as (SELECT objectid,shape FROM quakes4) 
DATA INITIALLY DEFERRED REFRESH DEFERRED 
MAINTAINED BY USER 
SET INTEGRITY FOR quake_mv MATERIALIZED QUERY IMMEDIATE UNCHECKED

Выбор материализованного вида

SELECT COUNT(*) 
FROM quake_mv a, st_counties b 
WHERE b.name = 'San Bernardino' 
AND st_intersects(a.shape,b.shape)=1;
ПримечаниеПримечание:

В Informix невозможно создать материализованный вид, подобный этому. Это просто вид, который нуждается в создании временных таблиц при просмотре. Например, если используется объединение нескольких таблиц для создания одного вида, временные таблицы должны создаваться в Informix при запросе этого вида. В Informix эквивалент отсутствует.

Как и для классов объектов ArcSDE, хранящихся в формате хранения LOB, слои пространственного типа также поддерживаются с использованием репликации материализованного вида Oracle. Пакет репликации DB2 позволяет реплицировать пространственные данные, но не имеет эквивалента репликации материализованных видов Oracle.

Связанные темы

9/11/2013