I'm trying to create an equal area projection from a sphere. The sphere might not necessarily be the Earth. I would like, for instance, to use the Sun. Using the code

  GeoRange -> All, 
  GeoModel -> Entity["Star", "Sun"], 
  GeoProjection -> "Orthographic"]  

doesn't work. This must have something to do with the data that Mathematica has for the Sun.

So, I decided that I need to create my own sphere like so:

 SphericalPlot3D[1, {u, 0, Pi}, {v, 0, 2 Pi}, 
   PlotPoints -> 50, 
   TextureCoordinateFunction -> ({#5, 1 - #4} &), 
   PlotStyle -> Directive[Texture[Import["https://i.sstatic.net/YOzSq.jpg"]]]]

Image of Sphere

Now, I want to use an equal area projection. Preferably, I would like to use GeoProjection and GeoProjectionData. But I am having trouble putting it into the correct format. I don't need to use GeoProjection, but it seems like a good option.


2 Answers 2


ImageTransformation[] is useful for this. I assume centering at $(\varphi,\lambda)=(0,0)$; for other centers, I'll leave the adjustment to you.

sun = Import["https://i.sstatic.net/YOzSq.jpg"];

ImageTransformation[sun, If[#[[1]]^2 + #[[2]]^2 < 1,
                            {Arg[Sqrt[1 - #[[1]]^2 - #[[2]]^2] + I #[[1]]], 
                             ArcSin[#[[2]]]}, {π, π}] &, 
                    DataRange -> {{-π, π}, {-π/2, π/2}}, Padding -> 1., 
                    PlotRange -> {{-1, 1}, {-1, 1}}]

orthographically-projected sun

  • $\begingroup$ (For comparison's sake, replace sun in the above code with your favorite equirectangular map of Earth, and compare with GeoGraphics[GeoRange -> All, GeoProjection -> "Orthographic"].) $\endgroup$ Jan 24, 2017 at 12:59

If you project a sphere onto the lateral cylinder it fits into by going from the z-axis out, parallel to the xy-plane, you get an equal-area transformation f, the total area is 4 pi r^2 for each. But it's very shape-distorting, especially near the poles.

f(x,y,z)= (a,b,z) where x^2 + y^2 + z^2 = r^2, a^2 + b^2 = r^2, and b/a = y/x.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.