2017-04-26 6 views
2

아래에는 두 개의 "구멍"이있는 폴리곤이 하나 인 GeoJSON MultiPolygon object을 만드는 방법이 있습니다.GeoJSON 다중 구멍이있는 다중 폴리곤

이 개체의 유효성을 검사 할 때 http://geojson.io/ 서비스를 사용하면 오류 each element in a position must be a number가 반환되고 렌더링되지 않지만 "구멍"중첩을 제거하면 그 중 하나를 제거하면 작동합니다.

다각형에 여러 개의 구멍이있을 수있는 MultiPolygon을 설명하는 방법을 찾고 있습니다.

나는 구멍이있는 다각형을 만드는 방법을 찾고 있지 않습니다.

GeoJSON 사양을 사용하여 다중 구멍이있는 다중 폴리곤을 나타내는 방법을 찾고 있습니다.

enter image description here

{ 
    "type": "MultiPolygon", 
    "coordinates": [ 
    [ 
     [ 
     [ 
      -73.98114904754641, 
      40.7470284264813 
     ], 
     [ 
      -73.98314135177611, 
      40.73416844413217 
     ], 
     [ 
      -74.00538969848634, 
      40.734314779027144 
     ], 
     [ 
      -74.00479214294432, 
      40.75027851544338 
     ], 
     [ 
      -73.98114904754641, 
      40.7470284264813 
     ] 
     ], 
     [ 
     [ 
      [ 
      -73.99818643920906, 
      40.74550031602355 
      ], 
      [ 
      -74.00298643920905, 
      40.74550031602355 
      ], 
      [ 
      -74.00058643920897, 
      40.74810024102966 
      ], 
      [ 
      -73.99818643920906, 
      40.74550031602355 
      ] 
     ], 
     [ 
      [ 
      -73.98917421691903, 
      40.73646098717515 
      ], 
      [ 
      -73.99397421691901, 
      40.73646098717515 
      ], 
      [ 
      -73.99157421691893, 
      40.739061265535696 
      ], 
      [ 
      -73.98917421691903, 
      40.73646098717515 
      ] 
     ] 
     ] 
    ] 
    ] 
} 
+0

[Google의 예] (https://developers.google.com/maps/documentation/javascript/examples/layer-data-polygon) (2 개의 구멍이있는 GeoJson 다각형)을 보았습니까? – geocodezip

+1

이 예제에는 geojson이 없습니다! Google 코드 일뿐입니다. – ThomasReggi

+0

@geocodezip Google 코드가 아닌 유효한 GeoJSON-JSON을 만들려고합니다. – ThomasReggi

답변

6

이 어떻게 작동하는지입니다 :

{ 
    "type": "MultiPolygon", 
    "coordinates": [ 
    [ 
     {polygon}, 
     {hole}, 
     {hole}, 
     {hole} 
    ] 
    ] 
} 

이 좋아되지 않음 :

{ 
    "type": "MultiPolygon", 
    "coordinates": [ 
    [ 
     {polygon}, 
     [ 
     {hole}, 
     {hole}, 
     {hole} 
     ] 
    ] 
    ] 
} 

여기 예입니다! 정말 (geoJSON의 의미에서)는 다중하지만 단순한 다각형 (하나의 외부 링과 구멍에 대해 여러 내부 링)이 아니다 사실에 예를 들어

{ 
    "type": "MultiPolygon", 
    "coordinates": [ 
    [ 
     [ 
     [ 
      -47.900390625, 
      -14.944784875088372 
     ], 
     [ 
      -51.591796875, 
      -19.91138351415555 
     ], 
     [ 
      -41.11083984375, 
      -21.309846141087192 
     ], 
     [ 
      -43.39599609375, 
      -15.390135715305204 
     ], 
     [ 
      -47.900390625, 
      -14.944784875088372 
     ] 
     ], 
     [ 
     [ 
      -46.6259765625, 
      -17.14079039331664 
     ], 
     [ 
      -47.548828125, 
      -16.804541076383455 
     ], 
     [ 
      -46.23046874999999, 
      -16.699340234594537 
     ], 
     [ 
      -45.3515625, 
      -19.31114335506464 
     ], 
     [ 
      -46.6259765625, 
      -17.14079039331664 
     ] 
     ], 
     [ 
     [ 
      -44.40673828125, 
      -18.375379094031825 
     ], 
     [ 
      -44.4287109375, 
      -20.097206227083888 
     ], 
     [ 
      -42.9345703125, 
      -18.979025953255267 
     ], 
     [ 
      -43.52783203125, 
      -17.602139123350838 
     ], 
     [ 
      -44.40673828125, 
      -18.375379094031825 
     ] 
     ] 
    ] 
    ] 
} 
1

. OSM의 Multipolygons와의 차이점 (웨이를 포함하는 릴레이션으로 나타내며 첫 번째 노드와 마지막 노드는 동일한 "노드"요소에 병합되어야 함) (geoJSON에 존재하지 않는 것으로 사실에 의해서만 통합됩니다 두 개의 노드는 같은 좌표를 가지지 만 실제로는 "Polygon"및 "MultiPolygon"유형의 GeoJSON에 대해 자동으로 닫힙니다)

OSM 편집기에서 geoJSON을 가져올 때 (예 : JOSM) 첫 번째와 마지막 노드에 대해 별도의 노드가있는 경우에도 동일한 좌표가 있어도 가져옵니다. JOSM 유효성 검사기를 사용하여 중첩 노드를 검색하고 JOSM에서 가져온 후 OSM에 제출하기 전에 병합해야합니다.

그러나 스크립트 또는 geoJSON의 일반적인 사용에서 "유형": "다각형"또는 "유형": "다각형"의 멤버에있는 모든 링 (좌표 쌍 배열)은 마지막 노드에 대해 동일한 좌표를 포함 할 필요가 없습니다 첫 번째 노드는 암시 적이기 때문에 (그러나이 복제 노드를 호환성을 위해 추가하는 것이 좋습니다.) "Polygon"과 "MultiPolygon"(서페이스를 나타내는 것처럼)은 닫히지 만, "Polyline"과 "MultiPolyline"(곡선을 나타낼 때)에서는 첫 번째 요소에 대해 동일한 좌표를 두 번 포함해야합니다. 마지막 노드는 닫힌 커브를 얻습니다.

여러 개의 "외부"링이있는 OSM "다중 다각형"을 나타내려면 geoJSON "MultiPolygon"유형의 기본 좌표 배열에 여러 개의 [{{outer}, {inner *}]를 포함해야합니다.당신 그래서 예를 들면

{"type":"MultiPolygon", "coordinates":[ 
    [ 
    [[x0,y0], [x1,y1], ... [x0,y0]], /*outer1*/ 
    [[x0,y0], [x1,y1], ... [x0,y0]], /*inner1, optional*/ 
    [[x0,y0], [x1,y1], ... [x0,y0]], /*inner2, optional*/ 
    ],[ 
    [[x0,y0], [x1,y1], ... [x0,y0]], /*outer2*/ 
    ],...,[ 
    [[x0,y0], [x1,y1], ... [x0,y0]], /*outer3*/ 
    ],[ 
    [[x0,y0], [x1,y1], ... [x0,y0]], /*outer4*/ 
    ] 
} 

, 해결책은 다음과 같습니다

{"type":"Polygon", "coordinates":[ 
    [[x0,y0], [x1,y1], [x2,y2], [x3,y3], [x0,y0]], /*outer1*/ 
    [[x4,y4], [x5,y5], [x6,y6], [x4,y4]],   /*inner1*/ 
    [[x7,y7], [x8,y8], [x9,y9], [x7,y7]]   /*inner2*/ 
]} 

여러 외부 반지는 (아마도 표면의 조합을 만들 중복, 추천되지는 않지만) 한 경우가 필요 다중 다각형, 그리고 여기에는 "구멍"을 얻을 것이다 :

{"type":"MultiPolygon", "coordinates":[ 
    [[[x0,y0], [x1,y1], [x2,y2], [x3,y3], [x0,y0]]], /*outer1*/ 
    [[[x4,y4], [x5,y5], [x6,y6], [x4,y4]]],   /*outer2*/ 
    [[[x7,y7], [x8,y8], [x9,y9], [x7,y7]]]   /*outer3*/ 
]} 

만을 포함하는 것 [대괄호] 중 하나 개 적은 수준의 우리가 다중 대신 여기에 "다각형"를 사용할 수 있기 때문에 거기에 주 귀하의 모범에 한 회원.