Использование пространственных видов с таблицами со столбцом 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.