問題タブ [geographic-distance]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - SQLで2つの緯度/経度の間の距離を効率的に見つける
私は数十億行のデータを扱っており、各行には開始緯度/経度と終了緯度/経度が関連付けられています。各始点/終点間の距離を計算する必要がありますが、非常に時間がかかります。私は本当に自分がしていることをより効率的にする必要があります。
現在、関数(以下)を使用して、ポイント間の斜辺を計算しています。これをより効率的にする方法はありますか?緯度/経度を空間地理としてキャストし、STDistance() 関数 (インデックスなし) に組み込まれた SQL を使用することは既に試みましたが、これはさらに遅くなりました。
どんな助けでも大歓迎です。精度が少し低下するとしても、機能を高速化する方法があることを願っています(最も近い100mはおそらく問題ありません)。前もって感謝します!
coordinate-systems - 余弦の球面法則で使用される座標系は?
球面余弦法則は、地球上の 2 点間の距離を計算するために使用される式です。その式で使用されている座標系について説明している参考文献を探していましたが、式で使用されている座標系については誰も議論していません。誰か助けてくれませんか?
mysql - SQL SUM 句の結合
同じデータのサブセットに対して 4 つのかなり大きな MySQL クエリを実行する必要があるスクリプトがあります。それらを 1 つのクエリに結合する方法はありますか?
クエリは次のようになります。
お分かりのように、これは緯度と経度の地理的なクエリです。クエリが行うことは、最初に合計テーブル ( FirstCut
) の単純な正方形のサブセットを作成し、次に三角関数を実行して円形の領域を取得することです。
私が知る限り、遅いクエリの部分は です。クエリFirstCut
が描画しているテーブルには約 280 万行あるためです。FirstCut
ですが、この例では約 27,922 行しかないため、比較すると三角部分は非常に高速です。
問題は、これらのいくつかを実行する必要があることです。FirstCut
ただし、同じ領域を中心とする異なる半径であるため、すべて同じ を使用できます。4 つではなく 1 つのクエリでこれを実行できるようにしたいと考えています。
2 番目のクエリは次のようになります。
ご覧のとおり、最後の WHERE 句がわずかに異なることを除いて、他のものとまったく同じです。条件は半径が小さいだけです (79.85 ではなく 48.57)。
これら 2 つのクエリを効率的な方法で 1 つのクエリに結合するにはどうすればよいですか?
CASE 句を使用してみました -- これが最善の方法ですか?
mysql - MySQLは、緯度、経度に基づいて特定の距離内にあるすべての場所を取得します
名前、緯度、経度が入力された場所のテーブルがあります。データベースには繰り返しがあります (例: "pub llc, 40.75111,-60.4211" と "pub llc, 40.75112,-60.4211")。ここでは名前は同じですが、距離は座標がわずかにずれています。テーブルの各行について、潜在的な競合を検索して表示したいと思います。これは、同じ名前を持つ 2 つの近くの場所の間の距離 (たとえば、100 フィート) に基づいています。次の距離式があります。
このクエリを生成するのを手伝ってくれる人はいますか?
r - 最短距離に基づいて緯度経度観測に名前を割り当てる方法
2 つのデータフレームがありdf1
ます。緯度経度座標の観測値が含まれています。df2
緯度経度座標の名前があります。df1$name
観測ごとに、df2
その観測までの距離が最も短い名前を持つ新しい変数を作成したいと思います。
のサンプル データdf1
:
のサンプル データdf2
:
この回答に基づいて、geosphere
パッケージで距離マトリックスを作成しました。
しかし、観測ごとに最短距離を選択し、対応する名前を に割り当てるにはどうすればよいdf1$name
でしょうか?
r - 緯度経度観測に複数の名前を割り当てる方法
2 つのデータフレームがありdf1
ます。緯度経度座標の観測値が含まれています。df2
緯度経度座標の名前があります。df1$names
観測ごとに、df2
その観測から指定された距離内にある名前を持つ新しい変数を作成したいと考えています。
のサンプル データdf1
:
のサンプル データdf2
:
geosphere
パッケージで距離行列を作成する:
結果の距離はメートル単位です(少なくともそうであると思います。そうでなければ、距離行列に何か問題があります)。
指定された距離は で計算され(df1$cat)^2)*1000
ます。を試しdf1$names <- df2$latlonloc[apply(distmat, 1, which(distmat < ((df1$cat)^2)*1000 ))]
ましたが、エラー メッセージが表示されます。
これはおそらく正しいアプローチではありませんが、必要なのは次のとおりです。
df1$names <- #code or function which gives me a string of names which are within a specified distance of the observation
観測から指定された距離内にある名前で文字列を作成するにはどうすればよいですか?
r - 定義された距離を半径とする円を地図に描く
マップをプロットし、特定のポイントにキャプションを付けることができます。
その点を中心とする円をプロットすることもできます。
ただし、円のサイズを制御したいと思います。特に、data.frame、matrix、または list に含まれる複数の場所の周りに半径 100 マイルの円を描きたいと考えています。
sql - テキストフィールドの場合、地理に基づいてSQL Server 2012でポイントを選択するにはどうすればよいですか
さて、私はこのデータベースに行き詰っていて、「近くの」ページを作成しようとしています。
私が(残念ながら)持っているのはlat
と であるlon
列ですnvarchar
。他の場所でテキストとして必要なため、変換できません。
マップ ポイントの中心を取り、1 マイルほど以内にいくつかの点を配置したいと思います。
これら 2 つのテキスト フィールドを 1 つの座標列に結合して比較することはできますSTDistance
か?
このようなことをするには..
または、より良い方法をお勧めできますか?
前もって感謝します!