У меня проблема! Я новичок в Oracle Spatial, но какое-то время работаю с pl / sql. Дело в том, что мне нужно идентифицировать точки (x, y) из атрибута геометрии из таблицы B, в атрибуте геометрии (многоугольники) из таблицы A или внутри него. Проблема: обе таблицы имеют разные данные внутри поля геометрии.
< br /> Подробнее:
Получение DDL из таблиц:
---------------------
-- DDL for Table A
---------------------
CREATE A
(
GEOMETRY MDSYS.SDO_GEOMETRY,
...
ENTITYID NUMBER,
MANZENT VARCHAR2(255 BYTE),
...
)
CREATE INDEX A_IDX ON A (GEOMETRY)
INDEXTYPE IS MDSYS.SPATIAL_INDEX;
--------------------------------------------------------
-- DDL for Table B
--------------------------------------------------------
CREATE TABLE B
( ID_GIS NUMBER(8,0),
GEOMETRY MDSYS.SDO_GEOMETRY,
...
)
CREATE INDEX B_IDX ON B (GEOMETRY)
INDEXTYPE IS MDSYS.SPATIAL_INDEX;
При получении данных из таблицы A формат геометрии атрибутов следующий:
MDSYS.SDO_GEOMETRY(3002, NULL, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1, 2, 1), MDSYS.SDO_ORDINATE_ARRAY(351059.668003312, 6283365.86125775, 0, 350989.900040253, 6283352.35005758, 0, 350945.450026879, 6283344.01994977, 0, 350942.789988843, 6283344.05999729, 0, 350941.519995767, 6283344.33999171, 0, 350939.949994132, 6283345.17999723, 0, 350938.640010838, 6283346.53002549, 0, 350937.800033809, 6283348.69002867, 0, 350932.586269235, 6283379.08172448, 0, 351052.837823787, 6283402.34153528, 0, 351059.668003312, 6283365.86125775, 0, 351059.668003312, 6283365.86125775, 0))
При получении данных из таблицы A формат геометрии атрибутов следующий:
MDSYS.SDO_GEOMETRY(2001, 32719, MDSYS.SDO_POINT_TYPE(352761.049, 6287740.01, NULL), NULL, NULL)
Та же структура, но; очевидно, что данные в обоих полях разные! Я имею в виду, что тип данных размещен!
Когда я запускаю сценарий для определения отношения, он выдает ошибку:
SELECT A.entityid, B.manzent
FROM A, B
WHERE SDO_RELATE(A.geometry, B.geometry,
'mask=COVERS') = 'TRUE';
Ошибка:
ORA-13295: геометрические объекты находятся в разных системах координат
ORA-06512: в «MDSYS.SDO_3GL», строка 4
ORA-06512: в «MDSYS.MD2», строка 769
ORA -06512: в «MDSYS.SDO_3GL», строка 155
13295. 00000 - «Геометрические объекты находятся в разных системах координат»
* Причина: была вызвана функция Oracle Spatial с двумя геометриями, имеющими
разные
SRID.
* Действие: преобразовать геометрические объекты в одну систему координат и вызвать пространственную функцию.
На самом деле это так («геометрические объекты находятся в разных системах координат»). Приведен пример. Я искал, как преобразовать данные из таблицы B ...
Я сделал это, я получил точки из таблицы B, но не смог найти, как определить, находятся ли они внутри многоугольника в таблице A.
Я пробовал использовать SDO_CONTAINS и SDO_RELATE, JOIN и т. Д.
Я буду искренне благодарен, если вы сможете мне помочь!