3
在数字表上交叉连接以获得线顶点,是否有更好的方法?
问题: 我有一个空间表(路线),使用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 …