gpt4 book ai didi

php - 使用 PHP pack() 将 WKT 转换为 WKB

转载 作者:行者123 更新时间:2023-11-29 09:04:03 26 4
gpt4 key购买 nike

我正在使用准备好的语句将数据插入数据库,问题是我无法使用

INSERT INTO 表(多边形)VALUES (GeomFromText(POLYGON((?,?,?,?,?,?))))

为什么?好吧,似乎 GeomFromText 本身被解释为文本:/所以我想我应该尝试将纯 WKB 字符串推送到数据库中,问题是我无法真正弄清楚如何将 WKT 打包到 WKB 中。

有人可以帮我用以下格式描述来完成此操作:http://dev.mysql.com/doc/refman/5.0/en/gis-wkb-format.htmlpack() 的文档位于: http://php.net/manual/en/function.pack.php

最佳答案

我看到两个问题。首先,GeomFromText 函数接受一个字符串,因此它应该类似于 GeomFromText('POLYGON((0, 1, 2))') (注意引号)。其次,由于 POLYGON... 文本是字符串文字,因此应将其替换为通配符,而不是单个片段。您的查询应如下所示:

INSERT INTO areas (name, polygon)
VALUES (?, GeomFromText(?))

然后,您将在应用程序中而不是在语句中构建 POLYGON((?, ?, ?, ?, ?, ?)) 字符串。由于 PHP 具有安全的字符串处理功能,我建议使用 sprintf('POLYGON((%d, %d, %d, %d, %d, %d))', $var1, $var2, $var3, $ var4, $var5, $var6) (sprintf 在 C 中是危险的)。

或者,您可以使用 MySQL 的空间函数来生成点。我认为这就是您想要做的,但您没有通过 GeomFromText 传递它们。要使用 MySQL 的空间函数构建多边形,文档建议您需要执行以下操作:

INSERT INTO areas (name, polygon)
VALUES (?, Polygon(LineString(Point(?, ?), Point(?, ?), Point(?, ?))))

在 MySQL 5.1.35 之前,您需要执行以下操作:

INSERT INTO areas (name, polygon)
VALUES (?, GeomFromWKB(Polygon(LineString(Point(?, ?), Point(?, ?), Point(?, ?)))))

关于php - 使用 PHP pack() 将 WKT 转换为 WKB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7624014/

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