国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

エリア全體に均等に分布していると思われる多數(shù)の座標(biāo)セットからいくつかの座標(biāo)を選択します
P粉262113569
P粉262113569 2024-02-26 16:23:02
0
1
530

地域と緯度/経度の位置列を含む MySQL テーブルがあります。各エリアには、20.000 など、多くの場所があります。マップ上に均等に分布しているように見える 100 など、いくつかだけを選択する方法はありますか?

分散は完璧である必要はありません。クエリ速度の方が重要です。 MySQL を直接使用してこれが不可能な場合は、非常に高速なアルゴリズムを使用して、均等に分散された場所を選択できます。

###前もって感謝します。

編集: コメント內(nèi)のいくつかのリクエストに答えます。データには何も処理するものはなく、単にエリアと位置の座標(biāo)だけです。例:

リーリー

特性を持つ列もいくつかありますが、これらはフィルタリングのみに使用されます。

nth行を同時に取得しようとしましたが、少し遅いとはいえ、うまくいったようです リーリー

Using

random() も使用できますが、少し遅くなります。

編集 2: 郵便番號をフォームに追加するのは簡単であることがわかりました。これで、郵便番號ごとにグループ化すると良い結(jié)果が得られそうです。唯一の問題は、非常に大きな領(lǐng)域があり、約 3000 の異なる郵便番號があり、そのうちの 100 個だけを取得すると、多くの郵便番號が 1 か所に表示される可能性があるため、PHP でさらに処理が必要になる可能性があることです。

編集 3、コメント內(nèi)の @RickJames の質(zhì)問に答えて、1 か所にまとめます:

    「一様分布」を定義してください - 緯度における一様分布ですか?二人は「近い」のではないでしょうか?等。
    • 「一様に分布している」というのは言葉の選択としては適切ではありません。地域內(nèi)のいくつかの場所を表示したいだけですが、すべてを 1 か所にまとめたわけではありません。
    「面積」は長方形ですか?六角形?それともゲリマンダリング?
  1. それらはおおよそ長方形と考えることができますが、それは実際には重要ではありません。重要なことを見逃していました。複數(shù)の地域の位置も表示する必要があります。領(lǐng)域は互いに遠(yuǎn)く離れている場合もあれば、隣接している場合もあります (ただし、重なり合うことはありません)。この場合、100 個のサンプルをさまざまな地域に配布したいと考えています。
    「地域ごとに 100」は固定ですか?あるいは「約100」かもしれない
  2. 修正されていません。約 100 ですが、見た目が良くない場合は変更できます
    テーブルに AUTO_INCRMENT ID はありますか?數(shù)字に違いはあるのでしょうか?
  3. はい、
      AUTO_INCRMENT
    • ID がありますが、ギャップがある可能性があります
    質(zhì)問は「地域ごとに 100」から「郵便番號ごとに 1」に変更されましたか?
  4. いいえ、問題は依然として同じです?!父鳐ē辚ⅳ?100 個表示しますが、すべてを同じ場所に表示するわけではありません」。方法は関係ありません。
    出力の合計行數(shù)と必要な行數(shù)はいくらですか?
  5. 合計行數(shù)はリージョンと規(guī)格によって異なりますが、1 リージョンあたり最大 40k です。合計が
      1000
    • を超える場合は、ランダムな 100 のみを表示します。 1000 以下の場合は、すべてを表示できます
    クエリを?qū)g行するたびに異なる例が必要ですか?
  6. 同じサンプルでも、異なるサンプルでも (同じ標(biāo)準(zhǔn)でも) OKです。
    • テーブルに列を追加しますか?
  7. それは私次第ではありませんが、適切な議論があれば、新しい列を追加できるかもしれません
P粉262113569
P粉262113569

全員に返信(1)
P粉982054449

これは、目標(biāo)を満たす 方法です。

  1. テーブルを前処理し、「重複」項目を削除する新しいテーブルを作成します。
  2. 新しいテーブルが十分に小さい場合、そのテーブルのフル スキャンは十分に高速である可能性があります。

「重複」については、2 つの項目が同じ位置にあることを検出する大まかな方法??として考えてください:

SELECT ROUND(緯度 * 5),
         ROUND(経度 * 3)、
         MIN(id) AS id_to_keep
     テーブルから
     1,2
ごとにグループ化

「5」と「3」は、保持する ID を増やす (または減らす) ために上 (または下) に調(diào)整できます。緯度/経度の配置により、「5」と「3」は異なります。この比率は、おそらくほとんどの溫帯地域に當(dāng)てはまります。 (赤道近くでは同じ量を使用し、高緯度ではより多くの量を使用します。)

小さな欠陥があります...2 つの非常に近いプロジェクトが、ROUNDs によって作成された境界を越える可能性があります。

元のテーブルには何行ありますか?上記のクエリは何行生成しましたか? ( SELECT COUNT(*) FROM ( ... ) x; )

最新のダウンロード
詳細(xì)>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート