答案 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平面的事实),事情变得更加复杂。
因此,根据您想要做的事情,您可能需要更详细的解决方案,以便找不到质心,而是最小化到任何多边形的距离的点(理解为与任何多边形的最小距离)顶点到那个多边形)。