我有一个Oracle数据库表,其中包含SDO_GEOMETRY类型的列。我试图在这个表上写一个视图,并获得具有不同SRID的SDO_GEOMETRY列。我不想更改原始表或将值转换为不同的SRID。我只想让几何列具有不同的SID(相同的顶点值)。怎么做到这一点?
表格如下:
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
我尝试使用WKT作为参数的SDO_GEOMETRY构造函数但我无法做到,因为我表中的几何值是3D而Oracle不支持3D SDO_GEOMETRY值的WKT / WKB转换。这个适用于2D几何:
CREATE OR REPLACE VIEW VW_Locations AS
SELECT
CityCode,
SDO_GEOMETRY(SDO_UTIL.TO_WKTGEOMETRY(Location), <NEW_SRID>) AS Loc
FROM Locations
答案 0 :(得分:0)
我尝试了与您相同的方法,并遇到了同样的问题(TO_WKTGEOMETRY导出仅适用于2D几何)。
我目前的方法是使用自定义函数通过对象点表示法应用SRID:
CREATE OR REPLACE VIEW VW_Locations AS
SELECT
CityCode,
APPLY_SRID(Location, <NEW_SRID>)
FROM Locations
在您自己的代码中,您将按如下方式使用它:
{{1}}