ArcGIS Desktop

  • Документация
  • Поддержка

  • My Profile
  • Справка
  • Sign Out
ArcGIS Desktop

ArcGIS Online

Картографическая платформа вашей организации

ArcGIS Desktop

Полноценная профессиональная ГИС

ArcGIS Enterprise

ГИС предприятия

ArcGIS for Developers

Инструменты для встраивания приложений с местоположениями

ArcGIS Solutions

Бесплатные шаблоны карт и приложений для отрасли

ArcGIS Marketplace

Получение приложения и данных для вашей организации.

  • Документация
  • Поддержка
Esri
  • Войти
user
  • Мой профиль
  • Выход

ArcMap

  • На главную
  • Начало работы
  • Карта
  • Анализ
  • Управление данными
  • Инструменты
  • Дополнительные модули

ST_Transform

  • Описание
  • Синтаксис
  • Тип возвращаемого значения
  • Примеры

Описание

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

Внимание:

Если вы зарегистрировали пространственный столбец в базе данных PostgreSQL, используя функцию st_register_spatial_column, то SRID во время регистрации прописывается в таблицу sde_geometry_columns. Если вы создали пространственный индекс в пространственном столбце в базе данных Oracle, то во время создания пространственного индекса SRID прописывается в таблицу st_geometry_columns. Когда вы используете ST_Transform для изменения SRID в ST_Geometry, SRID в таблицах sde_geometry_columns или st_geometry_columns не обновляется.

Использование ST_Transform в PostgreSQL

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

Если данные хранятся в базе данных (а не в базе геоданных), выполните следующие шаги для изменения пространственной привязки данных ST_Geometry:

  1. Создайте резервную копию таблицы.
  2. Создайте второй (целевой) столбец ST_Geometry в таблице.
  3. Зарегистрируйте целевой столбец ST_Geometry, указывая новый SRID.

    Указание пространственной привязки для столбца выполняется размещением записи в системной таблице sde_geometry_columns.

  4. Выполните ST_Transform. Укажите, что преобразованные данные будут отсылаться в целевой столбец ST_Geometry.
  5. Отмените регистрацию первого столбца (исходного) ST_Geometry.

Если данные хранятся в базе геоданных, вы должны использовать инструменты ArcGIS, чтобы перепроецировать данные в новый класс пространственных объектов. Выполнение ST_Transform у класса пространственных объектов базы геоданных позволяет обойти использование функциональности для обновления системных таблиц базы геоданных с новым SRID.

Использование ST_Transform в Oracle

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

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

Для поддержки файловых преобразований в базах геоданных в Oracle файлы должны быть размещены на сервере Oracle в той же относительной структуре папок, что и у папки pedata в директории установки ArcGIS for Desktop.

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

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

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

Если данные хранятся в базе данных (а не в базе геоданных), и пространственный индекс в пространственном столбце не определен, то вы можете добавить второй столбец ST_Geometry и направить преобразованные данные в него. Вы можете оставить оба столбца, исходный (источника) ST_Geometry и целевой ST_Geometry в таблице. Однако вы можете отображать только один столбец в ArcGIS, используя представление или изменяя определение слоя запроса для таблицы.

Если данные хранятся в базе данных (а не в базе геоданных), и в пространственном столбце имеется определенной пространственный индекс, то вы не сможете защитить исходный столбец ST_Geometry. После определения пространственного индекса в столбце ST_Geometry в таблицу метаданных st_geometry_columns записывается SRID. ST_Transform не обновляет эту таблицу.

  1. Создайте резервную копию таблицы.
  2. Создайте второй (целевой) столбец ST_Geometry в таблице.
  3. Выполните ST_Transform. Укажите, что преобразованные данные будут отсылаться в целевой столбец ST_Geometry.
  4. Удалите пространственный индекс из исходного столбца ST_Geometry.
  5. Удалите исходный столбец ST_Geometry.
  6. Создайте пространственный индекс в целевом столбце ST_Geometry.

Если данные хранятся в базе геоданных, вы должны использовать инструменты ArcGIS, чтобы перепроецировать данные в новый класс пространственных объектов. Выполнение ST_Transform у класса пространственных объектов базы геоданных позволяет обойти использование функциональности для обновления системных таблиц базы геоданных с новым SRID.

Использование ST_Transform с SQLite

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

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

Синтаксис

Исходная и целевая пространственные привязки не имеют единой географической системы координат

Oracle и PostgreSQL

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

SQLite

st_transform (geometry1 geometryblob, srid in32)

Исходная и целевая пространственные привязки не имеют единой географической системы координат

Oracle

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

SQLite

st_transform (geometry1 geometryblob, srid int32, geogtrans_id int32)

Тип возвращаемого значения

Oracle и PostgreSQL

ST_Geometry

SQLite

Geometryblob

Примеры

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

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

Примечание:

Идентификаторы SRID 4326 и 3857 имеют один и тот же географический датум.

Oracle

CREATE TABLE transform_test (
 ln1 sde.st_geometry,
 ln2 sde.st_geometry);
INSERT INTO transform_test (ln1) VALUES (
 sde.st_geometry ('linestring (10.01 40.03, 92.32 29.39)', 4326)
);
UPDATE transform_test
 SET ln2 = sde.st_transform (ln1, 3857);

PostgreSQL

CREATE TABLE transform_test (
 ln1 sde.st_geometry,
 ln2 sde.st_geometry);
INSERT INTO transform_test (ln1) VALUES (
 sde.st_geometry ('linestring (10.01 40.03, 92.32 29.39)', 4326)
);
UPDATE transform_test
 SET ln2 = sde.st_transform (ln1, 3857);

SQLite

CREATE TABLE transform_test (id integer);
SELECT AddGeometryColumn(
 NULL,
 'transform_test',
 'ln1',
 4326,
 'linestring',
 'xy',
 'null'
);
INSERT INTO transform_test (ln1) VALUES (
 st_geometry ('linestring (10.01 40.03, 92.32 29.39)', 4326)
);
UPDATE transform_test
 SET ln1 = st_transform (ln1, 3857);

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

В следующем примере создается таблица n27, содержащая столбец ID и столбец геометрии. В таблицу n27 с SRID 4267 вставляется точка. SRID 4267 использует географическую систему координат NAD 1927.

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

Подсказка:

Список поддерживаемых географических преобразований см. в технической статье Esri 21327 и приложенных к ней списках.

Oracle

--Create table.
CREATE TABLE n27 (
 id integer,
 geometry sde.st_geometry
);
--Insert point with SRID 4267.
INSERT INTO N27 (id, geometry) VALUES (
 1, 
 sde.st_geometry ('point (-123.0 49.0)', 4267)
);
--Create the n83 table as the destination table of the transformation.
CREATE TABLE n83 (
 id integer,
 geometry sde.st_geometry
);
--Run the transformation.
INSERT INTO N83 (id, geometry)(
 select c.id, sde.st_transform (c.geometry, 4269, 1241)
 from N27 c
);

Если переменная PEDATAHOME задана правильно, выражение SELECT, выполняемое для таблицы n83, возвращает следующее:

SELECT id, sde.st_astext (geometry) description 
 FROM N83;
ID	DESCRIPTION
1 | POINT((-123.00130569 48.999828199))

SQLite

--Create source table.
CREATE TABLE n27 (id integer);
SELECT AddGeometryColumn(
 NULL,
 'n27',
 'geometry',
 4267,
 'point',
 'xy',
 'null'
);
--Insert point with SRID 4267.
INSERT INTO n27 (id, geometry) VALUES (
 1, 
 st_geometry ('point (-123.0 49.0)', 4267)
);
--Create the n83 table as the destination table of the transformation.
CREATE TABLE n83 (id integer);
SELECT AddGeometryColumn(
 NULL,
 'n83',
 'geometry',
 4269,
 'point',
 'xy',
 'null'
);
--Run the transformation.
INSERT INTO n83 (id, geometry) VALUES (
 1, 
 st_transform ((select geometry from n27 where id=1), 4269, 1241)
);

Связанные разделы

  • Загрузка библиотеки ST_Geometry SQLite

ArcGIS Desktop

  • На главную
  • Документация
  • Поддержка

ArcGIS Platform

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS for Developers
  • ArcGIS Solutions
  • ArcGIS Marketplace

Об Esri

  • О нас
  • Карьера
  • Блог сотрудников
  • Конференция пользователей
  • Саммит разработчиков
Esri
Расскажите нам, что вы думаете.
Copyright © 2017 Esri. | Конфиденциальность | Правовая информация