2012-01-12 8 views
0

大丈夫ですので、私は地理座標で完全なプロパティ情報の非常に大きなデータベースを持っています。私ができる必要があるのは、「指定された矩形またはポリゴンの内部にあるすべてのプロパティを私に渡す」という質問を実行することです。ユーザインタフェースは、ユーザが(地図システムを使用して)矩形または多角形の点を定義することを可能にする。これらの座標はクエリに入り、SQLはその領域内のプロパティのリストを返す必要があります。ポリゴンが不可能な場合は、少なくとも四角形が参考になります。私は既に半径検索の方法を知っています。多角形/矩形内のポイントのsqlクエリ

提供できるヘルプをお試しいただきありがとうございます。

答えて

0

Within(geom1, geom2)を使用すると、geom1がgeom2内に空間的に存在するかどうかを確認できます。 あなたのクエリが

select some_thing from your_table where Within(some_point, 
     GeomFromText('POLYGON(some_polygon)')); 
3

あなたのSQLコードは、この
SQLクエリ

SELECT 
    * 
FROM areas area 
WHERE 
    ST_CONTAINS(`area`.`polygon`, GEOMFROMTEXT('POINT(34.262714 56.262714)')) = 1 

表も

CREATE TABLE IF NOT EXISTS `areas` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
    `polygon` polygon NOT NULL, 
    `area_name` varchar(70) NOT NULL, 
    PRIMARY KEY (`id`), 
    SPATIAL KEY `polygon` (`polygon`) 
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; 

注意するようなものでなければならない、のようになります。 、大きなテーブル用InnoDBがSPATIALインデックスをサポートしていないため、MyISAM を使用する必要があります。
MySQLは5.6以降のST_CONTAINSをサポートしています。より多くのあなたの助けのための http://www.mysqlperformanceblog.com/2013/10/21/using-the-new-spatial-functions-in-mysql-5-6-for-geo-enabled-applications/