<div dir="ltr"><div>Hi</div><div><br></div><div>I am having a look at</div><div>bool GeographicBoundingBox::Private::intersects(const Private &other) const {</div><div>(at metadata.cpp <a href="https://github.com/OSGeo/PROJ/blob/e0e14829a404672adcf494057d7d70cfc8f96905/src/iso19111/metadata.cpp#L315">https://github.com/OSGeo/PROJ/blob/e0e14829a404672adcf494057d7d70cfc8f96905/src/iso19111/metadata.cpp#L315</a> )</div><div><br></div><div>And I see something estrange</div><div><br></div><div>The function starts with 3 if statements:</div><div><br></div><div>    if (N < oS || S > oN) {<br>        return false;<br>    }<br><br>    if (W == -180.0 && E == 180.0 && oW > oE) {<br>        return true;<br>    }<br><br>    if (oW == -180.0 && oE == 180.0 && W > E) {<br>        return true;<br>    }</div><div><br></div><div>The first is clear: checks the intersection in the N-S range.</div><div>But the second and third I would expect</div><div><div>    if (W == -180.0 && E == 180.0) {<br>        return true;<br>    }<br><br>    if (oW == -180.0 && oE == 180.0) {<br>        return true;<br>    }</div><div>if it covers the whole planet (from -180 to 180) it clearly intersects, right? Or am I missing something? (after is passes the first if statement on N-S)<br></div><div><br></div><div>I am not trying to optimize the method, but just to understand it (I am implementing it in javascript)<br></div><div><br></div><div>Thanks.<br></div><div><br></div> </div><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div></div><div>.___ ._ ..._ .. . ._.  .___ .. __ . _. . __..  ... .... ._ .__</div></div></div></div></div>