Oracle 从现有值更改SDO_几何图形的SRID而不更改原始值

Oracle 从现有值更改SDO_几何图形的SRID而不更改原始值,oracle,spatial,srid,Oracle,Spatial,Srid,我有一个Oracle数据库表,其中一列为SDO_几何体类型。我试图在此表上写入一个视图,并获取具有不同SRID的SDO_GEOMETRY列。我不想更改原始表或将值转换为其他SRID。我只想获得具有不同SID(相同vertice值)的geometry列。如何做到这一点 表格如下: Create Table Locations (CityCode VARCHAR(2), Location SDO_GEOMETRY) 我正在尝试创建如下视图,例如: CREATE OR REPLACE VIEW VW

我有一个Oracle数据库表,其中一列为SDO_几何体类型。我试图在此表上写入一个视图,并获取具有不同SRID的SDO_GEOMETRY列。我不想更改原始表或将值转换为其他SRID。我只想获得具有不同SID(相同vertice值)的geometry列。如何做到这一点

表格如下:

Create Table Locations (CityCode VARCHAR(2), Location SDO_GEOMETRY)
我正在尝试创建如下视图,例如:

CREATE OR REPLACE VIEW VW_Locations AS
SELECT 
  CityCode, 
  SDO_GEOMETRY(Location, <NEW_SRID>) 
FROM Locations
根据需要创建或替换视图VW_位置
挑选
城市代码,
SDO_几何体(位置)
从地点
我尝试使用WKT作为参数为SDO_几何体使用构造函数,但无法使用,因为我的表中的几何体值是3D的,Oracle不支持3D SDO_几何体值的WKT/WKB转换。此选项适用于二维几何图形:

CREATE OR REPLACE VIEW VW_Locations AS
SELECT 
  CityCode, 
  SDO_GEOMETRY(SDO_UTIL.TO_WKTGEOMETRY(Location), <NEW_SRID>) AS Loc
FROM Locations
根据需要创建或替换视图VW_位置
挑选
城市代码,
SDO_几何体(SDO_实用至WKTG几何体(位置))如Loc
从地点

我尝试了与您相同的方法,但遇到了相同的问题(WKTGEOMETRY导出仅适用于二维几何体)

我目前的方法是使用自定义函数通过对象点符号应用SRID:

CREATE OR REPLACE FUNCTION APPLY_SRID 
(
  GEOM IN OUT MDSYS.SDO_GEOMETRY 
, SRID IN NUMBER DEFAULT 8307 
) RETURN MDSYS.SDO_GEOMETRY AS 
BEGIN
  GEOM.SDO_SRID := SRID;
  RETURN GEOM;
END APPLY_SRID;
在您自己的代码中,可以按如下方式使用:

CREATE OR REPLACE VIEW VW_Locations AS
SELECT 
  CityCode, 
  APPLY_SRID(Location, <NEW_SRID>) 
FROM Locations
根据需要创建或替换视图VW_位置
挑选
城市代码,
应用\u SRID(位置,)
从地点