回答:
JSONジオメトリオブジェクトに関するEsriのドキュメントへのリンクは次のとおりです。そのページから:
REST APIは、ポイント、ポリライン、ポリゴン、エンベロープの4つのジオメトリタイプをサポートしています。
マルチポリゴンのようなサウンドはサポートされていません。下記参照。リングを追加して、マルチポリゴンを作成できます。内部リングと外部リングについては明確なものはありません。私は好奇心が強いので、これをさらに調査するつもりです...他に何か見つけたら、この投稿を編集します。
編集:私はこれをもう少し調べました。既存のリングの内側にあるリングを追加すると、内部リングは穴のように見えます。別のリングの内側にないリングを追加すると、基本的にマルチポリゴンである追加のポリゴンとして追加されます。これはこれを示す簡単なページです:
<!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つの穴のある正方形になります。2つの穴はリング2と3です。最も西のポリゴンの4番目のリング。これは2つのグラフィックのように見えるかもしれませんが、実際には1つだけです。
esri jsonフォーマットは、esriシェイプのフォーマットに厳密に従っています。
esriポリゴンはリングで構成されています。OGCからマルチポリゴンとポリゴンエンティティの両方を表すことができます。
幾何学的に単純なポリゴンには自己交差がなく、時計回りに外部リング、反時計回りに内部リング(穴)があります。Esriサービスから読んでいる場合、それは通常取得するものです。
単純でないポリゴン(リングの向きが異なる、または自己交差があるポリゴン)は、ポリゴンテストでポイントを描画または作成するときに、通常の偶奇塗りつぶしルールを使用して解釈する必要があります。
OGCマルチポリゴンからEsriポリゴンに変換するときは、外部リングが時計回りに、穴が反時計回りになっていることを確認してください。