确定传单中多个多边形的中心点

时间:2016-11-15 10:34:18

标签: leaflet

如何确定多个多边形的中心点?

我的意思是附图中标有红点的点。 PS:多边形的数量可以变化。算法应该能够确定大多数多边形中心的近似点。

enter image description here

1 个答案:

答案 0 :(得分:2)

根据您的确切需要,有几种方法。

最简单的方法是计算整个多边形的质心。许多地理空间软件能够计算多边形的质心,多个外环的多边形等。

如果您使用的是Leaflet和GeoJSON,我个人的选择是使用Turf.js进行地理处理,例如:

var poly1 = {
  type: 'Feature',
  geometry: {
    type: 'Polygon',
    coordinates: [[[10, 10], [10, 20], [20, 15]]]
  }
}; 

var poly2 = {
  type: 'Feature',
  geometry: {
    type: 'Polygon',
    coordinates: [[[10, 45], [20, 40], [20, 50]]]
  }
};

var featCollection = {
  type: 'FeatureCollection',
  features: [poly1, poly2]
}

L.geoJSON(featCollection).addTo(map)

// Magic happens here:
var centroid = turf.centroid(featCollection);

L.geoJSON(centroid).addTo(map);

您可以将其视为working example

现在,质心是多边形密度的中心。如果你还记得高中几何,你会记得有lots of centers for something as simple as a triangle,每个都有自己的属性。

对于更复杂的多边形,情况也是如此:some times you don't want the centroid。如果考虑到测地线(即地球不是2D平面的事实),事情变得更加复杂。

因此,根据您想要做的事情,您可能需要更详细的解决方案,以便找不到质心,而是最小化到任何多边形的距离的点(理解为与任何多边形的最小距离)顶点到那个多边形)。