为了账号安全,请及时绑定邮箱和手机立即绑定

Golang 从坐标列表创建 wkb.Polygon

Golang 从坐标列表创建 wkb.Polygon

Go
慕森卡 2022-05-10 13:44:30
我在一个文件中有坐标列表,我想获取它们的多边形。我使用wkb库来加载坐标,但是当我尝试将它们设置到wkb.Polygon对象中时,出现错误:panic: interface conversion: interface {} is [][][]float64, not [][]geom.Coord这是我的代码:var cc interface {} = collection.Features[0].Geometry.Polygonc := 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)
查看完整描述

1 回答

?
慕森王

TA贡献1777条经验 获得超3个赞

首先,您需要像这样创建一个通用多边形:


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)


查看完整回答
反对 回复 2022-05-10
  • 1 回答
  • 0 关注
  • 101 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信