根据二维数组中的坐标在地图上绘制多边形

Drawing a polygon in map based on coordinates from a two dimensional array

本文关键字:地图 绘制 多边形 坐标 二维数组      更新时间:2023-09-26

给定一个看起来像这样的二维数组(我把它画成一个网格):
[0][0][0][1][1][0][0][1][1][0]
[0][1][1][1][1][0][1][1][1][0]
[0][1][1][1][1][0][0][1][1][0]
[0][1][1][1][1][0][0][0][0][0]
[0][0][0][1

][1][0][0][0][0][0]

我想提取粗体的 1,而忽略斜体的 1。我的 1 表示我要用作 GeoJSON 文档中多面要素输入的 GPS 坐标。

现在我遍历每一行并创建MultiLineString,但这真的不是我想要的。

var previousValue = -1;
var line = [];
var lines = [];
var points = [];
for (var i = 0; i < data.length; i++) {
    var value = data[i];
    if (value == 0 || (previousValue > -1 && value != previousValue)) {
        // Line interrupted, push it to features and create a new
        if (line.length === 1) { // It's not a line, but a point
            //this.common.log.info("Push point");
            points.push(line);
        } else if (line.length === 2 && previousValue > -1) {
            lines.push(line);
        }
        line = [];
    }
    if (value > 0) {
        if (line.length == 0) {
            // Start of line
            line.push(value);
        } else if (line.length == 1) {
            // Line has only a starting point, add to end
            line.push(value);
        } else {
            // Line has already an endpoint, update it
            line[1] = value;
        }
    }
    previousValue = value;
}

我想有一个图书馆吗?

您可以尝试行进方块算法(如评论中所示),但我推荐alpha形状。它是一个没有超过阿尔法的边的德劳内三角测量。行进立方体不适合凹形船体。