使用地理空间类型的边界框MySql中的点



我正在尝试查询SQL以返回位于边界框内的点。我找到的最好的答案是这样的想法:

lng1 <= lng2 AND (lng1 <= lng AND lng <= lng2) /* both edges on same side */
OR
lng1 >  lng2 AND (lng1 <= lng OR  lng <= lng2) /* edges on opposite sides */

这可以在这里看到:DBfiddle

然而,我使用的是更新版本的MySQL,我将坐标存储为"点"类型。我一直在尝试了解这个新版本的MySQL(8(是否可以让我更好地选择在边界框内有点的行,但我运气不好。这种能力存在吗?

MySQL对于简单的边界框可以很容易地做到这一点,但它不支持反恶意的交叉框,所以这会很复杂。

若你们并没有任何穿越反美的盒子,你们可以简单地写出类似的表达式

ST_Intersects(
ST_MakeEnvelope(Point(lng1, lat1), Point(lng2, lat2)), 
Point(lng, lat))

但是,由于在MySQL ST_MakeEnvelope中只支持笛卡尔CRS,因此您需要自己为反无菌交叉框进行编码,例如,通过构建两个框-一个从lng1到180,另一个从-180到lng2。

最新更新