gpt4 book ai didi

mysql - 有没有办法从 MySQL 的 Envelope(Poly) 中选择 lat1、lat2、lon1、lon2?

转载 作者:可可西里 更新时间:2023-11-01 08:32:29 25 4
gpt4 key购买 nike

如果我在 MySQL 中有一个名为 Poly 的列,类型为 polygon,我想获取 NW 角、NE 角、SE 角和 SW 角,我该怎么做?从 Envelope() 应该有 lat1、lat2、lon1 和 lon2 组成四个角,如下所示 lat1,lon1 是 NW; lat1,lon2 为东北方向; lat2,lon2 是东南方向; lat2,lon1 是 SW。当我尝试 X(PointN(Envelope(Poly),1)) AS lat1 时,它总是返回 NULL。这可以在 MySQL 中完成吗?

SELECT
X(PointN(Envelope(Poly),1)) AS lat1, X(PointN(Envelope(Poly),3)) AS lat2,
Y(PointN(Envelope(Poly),1)) AS lon1, Y(PointN(Envelope(Poly),2)) AS lon2
FROM boundaries.mt_us_zip5_2013_boundaries_polys_bin
WHERE zip = '00601';

上面的查询返回:

NULL,NULL,NULL,NULL

这是信封的样子:

SELECT AsText(Envelope(Poly))
FROM boundaries.mt_us_zip5_2013_boundaries_polys_bin
WHERE zip = '00601';

最后一个查询返回:

POLYGON((18.111929 -66.836366,18.250344 -66.836366,18.250344 -66.659293,18.111929 -66.659293,18.111929 -66.836366))

我正在使用 MySQL 5.5.36 版本,升级到新版本的 MySQL 是否可以提供我需要的功能?

最佳答案

PointN 仅在 LineString 上定义,但幸运的是您可以在 Polygon 上调用 ExteriorRing 来获得线串。在你的例子中:

SELECT
X(PointN(ExteriorRing(Envelope(Poly)),1)) AS lat1,
X(PointN(ExteriorRing(Envelope(Poly)),3)) AS lat2,
Y(PointN(ExteriorRing(Envelope(Poly)),1)) AS lon1,
Y(PointN(ExteriorRing(Envelope(Poly)),2)) AS lon2
FROM boundaries.mt_us_zip5_2013_boundaries_polys_bin
WHERE zip = '00601';

关于mysql - 有没有办法从 MySQL 的 Envelope(Poly) 中选择 lat1、lat2、lon1、lon2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23555772/

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