簡體   English   中英

如何將多邊形延伸到一定距離?

[英]How to extend the polygon to a certain distance?

如何將多邊形延伸到一定距離? 我圍繞多點創建一個凸包。 但是我需要將范圍擴大到幾公里。 至少在理論上。

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

在每個頂點中建立外部平分線向量(作為兩個相鄰邊的歸一化法線nanb之和)並將其歸一化

在此處輸入圖片說明

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

假設您能夠獲得凸包(也許您正在使用ConvexHullAggregate !),則STBuffer()應該做您想要的事情。

declare @hull geography = «your value here»;
select @hull.STBuffer(10000); -- 10 km buffer

注意: 10000可能需要根據您使用的SRID進行更改,因為SRID具有固有的距離單位。 但是SRID 4326是文檔中最常用的,並且該SRID的本機單位是米。 所以10公里→10000 m

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM