【问题标题】:How to convert multiple values from SDO_GEOMETRY to WKT format?如何将多个值从 SDO_GEOMETRY 转换为 WKT 格式?
【发布时间】:2023-04-11 00:18:01
【问题描述】:

我知道我可以将 ORACLE SDO_GEOMETRY 转换为 WKT 格式。但是,如果它包含多个值,我不知道如何转换它。我该怎么做?

我有下表:

ID SDO_GEOMETRY
1234 SDO_GEOMETRY(2001, NULL, MDSYS.SDO_POINT_TYPE(9971, 19188, NULL), NULL, NULL)
1235 SDO_GEOMETRY(2001, NULL, MDSYS.SDO_POINT_TYPE(9972, 18282, NULL), NULL, NULL)
1236 SDO_GEOMETRY(2001, NULL, MDSYS.SDO_POINT_TYPE(9977, 19201, NULL), NULL, NULL)
1237 SDO_GEOMETRY(2001, NULL, MDSYS.SDO_POINT_TYPE(9993, 18225, NULL), NULL, NULL)
1238 SDO_GEOMETRY(2001, NULL, MDSYS.SDO_POINT_TYPE(10035, 18367, NULL), NULL, NULL)

我想一次将所有这些值转换为 WKT。我怎么做? 到目前为止我尝试了什么?

CREATE TABLE new_test ( name varchar2(20), geom SDO_GEOMETRY );

INSERT INTO new_test (name, geom)
VALUES (
  '1234', 
  SDO_GEOMETRY(2001, NULL, MDSYS.SDO_POINT_TYPE(9971, 19188, NULL), NULL, NULL);
  
);

SELECT NAME, SDO_UTIL.TO_WKTGEOMETRY(GEOM) AS point FROM NEW_TEST;

上面的脚本一次只转换一个。如何为多行实现它?

【问题讨论】:

    标签: sql oracle oracle-spatial wkt


    【解决方案1】:

    您描述了一个 CREATE TABLE,然后是一个仅在表中放入一行的 INSERT,然后是一个 SELECT。如果您的描述是逐字逐句的,那么您的最后一个 SELECT 应该 - 并且将只返回一行(因为该表只有一行)。 SELECT... sdo_util... from NEW_TEST as is(没有 WHERE 子句)将(转换并)返回该表的所有行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-29
      • 1970-01-01
      • 2020-04-21
      • 2020-12-26
      • 1970-01-01
      • 2020-04-29
      • 1970-01-01
      • 2015-03-16
      相关资源
      最近更新 更多