6

Zillow が自由に公開している Shapefile データに基づいて、場所の近隣を特定しようとしています。

私はシェープファイル形式について本当に何も知らず、オンラインでチュートリアルを見つけるのに苦労していますが、基本的には緯度/経度のペアを取得し、それをシェープファイル データに対して実行して、対応する地域を特定したいと考えています。

誰かが私を正しい方向に向けることができますか? どこから始めればよいかさえわかりません。

これは、私が Shapefile ファイルを取得した場所です: http://www.zillow.com/howto/api/neighborhood-boundaries.htm

4

2 に答える 2

9

これは、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から簡単なクエリで明らかに実行できます。

于 2010-04-11T05:02:16.367 に答える
3

このトピックに関する回答をまだ受け取っていない場合、提案している方法は最も効率的なメカニズムではありません。これをより効果的な方法で行う方法について考えてみます。

シェープファイルをGeoSpatialデータベース/データストアにインポートすることから始めます。

比較の緯度/経度パターンは引き続き使用できますが、それはあなたのためにより多くの仕事を引き起こすだけです。地理空間データベース/データストアは、ジオメトリ(ポイント、ライン、ポリゴン)を比較する機能を提供します。緯度と経度を使用する代わりに、すべてのジオメトリタイプが単一のジオメトリ列に格納されます。これらの関数を使用すると、距離、サイズ、オーバーレイ、交差、およびその他の比較を比較できます。

シェープファイルはどのように変換されますか?

シェープファイルは、表形式のデータのコレクションであり、近隣の名前と追加のフィールドを考え、それらのレコードを空間的に表された場所にマップする方法です。これは、ファイルのグループ化における地理空間データベースです。頭に浮かぶ比較は、データベースとしてアクセスを使用している人と、従来のサーバーデータベースを使用している人です。シェープファイルを地理空間データベースに変換するツールセット/ライブラリが利用可能です。GDALを検索すると、詳細情報を見つけることができます。

これがお役に立てば幸いです。

于 2010-04-09T00:15:51.993 に答える