2015-02-02 3 views
1

남극 근처의 큰 다각형 삽입 :elasticsearch에 큰 극성 다각형을 삽입하는 방법은 무엇입니까?

"polygon":{ 
    "type":"polygon", 
    "coordinates":[ 
     [ 
      [ 
       -134.97410583496094, 
       -61.81480026245117 
      ], 
      [ 
       -130.1757049560547, 
       -63.236000061035156 
      ], 
      [ 
       -125.17160034179688, 
       -64.40799713134766 
      ], 
      [ 
       -152.0446014404297, 
       -75.72830200195312 
      ], 
      [ 
       143.52340698242188, 
       -77.68319702148438 
      ], 
      [ 
       147.41830444335938, 
       -75.44519805908203 
      ], 
      [ 
       150.2816925048828, 
       -73.01909637451172 
      ], 
      [ 
       -162.17909240722656, 
       -71.5260009765625 
      ], 
      [ 
       -134.97410583496094, 
       -61.81480026245117 
      ] 
     ] 
    ] 
}, 

는 다음과 같은 오류가 반환됩니다.

{ 
    "error" : "RemoteTransportException[[ISAAC][inet[/x.x.x.x:9300]][indices:data/write/index]]; nested: MapperParsingException[failed to parse [polygon]]; nested: InvalidShapeException[Self- intersection at or near point (-142.29442281263474, -71.62101996804898, NaN)]; ", 
    "status" : 400 
} 

유형의 매핑은 다음과 같습니다

컬 -XPUT http://localhost:9200/files/_mapping/polar -d '

{ "극성": { "속성": { "startTimeRange": { "type": "date"}, "endTimeRange": { "type": "date"}, "productShortName": { "유형": "문자열", "색인": "not_analyzed" }, "다각형": { "유형": "geo_shape" "나무": "쿼드 트리", "정밀도": "1,000m" } } } } '

의도 한 모양은 데이트 라인 (반 자오선)을 가로 지르는 필수적인 사각형입니다.

모양이 자체 교차하는 자오선 (0 - 경도)을 교차하는 다각형으로 해석되는 것처럼 보입니다.

elasticsearch에서 의도 한 모양을 나타내는 가장 좋은 방법은 무엇입니까?

답변

0

Dateline 및 Pole Crossing은 알려진 문제입니다. 데이터 라인 교차점은 ES 1.4.3에서 수정되었지만 장대 교차 패치는 향후 버전에서 출시 될 예정입니다. 지금은 (모호한 폴리곤의 경우 심각한 PITA가 될 수 있습니다.) Polygon을 멀티 폴리곤 (아마도 응용 프로그램 계층에 있음)으로 푸는 작업을해야합니다.

다음은 데이터를 사용하는 예입니다.

{ 
    "type" : "MultiPolygon", 
    "coordinates":[[[ 
     [ 
      -180.0, 
      -72.092693931 
     ], 
     [ 
      -162.17909240722656, 
      -71.5260009765625 
     ], 
     [ 
      -134.97410583496094, 
      -61.81480026245117 
     ], 
     [ 
      -130.1757049560547, 
      -63.236000061035156 
     ], 
     [ 
      -125.17160034179688, 
      -64.40799713134766 
     ], 
     [ 
      -152.0446014404297, 
      -75.72830200195312 
     ], 
     [ -173.3707512019, 
      -90.0 
     ], 
     [ 
      -180.0, 
      -90.0 
     ], 
     [  
      -180.0, 
      -72.092693931 
     ] 
     ]], 
     [[ 
     [  
      173.3707512019, 
      -90.0 
     ], 
     [ 
      143.52340698242188, 
      -77.68319702148438 
     ], 
     [ 
      147.41830444335938, 
      -75.44519805908203 
     ], 
     [ 
      150.2816925048828, 
      -73.01909637451172 
     ], 
     [ 
      180.0, 
      -72.092693931 
     ], 
     [  
      180.0, 
      -90.0 
     ], 
     [  
      173.3707512019, 
      -90.0 
     ] 
     ]] 
    ] 
} 

: (https://gist.github.com/nknize/8e87ee88d3915498507e 다음과 같은 취지에서 본) "풀기"극성 사용

{ 
    "type" : "Polygon", 
    "coordinates":[[ 
     [ 
      -134.97410583496094, 
      -61.81480026245117 
     ], 
     [ 
      -130.1757049560547, 
      -63.236000061035156 
     ], 
     [ 
      -125.17160034179688, 
      -64.40799713134766 
     ], 
     [ 
      -152.0446014404297, 
      -75.72830200195312 
     ], 
     [ 
      143.52340698242188, 
      -77.68319702148438 
     ], 
     [ 
      147.41830444335938, 
      -75.44519805908203 
     ], 
     [ 
      150.2816925048828, 
      -73.01909637451172 
     ], 
     [ 
      -162.17909240722656, 
      -71.5260009765625 
     ], 
     [ 
      -134.97410583496094, 
      -61.81480026245117 
     ] 
    ]] 
} 

수정 버전 : (https://gist.github.com/nknize/ea0e103a22bddae13dfb 다음과 같은 취지에서 볼 때)

원래 자기 교차 폴리 위의 "수정 된"MultiPolygon은이 예제에서 사용 된 대략적인 계산 (부동 소수점 오류 포함)입니다.

이상적인 대답은 아니지만 도움이 되길 바랍니다.

관련 문제