Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MBR与MySQL相交,返回空_Mysql_Geometry_Gis - Fatal编程技术网

MBR与MySQL相交,返回空

MBR与MySQL相交,返回空,mysql,geometry,gis,Mysql,Geometry,Gis,我有一个MySQL 5.6空间数据库,其中一个表包含大约50000个多边形。我有一个WKT多边形形式的边界框的坐标,我需要从数据库中获取全部或部分位于该框内的所有多边形 我目前正在尝试以下代码,但是返回的结果集为空 SELECT * FROM `polygons` WHERE mbrIntersects(ogc_geom,GeomFromText('POLYGON(-18 120,-10 120,-10 140,-18 140)')) 我试过MBRContains、ST_Contains、MB

我有一个MySQL 5.6空间数据库,其中一个表包含大约50000个多边形。我有一个WKT多边形形式的边界框的坐标,我需要从数据库中获取全部或部分位于该框内的所有多边形

我目前正在尝试以下代码,但是返回的结果集为空

SELECT * FROM `polygons` WHERE mbrIntersects(ogc_geom,GeomFromText('POLYGON(-18 120,-10 120,-10 140,-18 140)'))
我试过MBRContains、ST_Contains、MBRWithin和ST_Intersects。我还试着切换经度和纬度。所有这些都没有起到任何作用

我也试过以下方法

SELECT mbrIntersects(ogc_geom,GeomFromText('POLYGON(-18 120,-10 120,-10 140,-18 140)')) FROM `polygons`
以上只是返回了所有结果,并没有真正取得任何成果

因此,简而言之,我想知道如何从MySQL数据库中检索所提供WKT多边形中的所有多边形

谢谢

有两个问题:

  • 多边形未闭合,最后一点必须与 第一点
  • 您需要一个额外级别的括号作为多边形 由一个外部形状和一组可选的内部形状组成 (“洞”)
  • 工作查询:

    SELECT * FROM `polygons` 
     WHERE mbrIntersects(ogc_geom,
       GeomFromText('POLYGON((-18 120,-10 120,-10 140,-18 140, -18 120))'));
    
    请注意,双
    多边形之后的
    和额外的第五个坐标对
    -18 120
    与第一个坐标对相同使用从
    多边形中选择astext(ogc_geom)
    ; 在我的情况下,返回

    多边形((4868,7668,76106,48106,4868))


    多边形()中缺少代码()函数。更多详细信息请查看mysql文档。

    谢谢。事实上,我已经尝试过将其关闭,并且总是有额外的括号。似乎我从来没有尝试过所有这些东西,因为它现在工作正常。谢谢,以防万一它会帮助其他人。正确的顺序是mysql的经度、纬度。您也可以在这里调整你的多边形。没有直接关系,但可能会帮助其他人诊断问题,因为MBR上的文档很少。MySQL中没有固定的lat/lon顺序…顺序是应用程序的选择