0

私はちょうど私のDads会社の郵便番号距離計算機を開発しています。そこではすべての顧客がファイルに保存され、新しい潜在的な顧客が問い合わせをするたびに、システムは他のすべての顧客の郵便番号と照合します。問題は、距離の計算がまだ行われていないことです。距離を5マイルに設定してDT1郵便番号を入力すると、DT1、2、および3が近くにあることがわかります。DT2はDT1と2を示し、DT3はDT1、3、4を示します。これは意味がありません。しかし、50マイルの距離でBH2を入れると、ボーンマス、ドーチェスター、ポーツマス、バース、サウサンプトン、および他のいくつかの町が戻ってきます。これらはすべて正しいですが、DT郵便番号で何が起こっているのかわかりません。DT11は(5マイル未満)何も戻しませんし、DT10(それ自体を除く)も戻しません。

私はまず(x * x + y * y)の根を使用しました-これはピタゴラスの定理と呼ばれていると思います..その用語を使用してから何年も経っているのでわかりません!!

私も次のことを試しました:

  $sinstuff = sin(deg2rad($latitude))*sin(deg2rad($latitude2));
  $cosstuff = cos(deg2rad($latitude))*cos(deg2rad($latitude2))*cos(deg2rad($longitude-$longitude2));
  $sumstuff = $sinstuff + $cosstuff;
  $acosstuff = rad2deg(acos($sumstuff));
  $distance = $acosstuff*60*1.1515; //dunno what the 60 and 1.1515 is all about - I got this formula off a website.

これは奇妙な結果をもたらしているように見える式です。また、DT11とDT11の間の正確な距離は、+/-0.00000989{および他の多くの数値}のようなものであることに気付きました。確かに、DT11とそれ自体の間の距離は0なので、これも少し奇妙に思えます...

誰かがこれまでにこのようなことを成功させたことがありますか?

英国のすべての郵便番号とそれに対応する緯度と経度を含む大量のファイル(合計で約158MB)があります。私の目的は、指定された完全な郵便番号を他のすべての完全な郵便番号と比較するのではなく、特定の距離未満の市外局番を特定し、指定された郵便番号をこれらのエリア内にあるすべての完全な郵便番号と比較することです。これは効率的ですか?より効率的な方法はありますか?

これに関する助けをいただければ幸いです。

よろしく、

リチャード

PS距離を計算する方法を教えてくれるサイトがいくつかあることは知っていますが、それらのいずれも正しく機能させることができないようです(上からわかるように)。

PPSこれにはGoogleAPIを使用できることはわかっていますが、これはwampサーバーのローカルインストールで実行されるオフラインアプリケーションになるため、これはオプションではありません。インターネット接続を保証できない見本市での使用を目的としています。

4

2 に答える 2

1

あなたはharsine式を使用しています:

$l1 ==> 緯度
1 $o1 ==> 経度
1 $l2 ==> 緯度
2 $o2 ==> 経度 2

( http://www.go4expert.com/forums/showthread.php?t=339から取得)

関数 haversine ($l1、$o1、$l2、$o2) 
{
$l1 = deg2rad ($l1);
$sinl1 = 罪 ($l1);
$l2 = deg2rad ($l2);
$o1 = deg2rad ($o1);
$o2 = deg2rad ($o2);
return (7926 - 26 * $sinl1) * asin (min (1, 0.707106781186548 * sqrt ((1 - (sin ($l2) * $sinl1) - cos ($l1) * cos ($l2) * cos ($o2)) - $o1)))));
}

これにより、両方のポイント間の距離が得られます。

于 2010-09-07T10:08:27.597 に答える
1

郵便局は、すべての英国の郵便番号とそれに関連付けられた住所をリストする Postcode-Address ファイルを保持していると思います (緯度と経度の情報があるかどうかはわかりません)。過去にさまざまな PC 雑誌のカバー ディスクでこのコピー (完全に最新ではないかもしれません) を見たことがあります。確かに最新版は有料ですが、バックナンバーのカバー ディスクをチェックすることで出発点をつかむことができるかもしれません。

于 2011-07-05T08:19:20.657 に答える