I'm querying a map service and using the polygon ring coordinates to the use as input geometry for another map service query. It looks like I'm not able to guarantee the point order of the first result and treats this as an outside ring (applying incorrect selections on the second query).
For example, I may have this as the initial ring:
<SPAN class="punctuation token">{</SPAN>
<SPAN class="string token">"rings"</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="punctuation token">[</SPAN>
<SPAN class="punctuation token">[</SPAN>
<SPAN class="punctuation token">[</SPAN>
<SPAN class="operator token">-</SPAN><SPAN class="number token">80.0929469116589</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="number token">26.6756462518988</SPAN>
<SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="punctuation token">[</SPAN>
<SPAN class="operator token">-</SPAN><SPAN class="number token">80.0924963005446</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="number token">26.6756390617361</SPAN>
<SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="punctuation token">[</SPAN>
<SPAN class="operator token">-</SPAN><SPAN class="number token">80.0924828894995</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="number token">26.6753730253964</SPAN>
<SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="punctuation token">[</SPAN>
<SPAN class="operator token">-</SPAN><SPAN class="number token">80.092965687122</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="number token">26.675375422123</SPAN>
<SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="punctuation token">[</SPAN>
<SPAN class="operator token">-</SPAN><SPAN class="number token">80.0929469116589</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="number token">26.6756462518988</SPAN>
<SPAN class="punctuation token">]</SPAN>
<SPAN class="punctuation token">]</SPAN>
<SPAN class="punctuation token">]</SPAN>
<SPAN class="punctuation token">}</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>However, this selects features "outside" of that ring and it needs it to be in this order:
<SPAN class="punctuation token">{</SPAN>
<SPAN class="string token">"rings"</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="punctuation token">[</SPAN>
<SPAN class="punctuation token">[</SPAN>
<SPAN class="punctuation token">[</SPAN>
<SPAN class="operator token">-</SPAN><SPAN class="number token">80.0929469116589</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="number token">26.6756462518988</SPAN>
<SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="punctuation token">[</SPAN>
<SPAN class="operator token">-</SPAN><SPAN class="number token">80.092965687122</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="number token">26.675375422123</SPAN>
<SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="punctuation token">[</SPAN>
<SPAN class="operator token">-</SPAN><SPAN class="number token">80.0924828894995</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="number token">26.6753730253964</SPAN>
<SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="punctuation token">[</SPAN>
<SPAN class="operator token">-</SPAN><SPAN class="number token">80.0924963005446</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="number token">26.6756390617361</SPAN>
<SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="punctuation token">[</SPAN>
<SPAN class="operator token">-</SPAN><SPAN class="number token">80.0929469116589</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="number token">26.6756462518988</SPAN>
<SPAN class="punctuation token">]</SPAN>
<SPAN class="punctuation token">]</SPAN>
<SPAN class="punctuation token">]</SPAN>
<SPAN class="punctuation token">}</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>Here's the basic code I am using to get the ring feature:
ringFeat <SPAN class="operator token">=</SPAN> <SPAN class="string token">''</SPAN>
qFl <SPAN class="operator token">=</SPAN> <SPAN class="string token">'https://services1.arcgis.com/sDAPyc2rGRn7vf9B/ArcGIS/rest/services/polySelectionLayer/FeatureServer/0/query'</SPAN>
sql <SPAN class="operator token">=</SPAN> <SPAN class="string token">"OBJECTID=2"</SPAN>
qFlParams <SPAN class="operator token">=</SPAN> urllib<SPAN class="punctuation token">.</SPAN>urlencode<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">{</SPAN><SPAN class="string token">'f'</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="string token">'json'</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="string token">'geometryType'</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="string token">'esriGeometryPolygon'</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="string token">'geometry'</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="string token">''</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="string token">'spatialRel'</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="string token">'esriSpatialRelIntersects'</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="string token">'outSR'</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="string token">'4326'</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="string token">'outFields'</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="string token">'OBJECTID'</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="string token">'returnGeometry'</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="string token">'true'</SPAN><SPAN class="punctuation token">,</SPAN>
<SPAN class="string token">'where'</SPAN><SPAN class="punctuation token">:</SPAN> sql<SPAN class="punctuation token">,</SPAN>
<SPAN class="string token">'token'</SPAN><SPAN class="punctuation token">:</SPAN> token
<SPAN class="punctuation token">}</SPAN><SPAN class="punctuation token">)</SPAN>
reqFl <SPAN class="operator token">=</SPAN> urllib2<SPAN class="punctuation token">.</SPAN>Request<SPAN class="punctuation token">(</SPAN>qFl<SPAN class="punctuation token">,</SPAN> qFlParams<SPAN class="punctuation token">)</SPAN>
errchk1 <SPAN class="operator token">=</SPAN> <SPAN class="string token">''</SPAN>
<SPAN class="keyword token">try</SPAN><SPAN class="punctuation token">:</SPAN>
response <SPAN class="operator token">=</SPAN> urllib2<SPAN class="punctuation token">.</SPAN>urlopen<SPAN class="punctuation token">(</SPAN>reqFl<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">except</SPAN> urllib2<SPAN class="punctuation token">.</SPAN>HTTPError<SPAN class="punctuation token">,</SPAN> e<SPAN class="punctuation token">:</SPAN>
errchk1 <SPAN class="operator token">=</SPAN> str<SPAN class="punctuation token">(</SPAN>e<SPAN class="punctuation token">.</SPAN>code<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">except</SPAN> urllib2<SPAN class="punctuation token">.</SPAN>URLError<SPAN class="punctuation token">,</SPAN> e<SPAN class="punctuation token">:</SPAN>
errchk1 <SPAN class="operator token">=</SPAN> str<SPAN class="punctuation token">(</SPAN>e<SPAN class="punctuation token">.</SPAN>code<SPAN class="punctuation token">)</SPAN>
<SPAN class="keyword token">if</SPAN> errchk1 <SPAN class="operator token">==</SPAN> <SPAN class="string token">''</SPAN><SPAN class="punctuation token">:</SPAN>
jsonResult <SPAN class="operator token">=</SPAN> json<SPAN class="punctuation token">.</SPAN>load<SPAN class="punctuation token">(</SPAN>response<SPAN class="punctuation token">)</SPAN>
appCount <SPAN class="operator token">=</SPAN> len<SPAN class="punctuation token">(</SPAN>jsonResult<SPAN class="punctuation token">[</SPAN><SPAN class="string token">'features'</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="comment token">#if you have features, set the ringFeat to use in another query</SPAN>
<SPAN class="keyword token">if</SPAN> appCount <SPAN class="operator token">></SPAN> <SPAN class="number token">0</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="keyword token">for</SPAN> feature <SPAN class="keyword token">in</SPAN> jsonResult<SPAN class="punctuation token">[</SPAN><SPAN class="string token">'features'</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">:</SPAN>
ringFeat <SPAN class="operator token">=</SPAN> feature<SPAN class="punctuation token">[</SPAN><SPAN class="string token">'geometry'</SPAN><SPAN class="punctuation token">]</SPAN>
<SPAN class="comment token">#finalringFeat = json.loads(ringFeats)</SPAN>
<SPAN class="keyword token">print</SPAN> json<SPAN class="punctuation token">.</SPAN>dumps<SPAN class="punctuation token">(</SPAN>ringFeat<SPAN class="punctuation token">)</SPAN>
finalRing <SPAN class="operator token">=</SPAN> json<SPAN class="punctuation token">.</SPAN>dumps<SPAN class="punctuation token">(</SPAN>ringFeat<SPAN class="punctuation token">)</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>