4

私の小さなサイトは、アクティブなユーザーの場所をフィルターとして使用して、テーブルからアイテムのリストをプールする必要があります。「dvd」を検索するCraigslistを考えてみてください。ただし、結果はすべての DB からのものではなく、選択した場所によってフィルタリングされます。私の質問には 2 つのレベルがあります。

  1. craigslist のように行って、ユーザーに都市レベルの場所を使用するように依頼する必要がありますか? これに関する私の問題は、ハードコードされた手作りの場所のリストを生成する必要があることです。
  2. 私はa-la-zipCodeに行くべきですか?ユーザーに郵便番号を入力してもらい、郵便番号から同じ距離または特定の距離にあるすべてのアイテムをプールするというアイデア。

より洗練されたソリューションのように見えるので、私は郵便番号の方法を好むようですが、一体どのようにしてすべての郵便番号のDBを作成し、郵便番号12345を指定してすべての郵便番号を1マイルの距離で取得する関数を実装しますか?

多くのサイトが私のようなニーズを持っているため、これはかなり一般的な「タスク」であるはずです。

4

5 に答える 5

5

郵便番号データベースを取得することは問題ありません。この無料のものを試すことができます: http://zips.sourceforge.net/

それがどれほど最新のものかはわかりませんが、多くのプロバイダーのいずれかを使用できます。私たちはZipCodeDownload.comの年間サブスクリプションを持っており、おそらく 100 ドルで、郵便番号の重心の緯度/経度を含む最新の郵便番号データを毎月更新しています。

特定の半径内のすべての郵便番号のクエリについては、何らかの空間ライブラリが必要になります。緯度/経度を含む zip のテーブルがあるだけの場合は、データベース指向のメカニズムが必要になります。SQL Server 2008 にはこの機能が組み込まれており、そのような機能を SQL Server 2005 に追加するオープン ソース ライブラリ商用ライブラリがあります。オープン ソース データベース PostgreSQL には、この機能をそのデータベースに追加するプロジェクト PostGIS があります。ここにあります:http://postgis.refractions.net/

他のデータベース プラットフォームにもおそらく同様のプロジェクトがありますが、それらは私が認識しているものです。これらの DB ベースのライブラリの 1 つを使用すると、特定の半径内の任意の郵便番号 (または緯度/経度の列を持つ任意の種類の行) を直接クエリできるはずです。

別のルートに進みたい場合は、マッピング ライブラリで空間ツールを使用できます。ここには、SharpMapや、米国の無料のタイガー マップをデータ ソースとして使用できる他の多くの( Google が支援できる) などのオープン ソース オプションもあります。ただし、このルートはやや複雑であり、半径検索だけが必要な場合はパフォーマンスが低下する可能性があります。

最後に、Web サービスを調べることもできます。あなたが言うように、これは一般的なニーズであり、指定された郵便番号から指定された半径内のすべての郵便番号を提供できる、サブスクライブできる web サービスはいくつもあると思います。簡単な Google 検索でこれが見つかりました: http://www.zip-codes.com/free-zip-code-tools.asp#radius しかし、この件に関する検索には多くのリソースが必要です。

于 2008-08-15T23:12:26.323 に答える
0

いったいどのようにして[...]郵便番号12345を指定し、1マイルの距離ですべての郵便番号を取得する関数を実装するのでしょうか。

これを行う方法のサンプルを次に示します。

http://www.codeproject.com/KB/cs/zipcodeutil.aspx

于 2008-08-16T00:22:39.690 に答える
0

技術的には...PostGISはPostgresコミュニティのプロジェクトではありません...Postgresの上に構築されたスタンドアロンプ​​ロジェクトです。PostGISのヘルプやサポートが必要な場合は、Postgresではなくそのコミュニティにアクセスすることをお勧めします。

于 2008-09-16T05:50:34.017 に答える
0

PostGIS を使用できます。さらに、deCarta のマッピング ライブラリを使用しました。それらには、任意のデータ型をジオキーできるテクノロジーがあります。次に、これらを空間的にクエリできます。

免責事項:私はdeCartaで働いています

于 2008-09-22T07:54:57.323 に答える
0

半径 1 マイル以内にある都市を特定し、その情報をテーブルに格納する方が効率的ではないでしょうか。そうすれば、データベースで常に計算を行う必要はありません。

于 2008-11-18T22:42:52.083 に答える