0

在具有 M 和 Z 的多个有序线几何图形上使用联合聚合,但最终结果缺少那些 Z 和 M 值。我也尝试使用地理,但没有运气。


测试查询

create table #test
(shape geometry)

insert into #test(shape)
values (geometry::STGeomFromText('LINESTRING (-89.831404 29.869888 2.5 28.58, -89.835404 29.869892 2.5 30.13)', 4269)), (geometry::STGeomFromText('LINESTRING (-89.835404 29.869892 2.5 30.13, -89.831403 29.869896 2.5 31.45)', 4269))

DECLARE @geom3 geometry = (select geometry::UnionAggregate(shape) FROM #test )
SELECT @geom3.AsTextZM()

drop table #test

这返回

LINESTRING (-89.831403 29.869896, -89.835404 29.869892, -89.831404 29.869888)

我希望得到以下结果:

LINESTRING (-89.831403 29.869896 2.5 28.58, -89.835404 29.869892 2.5 30.13, -89.831404 29.869888 2.5 31.45)
4

1 回答 1

0

UnionAgregate 将生成一个新的地理值,并将在此过程中从源形状中删除所有 Z 和 M(高程和测量)数据。

需要注意的是,UnionAgregate 会将具有相同 X 和 Y 坐标但 Z 和 M 不同的两个点组合成具有 X 和 Y 坐标的单个点,因此以下脚本将返回 2 个点:

create table #test
(shape geometry)

insert into #test(shape)
values (geometry::STGeomFromText('POINT (-10 10 1 1)', 0)),
(geometry::STGeomFromText('POINT (-10 10 4 4)', 0)),
(geometry::STGeomFromText('POINT (-11 10 4 4)', 0));

select shape.AsTextZM() from #test

select geometry::UnionAggregate(shape).AsTextZM() FROM #test 

drop table #test
于 2019-12-11T18:37:35.063 回答