2017-01-24 6 views
1

GeoJSON Geometry를 SymPy Geometry로 변환 할 수 있는지 안다면 누구라도 알고 있습니까? 그렇다면 어떤 패키지입니까? 그렇지 않다면 누구나 GeoJSON 기능을 sympy로 신속하게 변환하는 정말 빠른 방법을 생각할 수 있습니까? 바람직하게는 선형 시간보다 더 나쁜 것은 아니다. GeoJSON에서 SymPy Geometry

답변

0

나는이 작업을 수행 라이브러리를 인식하지 오전 감사,하지만 당신은 아주 단순히 이렇게 무언가를 만들 수 있습니다.

샘플 geoJson :

{ "type": "FeatureCollection", 
    "features": [ 
     { "type": "Feature", 
     "geometry": {"type": "Point", "coordinates": [102.0, 0.5]}, 
     "properties": {"prop0": "value0"} 
     }, 
     { "type": "Feature", 
     "geometry": { 
      "type": "LineString", 
      "coordinates": [ 
      [102.0, 0.0], [103.0, 1.0], [104.0, 0.0], [105.0, 1.0] 
      ] 
      }, 
     "properties": { 
      "prop0": "value0", 
      "prop1": 0.0 
      } 
     }, 
     { "type": "Feature", 
     "geometry": { 
      "type": "Polygon", 
      "coordinates": [ 
      [ [100.0, 0.0], [101.0, 0.0], [101.0, 1.0], 
       [100.0, 1.0], [100.0, 0.0] ] 
      ] 
     }, 
     "properties": { 
      "prop0": "value0", 
      "prop1": {"this": "that"} 
      } 
     } 
     ] 
    } 

SymPy 다각형 : 보시

from sympy import Point, Polygon, pi 
>>> p1, p2, p3, p4, p5 = [(0, 0), (1, 0), (5, 1), (0, 1), (3, 0)] 
>>> Polygon(p1, p2, p3, p4) 
Polygon(Point2D(0, 0), Point2D(1, 0), Point2D(5, 1), Point2D(0, 1)) 

상기 geoJson 기능 [2] 배열이 거의 동일 sympy 기하 형태와 동일 .geometry.coordinates (배열의 배열 대 튜플의 배열). 선형 시간의 관점에서 geoJson을 통해 좌표 배열을 잡아서 sympy 값으로 설정할 수 있습니다.

복잡성은 올바른 sympy 구문과 일치시켜야 할 필요가 있으므로 지원하려는 지오메트리 유형 (점, 선 스트링, 다각형 등)에 따라 달라질 수 있지만 전반적으로 사소한 것입니다.

+0

그레이트 사례! Line과 Segment는 클래스에 대해 2 점만을 허용하기 때문에 가장 큰 문제는 'LineString'유형을 처리하는 방법입니다. –

+0

동의합니다. 라인 문자열이 약간 더 복잡합니다 (sympy가 해당 유형을 가지고 있는지 확실하지 않음). 하지만 항상 p1을 p2로, p2를 p3으로, p3을 p4 ...로 그릴 수 있습니다. – user2263572

+0

흠, 내 경우에는 다른 도서관이 더 나을 것입니다. –