問題タブ [geohashing]
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.
ipython - Geohash モジュールはインストールされていますが、インポート エラー
Windows 10 で ipython Jupyter ノートブックを使用しています。cmd で pip install geohash を使用して Geohash をインストールしました。geohash( import geohash) を使用しようとすると、次のエラーが発生します。
geohash がインストールされているかどうかをもう一度確認してから、再インストールしようとしているときに次のメッセージが表示されました。
再び geohash をアンインストールします。github から geohash を手動でインストールしましたが、同じ問題が発生しました: インポート エラー
node.js - MongoDB:地域と最大ポイントを指定して、地理的な場所によってドキュメントをクラスター化しますか?
次のようなドキュメントを含むMongoDBコレクションに基づいて、部分母集団の「ヒートマップ」を含むマップベースの視覚化を開発しようとしています:
データベースには何十万もの個別の場所があります。それらは重複しません。つまり、"New York City" と "Manhattan" の 2 つの個別のエントリはありません。
目標は、Leaflet.js といくつかのプラグインを使用して、このデータのさまざまな視覚化をレンダリングすることです。Leaflet は、クライアント側でデータをクラスタリングするのに非常に優れています。したがって、密度値を含む 1000 の場所を渡すと、個々の値をすべて処理するだけで、関連する領域のヒート マップをレンダリングできます。
問題は、マップをズームアウトして全世界を表示するとします。そのすべてのデータをクライアントに送信し、スムーズな視覚化を行うのに十分な速さでその情報を処理させることは、不可能ではないにしても、非常に非効率的です。
したがって、私がする必要があるのは、サーバー側のデータを自動的にクラスター化することです。これは、MongoDB クエリで実行できることを望んでいます。ジオハッシュは、どのポイントがどのクラスターに属しているかを判断するための良い出発点である可能性があることを読んだことがありますが、誰かが以前にこれとまったく同じことを行ったことがあると確信しており、それよりも優れた洞察を持っている可能性があります. 理想的には、次のようなクエリを node.js スクリプトに送信したいと考えています。
これにより、返されるデータポイントの最大数、またはそれらの線に沿った何かが与えられた場合、その指定された地理的領域内にある個々のポイントの数に基づいて、クラスタリングをどの程度細かくする必要があるかが決まります。次のようなデータが返されます。
...ここで、「clusterlocation」はクラスター内のドキュメントのすべての場所の平均のようなものであり、「total_age_6_11」は「Subpopulations.Age.6_11」に対するこれらのドキュメントの値の合計です。
これは純粋にMongoクエリでできることですか? それをうまく行うための「試行錯誤された」方法はありますか?
database - フィルタリングなしで地理的時間データの範囲クエリを実行するにはどうすればよいですか?
ソートされたデータに対して範囲クエリを使用するときに、(x,y) または (lat, log) を格納して、特定の空間範囲内のすべてのポイントを取得する方法を理解していると思います。Geohash は、緯度 (奇数ビット) と対数 (偶数ビット) を交互にすることでこれを実現します。このようにして、x の解像度が上がると、y の解像度も上がります。ヒルベルト曲線のような他の方法も、両方の次元で解像度を高めるこの基本原則に依存しています。しかし、余分な時間次元を追加することで何が達成されるのか理解できません。たとえば、GeoMesa では、サイトに応じて "YXTTYXTTYX" のようなインデックスを使用しています。私が得られないのは、TT ビットが「最小 < t < 最大間隔内で X、Y 範囲内のすべてのポイントを取得する」などの質問を許可する方法です。地理空間インデックス作成におけるこれらのビットと余分な次元の目的を誤解していますか?
私が理解しているように、それらのビットをそこに入れると、空間解像度が上がるにつれて時間解像度が上がります。Ts が [10] [00] のようなビットを持っているとしましょう。最初のビットは空間を 2 つのチャンクに分割します。0 は半分未満を意味し、1 は半分以上を意味します0 = year < 2000, 1 = year > 2000。これ[10]は につながり2000 < t < 2500、次のビットは およびにつながり0ます。このアプローチを使用すると、特定の空間範囲内の特定の時間範囲内のすべてのイベントを取得する方法がわかりません。これが他に何に使用できるかは明確ではありません。私がこれまで見てきたすべての地理空間に関する論文やプレゼンテーションは、主に空間ハッシュに焦点を当てており、余分な次元の使用法については詳しく説明していません。2000 < t < 225002000 < t < 2125
java - Java文字列hashCodeが、異なるが類似したgeohash文字列で多くの衝突を起こすのはなぜですか?
Geohash 文字列は、私のスパース ロジスティック回帰モデルの機能です。そこで、機能 ID を取得するために、Java 文字列 hashCode を使用して geohash 文字列に int 値を生成しました。しかし、同様の geohash 文字列に対して hashCode メソッドのパフォーマンスが悪いことがわかりました。異なる機能が同じ機能 ID を持っているため、機能が似ていてもモデルの最適化に問題がある可能性があります。たとえば、類似した geohash 文字列のペアは同じ hashCode を持ちます。
geohash ジェネレーター メソッドと Java hashCode メソッドの間に何らかの関係があると思います。だから、誰でも本当の理由とジオハッシュ文字列の衝突を減らす方法を説明できますか?