ESRI JSON 다각형 링 방향?


10

ESRI의 JSON 사양을 정의하는 자세한 문서를 찾는 데 어려움을 겪고 있습니다. 다음 두 가지 질문에 대해 누군가가 밝힐 수 있기를 바랍니다.

  1. GeoJSON 스펙과 유사하게 ' paths '컬렉션 의 첫 번째 배열 은 항상 외부 링 이며이 컬렉션의 모든 후속 배열은 내부 링 (구멍)입니까?

  2. ESRI JSON 사양이 다중 다각형을 어떻게 처리합니까?

답변:


13

다음은 JSON geometry 객체 에 대한 Esri의 문서에 대한 링크 입니다. 해당 페이지에서 :

REST API는 점, 폴리 라인, 다각형 및 엔벨로프의 네 가지 지오메트리 유형을 지원합니다.

다중 다각형과 같은 사운드는 지원되지 않습니다. 아래를 참조하십시오. 링을 추가하여 다중 다각형을 만들 수 있습니다. 내부 대 외부 고리에 대해서는 명시적인 것이 없습니다. 궁금해서 궁금한 점이 있으시면 다른 게시물을 찾으면이 게시물을 수정하겠습니다.

편집 : 나는 이것을 조금 더 조사했다. 기존 링 안에있는 링을 추가하면 내부 링이 구멍 인 것처럼 보입니다. 다른 링 안에 있지 않은 링을 추가하면 기본적으로 다중 다각형 인 추가 다각형으로 추가됩니다. 다음은이를 보여주는 간단한 페이지입니다.

<!DOCTYPE html> 
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Polygons!</title>
    <link rel="stylesheet" type="text/css" href="http://serverapi.arcgisonline.com/jsapi/arcgis/2.1/js/dojo/dijit/themes/claro/claro.css">
    <style>
      html, body { height: 100%; width: 100%; margin: 0; padding: 0; }
      #map{
        padding:0;
      }
    </style>
    <script type="text/javascript">var djConfig = {parseOnLoad: true};</script>
    <script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis/?v=2.1"></script>
    <script type="text/javascript">
      dojo.require("dijit.layout.BorderContainer");
      dojo.require("dijit.layout.ContentPane");
      dojo.require("esri.map");
      var map;
      function init() {
        var initExtent = new esri.geometry.Extent({"xmin":-12959519,"ymin":3696971,"xmax":-9444639,"ymax":5453188,"spatialReference":{"wkid":102100}});
        map = new esri.Map("map",{extent:initExtent});
        var basemap = new esri.layers.ArcGISTiledMapServiceLayer("http://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer");
        map.addLayer(basemap);
        var resizeTimer;
        dojo.connect(map, 'onLoad', function(theMap) {
          dojo.connect(dijit.byId('map'), 'resize', function() {  //resize the map if the div is resized
            clearTimeout(resizeTimer);
            resizeTimer = setTimeout( function() {
              map.resize();
              map.reposition();
            }, 500);
          });
          var poly = new esri.geometry.Polygon({"rings":
            [
              [[-11214840,4858704],[-10520181,4853812],[-10510397,4149368],[-11219732,4144476],[-11214840,4858704]], // ring #1, poly with two holes
              [[-11097433,4770648],[-10916430,4770648],[-10916430,4609213],[-10984918,4560294],[-11097433,4614105],[-11097433,4770648]], // ring #2, a hole
              [[-10779455,4472238],[-10622912,4349939],[-10750103,4242315],[-10833267,4296127],[-10779455,4472238]],  // ring #3, another hole
              [[-11298004,4614105],[-11293112,4310803],[-11571954,4305911],[-11542602,4584753],[-11298004,4614105]] // ring #4, western polygon
            ],
            "spatialReference":{"wkid":102100}
          });
          var sym = new esri.symbol.SimpleFillSymbol({"color":[255,255,0,64],"outline":{"color":[255,0,0,255],"width":1.5,"type":"esriSLS","style":"esriSLSDashDot"},"type":"esriSFS","style":"esriSFSSolid"});
          var graphic = new esri.Graphic(poly, sym);
          map.graphics.add(graphic);
        });
      }
      dojo.addOnLoad(init);
    </script>
  </head>
  <body class="claro">
    <div dojotype="dijit.layout.BorderContainer" design="headline" gutters="false"
    style="width: 100%; height: 100%; margin: 0;">
      <div id="map" dojotype="dijit.layout.ContentPane" region="center" style="overflow:hidden;">
      </div>
    </div>
  </body>
</html>

해당 페이지를로드하면 첫 번째 링은 두 개의 구멍이있는 정사각형입니다. 두 구멍은 고리 2와 3입니다. 가장 서쪽에있는 다각형의 네 번째 고리. 이것은 두 개의 그래픽처럼 보이지만 실제로는 하나 일뿐입니다.


가장 훌륭한 답변입니다. 감사합니다. 이제 어려운 방법으로 내장 메서드가 없기 때문에 각 링의 방향을 테스트하는 함수를 작성해야한다고 생각합니다.
user890

기쁘다. 바퀴를 다시 발명 할 필요는 없지만 esri는 geometry 네임 스페이스에 "isClockwise ()"함수를 제공합니다. help.arcgis.com/en/webapi/javascript/arcgis/help/…
Derek Swingley

좋은 대답입니다. 내부 링 또는 구멍이 시계 반대 방향인지 확인하십시오.
capie69

3

esri json 형식은 esri 모양의 형식을 따릅니다.

esri 다각형은 링으로 구성됩니다. OGC의 Multipolygon 및 Polygon 엔티티를 모두 나타낼 수 있습니다.

기하학적으로 단순한 다각형에는 자체 교차가 없으며 시계 방향으로 외부 링과 시계 방향으로 내부 링 (구멍)이 있습니다. Esri 서비스에서 읽는 경우 일반적으로 얻는 것입니다.

단순하지 않은 다각형 (링의 방향이 다르거 나 자체 교차점이 있는 다각형)은 다각형 테스트 에서 점을 그리거나 점을 만들 때 규칙 적인 홀수 채우기 규칙을 사용하여 해석해야합니다 .

OGC Multipolygon에서 Esri 다각형으로 변환 할 때는 외부 링의 방향이 시계 방향이고 구멍이 시계 반대 방향인지 확인하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.