SQL Server:从几何值计算STArea

4

我知道如何从文本数据计算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();  

我已经从一个shape文件中导入了记录到一个geom列。

如何从Geom列计算STArea?

enter image description here

1个回答

4

使用与您已经编写的相同函数调用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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接