7

I'm currently reading documentation about map projections to understand the source code of the Proj4 project.

The scale factor is named in a variety of sources I read. This sources explained its definition and its value for some projections.

In the source code of Proj4, for the mercator projection (sphere and ellipse case), the scale factor influences the coordinates on the projection :

//P->k0 is the scale factor
xy.x = P->k0 * lp.lam;
xy.y = - P->k0 * log(pj_tsfn(lp.phi, sin(lp.phi), P->e));

Why and how I should use the scale factor during the computation of the projection ? Is there any valuable resources on the web ?

This question in asked in the sense of projection computation. I can find the formula for the inverse and forward projection as well as the scale factor in a various of resources, but no one explains how I should use both in a algorithm. You have the definition of the projection and the definition of the scale factor, but it's not clearly written that I should multiply or divide the result by the scale factor.

Is it a general rule : if I find the formula for any projection with the related scale factor, should I, in all cases, always divide or multiply the results by the scale factor ?

3
  • 1
    There are many resources on map projections -- you just need to use that specific word pairing.
    – Martin F
    Nov 19, 2014 at 19:51
  • I'm going to expand my answer some more, in the hope of providing further help. However, you're not really being clear on what kind of "scale factor" are you asking about: the single principal scale of the map, or the position-dependent linear distortion over the map? Whether to multiply or divide "the results" -- what do you mean by "the results"?
    – Martin F
    Nov 20, 2014 at 18:57
  • If your real question is how to use a given scale factor to correct a map distance to a ground distance, it is often called grid-to-ground conversion, and i provide the answer below. I did it in a roundabout way because i wanted to explain the theory (and wasn't exactly sure what your question was).
    – Martin F
    Nov 20, 2014 at 19:41

2 Answers 2

6

Unfortunately, the term "scale factor" is ambiguous. In cartography, maps and projections, the concept and application of scale is of fundamental importance. By definition, it is a factor – meaning it is something to multiply or divide – so whether "scale" or "factor" is the adjective the particular word pairing has no obvious meaning, except in a particular context:

Every map or globe has a (stated or unstated) scale

The map or globe scale is a ratio of distance on map or globe to corresponding distance on the ground or reality. Either it has no units or its units reflect the map and ground units – miles per inch, km per cm, etc. It is variously called scale, map scale, principal scale, representational fraction, or nominal scale. I like that last one, nominal scale, because most maps have a single statement of its scale. Sadly, it is sometimes also called scale factor.

Every map projection results in a continuous variation in scale

All map projections distort linear scale, all over the map. This distortion is almost always termed scale factor (and sometimes "projection scale factor" or "point scale factor"). At any point on the map, it is the ratio of the "true" (undistorted) scale and the "nominal" (distorted) scale. In other words, it is the ratio of the true ground distance to the implied distance on the map.

Scale and computing a map projection

When computing a map projection, that is

(X, Y) ← projection (λ, φ)

you need to have some constant which depends on the size of your region of interest, the size of your map, and the map units involved. That constant is our friend the nominal scale. Since you don't provide the full code, and it's a little cryptic, I cannot say for certain, but I suspect that is what is meant by "scale factor" in your particular problem.

According to Mathematics_of_the_Mercator_projection on wiki, the spherical case, which uses radius, R, as a substitute for scale:

X = R λ

Y = R ln [tan (π/4 + φ/2)]

(That looks similar to your code.)

How is radius a substitute for scale? Simple. It is the constant which determines the size of the map: a larger globe yields a larger map. If R is the Earth's radius, then your map scale will be one-to-one. If R is the radius of your globe in, say, mm, inches, or pixels, then X,Y will be in those same units and the map's nominal scale, NS, will be the ratio of your globe's radius to the Earth's radius:

NS = globe radius / Earth radius

To get ground distances from a measurement on a projected map, including any distortions:

ground distance = map distance / NS

To remove distortion, see below.

Assessing scale distortion of a map projection

To properly correct distortion at any point on a projected map, you ought to be able to calculate the distortion, SF (scale factor):

SF ← distortion (λ, φ)

In this case, SF has to be calculated, or provided in a look-up table, wherever it is needed. Does your code calculate "scale factor" as a function of "lam" and "phi"? I doubt it.

According to Mathematics_of_the_Mercator_projection on wiki, which uses K for scale factor:

Spherical case: K = sec φ

Ellipsoidal case: K = sec φ sqrt(1 - e2 sin2 φ)

where e2 is about 0.006 for all reference ellipsoids.

To correct for any projection distortion, i.e., to convert a projected map distance to get true (undistorted) globe distance, always divide by the scale factor, SF:

ground distance = map distance / SF

That might look familiar.

Are the constant nominal scale and the variable scale factor used in the same way?

Yes, they're used in exactly the same way. However, whenever the Earth is really projected onto a map that is actually measured in terms of map units (mm, cm, inches, pixels, etc.), then you need to apply both

  • a global nominal scale to get the correct globe/earth magnitude and units, and
  • a local scale factor to correct for projection distortion at any particular Earth position.

If you are not making measurement on an actual map, and you are just using coordinates that are in the same units as your Earth radius, R, then your nominal scale is trivial (NS = 1) and you only need to use the scale factor.

6

A 'scale factor' when specified in connection with a map projection algorithm is a way to reduce the overall distortion due to the map projection.

For instance, the transverse Mercator projection usually has these projection parameters:

central meridian (also known as longitude of origin)
latitude of origin
scale factor 
false easting
false northing

It's a cylindrical projection where the cylinder is orientated east-west. That is, the waist of the cylinder corresponds with a meridian, or longitude line. So along that line, the scale is 1.0--no distortion. As you move away from the central meridian, distortion will increase.

One way to reduce the overall distortion is to apply a scale factor to all coordinates. In this case, it has the geometric effect of pushing the cylinder's surface below the central meridian, and you end up with two lines on either side of the central meridian that are roughly north-south that now have scale = 1.0. The central meridian's scale is now whatever the scale factor is. In a UTM zone, that's 0.9996. This is also called a secant case. If the scale factor is 1.0 on the central meridian, then it's a tangent case.

One (among many!) place that discusses all this and has pictures is the Map Projections page at ITC in the Netherlands.

Generally, the 'tangent' or normal coordinates are calculated for a map projection, then any scale factor is applied, then any false easting/false northing values are added.

Edit based on further information in the question

As Martin-F discusses, there's a difference between the projection parameter, "scale factor", and the "point scale" or "relative scale" that can be calculated at a point. The former affects the amount of distortion throughout the projected coordinate reference system. The latter is how you calculate what the relative distortion is at a point.

As an example, a UTM zone has a scale factor parameter of 0.9996. In a transverse Mercator projection, the central meridian would normally have a relative scale of 1.0 and the scale factor would be 1.0. In UTM, the central meridian now has a relative scale of 0.9996, so distances are 4 parts per 10000 too short. We could calculate the relative scale using a long equation on the ellipsoid, but on the sphere, it's

k = k0 / sqrt(1.0 - B*B); 

where B = cos(latitude)*sin(longitude - longitude0)

On the central meridian it becomes sin(0) = 0, so the entire B*B is 0 and you're left with k = k0.

I don't know if it would be helpful but you might want to look at John P. Snyder's Map Projections: a Working Manual (pdf here) and the Guidance Note 7-2 from IOGP's Geomatics committee (maintainers of the EPSG Geodetic Parameter Dataset). Both discuss the algorithms.

5
  • 1
    You can minimize the distortion (aka, scale factor) at places far away from the standard lines by using secant lines instead of tangent lines. You cannot, however, reduce distortion by applying "a scale factor to all coordinates". That just makes the map larger or smaller! The rest of the answer is sound, though.
    – Martin F
    Nov 19, 2014 at 19:47
  • 1
    How do you think the secant lines are created in a traverse cylindrical case? There's no latitude or longitude to set. You have to scale all the coordinates. Same method when using Lambert conformal conic with a single "standard" parallel. Apply a scale factor converts the tangent case to a secant case. You do reduce or increase distortion by applying a scale factor. What has happened to the coordinates on the central meridian in a UTM zone? Easting unaffected, but the Northing values have changed.
    – mkennedy
    Nov 19, 2014 at 20:17
  • Yes but i don't see how that answers the OP's question.
    – Martin F
    Nov 19, 2014 at 21:12
  • I don't think he's asking about the point scale factor, or only tangentially (ha-ha) but how the application of k0 aka a projection parameter that is usually called a "scale factor" affects the projection algorithm. The PROJ4 code that he's looking at is for Mercator defined with a scale factor NOT Mercator defined with standard parallels.
    – mkennedy
    Nov 20, 2014 at 0:18
  • Yes, this was the sense of my question : I could find the formula for the forward and inverse projection as well as the scale factor in a lot of resources. But no one explaining, how I should use both in a algorithm to compute the projection. I edited my question in this sense
    – yageek
    Nov 20, 2014 at 7:02

Your Answer

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

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