PDA

View Full Version : cylindrical equal-area projection



haroim
03-20-2009, 09:56 AM
I have a bit of a problem with the cylindrical equal-area projection. I can't figure out how i can project it correctly from longitude , latitude and altitude data to x, y and altitude.

I need an equal-area projection, because i want to use this for a game map in which i want all the area's to have the same size (that would be fair for the players). But I also want to keep realism, so i need a correct projection of the map.

Or can i better use an other projection method to achieve this (like for example the mollerweide projection)?

i hope my question is clear.

su_liam
03-20-2009, 01:55 PM
Here are some formulas:
Each parallel has a length of 2*pi*cos(theta), this is the height of the map in y.
Each meridian has a length of 2*R/cos(theta), this is the width of the map in x.
The distance of each parallel to the equator is R*sin(phi)/cos(theta).
Where R is the radius of the generating globe of the chosen area scale, theta is the standard parallel, phi is the latitude of interest.

For a point on the globe (lat/lon), where lat is the latitude of the point and lon is the longitude of the point(in degrees) and the map is centered at latlon(0,0), west longitudes are negative values as are south latitudes,

x = 2*pi*cos(theta) * (lon + 180)/360
y = R*sin(lat)/cos(phi)

The ratio of width/height of the map is determined from,

cos(theta) = acos((ratio/pi)^0.5)

Some standard projections and their standard parallels:
Lambert - pi/1 ratio, theta=0
Behrmann - ~2.356:1 ratio, theta=30

Gall-Peters - pi/2:1 ratio, theta=45

Hopefully this would be helpful. :)

edit: Info from Arthur Robinson, Randall Sale, Joel Morrison, "Elements of Cartography" 4th ed., 1978, John Wiley and Sons: New York.

The wikipedia describes this well under Gall-Peters projection (http://en.wikipedia.org/wiki/Gall-Peters_projection). Even more generally, but in less detail under Lambert cylindrical equal-area projection (http://en.wikipedia.org/wiki/Lambert cylindrical_equal-area_projection).

haroim
03-20-2009, 04:00 PM
thanks for the reaction! i am now looking into it.

haroim
03-20-2009, 06:53 PM
I have looked into it and i get out the following:

If i want to make a projection i will need for each (x,y) an altitude. I can find the altitude in a (lon,lat) form. So to get the altitude of (x,y) i will need to know the (lon,lat) of (x,y).

(x,y)=(lon,lat)

x = 2*pi*cos(theta) * (lon + 180)/360
lon = (x*360)/(2*pi*cos(theta))-180

y = R*sin(lat)/cos(phi)
lat=invsin(cos(phi)*y/R)

so (x,y)=(lon,lat)=( (x*360)/(2*pi*cos(theta))-180, invsin(cos(phi)*y/R)) )

so i should be able to calculate the altitude of (x,y) by taking the altitude of ( (x*360)/(2*pi*cos(theta))-180, invsin(cos(phi)*y/R)) ).

is this correct? And what is phi? Is it the standard latitude, and what number should i enter?

su_liam
03-21-2009, 12:08 AM
It looks correct to me... I'll have to check your algebra when I have more time and my brain is working.

Yes, phi is the standard latitude. It's a constant for a given map. For Lambert cylindrical equal-area it's 0, the equator. For Behrmann, it's 30degrees. For Gall-Peters it's 45 degrees.

haroim
03-21-2009, 03:00 AM
Thanks! So the phi is the same as the theta. Should i take the width of my map as R, or should i take the width, calculate it into a sphere, and calculate the radius of the sphere?