I'm using the ESRI Geometry Java API https://github.com/Esri/geometry-api-java
I want to construct an envelope and see if it contains certain points. It's possible the envelope crosses the International date line.
Here is some sample code I've tried:
<SPAN class="pln"> </SPAN><SPAN class="kwd">double</SPAN><SPAN class="pln"> lon </SPAN><SPAN class="pun">=</SPAN><SPAN class="pln"> </SPAN><SPAN class="typ">Double</SPAN><SPAN class="pun">.</SPAN><SPAN class="pln">parseDouble</SPAN><SPAN class="pun">(</SPAN><SPAN class="str">"179.99"</SPAN><SPAN class="pun">);</SPAN><SPAN class="pln">
</SPAN><SPAN class="kwd"> double</SPAN><SPAN class="pln"> lat </SPAN><SPAN class="pun">=</SPAN><SPAN class="pln"> </SPAN><SPAN class="typ">Double</SPAN><SPAN class="pun">.</SPAN><SPAN class="pln">parseDouble</SPAN><SPAN class="pun">(</SPAN><SPAN class="str">"0"</SPAN><SPAN class="pun">);
</SPAN><SPAN class="pln"> </SPAN><SPAN class="typ">Point</SPAN><SPAN class="pln"> pt </SPAN><SPAN class="pun">=</SPAN><SPAN class="pln"> </SPAN><SPAN class="kwd">new</SPAN><SPAN class="pln"> </SPAN><SPAN class="typ">Point</SPAN><SPAN class="pun">(</SPAN><SPAN class="pln">lon</SPAN><SPAN class="pun">,</SPAN><SPAN class="pln"> lat</SPAN><SPAN class="pun">);
</SPAN><SPAN class="kwd"> double</SPAN><SPAN class="pln"> minlon </SPAN><SPAN class="pun">=</SPAN><SPAN class="pln"> </SPAN><SPAN class="typ">Double</SPAN><SPAN class="pun">.</SPAN><SPAN class="pln">parseDouble</SPAN><SPAN class="pun">(</SPAN><SPAN class="str">"170"</SPAN><SPAN class="pun">);
</SPAN><SPAN class="pln"></SPAN><SPAN class="kwd"> double</SPAN><SPAN class="pln"> minlat </SPAN><SPAN class="pun">=</SPAN><SPAN class="pln"> </SPAN><SPAN class="typ">Double</SPAN><SPAN class="pun">.</SPAN><SPAN class="pln">parseDouble</SPAN><SPAN class="pun">(</SPAN><SPAN class="str">"-20"</SPAN><SPAN class="pun">);</SPAN>
<SPAN class="kwd"> double</SPAN><SPAN class="pln"> maxlon </SPAN><SPAN class="pun">=</SPAN><SPAN class="pln"> </SPAN><SPAN class="typ">Double</SPAN><SPAN class="pun">.</SPAN><SPAN class="pln">parseDouble</SPAN><SPAN class="pun">(</SPAN><SPAN class="str">"-170"</SPAN><SPAN class="pun">);</SPAN><SPAN class="pln">
</SPAN><SPAN class="kwd"> double</SPAN><SPAN class="pln"> maxlat </SPAN><SPAN class="pun">=</SPAN><SPAN class="pln"> </SPAN><SPAN class="typ">Double</SPAN><SPAN class="pun">.</SPAN><SPAN class="pln">parseDouble</SPAN><SPAN class="pun">(</SPAN><SPAN class="str">"20"</SPAN><SPAN class="pun">);</SPAN><SPAN class="pln">
</SPAN><SPAN class="typ"> Envelope ev</SPAN><SPAN class="pln"> </SPAN><SPAN class="pun">=</SPAN><SPAN class="pln"> </SPAN><SPAN class="kwd">new</SPAN><SPAN class="pln"> </SPAN><SPAN class="typ">Envelope</SPAN><SPAN class="pun">(</SPAN><SPAN class="pln">minlon</SPAN><SPAN class="pun">,</SPAN><SPAN class="pln"> minlat</SPAN><SPAN class="pun">,</SPAN><SPAN class="pln"> maxlon</SPAN><SPAN class="pun">,</SPAN><SPAN class="pln"> maxlat</SPAN><SPAN class="pun">);</SPAN><SPAN class="pln">
</SPAN><SPAN class="typ"> SpatialReference</SPAN><SPAN class="pln"> sr </SPAN><SPAN class="pun">=</SPAN><SPAN class="pln"> </SPAN><SPAN class="typ">SpatialReference</SPAN><SPAN class="pun">.</SPAN><SPAN class="pln">create</SPAN><SPAN class="pun">(</SPAN><SPAN class="lit">4326</SPAN><SPAN class="pun">);</SPAN><SPAN class="pln"> </SPAN><SPAN class="com">// decimal degrees</SPAN><SPAN class="pln">
</SPAN><SPAN class="kwd"> boolean</SPAN><SPAN class="pln"> test </SPAN><SPAN class="pun">=</SPAN><SPAN class="pln"> </SPAN><SPAN class="typ">GeometryEngine</SPAN><SPAN class="pun">.</SPAN><SPAN class="pln">contains</SPAN><SPAN class="pun">(</SPAN><SPAN class="pln">ev</SPAN><SPAN class="pun">,</SPAN><SPAN class="pln"> pt</SPAN><SPAN class="pun">,</SPAN><SPAN class="pln"> sr</SPAN><SPAN class="pun">);</SPAN><SPAN class="pln">
</SPAN><SPAN class="typ"> System</SPAN><SPAN class="pun">.</SPAN><SPAN class="pln">out</SPAN><SPAN class="pun">.</SPAN><SPAN class="pln">println</SPAN><SPAN class="pun">(</SPAN><SPAN class="typ">GeometryEngine</SPAN><SPAN class="pun">.</SPAN><SPAN class="pln">geometryToJson</SPAN><SPAN class="pun">(</SPAN><SPAN class="pln">sr</SPAN><SPAN class="pun">,</SPAN><SPAN class="pln"> ev</SPAN><SPAN class="pun">));</SPAN><SPAN class="pln">
assertTrue</SPAN><SPAN class="pun">(</SPAN><SPAN class="str">"envelope containts point true"</SPAN><SPAN class="pun">,</SPAN><SPAN class="pln"> test</SPAN><SPAN class="pun">);</SPAN>
The test fails, and if I check the print statement I get a json that has swapped my x-coordinates
<SPAN class="pun"> {</SPAN><SPAN class="str">"xmin"</SPAN><SPAN class="pun">:-</SPAN><SPAN class="lit">170</SPAN><SPAN class="pun">,</SPAN><SPAN class="str">"ymin"</SPAN><SPAN class="pun">:-</SPAN><SPAN class="lit">20</SPAN><SPAN class="pun">,</SPAN><SPAN class="str">"xmax"</SPAN><SPAN class="pun">:</SPAN><SPAN class="lit">170</SPAN><SPAN class="pun">,</SPAN><SPAN class="str">"ymax"</SPAN><SPAN class="pun">:</SPAN><SPAN class="lit">20</SPAN><SPAN class="pun">,</SPAN><SPAN class="str">"spatialReference"</SPAN><SPAN class="pun">:{</SPAN><SPAN class="str">"wkid"</SPAN><SPAN class="pun">:</SPAN><SPAN class="lit">4326</SPAN><SPAN class="pun">}}</SPAN>Is there a different/better way to do this?