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.