sql >> データベース >  >> RDS >> Mysql

範囲の緯度/経度座標を検索します

    あなたがしていることのいくつかのバージョンは正しいですが、特にMyISAMを使用していて、Rツリー空間インデックスを作成できる場合は、実際のジオメトリタイプを使用したいと思うでしょう。サポートされている任意のタイプ(つまり、point)の列を持つことができます 、polygon )、またはキャッチオールのgeometry タイプ:

    mysql> create table spatial_table (id int, my_spots point, my_polygons geometry);
    Query OK, 0 rows affected (0.06 sec)
    

    次に、WKT構文でクエリと更新を行います。

    mysql> insert into spatial_table values (1, GeomFromText('POINT(1 1)'), GeomFromText('POLYGON((1 1, 2 2, 0 2, 1 1))'));
    Query OK, 1 row affected (0.00 sec)
    
    mysql> insert into spatial_table values (1, GeomFromText('POINT(10 10)'), GeomFromText('POLYGON((10 10, 20 20, 0 20, 10 10))') );
    Query OK, 1 row affected (0.00 sec)
    

    次に、終点がポイント1 =経度-増分、lon-増分、y =経度+増分、緯度+増分、つまりここでは+-が1の線ストリングの最小境界矩形に対して、クエリ(つまり近傍)を実行できます。 :

    mysql> select * from spatial_table where MBRContains(GeomFromText('LINESTRING(9 9, 11 11)'), my_spots);
    +------+---------------------------+-----------------------------------------------------------------------------------+
    | id   | my_spots                  | my_polygons                                                                       |
    +------+---------------------------+-----------------------------------------------------------------------------------+
    |    1 |              [email protected]      [email protected] |                    [email protected]      [email protected]      [email protected]      [email protected]              [email protected]      [email protected]      [email protected] |
    +------+---------------------------+-----------------------------------------------------------------------------------+
    1 row in set (0.00 sec)
    

    これは、経度と緯度を表す一連のフロートで算術演算を実行するよりもはるかに優れたパフォーマンスを発揮します。ところで、サンフランシスコの場所については、次の定数が経度と緯度のkmと度の間で変換するのに非常にうまく機能します(つまり、サンタクルスのきれいな正方形の地図が必要な場合):

    lonf 0.01132221938
    latf 0.0090215040
    

    つまり、(x +-2 * lonf、y +-2 * latf)は、関連する$lat_floorを提供します。 興味のあるポイントの周りの2km幅の男の子の等の値。



    1. XAMPPでmysqlデータベースを復元する方法は?

    2. H2 runscriptコマンドは、すべてのテーブル名を大文字に変換します

    3. mysql:information_schemaでアクセスが拒否されました

    4. MYSQL-フェッチされた配列から特定の値を選択します