1mapproj(n) Tcl Library mapproj(n)
2
3
4
5______________________________________________________________________________
6
8 mapproj - Map projection routines
9
11 package require Tcl ?8.4?
12
13 package require math::interpolate ?1.0?
14
15 package require math::special ?0.2.1?
16
17 package require mapproj ?1.0?
18
19 ::mapproj::toPlateCarree lambda_0 phi_0 lambda phi
20
21 ::mapproj::fromPlateCarree lambda_0 phi_0 x y
22
23 ::mapproj::toCylindricalEqualArea lambda_0 phi_0 lambda phi
24
25 ::mapproj::fromCylindricalEqualArea lambda_0 phi_0 x y
26
27 ::mapproj::toMercator lambda_0 phi_0 lambda phi
28
29 ::mapproj::fromMercator lambda_0 phi_0 x y
30
31 ::mapproj::toMillerCylindrical lambda_0 lambda phi
32
33 ::mapproj::fromMillerCylindrical lambda_0 x y
34
35 ::mapproj::toSinusoidal lambda_0 phi_0 lambda phi
36
37 ::mapproj::fromSinusoidal lambda_0 phi_0 x y
38
39 ::mapproj::toMollweide lambda_0 lambda phi
40
41 ::mapproj::fromMollweide lambda_0 x y
42
43 ::mapproj::toEckertIV lambda_0 lambda phi
44
45 ::mapproj::fromEckertIV lambda_0 x y
46
47 ::mapproj::toEckertVI lambda_0 lambda phi
48
49 ::mapproj::fromEckertVI lambda_0 x y
50
51 ::mapproj::toRobinson lambda_0 lambda phi
52
53 ::mapproj::fromRobinson lambda_0 x y
54
55 ::mapproj::toCassini lambda_0 phi_0 lambda phi
56
57 ::mapproj::fromCassini lambda_0 phi_0 x y
58
59 ::mapproj::toPeirceQuincuncial lambda_0 lambda phi
60
61 ::mapproj::fromPeirceQuincuncial lambda_0 x y
62
63 ::mapproj::toOrthographic lambda_0 phi_0 lambda phi
64
65 ::mapproj::fromOrthographic lambda_0 phi_0 x y
66
67 ::mapproj::toStereographic lambda_0 phi_0 lambda phi
68
69 ::mapproj::fromStereographic lambda_0 phi_0 x y
70
71 ::mapproj::toGnomonic lambda_0 phi_0 lambda phi
72
73 ::mapproj::fromGnomonic lambda_0 phi_0 x y
74
75 ::mapproj::toAzimuthalEquidistant lambda_0 phi_0 lambda phi
76
77 ::mapproj::fromAzimuthalEquidistant lambda_0 phi_0 x y
78
79 ::mapproj::toLambertAzimuthalEqualArea lambda_0 phi_0 lambda phi
80
81 ::mapproj::fromLambertAzimuthalEqualArea lambda_0 phi_0 x y
82
83 ::mapproj::toHammer lambda_0 lambda phi
84
85 ::mapproj::fromHammer lambda_0 x y
86
87 ::mapproj::toConicEquidistant lambda_0 phi_0 phi_1 phi_2 lambda phi
88
89 ::mapproj::fromConicEquidistant lambda_0 phi_0 phi_1 phi_2 x y
90
91 ::mapproj::toAlbersEqualAreaConic lambda_0 phi_0 phi_1 phi_2 lambda phi
92
93 ::mapproj::fromAlbersEqualAreaConic lambda_0 phi_0 phi_1 phi_2 x y
94
95 ::mapproj::toLambertConformalConic lambda_0 phi_0 phi_1 phi_2 lambda
96 phi
97
98 ::mapproj::fromLambertConformalConic lambda_0 phi_0 phi_1 phi_2 x y
99
100 ::mapproj::toLambertCylindricalEqualArea lambda_0 phi_0 lambda phi
101
102 ::mapproj::fromLambertCylindricalEqualArea lambda_0 phi_0 x y
103
104 ::mapproj::toBehrmann lambda_0 phi_0 lambda phi
105
106 ::mapproj::fromBehrmann lambda_0 phi_0 x y
107
108 ::mapproj::toTrystanEdwards lambda_0 phi_0 lambda phi
109
110 ::mapproj::fromTrystanEdwards lambda_0 phi_0 x y
111
112 ::mapproj::toHoboDyer lambda_0 phi_0 lambda phi
113
114 ::mapproj::fromHoboDyer lambda_0 phi_0 x y
115
116 ::mapproj::toGallPeters lambda_0 phi_0 lambda phi
117
118 ::mapproj::fromGallPeters lambda_0 phi_0 x y
119
120 ::mapproj::toBalthasart lambda_0 phi_0 lambda phi
121
122 ::mapproj::fromBalthasart lambda_0 phi_0 x y
123
124______________________________________________________________________________
125
127 The mapproj package provides a set of procedures for converting between
128 world co-ordinates (latitude and longitude) and map co-ordinates on a
129 number of different map projections.
130
132 The following commands convert between world co-ordinates and map co-
133 ordinates:
134
135 ::mapproj::toPlateCarree lambda_0 phi_0 lambda phi
136 Converts to the plate carrée (cylindrical equidistant) projec‐
137 tion.
138
139 ::mapproj::fromPlateCarree lambda_0 phi_0 x y
140 Converts from the plate carrée (cylindrical equidistant) projec‐
141 tion.
142
143 ::mapproj::toCylindricalEqualArea lambda_0 phi_0 lambda phi
144 Converts to the cylindrical equal-area projection.
145
146 ::mapproj::fromCylindricalEqualArea lambda_0 phi_0 x y
147 Converts from the cylindrical equal-area projection.
148
149 ::mapproj::toMercator lambda_0 phi_0 lambda phi
150 Converts to the Mercator (cylindrical conformal) projection.
151
152 ::mapproj::fromMercator lambda_0 phi_0 x y
153 Converts from the Mercator (cylindrical conformal) projection.
154
155 ::mapproj::toMillerCylindrical lambda_0 lambda phi
156 Converts to the Miller Cylindrical projection.
157
158 ::mapproj::fromMillerCylindrical lambda_0 x y
159 Converts from the Miller Cylindrical projection.
160
161 ::mapproj::toSinusoidal lambda_0 phi_0 lambda phi
162 Converts to the sinusoidal (Sanson-Flamsteed) projection. pro‐
163 jection.
164
165 ::mapproj::fromSinusoidal lambda_0 phi_0 x y
166 Converts from the sinusoidal (Sanson-Flamsteed) projection.
167 projection.
168
169 ::mapproj::toMollweide lambda_0 lambda phi
170 Converts to the Mollweide projection.
171
172 ::mapproj::fromMollweide lambda_0 x y
173 Converts from the Mollweide projection.
174
175 ::mapproj::toEckertIV lambda_0 lambda phi
176 Converts to the Eckert IV projection.
177
178 ::mapproj::fromEckertIV lambda_0 x y
179 Converts from the Eckert IV projection.
180
181 ::mapproj::toEckertVI lambda_0 lambda phi
182 Converts to the Eckert VI projection.
183
184 ::mapproj::fromEckertVI lambda_0 x y
185 Converts from the Eckert VI projection.
186
187 ::mapproj::toRobinson lambda_0 lambda phi
188 Converts to the Robinson projection.
189
190 ::mapproj::fromRobinson lambda_0 x y
191 Converts from the Robinson projection.
192
193 ::mapproj::toCassini lambda_0 phi_0 lambda phi
194 Converts to the Cassini (transverse cylindrical equidistant)
195 projection.
196
197 ::mapproj::fromCassini lambda_0 phi_0 x y
198 Converts from the Cassini (transverse cylindrical equidistant)
199 projection.
200
201 ::mapproj::toPeirceQuincuncial lambda_0 lambda phi
202 Converts to the Peirce Quincuncial Projection.
203
204 ::mapproj::fromPeirceQuincuncial lambda_0 x y
205 Converts from the Peirce Quincuncial Projection.
206
207 ::mapproj::toOrthographic lambda_0 phi_0 lambda phi
208 Converts to the orthographic projection.
209
210 ::mapproj::fromOrthographic lambda_0 phi_0 x y
211 Converts from the orthographic projection.
212
213 ::mapproj::toStereographic lambda_0 phi_0 lambda phi
214 Converts to the stereographic (azimuthal conformal) projection.
215
216 ::mapproj::fromStereographic lambda_0 phi_0 x y
217 Converts from the stereographic (azimuthal conformal) projec‐
218 tion.
219
220 ::mapproj::toGnomonic lambda_0 phi_0 lambda phi
221 Converts to the gnomonic projection.
222
223 ::mapproj::fromGnomonic lambda_0 phi_0 x y
224 Converts from the gnomonic projection.
225
226 ::mapproj::toAzimuthalEquidistant lambda_0 phi_0 lambda phi
227 Converts to the azimuthal equidistant projection.
228
229 ::mapproj::fromAzimuthalEquidistant lambda_0 phi_0 x y
230 Converts from the azimuthal equidistant projection.
231
232 ::mapproj::toLambertAzimuthalEqualArea lambda_0 phi_0 lambda phi
233 Converts to the Lambert azimuthal equal-area projection.
234
235 ::mapproj::fromLambertAzimuthalEqualArea lambda_0 phi_0 x y
236 Converts from the Lambert azimuthal equal-area projection.
237
238 ::mapproj::toHammer lambda_0 lambda phi
239 Converts to the Hammer projection.
240
241 ::mapproj::fromHammer lambda_0 x y
242 Converts from the Hammer projection.
243
244 ::mapproj::toConicEquidistant lambda_0 phi_0 phi_1 phi_2 lambda phi
245 Converts to the conic equidistant projection.
246
247 ::mapproj::fromConicEquidistant lambda_0 phi_0 phi_1 phi_2 x y
248 Converts from the conic equidistant projection.
249
250 ::mapproj::toAlbersEqualAreaConic lambda_0 phi_0 phi_1 phi_2 lambda phi
251 Converts to the Albers equal-area conic projection.
252
253 ::mapproj::fromAlbersEqualAreaConic lambda_0 phi_0 phi_1 phi_2 x y
254 Converts from the Albers equal-area conic projection.
255
256 ::mapproj::toLambertConformalConic lambda_0 phi_0 phi_1 phi_2 lambda
257 phi
258 Converts to the Lambert conformal conic projection.
259
260 ::mapproj::fromLambertConformalConic lambda_0 phi_0 phi_1 phi_2 x y
261 Converts from the Lambert conformal conic projection.
262
263 Among the cylindrical equal-area projections, there are a number of
264 choices of standard parallels that have names:
265
266 ::mapproj::toLambertCylindricalEqualArea lambda_0 phi_0 lambda phi
267 Converts to the Lambert cylindrical equal area projection.
268 (standard parallel is the Equator.)
269
270 ::mapproj::fromLambertCylindricalEqualArea lambda_0 phi_0 x y
271 Converts from the Lambert cylindrical equal area projection.
272 (standard parallel is the Equator.)
273
274 ::mapproj::toBehrmann lambda_0 phi_0 lambda phi
275 Converts to the Behrmann cylindrical equal area projection.
276 (standard parallels are 30 degrees North and South)
277
278 ::mapproj::fromBehrmann lambda_0 phi_0 x y
279 Converts from the Behrmann cylindrical equal area projection.
280 (standard parallels are 30 degrees North and South.)
281
282 ::mapproj::toTrystanEdwards lambda_0 phi_0 lambda phi
283 Converts to the Trystan Edwards cylindrical equal area projec‐
284 tion. (standard parallels are 37.4 degrees North and South)
285
286 ::mapproj::fromTrystanEdwards lambda_0 phi_0 x y
287 Converts from the Trystan Edwards cylindrical equal area projec‐
288 tion. (standard parallels are 37.4 degrees North and South.)
289
290 ::mapproj::toHoboDyer lambda_0 phi_0 lambda phi
291 Converts to the Hobo-Dyer cylindrical equal area projection.
292 (standard parallels are 37.5 degrees North and South)
293
294 ::mapproj::fromHoboDyer lambda_0 phi_0 x y
295 Converts from the Hobo-Dyer cylindrical equal area projection.
296 (standard parallels are 37.5 degrees North and South.)
297
298 ::mapproj::toGallPeters lambda_0 phi_0 lambda phi
299 Converts to the Gall-Peters cylindrical equal area projection.
300 (standard parallels are 45 degrees North and South)
301
302 ::mapproj::fromGallPeters lambda_0 phi_0 x y
303 Converts from the Gall-Peters cylindrical equal area projection.
304 (standard parallels are 45 degrees North and South.)
305
306 ::mapproj::toBalthasart lambda_0 phi_0 lambda phi
307 Converts to the Balthasart cylindrical equal area projection.
308 (standard parallels are 50 degrees North and South)
309
310 ::mapproj::fromBalthasart lambda_0 phi_0 x y
311 Converts from the Balthasart cylindrical equal area projection.
312 (standard parallels are 50 degrees North and South.)
313
315 The following arguments are accepted by the projection commands:
316
317 lambda Longitude of the point to be projected, in degrees.
318
319 phi Latitude of the point to be projected, in degrees.
320
321 lambda_0
322 Longitude of the center of the sheet, in degrees. For many pro‐
323 jections, this figure is also the reference meridian of the pro‐
324 jection.
325
326 phi_0 Latitude of the center of the sheet, in degrees. For the az‐
327 imuthal projections, this figure is also the latitude of the
328 center of the projection.
329
330 phi_1 Latitude of the first reference parallel, for projections that
331 use reference parallels.
332
333 phi_2 Latitude of the second reference parallel, for projections that
334 use reference parallels.
335
336 x X co-ordinate of a point on the map, in units of Earth radii.
337
338 y Y co-ordinate of a point on the map, in units of Earth radii.
339
341 For all of the procedures whose names begin with 'to', the return value
342 is a list comprising an x co-ordinate and a y co-ordinate. The co-or‐
343 dinates are relative to the center of the map sheet to be drawn, mea‐
344 sured in Earth radii at the reference location on the map. For all of
345 the functions whose names begin with 'from', the return value is a list
346 comprising the longitude and latitude, in degrees.
347
349 This package offers a great many projections, because no single projec‐
350 tion is appropriate to all maps. This section attempts to provide
351 guidance on how to choose a projection.
352
353 First, consider the type of data that you intend to display on the map.
354 If the data are directional (e.g., winds, ocean currents, or magnetic
355 fields) then you need to use a projection that preserves angles; these
356 are known as conformal projections. Conformal projections include the
357 Mercator, the Albers azimuthal equal-area, the stereographic, and the
358 Peirce Quincuncial projection. If the data are thematic, describing
359 properties of land or water, such as temperature, population density,
360 land use, or demographics; then you need a projection that will show
361 these data with the areas on the map proportional to the areas in real
362 life. These so-called equal area projections include the various
363 cylindrical equal area projections, the sinusoidal projection, the Lam‐
364 bert azimuthal equal-area projection, the Albers equal-area conic pro‐
365 jection, and several of the world-map projections (Miller Cylindrical,
366 Mollweide, Eckert IV, Eckert VI, Robinson, and Hammer). If the signifi‐
367 cant factor in your data is distance from a central point or line (such
368 as air routes), then you will do best with an equidistant projection
369 such as plate carrée, Cassini, azimuthal equidistant, or conic equidis‐
370 tant. If direction from a central point is a critical factor in your
371 data (for instance, air routes, radio antenna pointing), then you will
372 almost surely want to use one of the azimuthal projections. Appropriate
373 choices are azimuthal equidistant, azimuthal equal-area, stereographic,
374 and perhaps orthographic.
375
376 Next, consider how much of the Earth your map will cover, and the gen‐
377 eral shape of the area of interest. For maps of the entire Earth, the
378 cylindrical equal area, Eckert IV and VI, Mollweide, Robinson, and Ham‐
379 mer projections are good overall choices. The Mercator projection is
380 traditional, but the extreme distortions of area at high latitudes make
381 it a poor choice unless a conformal projection is required. The Peirce
382 projection is a better choice of conformal projection, having less dis‐
383 tortion of landforms. The Miller Cylindrical is a compromise designed
384 to give shapes similar to the traditional Mercator, but with less polar
385 stretching. The Peirce Quincuncial projection shows all the continents
386 with acceptable distortion if a reference meridian close to +20 degrees
387 is chosen. The Robinson projection yields attractive maps for things
388 like political divisions, but should be avoided in presenting scien‐
389 tific data, since other projections have moe useful geometric proper‐
390 ties.
391
392 If the map will cover a hemisphere, then choose stereographic, az‐
393 imuthal-equidistant, Hammer, or Mollweide projections; these all
394 project the hemisphere into a circle.
395
396 If the map will cover a large area (at least a few hundred km on a
397 side), but less than a hemisphere, then you have several choices. Az‐
398 imuthal projections are usually good (choose stereographic, azimuthal
399 equidistant, or Lambert azimuthal equal-area according to whether
400 shapes, distances from a central point, or areas are important). Az‐
401 imuthal projections (and possibly the Cassini projection) are the only
402 really good choices for mapping the polar regions.
403
404 If the large area is in one of the temperate zones and is round or has
405 a primarily east-west extent, then the conic projections are good
406 choices. Choose the Lambert conformal conic, the conic equidistant, or
407 the Albers equal-area conic according to whether shape, distance, or
408 area are the most important parameters. For any of these, the refer‐
409 ence parallels should be chosen at approximately 1/6 and 5/6 of the
410 range of latitudes to be displayed. For instance, maps of the 48
411 coterminous United States are attractive with reference parallels of
412 28.5 and 45.5 degrees.
413
414 If the large area is equatorial and is round or has a primarily east-
415 west extent, then the Mercator projection is a good choice for a con‐
416 formal projection; Lambert cylindrical equal-area and sinusoidal pro‐
417 jections are good equal-area projections; and the plate carrée is a
418 good equidistant projection.
419
420 Large areas having a primarily North-South aspect, particularly those
421 spanning the Equator, need some other choices. The Cassini projection
422 is a good choice for an equidistant projection (for instance, a Cassini
423 projection with a central meridian of 80 degrees West produces an at‐
424 tractive map of the Americas). The cylindrical equal-area, Albers
425 equal-area conic, sinusoidal, Mollweide and Hammer projections are pos‐
426 sible choices for equal-area projections. A good conformal projection
427 in this situation is the Transverse Mercator, which alas, is not yet
428 implemented.
429
430 Small areas begin to get into a realm where the ellipticity of the
431 Earth affects the map scale. This package does not attempt to handle
432 accurate mapping for large-scale topographic maps. If slight scale er‐
433 rors are acceptable in your application, then any of the projections
434 appropriate to large areas should work for small ones as well.
435
436 There are a few projections that are included for their special proper‐
437 ties. The orthographic projection produces views of the Earth as seen
438 from space. The gnomonic projection produces a map on which all great
439 circles (the shortest distance between two points on the Earth's sur‐
440 face) are rendered as straight lines. While this projection is useful
441 for navigational planning, it has extreme distortions of shape and
442 area, and can display only a limited area of the Earth (substantially
443 less than a hemisphere).
444
446 geodesy, map, projection
447
449 Copyright (c) 2007 Kevin B. Kenny <kennykb@acm.org>
450
451
452
453
454tcllib 0.1 mapproj(n)