これは、postgresqlの空間拡張であるPostGISを使用した例です。同様の拡張機能がmysql、oracle、mssql、sqlite、および間違いなく他のデータベースにも存在します。 これを機能させるには、 PostGISをインストールする必要があります。
まず、シェープファイルをSQLファイルに変換する必要があります。
fmark@fmark-laptop:~$ shp2pgsql -c Desktop/zillow/ZillowNeighborhoods-AK.shp zillowak > Desktop/zillow/ZillowNeighborhoods-AK.sql
Shapefile type: Polygon
Postgis type: MULTIPOLYGON[2]
次に、データベース(この場合はデータベース「gis」)でSQLを実行して、SQLファイルを空間的に有効なテーブルに変換します。
fmark@fmark-laptop:~$ psql -d gis -f Desktop/zillow/ZillowNeighborhoods-AK.sql
SET
BEGIN
...
COMMIT
この時点で、空間クエリを実行するため、おそらく空間インデックスを作成する必要があります。
fmark@fmark-laptop:~$ psql -d gis
psql (8.4.2)
Type "help" for help.
gis=# CREATE INDEX idx_neighborhoods ON zillowak USING gist(the_geom);
CREATE INDEX
gis-# \q
ここで、緯度/経度(この例では-149.309W、60.985S)がある場合、それがどの近隣にあるかを見つけることができます:fmark @ fmark-laptop:〜$ psql -d gis psql(8.4.2)Type"ヘルプ」を参照してください。
gis=# select gid, state, county, city, name, regionid from zillowak WHERE ST_CONTAINS(the_geom, GeomFromText('POINT(-149.309 60.985)', -1));
gid | state | county | city | name | regionid
-----+-------+-----------+-----------+---------------+----------
29 | AK | Anchorage | Anchorage | Turnagain Arm | 275783
(1 row)
gis=# \q
fmark@fmark-laptop:~$
この最後の段階は、PHPから簡単なクエリで明らかに実行できます。