[OpenMap Users] Calculate scale from Rectangle

From: Gubler, Rüdiger <rgubler_at_init-ka.de>
Date: Mon, 9 Aug 2004 12:20:17 +0200

Hi there,

i wrote the following code to calculate scale from a given boundingbox (represented by UpperLeft and LowerRight).
Unfortunately the result is not really good. Can someone find the error?


public float getScale(LatLonPoint ul, LatLonPoint lr, Projection projection)
{
      float pixPerDegree = ((Proj) projection).getPlanetPixelCircumference() / 360;

      // windowsize
      float height = projection.getHeight();
      float width = projection.getWidth();

      // Look at latitude
      float lat1 = ul.getLatitude();
      float lat2 = lr.getLatitude();
      float dlat = Math.abs(lat2 - lat1);

      // Look at longitude
      float dlon;
      float lon1 = ul.getLongitude();
      float lon2 = lr.getLongitude();
      // allow for crossing dateline
      if (lon1 > lon2)
      {
        dlon = (180 - lon1) + (180 + lon2);
      }
      else
      {
        dlon = lon2 - lon1;
      }
      dlon *= Math.abs(Math.cos(((lat1 + lat2) / 2)));

      float quotientLat = height / dlat;
      float quotientLon = width / dlon;

      // The new scale...
      return pixPerDegree / Math.min(quotientLat, quotientLon);
}


Yours Ruediger


--
[To unsubscribe to this list send an email to "majdart_at_bbn.com"
with the following text in the BODY of the message "unsubscribe openmap-users"]
Received on Mon Aug 09 2004 - 06:37:54 EDT

This archive was generated by hypermail 2.3.0 : Tue Mar 28 2017 - 23:25:05 EDT