如何将多边形延伸到一定距离? 我围绕多点创建一个凸包。但是我需要将范围扩大到几公里。至少在理论上。
答案 0 :(得分:1)
在每个顶点中构建外部平分线向量(两个相邻边的归一化法线na
和nb
的总和)并将其归一化
bis = na + nb
bis = bis / Length(bis)
设置等分线的长度以提供所需的距离
l = d / Cos(fi/2)
其中d是偏移量,fi是向量na
和nb
之间的夹角。
fi = atan2(crossproduct(na,nb), dotproduct(na,nb))
或没有三角函数:
l = d / Sqrt(1 + dotproduct(na,nb))
找到偏移的多边形顶点:
P' = P + l * bis
答案 1 :(得分:1)
假设您能够获得凸包(也许正在使用ConvexHullAggregate
!),STBuffer()
应该可以满足您的要求。
declare @hull geography = «your value here»;
select @hull.STBuffer(10000); -- 10 km buffer
NB:10000
可能需要根据您使用的SRID进行更改,因为SRID具有固有的距离单位。但是SRID 4326是文档中最常用的,并且该SRID的本机单位是米。所以10 km→10000 m。