Plsql 使用Oracle Spatial确定表B中的点是否位于表a的多边形内(几何体字段不同)

Plsql 使用Oracle Spatial确定表B中的点是否位于表a的多边形内(几何体字段不同),plsql,gis,polygon,spatial,point,Plsql,Gis,Polygon,Spatial,Point,我有个问题!我是Oracle Spatial的新手,但我已经使用pl/sql有一段时间了。问题是,我需要从表B的几何体属性中识别点x,y,从表A的几何体属性多边形中识别点at或内部。问题是:两个表在几何体字段中有不同的数据。 更多详情: 从表中获取DDL: 从表A获取数据时,属性几何体的格式为: MDSYS.SDO_GEOMETRY(3002, NULL, NULL, MDSYS.SDO_ELEM_INFO_ARRAY(1, 2, 1), MDSYS.SDO_ORDINATE_ARRAY(351

我有个问题!我是Oracle Spatial的新手,但我已经使用pl/sql有一段时间了。问题是,我需要从表B的几何体属性中识别点x,y,从表A的几何体属性多边形中识别点at或内部。问题是:两个表在几何体字段中有不同的数据。 更多详情: 从表中获取DDL:

从表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))
MDSYS.SDO_GEOMETRY(2001, 32719, MDSYS.SDO_POINT_TYPE(352761.049, 6287740.01, NULL), NULL, NULL)
从表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))
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行 1329500000-几何体对象位于不同的坐标系中 *原因:调用Oracle Spatial函数时使用了两个 不同的 SRIDs。 *操作:将几何体对象变换为在同一坐标系中,并 调用空间函数

实际上,这就像几何体对象位于不同的坐标系中一样。举个例子。我一直在寻找如何转换表B中的数据。。。 我这样做了,我从表B中得到了点,但找不到如何确定它们是否在表的多边形内

我尝试了SDO_CONTAINS和SDO_RELATE、JOIN等


如果你能帮助我,我将非常感激

两张桌子的坐标系看起来不一样

您可以在元数据表中检查它

从MDSYS.SDO_GEOM_METADATA_TABLE中选择SDO_SRID,其中SDO_TABLE_NAME='TABLE_A'; 从MDSYS.SDO_GEOM_METADATA_TABLE中选择SDO_SRID,其中SDO_TABLE_NAME='TABLE_B'


对于SDO操作,两个表应具有相同的SRID。

架构无法识别SDO\u GEOM\u METADATA\u表。我找到了USER_SDO_GEOM_元数据。表A和表B中的信息不同-表:A列:几何信息:MDSYS.SDO_DIM_ARRAYMDSYS.SDO_DIM_ELEMENT'X',-370691.09411887,590488.591781422,5E-10,MDSYS.SDO_DIM_ELEMENT'Y',3911088.55477536,7988320.84199649,5E-10,MDSYS.SDO_DIM_ELEMENT'Z',0,0,5E-10 SRID:-表格:B列:几何信息:MDSYS.O_DIM_ARRAYMDSYS.O_DIM_,892;,892;,5902,MDSYS.SDO_DIM_元素'Y',39109597988206,1 SRID:32719Yes,然后将表A的SRID更新为与表B相同的:“32719”