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