我在Bing地圖WPF控件上繪製區域(使用SqlGeometry
/SqlGeography
並將它們翻譯成WPF LocationCollection
等效項),並需要標記它們。我在地區上繪製了標籤,並將它們附加到STCentroid()
發現的點上。當然,正如你所想象的那樣,這是一個與質心在區域外面結束的'U'或'C'形區域有關的問題,這使得標籤不正確。使用Sql Spatial Data(C#)查找不規則多邊形的「視覺」中心
有沒有辦法使用SqlGeometry
/SqlGeography
找到「視覺」中心,或者找到最適合形狀和使用該中心的圓?我試着用various methods但STPointOnSurface()
似乎STPointOnSurface()
總是挑選對像這樣DCREHA(邊緣點底部的深綠色區域的標籤總是在邊緣結束:
假設僅存在一種形狀,一種解決方案可能是找到開放的一面,然後將標籤移到另一面,直到標籤在形狀內。你也可以做一些過濾來刪除某些區域。或者你可能試圖找到最大的凹面區域(我不知道是否有算法)。 – Phil1970
相關:http://stackoverflow.com/q/1203135/3628232 –
那麼U形的「視覺中心」在哪裏? –