2017-10-20 11 views
0

ポイントがポリゴンであるかどうかを知る必要があります。私のレールアプリでは、rgeoの宝石を使用することができません。多角形の点rgeo

このgemeをインストールするには、私はその後、私はGEOSとにProj4が正しくインストールされていることを確信している

rgeo gitの指示をfolowed。

enter image description here

私もこの宝石「FFI-GEOS」を追加、特別な理由、唯一rgeoドキュメント

を以下の最後に私がいるかどうかを確認するために、レールコンソールでテストを行ったが

    を作業していません
  1. poly_text = "ポリゴン"(多くのポイント、私は最初のポイントと最後のものが同じであることを認識しています。そうでなければ、閉じたポリゴンでなければならないのでこのワットワークがあると思います)
  2. 工場= RGeo :: Ca rtesian :: Factory(私が球状のものを使用する場合、私の調査によると、デカルトの工場を使用しています。このワットワーク)
  3. poly = factory.new()。parse_wkt(poly_text)
  4. point1 = factory 。.new()parse_wkt( "POINT(0)")(この点は多角形に属していない)
  5. poly.within(ポイント1)
  6. 結果:?RGeo ::エラー:: UnsupportedOperation:メソッドジオメトリ#contains?定義されていません。 (IRB)から :ここ26

あなたが出力見ることができます:誰かが解決策を持っている場合 レールバージョン5.1.2 のIDE C9 OSのUbuntuの

enter image description here

さらに詳しい情報事前に感謝、私はまた、別の宝石を使用するために開いている、または何でも、私の目標は、私のポイント/ポリゴンの問題を解決することです。

答えて

1

Geokitを使用して、gem 'geokit'をGemfileに含めることができます。

次に、ポイントの配列を作成する必要があります。各ポイントはGeokit::LatLngです。例えば

points = [] 
points << Geokit::LatLng.new("-34.8922513", "-56.1468951") 
points << Geokit::LatLng.new("-34.905204", "-56.1848322") 
points << Geokit::LatLng.new("-34.9091105", "-56.170756") 
polygon = Geokit::Polygon.new(points) 
polygon.contains? polygon.centroid #this should return true 

は、最初のポイントは、最後のと同じであるかどうかを心配しないでください、それはソースコードにhereを説明しているように、newはすでにそのの世話をします。

+1

こんにちはMoondaisy、私は同じ宝石の別の工場を使ってこれを解決します。とにかく、私の環境(bluemix)でRgeoを使用するのは非常に難しいので、最終的な魂はpostgisというポストエクステンションでした。希望これは誰かを助ける:) –

0

私はGEOSをインストールする前に宝石をインストールしていました。アンインストールしてから、再度rgeo gemをインストールしてください。

関連する問題