【问题标题】:Finding regions that include a point with MySQL使用 MySQL 查找包含点的区域
【发布时间】:2011-03-09 12:38:12
【问题描述】:

我正在使用 MySQL GIS 和 Spatial Extensions。

我有一张表格,其中包含由纬度、经度和半径描述的“圆形”区域。

我需要一个查询来获取其区域包括由纬度和经度定义的给定点的所有行。 “圆形”区域可以相交,因此该点可以落在多个区域中。

【问题讨论】:

标签: mysql gis spatial


【解决方案1】:

我想出了一个解决方案,我想在这里发布它只是为了对此发表意见。请注意,上面的表结构稍作修改,添加了一个新列“location POINT”,该列使用每次插入时的纬度和经度构建。

CREATE PROCEDURE GetRequestsAroundLocation( IN lat DOUBLE, 
                                            IN lon DOUBLE )
BEGIN
  SET @answerLocation = GeomFromText( CONCAT( 'POINT( ', lat, ' ', lon, ' )' ) );

  SELECT id, token, latitude, longitude FROM Request 
  WHERE answerId = -1 AND 
        Intersects( @answerLocation, 
                    GeomFromText( CONCAT( 'POLYGON((', latitude - radius, ' ', longitude - radius, ',', 
                                                       latitude + radius, ' ', longitude - radius, ',', 
                                                       latitude + radius, ' ', longitude + radius, ',', 
                                                       latitude - radius, ' ', longitude + radius, ',', 
                                                       latitude - radius, ' ', longitude - radius, '))' ) ) ) AND 
        SQRT( POW( ABS( lat - latitude ), 2 ) + POW( ABS( lon - longitude ), 2 ) ) < radius;  
END //          

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-11
    • 1970-01-01
    • 2013-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多