阵列中的四个2D点.我需要按顺时针顺序对它们进行排序.我认为只需一次交换操作即可完成,但我无法正式解决这个问题.
编辑:在我的情况下,四个点是凸多边形.
编辑:四个点是凸多边形的顶点.他们不需要整理好.
如果我将WKT格式的多边形定义为此(经度/纬度):
string wkt = "POLYGON ((15.981800258159638 45.810693408924287, 15.983624160289764 45.810783148865241, 15.983688533306122 45.809844611497965, 15.981843173503876 45.8096838246252, 15.981800258159638 45.810693408924287))"
Run Code Online (Sandbox Code Playgroud)
然后创建DbGeography对象,如下所示:
var polygon = System.Data.Entity.Spatial.DbGeography.FromText(wkt);
Run Code Online (Sandbox Code Playgroud)
该Area属性的值是510065621695499.69
如果我像这样使用Postgres和PostGis做同样的事情:
select ST_Area(ST_GeographyFromText(wkt))
Run Code Online (Sandbox Code Playgroud)
结果是15496.7483872527,它应该是正确的值。
如果我创建通过反转坐标(纬度/经度)的多边形,都DbGeography和ST_Area返回相同的值(21247.6269483712)
谁能解释这是怎么回事?
PS:多边形位于克罗地亚的萨格勒布。