ST_Transform

Определение

ST_Transform преобразует двумерные данные ST_Geometry в пространственную привязку, определенную идентификатором пространственной привязки (SRID).

В PostgreSQL пространственные привязки источника и назначения должны использовать одну географическую систему координат, чтобы применить функцию ST_Transform для преобразования пространственных привязок на основе столбца ST_Geometry.

В Oracle вы можете преобразовать пространственные привязки с одинаковой географической системой координат или разными системами координат. Если географические системы координат отличаются, выполняется географическое преобразование. Географическое преобразование конвертирует две географические системы координат. Географическое преобразование определяется в конкретном направлении, например, из NAD 1927 в NAD 1983, но функция ST_Transform правильно применит преобразование независимо от систем координат источника и назначения.

Методы географического преобразования можно разделить на два типа: математические и файловые. Математические методы являются самодостаточными, и им не требуется внешняя информация. Файловые методы используют файлы на диске для расчета значений смещения. Обычно они более точны, чем математические методы. Файловые методы используются в Австралии, Канаде, Германии, Новой Зеландии, Испании и США. Эти файлы (кроме Канады) можно найти в папке установки ArcGIS for Desktop или напрямую от различных национальных картографических агентств.

В базах геоданных в Oracle: для поддержки файловых преобразований файлы должны быть размещены на сервере Oracle в той же относительной структуре папок, что и в директории установки ArcGIS for Desktop. В директории установки ArcGIS for Desktop файлы размещены в папке pedata. После перемещения папки pedata на сервер Oracle установите параметр среды ОС с именем PEDATAHOME. Укажите для значения переменной местоположение папки pedata. Например, если папка pedata была скопирована в папку C:\pedata на компьютере с Microsoft Windows, задайте для переменной PEDATAHOME значение C:\pedata.

Сведения об установке переменных среды см. в документации по операционной системе.

В папке pedata размещены папки для трех поддерживаемых файловых методов: harn, nadcon и ntv2. В папке ntv2 есть поддиректории для каждой страны. Например, при использовании указанного ранее расположения папки pedata файл NTv2 для Австралии будет размещен в папке C:\pedata\ntv2\australia.

После установки переменной PEDATAHOME необходимо инициировать новый сеанс SQL перед использованием функции ST_Transform. Сервер перезапускать не нужно.

Синтаксис

PostgreSQL и Oracle: географические системы координат пространственных привязок источника и назначения совпадают

sde.st_transform (g1 sde.st_geometry, srid integer)

Только для Oracle: географические системы координат пространственных привязок источника и назначения не совпадают

sde.st_transform (g1 sde.st_geometry, srid integer, geogtran_id integer)

Возвращаемый тип

ST_Geometry

Примеры

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

Следующее выражение CREATE TABLE создает таблицу transform_test с двумя строковыми столбцами, ln1 и ln2.

CREATE TABLE transform_test (ln1 sde.st_geometry, ln2 sde.st_geometry);

Следующее выражение INSERT вставляет ST_LineString в столбец ln1 с SRID, равным 4326.

INSERT INTO transform_test (ln1) VALUES (
sde.st_geometry ('linestring (10.01 40.03, 92.32 29.39)', 4326)
);

В следующем выражении UPDATE функция ST_Transform принимает строку в ln1, преобразует ее из координатной привязки, назначенной SRID 4326, в координатную привязку, назначенную SRID 3857, и помещает ее в столбец ln2.

UPDATE transform_test
SET ln2 = sde.st_transform (ln1, 3857);
ПримечаниеПримечание:

SRID 4326 и 3857 размещены в представлении ST_SPATIAL_REFERENCES; для них используется одинаковый географический датум.

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

Следующее выражение CREATE TABLE создает таблицу n27, содержащую столбцы ID и ST_Geometry:

CREATE TABLE n27 (id integer, geometry sde.st_geometry);

Следующее выражение INSERT вставляет значение ID и ST_Point с SRID, равным 4267:

INSERT INTO N27 (id, geometry) VALUES (
1, 
sde.st_geometry ('point (-123.0 49.0)', 4267));
);

SRID 4267 использует географическую систему координат NAD 1927.

Создайте таблицу n83 как таблицу-адресат преобразования и выполните преобразование:

CREATE TABLE n83 (id integer, geometry sde.st_geometry);

INSERT INTO N83 (id, geometry) VALUES (
1, 
sde.st_transform (N27.geometry, 4269, 1241);

SRID 4269 использует географическую систему координат NAD 1983, а 1241 — стандартный ID для преобразования NAD_1927_To_NAD_1983_NADCON. Это файловое преобразование, и его можно использовать для 48 континентальных штатов США. Если переменная PEDATAHOME задана правильно, выражение SELECT, выполняемое для таблицы n83, возвращает следующее:

SELECT id, sde.st_astext (geometry) description 
FROM N83;

ID	DESCRIPTION
1 | POINT((-123.00130569 48.999828199))
ПодсказкаПодсказка:

Список поддерживаемых географических преобразований см. в технической статье и связанных списках: http://support.esri.com/en/knowledgebase/techarticles/detail/21327.

9/11/2013