Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2012 从几何图形类型生成具有X和Y的视图_Sql Server 2012_Sql_Sql Server_Geospatial_Sqlgeography - Fatal编程技术网

Sql server 2012 从几何图形类型生成具有X和Y的视图

Sql server 2012 从几何图形类型生成具有X和Y的视图,sql-server-2012,sql,sql-server,geospatial,sqlgeography,Sql Server 2012,Sql,Sql Server,Geospatial,Sqlgeography,在中,我希望使用“几何体类型”中的所有点生成视图。我该怎么做? 视图示例 GeomKey | X | Y --------+----+----- 1 | X1 | Y1 1 | x2 | Y2 2 | x1 | Y1 Oracle中带有sys.SDO的示例 select c.ngeometrykey, z.* from gis_map.mp_geometry c , table(sdo_util.getvertices(c.geometry))

在中,我希望使用“几何体类型”中的所有点生成视图。我该怎么做? 视图示例

GeomKey | X  | Y
--------+----+-----
 1      | X1 | Y1
 1      | x2 | Y2
 2      | x1 | Y1
Oracle中带有sys.SDO的示例

select c.ngeometrykey,  z.* 
from gis_map.mp_geometry c ,    
table(sdo_util.getvertices(c.geometry)) z 

我不认为您可以在视图中执行此操作,但您可以创建一个表值用户定义函数一个返回表以获得所需内容的函数

此示例使用定义为的表

CREATE TABLE GeoTable (GeomKey int, vector GEOMETRY)
它存储不同的几何体类型,我在下面链接的示例中使用了点、多点、线串和多边形

CREATE FUNCTION dbo.GetVertices()
RETURNS @ret TABLE (GeomKey INT, X INT, Y INT, PointNo INT)
AS
BEGIN
    DECLARE @max INT
    SET @max = (SELECT MAX(vector.STNumPoints()) FROM GeoTable) 

    ;WITH Sequence(Number) AS
    (
        SELECT 1 AS Number
        UNION ALL
        SELECT Number + 1
        FROM Sequence
        WHERE Number < @max
    )
    INSERT INTO @ret 
    SELECT
        gt.GeomKey
        ,gt.vector.STPointN(nums.number).STX AS X
        ,gt.vector.STPointN(nums.number).STY AS Y
        ,nums.number AS PointNo
    FROM GeoTable gt, Sequence nums
    WHERE nums.number <= gt.vector.STNumPoints()
    RETURN
END;

有关完整的工作示例,请参见此。

您存储的几何图形类型是什么?多点还是别的?我用的是点、多点和线串