【问题标题】:SQL Server : Calculate STArea from Geometry valueSQL Server:从几何值计算 STArea
【发布时间】:2018-04-09 17:57:13
【问题描述】:

我知道how to 根据文本数据计算 STArea,例如

DECLARE @g geometry;  
SET @g = geometry::STGeomFromText('POLYGON((0 0, 3 0, 3 3, 0 3, 0 0),(2 2, 2 1, 1 1, 1 2, 2 2))', 0);  
SELECT @g.STArea();  

我已将条目从形状文件导入到 geom 列中。

如何从 Geom 列计算 STArea?

【问题讨论】:

    标签: sql-server geospatial


    【解决方案1】:

    使用与您已经编写的相同的函数调用,STArea()。在您的示例中,您没有计算文本变量的面积,而是首先将文本转换为几何图形,然后计算其面积(您的变量类型为 GEOMETRY!)。

    IF OBJECT_ID('tempdb..#GeometricData') IS NOT NULL
        DROP TABLE #GeometricData
    
    CREATE TABLE #GeometricData (GeometricColumn GEOMETRY)
    
    INSERT INTO #GeometricData (
        GeometricColumn)
    SELECT
        GeometricColumn = geometry::STGeomFromText('POLYGON((0 0, 3 0, 3 3, 0 3, 0 0),(2 2, 2 1, 1 1, 1 2, 2 2))', 0)
    
    SELECT
        G.GeometricColumn,
        Area = G.GeometricColumn.STArea()
    FROM
        #GeometricData AS G
    

    如果您的意思是如何对几何图形进行分组,那么您需要在调用 STArea() 之前使用 Geometry::UnionAggregate 聚合它们。

    SELECT
        Area = Geometry::UnionAggregate(G.GeometricColumn).STArea()
    FROM
        #GeometricData AS G
    

    您还可以按列值分组。

    SELECT
        G.GroupingValue,
        Area = Geometry::UnionAggregate(G.GeometricColumn).STArea()
    FROM
        #GeometricData AS G
    GROUP BY
        G.GroupingValue
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-06
      • 1970-01-01
      • 2011-05-04
      • 1970-01-01
      相关资源
      最近更新 更多