我知道如何从文本数据计算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?
我知道如何从文本数据计算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?
使用与您已经编写的相同函数调用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