我有一些大的多边形。在它的小册子层(点)的集合内。每个点都有一些数字属性。我想要的是将大多边形分成较小的多边形。 每个较小的多边形应包含〜等于(+ -200 ok)点属性总和的点。在我的示例页面的左侧,我添加了理想结果的图像。 Here is my simplified example有足够的代码和评论。
所以我的第一步是在大多边形内找到一些起点。它应该指向Polygon边缘附近 - 例如最北端。
var nothernmostPoint= 0;
var nothernmostLayer= 0;
L.geoJSON(features, {
pointToLayer: function (feature) {
return L.circleMarker(feature.geometry.coordinates.reverse(), defaultPointStyle);
},
onEachFeature: function (feature, layer) {
if (feature.geometry.coordinates[0] > nothernmostPoint) {
nothernmostPoint = feature.geometry.coordinates[0];
nothernmostLayer = feature;
}
}
}).addTo(map);
第二步是找到我的起点的下一个最近的点。
var geoJ = L.GeometryUtil.nClosestLayers(map, features, nothernmostLayer.geometry.coordinates, 5);
我目前的困难是找到距离我的起点最近的点。为此,我使用 GeometryUtil Leaflet插件。红点是 GeometryUtil 找到的距离我的起点(绿色点)最近的点。这肯定不是我的预期。我究竟做错了什么?也许我应该为该任务使用不同的算法和/或工具?非常感谢任何有用的建议。
如果它有帮助 - 我将所有数据存储在 PostgreSQL 中,并带有 PostGIS 扩展名。也许这可以在数据库级别完成。
答案 0 :(得分:0)
如果您的数据集相当小,您可以在PostGIS中采用强力方式:
select geom, generate_series(0, weight)
; sum(weight)/desired_sum
;