如何将多边形延伸到一定距离?

时间:2018-09-20 07:40:22

标签: sql sql-server geometry

如何将多边形延伸到一定距离? 我围绕多点创建一个凸包。但是我需要将范围扩大到几公里。至少在理论上。

http://img.radiokot.ru/files/21274/1oykzc5pez.png

2 个答案:

答案 0 :(得分:1)

在每个顶点中构建外部平分线向量(两个相邻边的归一化法线nanb的总和)并将其归一化

enter image description here

bis = na + nb
bis = bis / Length(bis)

设置等分线的长度以提供所需的距离

 l = d / Cos(fi/2)

其中d是偏移量,fi是向量nanb之间的夹角。

 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。