問題タブ [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.

0 投票する
1 に答える
318 参照

geocoding - ジオコード範囲の衝突を回避する

不均一な場所の大きなテーブルから場所エンティティ (「マディソン スクエア ガーデン」、「サン ディエゴ動物園」など) を抽出しています。新しいテーブルで複数のエンティティを回避しようとしています。信頼できる住所はありませんが、ローカル範囲内の住所を抽出しようとしています。

これは、30km の地理的範囲内で類似した名前を数えて照合することで行っています。

私は地理コード化された都市テーブルを調べており、都市ごとに緯度/経度の範囲を作成し、その範囲内の場所の名前を抽出しています。

例としてマディソン スクエア ガーデンを使用します。会場は、都市テーブル内の異なる都市から複数回重複します。たとえば、マンハッタン、ニューアークなどはすべて NYC の範囲と重複する可能性が高く、NYC の一部のプロパティでは複数のエントリが発生する可能性があります。

範囲を狭い範囲に設定することはできません。場所が見つからないか、さらに悪いことに、通り/都市/ジオコーディングされた適切な場所がないことが多いため、より多くのエントリが作成されることになります (ただし、30 km の範囲は機能するようです)。かなりよく)。

ジオハッシュにより、重複を見つけて複数のエントリを回避できる境界ボックスを作成できるようになることを望んでいましたが、私が見つけたものに基づいているとは思えません。

理想的には、セルに入れることができるハッシュまたはその他の値を探していると思います。一意の場所の名前/ハッシュを保存して、mysql が単一の場所に対して複数のエントリを作成しないようにします。

各エントリの適切な番地はありません (いくつかありますが)。そのため、番地レベルの精度を取得し、範囲を使用しないという選択肢は実際にはないようです。また、一貫した都市名がないため、最終的には NYC、ニューヨーク、マンハッタンなどになります。しかし、私の都市テーブルは、ニューヨークを含めて優れていますが、NYC は含まれていません。

_--------------EDITED-------------------- Geohash.org をもう一度見た後、私はオンになっていると思います少し粒度が欠けているだけです。ハッシュの最初の 2 文字を取得すると、大きすぎる範囲内で一貫性が保たれます。たとえば、ビクトリア、紀元前からポートランドまでのすべて、または最初の 2 文字がすべて「C2」です。ただし、3 文字のソリューションでは、NYC は 'dr5' で始まり、Newark もそうですが (これは良いことです)、Hackensack は 'dr7' です。さらに悪いことに、バノーバー、紀元前。は「C2b」ですが、リッチモンド bc の郊外は「C28」です。

0 投票する
8 に答える
10830 参照

google-app-engine - GoogleAppEngineのジオハッシュ

GWTとAppEngineを使用してWebアプリケーションを作成しています。私のアプリケーションは、緯度、経度に基づいてアイテムを投稿およびクエリする必要があります。

グーグルの分散データベース設計の結果として、不等式のセットを単純に照会することはできません。代わりに、彼らはジオハッシュを行うことを提案しています。このページでその方法を説明します。

http://code.google.com/appengine/articles/geosearch.html

基本的に、バウンディングボックスでタグ付けされたアイテムをクエリできるように、バウンディングボックスを事前に計算します。

私が理解していないプロセスの一部があります。「スライス」属性はどういう意味ですか?

ご協力いただきありがとうございます!

0 投票する
1 に答える
1079 参照

ruby-on-rails - ジオハッシュ形式

ジオハッシュ値に特定の形式はありますか? ruby スクリプトで Geohash.encode(latitude,longitude,precision="8") を使用できますか? 精度属性が取り得る最大値は? 助けてくれてありがとう。

0 投票する
1 に答える
776 参照

google-app-engine - App Engine - 近接検索用のバウンディング ボックスの事前計算

App Engine でロケーション ベースの検索を実行しようとしていますが、データ ストアが複数の不等式演算子をサポートしていないため、「a と b の間の緯度と c と d の間の経度」を検索できません。

解決策の 1 つは、ここで説明されているように、検索する境界ボックスを事前に計算することです。

http://code.google.com/appengine/articles/geosearch.html

http://mutiny.googlecode.com

ただし、「スライス」については少し混乱しています。私は理解しようとしています:

  1. なぜスライスがあるのですか?なぜ解像度を上げないのですか?彼らは同じことをしませんか?
  2. 同じものに 5 つの構成があるのはなぜですか?

    GEOBOX_CONFIGS = ( (4, 5, 真), (3, 2, 真), (3, 8, 偽), (3, 16, 偽), (2, 5, 偽), )

自分のアプリの構成を何に設定するかを理解しようとしていますが、変数が非常に多く、何をすべきか明確ではありません。解像度 (最初の数値)、スライス数 (2 番目の数値) を増やしたり、構成を追加/削除したりしますか?

最終的に、私は 10 ~ 15 マイル以内のポイントに興味があります (コードは既に距離でソートされています) が、1 つの構成で解像度を十分に高く設定して実行できない理由がわかりません。

0 投票する
2 に答える
1980 参照

ruby - Geohashing - 隣人の隣人を再帰的に見つける

私は現在、ジオハッシュ アルゴリズム ( http://www.geohash.org ) を使用して隣人の隣人を再帰的に見つけるためのエレガントなアルゴリズムを探しています。
基本的に、中央の geohash を取り、その周りに同じサイズのハッシュ (8 要素) の最初の「リング」を取得し、次のステップで、最初のリングの周りに次のリングを取得します。そうする方法?

力ずくで各隣人を取得し、その隣人に大規模な重複を単純に無視させることができます。1 つの中央 geohash の周囲の近隣は、何度も解決されています (Ruby の例: http://github.com/masuidrive/pr_geohash/blob/master/lib/pr_geohash.rb ) 。

明確化のために編集: 現在のソリューションで、次のように中心キーと方向を渡します (対応するルックアップ テーブルを使用):

(増井雄一郎のlibより抜粋)

リング 2 または 3 に入ると方向が見にくくなるため、このアプローチはすぐに見苦しくなると思います。アルゴリズムは、理想的には単純に 2 つのパラメータを取ります。中央の領域と 0 からの距離は、中央のジオハッシュのみです ( ["u0m"]1 は、周囲に同じサイズの 8 つのジオハッシュで構成される最初のリングです。2 は、(=> [["u0t", "u0w"], ["u0q", "u0n"], ["u0j", "u0h"], ["u0k", "u0s"]])周囲に 16 の領域を持つ 2 番目のリングです)。ファーストリングなど

ビットからエレガントな方法で「リング」を推測する方法はありますか?

0 投票する
2 に答える
476 参照

java - GIS を使用して 1 つのポイントの地理情報を取得する

どこから始めればよいかよくわかりません。私は先週これを調べ始めたばかりですが、誰かが私を正しい方向に向けるのを手伝ってくれることを願っています.

私のプロジェクトの目標は、ジオハッシュを取得し、それを緯度と経度にデコードし、ポイントをいくつかの GIS データと照合して、地形などのそのポイントに関する情報を見つけられるようにすることです (これは水域ですか? A湖? 海? ここは山岳地帯ですか? これは野原ですか?)、標高、またはその他の有用な要素。次に、その情報をスターターとして表示できるようにします。

これまでに集めたのは、無料の GIS データを入手する必要があるということです (これは学校用なので、お金がありません!)。世界のデータが欲しいのですが、オンライン ( http://www.webgis.com/terraindata.html )でいくつか見つけましたが、ここからどこに行けばよいかわかりません。PostGIS などのツールをデータベースとしていくつか見ました。

私は現在、プロジェクトの他の部分で Java を使用しているので、可能であれば Java にこだわりたいと思っています。

誰かが私を助けてくれますか、それとも正しい方向に向けてくれますか?

0 投票する
3 に答える
1345 参照

python - Python GeoModel の代替

Nearest-n または boxed geo-query を実行するアプリ エンジン データストア用の代替ライブラリを探しています。現在、GeoModel 0.2 を使用しており、実行速度が非常に遅い (場合によっては 1.5 秒以上)。誰か提案はありますか?

ありがとう!

0 投票する
1 に答える
363 参照

indexing - 地理空間インデックスに対するクエリの分割

おそらくヒルベルト曲線を使用して、ジオハッシュのようなインデックスを使用して地理空間情報を保存することを検討しています。私の質問は、そのようなインデックスでエリア クエリを分割する最善の方法に関するものです。

たとえば、この記事では、エリア クエリを複数のクエリに分割して、地域性の低い範囲をクエリすることを回避する方法を示しています (この画像を参照)。通常のジオハッシュのように Z 曲線を使用して 1 回のクエリで円形領域を検索する場合は、関心のある領域のほんの一部しかない左下象限全体をクエリする必要があります。

この場合、検索をいくつかのクエリに分割することをお勧めしますが、これを行う最善の方法に関する情報を見つけることができませんでした. このような範囲クエリを、元​​の領域をカバーする小さな範囲に分割するアルゴリズムはありますか?

0 投票する
1 に答える
276 参照

python - GAE のジオモデルによる空の境界ボックスの結果

Python でジオモデルを使用して、GAE でバウンディング ボックス フェッチを実行しようとしています。ボックスを定義すると、ジオモデル フェッチによって、このボックス内にある座標を含むすべての結果が返されると理解しています。現在、GPS の緯度と経度 (55.497527、-3.114624) を入力してから、この座標の特定の範囲内に N、S、E、W のバウンディング ボックスを次のように設定しています。

ボックスのログ出力で指定された範囲内に結果があるという事実を知っていても、これは常に空の結果セットを返します。

INFO 2011-07-19 20:45:41,129 main.py:117] N:56.497527 E:-3.214624 S:54.497527、W:-3.014624 で作成されたボックス

私のデータストアのエントリには次のものが含まれます。 : "", "venueCountry": "UK"} and {"venueLat": 55.9466506, "venueCity": "Edinburgh", "venueZip": "EH8 9FT", "venueLong": -3.1863224, "venueName": "フェスティバルTheatre Edinburgh", "venueState": "", "venueCountry": "UK"}

どちらも、上で定義したバウンディング ボックス内にある位置を確実に持っています。デバッグをオンにしましたが、次の行に沿って出力が得られるため、バウンディング ボックス フェッチはジオセルを検索しているように見えます。

INFO 2011-07-19 20:47:09,487 geomodel.py:114] bbox クエリは 4 つのジオセルを調べました

ただし、結果が返されることはないようです。すべてのモデルに対して update_location() を実行して、基になるジオセル データが正しいことを確認しました。誰にもアイデアはありますか?

ありがとう

0 投票する
1 に答える
524 参照

ruby-on-rails - 太陽黒点空間検索で結果が返されない

Sunspot gem を自分のアプリケーションに実装したところですが、位置検索を行うと一部の結果が除外されているように見えることを除けば、とても気に入っています。例: 私はオハイオ州コロンバスに住んでいるので、「オハイオ州コロンバス」を検索すると、アプリケーションはそれを緯度/経度に変換し、次のようにします:

これにより、コロンバスの西側でジオコーディングされたいくつかのレコードが返されますが、DB にある東側のレコードは返されません。検索で何か間違ったことをしていますか?

http://skateparks.co/searchで自分で試すことができます。

"Columbus Ohio" で検索すると、南東に数マイルしか離れていない "Lancaster Ohio" で検索した場合とはまったく異なる結果が得られます。