问题:
我有一个空间表(道路线),使用 ESRI 的SDE.ST_GEOMETRY
用户定义数据类型存储在 Oracle 12c地理数据库中。我想列出线顶点,以便我最终可以访问和更新它们的坐标。如果我使用的是 SDO_GEOMETRY/Oracle Locator,那么我会使用该
SDO_UTIL.GETVERTICES
函数。但是我没有使用 SDO_GEOMETRY/Oracle Locator,并且SDE.ST_GEOMETRY
. 唯一的SDE.ST_GEOMETRY
功能,我可以找到属于顶点ST_PointN
和ST_NumPoints
。
我想出了一个成功完成所有这些的查询 - 将线顶点作为行(受此页面启发):
1 SELECT a.ROAD_ID
2 ,b.NUMBERS VERTEX_INDEX
3 ,a.SDE.ST_X(SDE.ST_PointN(a.SHAPE, b.NUMBERS)) AS X
4 ,a.SDE.ST_Y(SDE.ST_PointN(a.SHAPE, b.NUMBERS)) AS Y
5 FROM ENG.ROADS a
6 CROSS JOIN ENG.NUMBERS b
7 WHERE b.NUMBERS <= SDE.ST_NumPoints(a.SHAPE)
8 --removed to do explain plan: ORDER BY ROAD_ID, b.NUMBERS
----------------------------------------------------------------------------------------------------
| Id | Operation | Name …
Run Code Online (Sandbox Code Playgroud)