gpt4 book ai didi

sql - 一系列几何数据类型的最小点和最大点

转载 作者:行者123 更新时间:2023-12-02 05:22:50 27 4
gpt4 key购买 nike

将一系列 Shapefile 引入 SQL Server 2008R2 后,我们希望获取表格中一系列多边形的最小点和最大值。

在 SQL Server 2008R2 中没有像 STExtent 这样的聚合函数,如何确定最小值和最大值?

这篇博文指向了一系列选项:
http://alastaira.wordpress.com/2011/07/26/determining-the-geographic-extent-of-spatial-features-in-a-sql-server-table/

  • 选项 #1:使用光标
  • 选项 #2:CLR 函数
  • 选项 #3:CTE
  • 选项 #4:持久信封

一个例子:

BEGIN TRAN
CREATE TABLE #Lines
(
ID INT IDENTITY(1,1)
,Poly GEOMETRY NULL
);

INSERT INTO #Lines
(Poly)
VALUES
(geometry::STGeomFromText('LINESTRING(0 0, 2 3)', 0));

INSERT INTO #Lines
(Poly)
VALUES
(geometry::STGeomFromText('LINESTRING(1 1, 2 4)',0));

--How can i get the min and max x and y points?
--(e.g. for this example Xmin = 0, Xmax = 2, Ymin = 0, Ymax = 4)


DROP TABLE #Lines
COMMIT

最佳答案

如果您使用 SQL Server 2008,请使用:

select MIN((<geom_col>).STEnvelope().STPointN(1).STX) as xmin,
MAX((<geom_col>).STEnvelope().STPointN(3).STX) as xmax,
MIN((<geom_col>).STEnvelope().STPointN(1).STY) as ymin,
MAX((<geom_col>).STEnvelope().STPointN(3).STY) as ymax from <your table>;

SQL Server 2012 有一个新函数 UnionAggregate。所以另一种选择是:

select  geometry::UnionAggregate (<geom_col>).STEnvelope().STPointN(1).STX as xmin,
geometry::UnionAggregate (<geom_col>).STEnvelope().STPointN(3).STX as xmax,
geometry::UnionAggregate (<geom_col>).STEnvelope().STPointN(1).STY as ymin,
geometry::UnionAggregate (<geom_col>).STEnvelope().STPointN(3).STY as ymax from <your table>

关于sql - 一系列几何数据类型的最小点和最大点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13587553/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com