mysql - 插入到 mysql 中的地理空间字段

标签 mysql go geospatial polygon

我有一个 string 对象,它代表十六进制的多边形,我想将其保存到 mysql 数据库中。我按照描述使用了``here 。这是我用来生成多边形的方法:

func GetPolygon(coordinates [][]geom.Coord) (string, error) {
    unitSquare := geom.NewPolygon(geom.XY).MustSetCoords(coordinates)

    polygon, err := wkb.Marshal(unitSquare, wkb.NDR)
    if err != nil {
        fmt.Printf("wkb marshal error: %s\n", err.Error())
        return "", err
    }

    polygonHex := hex.Dump(polygon)
    return polygonHex, nil
}

这就是我生成查询的方式:

insertQuery := fmt.Sprintf(`INSERT INTO my_table (polygon) VALUE (ST_GeomFromWKB(X'%v'))`, poly)

但是当我执行查询时,我得到:

Error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'X'00000000  01 03 00 00 00 01 00 00  00 92 00 00 00 ff ff ff  |................|' at line 1

最佳答案

要在 Golang 中从字节数组创建十六进制字符串,必须使用以下命令:

s := hex.EncodeToString(b)

Dump 命令生成 xxd 类似的输出。

关于mysql - 插入到 mysql 中的地理空间字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59917043/

相关文章:

python - 是否有 python 代码来解析 geoPDF 文件以获取投影和图像数据? geoPDF2KML 工具?

php - 我在我的 php 脚本中找不到错误

go - 在 Go 中获取子结构字段

尝试从经度和纬度获取距离时出现Mysql错误

go - 通过 Exim(没有 smtp)发送电子邮件?

go - 是否可以将具有许多项目的结构转换为具有这些项目子集的结构?

r - 求R中数据点一定半径内的点数

javascript - 无法让我的地理空间查询工作。在 Node 中查询 Mongo

mysql - DISTINCT 和 CONCAT 结合在一起

php - 将数据保存到数据库时出错