問題タブ [rgeo]
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.
ruby-on-rails - RGeoが含まれていますか?モデル上
Place
のように、ポリゴン アトリビュートに指定されたポイントが含まれているクラスのすべてのインスタンスを検索する必要がありますPlace.for_point(pt)
。
==== 追加 ====
わかりました、このクエリを実行することはできますが、間違った結果になります:
座標が正しく提供されていることは明らかです。提供されたポイントの座標は latlon 形式です。しかし、座標はテーブル内の多角形の 1 つの重心からのものであるため、それらはその多角形の内側にある必要があります。つまり、返された場所レコードのセットを取得する必要があります...しかし、そうではありません。
なんで?私は何が欠けていますか?
ポイントを含むと予想されるポリゴンは次のとおりです。
==== 元の投稿 ====
これをどのように構造化するかについて頭を悩ませることはできません。個々のインスタンスについて、私は のインスタンス メソッドとしてcontains?(pt)
メソッドを持ってPlace
います。place.contains?(@f.project(@pt_inside))
@pt_inside
@pt_inside = @f.point(25.1,25.1)
のスキーマはPlace
次のようになります。
終わり
私のレールは非常に錆びていますが、クラス Place work へのクエリを作成できません....
ruby-on-rails - DB から位置データを読み取るときに、POSTGIS / RGEO が正しいポイント タイプをロードしないのはなぜですか?
だから私は、プロジェクトのためにRailsでの位置情報ベースのプログラミングについて理解を深めようとしています。要約すると、データベース データは正しいように見えますが、Rails のインメモリ ロジックで正しい結果を得ることができません。
データベースに lonlat 列を作成しました...
私のスキーマファイルに適切なエントリを作成したのは...
そして、クエリを実行すると、正常なBar.where("ST_Distance(lonlat, 'Point(0,0)') < 10000")
結果が返されます。(私は正確さをチェックしていません。大まかな正気です)。たとえば、実行するBar.where("ST_Distance(lonlat, 'Point(0,0)') < 100").count
と 1 が返されます。これは、たまたま関連するポイントにある単一のレコードです。
しかし、レコードをロードすると...
その結果は完全に間違っています。実際、2 つのポイントは約 3000 フィート離れており、上記のカウント クエリを簡単に調べると、少なくともデータベースはこれを理解していることがわかります。
したがって、私が知る限り、問題はポイントをメモリにロードした後だけです。
RGeoのいくつかのチュートリアル/ドキュメントの指示に従ってgeography.rb
、以下の内容で名前が付けられた初期化ファイルを作成しました/config/initializers
.
私の理解では、このコード、特に 2 番目の呼び出し は config.register
、点データを地理として扱うよう RGeo に指示する必要があります。この質問に基づいて、スキーマ ファイルに一致するように登録呼び出しを調整する必要があるかもしれないと推測しているので、実際には登録行の 4 つのコピーがあり、geo_type: "point"/"st_point" と存在/不在をカバーしています。geographic: true.
役に立たなかった。
私が見逃している/誤解している/間違っていることは何ですか? 残念ながら、ドキュメントとチュートリアルに基づいて把握できる限界に達しましたが、残念ながら、少し古くなっています。
ruby-on-rails - Rails / PostGIS / RGeo エラー: NoMethodError: RGeo::GeoJSON::Feature の未定義のメソッド `factory'
Ruby on Rails と PostGIS を使用して、GeoJSON マップ データを「マップ」というモデルに格納しています。単純な GeoJSON 機能を使用して正常に読み込まれたオブジェクトを保存すると、「NoMethodError: 未定義のメソッド `factory' for #」というエラーが表示されます。
例、セットアップ、私が試したこと、およびリソースへのリンクについては、以下を参照してください。
例 1 (Rails コンソールを使用)
設定
- レール 5.1.4
- PostGIS 9.6
- Docker DB ソース: kartoza/postgis:9.6-2.4
- Docker Web ソース: ルビー 2.3.5
ファイル
config/initializers/rgeo.rb
Gemfile
デシベル/移行/20182039293939_create_maps.rb
ソース
とりわけ、私は次の情報源を運がなくても調べました。
2011 年のセットアップに関する Daniel Azuma の元の投稿
その一部が廃止された理由について語る StackOverflow の投稿 2015-06-26
- すべてのデフォルトの球状ファクトリを設定する方法を明確にする、受け入れられた回答の下のコメントに注意してください-これは私にとっては問題なく、上記で行ったことです。
これがすでに単一の機能であることを考えると、関連性がないように思われる Github の問題の応答
上記のすべてのポイントにヒットした、より最近のアクティブな Github activerecord-postgis-adaptor 応答
Geos を使用していないにもかかわらず、インストールには 2015 と取り組む必要があることを示唆しています
- 関連性がないように見えるにもかかわらず、私はまだこのオプションをいじっています
- 試してみましたが効果がありませんでした(以下を参照)
試み
Geos もインストールしてみましたが、違いはありませんでした。
コンテナ内:
Rails コンソール: (再起動後)
上記と同じ試みと結果(例1)