ESRI JSON बहुभुज रिंग ओरिएंटेशन?


10

मुझे ESRI के JSON चश्मे को परिभाषित करने वाले किसी भी विस्तृत दस्तावेज़ को खोजने में कठिन समय हो रहा है। मुझे उम्मीद है कि निम्नलिखित दो प्रश्नों पर कोई व्यक्ति कुछ प्रकाश डाल सकता है।

  1. GeoJSON कल्पना के समान, ' पथ ' संग्रह में पहला सरणी हमेशा एक बाहरी रिंग होती है, और इस संग्रह के सभी बाद के सरणियाँ आंतरिक रिंग (छेद) हैं?

  2. क्या यह सच है कि ESRI JSON मल्टी-पॉलीगन्स के साथ कैसे पेश आता है?

जवाबों:


13

यहां JSON ज्योमेट्री ऑब्जेक्ट्स पर Esri's doc का लिंक दिया गया है । उस पेज से:

REST API 4 ज्यामिति प्रकारों का समर्थन करता है - अंक, पॉलीइलीन, बहुभुज और लिफाफे।

बहु-बहुभुज जैसी ध्वनियों का समर्थन नहीं किया जाता है। निचे देखो। आप अतिरिक्त छल्ले जोड़कर बहु-बहुभुज बना सकते हैं। आंतरिक v। बाहरी रिंगों के बारे में कुछ भी स्पष्ट नहीं है। मैं उत्सुक हूं इसलिए मैं इस पर गौर करने जा रहा हूं ... अगर मुझे कुछ और मिला तो मैं इस पोस्ट को संपादित करूंगा।

संपादित करें: मैंने इसे थोड़ा और अधिक देखा। ऐसा लगता है कि यदि आप एक मौजूदा रिंग के अंदर गिरने वाले छल्ले जोड़ते हैं, तो आंतरिक रिंग छेद हैं। यदि आप एक ऐसी अंगूठी जोड़ते हैं जो दूसरी अंगूठी के अंदर नहीं है, तो इसे अतिरिक्त बहुभुज के रूप में जोड़ा जाता है जो मूल रूप से एक बहु-बहुभुज है। यहाँ एक सरल पृष्ठ है जो यह दिखाता है:

<!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>

यदि आप उस पृष्ठ को लोड करते हैं, तो पहली रिंग दो छेद वाला वर्ग है। दो छेद दो और तीन छल्ले हैं। पश्चिमी सबसे बहुभुज में चौथी अंगूठी। यह दो ग्राफिक्स की तरह लग सकता है लेकिन यह वास्तव में सिर्फ एक है।


सबसे उत्कृष्ट जवाब, धन्यवाद। अब कड़ी मेहनत के लिए, चूंकि कोई विधियां निर्मित नहीं हैं, मुझे लगता है कि मुझे एक फ़ंक्शन लिखना होगा जो प्रत्येक अंगूठी के अभिविन्यास का परीक्षण करता है।
user890

मदद करने में खुशी। पहिया को फिर से आविष्कार करने की आवश्यकता नहीं है, एसिएरी ज्यामिति के नामस्थान में "isClockwise ()" फ़ंक्शन प्रदान करता है: help.arcgis.com/en/webapi/javascript/arcgis/helpp……
Derek Swingley

अच्छा उत्तर। बस यह सुनिश्चित करें कि आंतरिक रिंग या छेद काउंटर-क्लॉकवाइज हैं।
capie69

3

Esri json प्रारूप, esri आकार का बारीकी से अनुसरण करता है।

एस्री बहुभुजों में छल्ले होते हैं। वे OGC से मल्टीप्लगॉन और बहुभुज दोनों संस्थाओं का प्रतिनिधित्व कर सकते हैं।

ज्यामितीय रूप से सरल बहुभुजों में कोई आत्म-चौराहा नहीं होगा और इसमें बाहरी रिंग्स क्लॉकवाइज और आंतरिक रिंग्स (छेद) काउंटरक्लॉकवाइज होंगे। यदि आप Esri सेवाओं से पढ़ रहे हैं कि आप आमतौर पर क्या मिलता है।

गैर-साधारण बहुभुज (जिनके छल्ले अलग-अलग होते हैं या जिनमें स्व-प्रतिच्छेदन होते हैं) को बहुभुज परीक्षण में एक बिंदु बनाते या बनाते समय नियमित सम-विषम भरण नियम का उपयोग करके व्याख्या की जानी चाहिए ।

जब ओजीसी मल्टीपोलीगॉन से एसरी बहुभुज में परिवर्तित होते हैं, तो बस यह सुनिश्चित करें कि बाहरी रिंग्स दक्षिणावर्त उन्मुख हैं और छेद वामावर्त हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.