gpt4 book ai didi

包含多边形的 MYSQL 多边形

转载 作者:行者123 更新时间:2023-11-29 00:17:54 28 4
gpt4 key购买 nike

我有一个表,用于将表上的段存储为多边形。然后我想获取所有被另一个多边形接触的线段,例如正方形或圆形。图片上:http://img.acianetmedia.com/GJ3

我将灰色小框表示为段和 big_BOX。使用此查询:

SELECT id, position, ASTEXT( value ) 
FROM segment
WHERE MBRCONTAINS( GEOMFROMTEXT( 'POLYGON(( 20.617202597319 -103.40838420263,20.617202597319 -103.3795955521,20.590250599403 -103.3795955521,20.590250599403 -103.40838420263,20.617202597319 -103.40838420263))' ) , value )

我在 big_BOX 中得到了 4 个 100% 的片段,但是如何获得 big_BOX 触及的所有段?

结果必须是 16 个片段。

最佳答案

一个简单的解决方案:您应该使用 MBRIntersects 而不是 MBRContains,它将返回与您的大盒子完全或部分跨越空间的任何结果。

谨慎而完整的解决方案:根据您的数据和您的解决方案的其余部分(特别是形成多大的盒子),由于您的坐标使用的小数位数,您可能会返回超过 16 个线段。然而,尽管这不太可能,而且只有在极端情况下才有可能,但它只是一个考虑的可能性。

在小数点后 7 位,您的精度为 1.1 厘米(在赤道处)。如果您的大盒子看起来与 4x4 段集完全对齐,则可能(在绝对最大程度上)您实际上得到 36 (6x6) 的结果集,因为坐标在所有边上都重叠到下一个段中即使是最微小的测量。 16 到 36 之间的任何 4 的倍数都是可能的。

同样,这在很大程度上不太可能,但如果你想始终确保结果集为 16,你可以使用 Area(Intersection(@geom1, @geom2)) 等方法的组合来计算你的大盒子和相交段之间的交集地理,对该列降序排序并取前 16 个结果。

虽然这可以保证最合适的 16 段,但它会增加所有查询的额外开销,以适应最极端的情况。

选择权在你。希望对您有所帮助。

关于包含多边形的 MYSQL 多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22275739/

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