0

私はこれまでにいくつかの読書をしました、そして私は岐路に立っています。

私の状況はこれです:

  • 半径のあるlat/lng値(これらを「都市」と見なすことができます)のリストを含むテーブル
  • lat/lngを含む移動値のリストを含むテーブル

私の要件は、移動のリストを返し、最も近い都市を含めることです(半径内にある場合)。これまで、PHPの半正矢関数を使用して、返すレコードごとにこれを実行しましたが、特に効率的ではありません。

私が見つけた2つのオプションは、次のいずれかです
。1 / MySQLでストアドプロシージャを作成して、その側のHaversineを実行します(このようなもの:近接検索
2/円の代わりに都市を配置する「バウンディングボックス」方式を使用します。これは大きな問題ではなく、SQLを単純化することができます。

ただし、場合によっては、ポイントが左上と右下の間にあるかどうかを判断する一般的なロジックは、latとlngが負の場合に機能しないことがあります。PHPでは、これを回避するために、左上のlat / lngが右下よりも大きいかどうかを確認する簡単な「if」を実行し、結果に応じてAND/ORを使用します。

4

1 に答える 1

0

いくつかの追加の読書の後、私はここSOでこの質問を見つけました。

https://stackoverflow.com/a/5548877/1749630

この答えは、私が正しい方向に向けるために必要なものでした。このようにして、私は現在、都市を見つけるために副選択を使用しています。

誰かがこれよりも良い答えを投稿した場合、私はこれの代わりにそれをマークします:)

于 2012-12-05T12:31:01.737 に答える