gpt4 book ai didi

多边形查询和数据库设置中的 MySQL 点

转载 作者:行者123 更新时间:2023-11-29 11:31:01 25 4
gpt4 key购买 nike

我正在尝试设置一个由区域组成的表 POLYGON 。我希望能够查询表以查找是否给定 POINT是否位于任何存储区域。

我读到 MySQL 空间扩展提供了两种类型的几何操作函数:

  • ST_*用于操作对象形状
  • MBR*用于在最小边界矩形上进行操作

我尝试遵循 this post 中有效的方法。以下是我设置表格的方法:

CREATE TABLE `region` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`rpolygon` polygon NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

从 QGIS 获取多边形定义后,我在表中插入了一些记录。我从 here 了解到如何将空间记录插入表中。这是我在表中插入记录的方法

SET @g= ST_GeomFromText('Polygon ((-117.84293016891291472 33.64825334189644224, -117.8428418279120109 33.64599663087331294, -117.84048874488789238 33.64467151585973426, -117.84002294688312418 33.64517746886491523, -117.83983020288114574 33.64549067786812486, -117.83981414088098916 33.64605284787388939, -117.83983823388122403 33.64646242887808825, -117.84012734988419879 33.64708081588442212, -117.84053693088839054 33.64743417988804453, -117.84130790689629009 33.6479401328932326, -117.84199054190328582 33.64815696989545302, -117.84243224690781915 33.64822121789610776, -117.84293016891291472 33.64825334189644224))');
INSERT INTO region
VALUES(1, 'NORTH-EAST', @g);

为了进行完整性检查,我尝试使用各种方法运行 Point in Polygon 查询 - MBRContains、ST_Contains 等,所有这些都会导致没有结果或 NULL。下面是我尝试过的示例查询:

SELECT * FROM region where ST_Contains(rpolygon, ST_GeomFromText('Point(33.646201 -117.841949)'));

我不确定出了什么问题。我是否错误地存储了值,您是否以不同的方式设置了地理表?或者我是否错误地查询了。我在网上找不到任何好的教程或可以遵循的示例来进行此类设置。任何指示都会有帮助!

最佳答案

该死!我觉得自己好傻啊!在我定义 POINT 的查询中,坐标的顺序是错误的。

无论如何。我希望这对于任何想要开始使用 mysql 进行点内多边形查询的人来说都是一个很好的简短教程

关于多边形查询和数据库设置中的 MySQL 点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37425990/

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