从现有值更改SDO_geometry的SRID而不更改原始值

时间:2015-04-28 15:25:52

标签: oracle spatial srid

我有一个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

1 个答案:

答案 0 :(得分:0)

我尝试了与您相同的方法,并遇到了同样的问题(TO_WKTGEOMETRY导出仅适用于2D几何)。

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

CREATE OR REPLACE VIEW VW_Locations AS
SELECT 
  CityCode, 
  APPLY_SRID(Location, <NEW_SRID>) 
FROM Locations

在您自己的代码中,您将按如下方式使用它:

{{1}}
相关问题