2017-10-20 10 views
0

포인트가 다각형인지 아닌지, 내 레일 앱에서 알기 위해서는 rgeo gem을 사용하기 위해 알아야합니다.다각형의 점 rgeo

이 geme를 설치하려면 내가 그럼 난 GEOS와 Proj4가 제대로 설치되어 있는지 확신

rgeo git의 지시에 folowed. 나는 또한 단지 rgeo 나는 경우를 확인하는 레일 콘솔에서 테스트를했다 마지막으로

문서

    을하고있다 다음은이 보석 'FFI-GEOS', 특별한 이유를 추가

    enter image description here

  1. poly_text = "POLYGON ..."(많은 점들, 첫 번째 점과 마지막 점이 동일하다는 것을 알고 있습니다. 그렇지 않으면 닫힌 다각형이어야하기 때문에이 wount 작업이 필요하다고 생각합니다)
  2. 공장 = RGeo :: Ca rtesian :: 공장 (구형 공장을 사용할 경우 내 조사에 따라 데카르트 공장을 사용합니다.)
  3. 폴리 = factory.new(). parse_wkt (poly_text)
  4. point1 = factory . .new를() parse_wkt ("POINT (0, 0)") (이 점은 다각형에 속하지 않는)
  5. poly.within (POINT1)
  6. 결과 : RGeo :: 오류 :: UnsupportedOperation : 방법 기하학 #contains? 정의되지 않았습니다. 당신은 출력을 볼 수있는 26 여기

: (IRB)에서 는 enter image description here

상세 정보 : 는 버전 레일 5.1.2 IDE C9 OS 우분투 누군가가 솔루션이있는 경우

, 미리 감사드립니다, 나는 또한 다른 보석을 사용하거나, 뭐든간에, 내 목표는 내 포인트/다각형 문제를 해결하는 것입니다.

답변

1

Geokit을 사용하면 gem 'geokit'을 Gemfile에 포함시킬 수 있습니다.

그런 다음 각 포인트가 Geokit::LatLng 인 지점 배열을 만들어야합니다. 예를 들어

: 그것은 소스 코드에 here을 설명으로

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 

은 첫 번째 점은 마지막과 동일 여부에 대해 걱정하지 마십시오는 new은 이미 처리합니다.

+1

안녕하세요. Moondaisy, 마침내 저는 같은 보석에있는 다른 공장을 사용하여이 문제를 해결했습니다. 어쨌든, 내 환경 (bluemix)에서 Rgeo를 사용하는 것은 매우 어려웠습니다. 왜 마지막 soultion은 postgis라고하는 postgress 확장 물 이었습니까. 희망이 도움이 누군가 :) –

0

GEOS를 설치하기 전에 보석을 설치했습니다. 제거하고 다시 rgeo 보석을 설치하는 일했습니다.