2

ユーザーが郵便番号を入力するか、iframe で Google マップを開き、マップをクリックして場所を選択できるようにするコントロールがあります。現在、これはすべて機能しており、iframe はクリック イベントから緯度/経度を親に送り返します。

また、郵便番号にマップされた緯度/経度フィールドを使用して設定された db テーブルもあります。

ただし、緯度/経度の組み合わせが、データベースにあるエントリと完全に一致することはほとんどありません。そこで、最も近い郵便番号を一致させる最善の方法を探しています。

ユーザーは手動で郵便番号を入力できるので、正確さ (つまり、ユーザーが郵便番号間の境界をクリックした場合) について完全に心配する必要はありませんが、可能な限り近い値にしたいと考えています。今のところ、米国の場所だけを心配する必要があります。

私の現在の解決策のアイデアは、許容範囲 (.2?) を考え出し、緯度/経度 + 許容範囲のデータベースを照会することです。次に、結果セットから最も近い一致を選択します。

以前にこれを行ったことがある人、または私が提案した解決策よりも優れた解決策を持っている人からの連絡をお待ちしています。必要なデータはすべて揃っているので、サービスの使用には興味がありません。

提案されたソリューションに関して私が懸念していることの 1 つは、適切な許容範囲を把握することです。このプロジェクトは農村地域を対象としており、これらの地域の緯度/経度エントリがどの程度分散するかはわかりません。

編集: これが私のテーブル構造です: zip5 | 都市 | 状態 | 緯度 | 緯度 ロン | 郡

zip5 は主キーです

4

3 に答える 3

2

1 分の緯度 (つまり 1/60 度) = 1 nm、または約 6,000 フィート。したがって、5分。緯度 = 約 30,000 フィート = 約 6 法定マイル。

経度は極に向かって狭くなりますが、米国本土を北緯約 36 度と見なすと、ギブ オア テイク (かなり同意しますが、この適用には概算で十分なはずです)、1 分の経度 ~ 1 nm * cos 36 ~ 6,000 * 0.81 = 4,850 フィート。

郵便番号 (または少なくとも 5 桁の最初のセット) は郵便局を表し、農村地域では 20 ~ 30 マイル離れている可能性が高いため、その約 1/2 の緯度経度グリッドを使用するよりも悪い結果になる可能性があります。 10分と言います。緯度×12分 経度。それぞれ 1/6 度と 1/5 度が便利です。

于 2013-03-08T22:38:25.787 に答える
1

独自のデータベース ルックアップをやめて、 GeoNamesなど、既にこれを行っている Web サービスを使用したい場合があります。SO の質問を参照してください緯度、経度から郵便番号を取得しますか? 詳細については。あなたがやろうとしていることはすでにやっているように見えますが、すべての計算と公差はありません。

于 2013-03-08T22:43:10.170 に答える
1

この問題に対する標準的な解決策は、R ツリーを使用します。

于 2013-03-08T23:23:35.383 に答える