gpt4 book ai didi

go - Golang从坐标列表创建wkb.Polygon

转载 作者:行者123 更新时间:2023-12-01 20:27:08 25 4
gpt4 key购买 nike

我在要获取其多边形的文件中有坐标列表。我使用wkb库加载坐标,但是当我尝试将其设置为wkb.Polygon对象时,出现错误:

panic: interface conversion: interface {} is [][][]float64, not [][]geom.Coord

这是我的代码:
var cc interface {} = collection.Features[0].Geometry.Polygon
c := cc.([][]geom.Coord)
po, err := wkb.Polygon{}.SetCoords(c)

我也尝试过:
c := collection.Features[0].Geometry.Polygon.([][]geom.Coord)

但是我得到了:
Invalid type assertion: collection.Features[0].Geometry.Polygon.([][]geom.Coord) (non-interface type [][][]float64 on left)

最佳答案

首先,您需要创建一个通用的多边形,如下所示:

package main

import (
"fmt"

"github.com/twpayne/go-geom"
)

func main() {
unitSquare := geom.NewPolygon(geom.XY).MustSetCoords([][]geom.Coord{
{{0, 0}, {1, 0}, {1, 1}, {0, 1}, {0, 0}},
})
fmt.Printf("unitSquare.Area() == %f", unitSquare.Area())
}

然后,您可以将其编码为 wkb格式。

        // marshal into wkb with litten endian
b, err := wkb.Marshal(unitSquare, wkb.NDR)
if err != nil {
fmt.Printf("wkb marshal error: %s\n", err.Error())
return
}
fmt.Println(b)

关于go - Golang从坐标列表创建wkb.Polygon,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59909825/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com