Voici un lien vers le document d'Esri sur les objets de géométrie JSON . Depuis cette page:
L'API REST prend en charge 4 types de géométrie - points, polylignes, polygones et enveloppes.
Les sons comme les polygones multiples ne sont pas pris en charge. Voir ci-dessous. Vous pouvez créer plusieurs polygones en ajoutant des anneaux supplémentaires. Il n'y a rien d'explicite dans les anneaux intérieurs contre extérieurs. Je suis curieux, je vais donc approfondir ... modifierai ce message si je trouve autre chose.
Edit: j'ai approfondi un peu plus. Il semble que si vous ajoutez des anneaux qui tombent à l'intérieur d'un anneau existant, les anneaux intérieurs sont des trous. Si vous ajoutez un anneau qui n'est pas à l'intérieur d'un autre anneau, il est ajouté en tant que polygone supplémentaire qui est essentiellement un multi-polygone. Voici une page simple qui montre ceci:
<!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>
Si vous chargez cette page, le premier anneau est le carré avec deux trous. Les deux trous sont les anneaux deux et trois. Le quatrième anneau du polygone le plus occidental. Cela pourrait ressembler à deux graphiques, mais ce n'est en fait qu'un seul.
Le format esri json suit de près celui de la forme esri.
Les polygones esri sont constitués d'anneaux. Ils peuvent représenter à la fois des entités multipolygone et polygone de l'OGC.
Les polygones géométriquement simples n'auront aucune auto-intersection et auront des anneaux extérieurs dans le sens horaire et des anneaux intérieurs (trous) dans le sens antihoraire. Si vous lisez des services Esri, c'est ce que vous obtenez habituellement.
Les polygones non simples (ceux qui ont des anneaux orientés différemment ou ont des auto-intersections) doivent être interprétés en utilisant la règle de remplissage pair-impair régulière lors du dessin ou de la création d'un point dans le test de polygone .
Lors de la conversion du multipolygone OGC en polygone Esri, assurez-vous simplement que les anneaux extérieurs sont orientés dans le sens horaire et les trous dans le sens antihoraire.
la source