Comrite Unix Man page/Perldoc/Info page, English-Chinese Dictionary, Chinese-English Dictionary

PDL::Transform::Cartography--3pm

Command: man perldoc info search(apropos)  


 
Cartography(3pm)      User Contributed Perl Documentation     Cartography(3pm)



NAME
       PDL::Transform::Cartography - Useful cartographic projections

SYNOPSIS
        # make a Mercator map of Earth
        use PDL::Transform::Cartography;
        $a = earth_coast();
        $a = graticule(10,2)->glue(1,$a);
        $t = t_mercator;
        $w = pgwin(xs);
        $w->lines($t->apply($a)->clean_lines());

DESCRIPTION
       PDL::Transform::Cartography includes a variety of useful cartographic
       and observing projections (mappings of the surface of a sphere),
       including reprojected observer coordinates.  See PDL::Transform for
       more information about image transforms in general.

       Cartographic transformations are used for projecting not just terres-
       trial maps, but also any nearly spherical surface including the Sun,
       the Celestial sphere, various moons and planets, distant stars, etc.
       They also are useful for interpreting scientific images, which are
       themselves generally projections of a sphere onto a flat focal plane
       (e.g. the t_gnomonic projection).

       Unless otherwise noted, all the transformations in this file convert
       from (theta,phi) coordinates on the unit sphere (e.g. (lon,lat) on a
       planet or (RA,dec) on the celestial sphere) into some sort of projected
       coordinates, and have inverse transformations that convert back to
       (theta,phi).  This is equivalent to working from the equidistant cylin-
       drical (or "plate caree") projection, if you are a cartography wonk.

       The projected coordinates are generally in units of body radii (radi-
       ans), so that multiplying the output by the scale of the map yields
       physical units that are correct wherever the scale is correct for that
       projection.  For example, areas should be correct everywhere in the
       authalic projections; and linear scales are correct along meridians in
       the equidistant projections and along the standard parallels in all the
       projections.

       The transformations that are authalic (equal-area), conformal
       (equal-angle), azimuthal (circularly symmetric), or perspective (true
       perspective on a focal plane from some viewpoint) are marked.  The
       first two categories are mutually exclusive for all but the "unit
       sphere" 3-D projection.

       Extra dimensions tacked on to each point to be transformed are, in gen-
       eral, ignored.  That is so that you can add on an extra index to keep
       track of pen color.  For example, earth_coast returns a 3x<n> piddle
       containing (lon, lat, pen) at each list location.  Transforming the
       vector list retains the pen value as the first index after the dimen-
       sional directions.

GENERAL NOTES ON CARTOGRAPHY
       Unless otherwise noted, the transformations and miscellaneous informa-
       tion in this section are taken from Snyder & Voxland 1989: "An Album of
       Map Projections", US Geological Survey Professional Paper 1453, US
       Printing Office (Denver); and from Snyder 1987: "Map Projections - A
       Working Manual", US Geological Survey Professional Paper 1395, US
       Printing Office (Denver, USA).  You can obtain your own copy of both by
       contacting the U.S. Geological Survey, Federal Center, Box 25425, Den-
       ver, CO 80225 USA.

       The mathematics of cartography have a long history, and the details are
       far trickier than the broad overview.  For terrestrial (and, in gen-
       eral, planetary) cartography, the best reference datum is not a sphere
       but an oblate ellipsoid due to centrifugal force from the planet's
       rotation.  Furthermore, because all rocky planets, including Earth,
       have randomly placed mass concentrations that affect the gravitational
       field, the reference gravitational isosurface (sea level on Earth) is
       even more complex than an ellipsoid and, in general, different ellip-
       soids have been used for different locations at the same time and for
       the same location at different times.

       The transformations in this package use a spherical datum and hence
       include global distortion at about the 0.5% level for terrestrial maps
       (Earth's oblateness is ~1/300).  This is roughly equal to the dimen-
       sional precision of physical maps printed on paper (due to stretching
       and warping of the paper) but is significant at larger scales (e.g. for
       regional maps).  If you need more precision than that, you will want to
       implement and use the ellipsoidal transformations from Snyder 1987 or
       another reference work on geodesy.  A good name for that package would
       be "...::Cartography::Geodetic".

GENERAL NOTES ON PERSPECTIVE AND SCIENTIFIC IMAGES
       Cartographic transformations are useful for interpretation of scien-
       tific images, as all cameras produce projections of the celestial
       sphere onto the focal plane of the camera.  A simple (single-element)
       optical system with a planar focal plane generates gnomonic images --
       that is to say, gnomonic projections of a portion of the celestial
       sphere near the paraxial direction.  This is the projection that most
       consumer grade cameras produce.

       Magnification in an optical system changes the angle of incidence of
       the rays on the focal plane for a given angle of incidence at the aper-
       ture.  For example, a 10x telescope with a 2 degree field of view
       exhibits the same gnomonic distortion as a simple optical system with a
       20 degree field of view.  Wide-angle optics typically have magnifica-
       tion less than 1 ('fisheye lenses'), reducing the gnomonic distortion
       considerably but introducing "equidistant azimuthal" distortion --
       there's no such thing as a free lunch!

       Because many solar-system objects are spherical, PDL::Transform::Car-
       tography includes perspective projections for producing maps of spheri-
       cal bodies from perspective views.  Those projections are "t_vertical"
       and "t_perspective".  They map between (lat,lon) on the spherical body
       and planar projected coordinates at the viewpoint.  "t_vertical" is the
       vertical perspective projection given by Snyder, but "t_perspective" is
       a fully general perspective projection that also handles magnification
       correction.

TRANSVERSE & OBLIQUE PROJECTIONS; STANDARD OPTIONS
       Oblique projections rotate the sphere (and graticule) to an arbitrary
       angle before generating the projection; transverse projections rotate
       the sphere exactly 90 degrees before generating the projection.

       Most of the projections accept the following standard options, useful
       for making transverse and oblique projection maps.

       o, origin, Origin [default (0,0,0)]
          The origin of the oblique map coordinate system, in (old-theta,
          old-phi) coordinates.

       r, roll, Roll [default 0.0]
          The roll angle of the sphere about the origin, measured CW from (N =
          up) for reasonable values of phi and CW from (S = up) for unreason-
          able values of phi.  This is equivalent to observer roll angle CCW
          from the same direction.

       u, unit, Unit [default 'degree']
          This is the name of the angular unit to use in the lon/lat coordi-
          nate system.

       b, B
          The "B" angle of the body -- used for extraterrestrial maps.  Set-
          ting this parameter is exactly equivalent to setting the phi compo-
          nent of the origin, and in fact overrides it.

       l,L
          The longitude of the central meridian as observed -- used for
          extraterrestrial maps.  Setting this parameter is exactly equivalent
          to setting the theta component of the origin, and in fact overrides
          it.

       p,P
          The "P" (or position) angle of the body -- used for extraterrestrial
          maps.  This parameter is a synonym for the roll angle, above.

       bad, Bad, missing, Missing [default nan]
          This is the value that missing points get.  Mainly useful for the
          inverse transforms.  (This should work fine if set to BAD, if you
          have bad-value support compiled in).  The default nan is asin(1.2),
          calculated at load time.

EXAMPLES
       Draw a Mercator map of the world on-screen:

          $w = pgwin(xs);
          $w->lines(earth_coast->apply(t_mercator)->clean_lines);

       Here, "earth_coast()" returns a 3xn piddle containing (lon, lat, pen)
       values for the included world coastal outline; "t_mercator" converts
       the values to projected Mercator coordinates, and "clean_lines" breaks
       lines that cross the 180th meridian.

       Draw a Mercator map of the world, with lon/lat at 10 degree intervals:

          $w = pgwin(xs)
          $a = earth_coast()->glue(1,graticule(10,1));
          $w->lines($a->apply(t_mercator)->clean_lines);

       This works just the same as the first example, except that a map
       graticule has been applied with interline spacing of 10 degrees lon/lat
       and inter-vertex spacing of 1 degree (so that each meridian contains
       181 points, and each parallel contains 361 points).

NOTES
       Currently angular conversions are rather simpleminded.  A list of com-
       mon conversions is present in the main constructor, which inserts a
       conversion constant to radians into the {params} field of the new
       transform.  Something like Math::Convert::Units should be used instead
       to generate the conversion constant.

       A cleaner higher-level interface is probably needed (see the examples);
       for example, earth_coast could return a graticule if asked, instead of
       needing one to be glued on.

       The class structure is somewhat messy because of the varying needs of
       the different transformations.  PDL::Transform::Cartography is a base
       class that interprets the origin options and sets up the basic machin-
       ery of the Transform.  The conic projections have their own subclass,
       PDL::Transform::Conic, that interprets the standard parallels.  Since
       the cylindrical and azimuthal projections are pretty simple, they are
       not subclassed.

       The perl 5.6.1 compiler is quite slow at adding new classes to the
       structure, so it does not makes sense to subclass new transformations
       merely for the sake of pedantry.

AUTHOR
       Copyright 2002, Craig DeForest (deforest AT boulder.edu).  This mod-
       ule may be modified and distributed under the same terms as PDL itself.
       The module comes with NO WARRANTY.

       The included digital world map is derived from the 1987 CIA World Map,
       translated to ASCII in 1988 by Joe Dellinger (geojoe AT freeusp.org) and
       simplified in 1995 by Kirk Johnson (tuna AT indra.com) for the program
       XEarth.  The map comes with NO WARRANTY.  An ASCII version of the map,
       and a sample PDL function to read it, may be found in the Demos subdi-
       rectory of the PDL source distribution.

FUNCTIONS
       The module exports both transform constructors ('t_<foo>') and some
       auxiliary functions (no leading 't_').

       graticule

          $lonlatp     = graticule(<grid-spacing>,<line-segment-size>);

       (Cartography) PDL constructor - generate a lat/lon grid.

       Returns a grid of meridians and parallels as a list of vectors suitable
       for sending to PDL::Graphics::PGPLOT::Window::lines for plotting.  The
       grid is in degrees in (theta, phi) coordinates -- this is (E lon, N
       lat) for terrestrial grids or (RA, dec) for celestial ones.  You must
       then transform the graticule in the same way that you transform the
       map.

       You can attach the graticule to a vector map using the syntax:

           $out = graticule(10,2)->glue(1,$map);

       In array context you get back a 2-element list containing a piddle of
       the (theta,phi) pairs and a piddle of the pen values (1 or 0) suitable
       for calling PDL::Graphics::PGPLOT::Window::lines.  In scalar context
       the two elements are combined into a single piddle.

       The pen values associated with the graticule are negative, which will
       cause PDL::Graphics::PGPLOT::Window::lines to plot them as hairlines.

       earth_coast

         $a = earth_coast()

       (Cartography) PDL constructor - coastline map of Earth

       Returns a vector coastline map based on the 1987 CIA World Coastline
       database (see author information).  The vector coastline data are in
       plate caree format so they can be converted to other projections via
       the apply method and cartographic transforms, and are suitable for
       plotting with the lines method in the PGPLOT output library:  the first
       dimension is (X,Y,pen) with breaks having a pen value of 0 and hair-
       lines having negative pen values.  The second dimension threads over
       all the points in the data set.

       The vector map includes lines that pass through the antipodean merid-
       ian, so if you want to plot it without reprojecting, you should run it
       through clean_lines first:

           $w = pgwin();
           $w->lines(earth_coast->clean_lines);     # plot plate caree map of world
           $w->lines(earth_coast->apply(t_gnomonic))# plot gnomonic map of world

       "earth_coast" is just a quick-and-dirty way of loading the file
       "earth_coast.vec.fits" that is part of the normal installation tree.

       earth_image

        $rgb = earth_image()

       (Cartography) PDL constructor - RGB pixel map of Earth

       Returns an RGB image of Earth based on data from the MODIS instrument
       on the NASA EOS/Terra satellite.  (You can get a full-resolution image
       from <http://earthobservatory.nasa.gov/Newsroom/BlueMarble/>;).  The
       image is a plate caree map, so you can convert it to other projections
       via the map method and cartographic transforms.

       This is just a quick-and-dirty way of loading the earth-image files
       that are distributed along with PDL.

       clean_lines

        $a = clean_lines(t_mercator->apply(scalar(earth_coast())));
        $a = clean_lines($line_pen, [threshold]);
        $a = $lines->clean_lines;

       (Cartography) PDL method - remove projection irregularities

       "clean_lines" massages vector data to remove jumps due to singularities
       in the transform.

       In the first (scalar) form, $line_pen contains both (X,Y) points and
       pen values suitable to be fed to lines: in the second (list) form,
       $lines contains the (X,Y) points and $pen contains the pen values.

       "clean_lines" assumes that all the outline polylines are local -- that
       is to say, there are no large jumps.  Any jumps larger than a threshold
       size are broken by setting the appropriate pen values to 0.

       The "threshold" parameter sets the relative size of the largest jump,
       relative to the map range (as determined by a min/max operation).  The
       default size is 0.1.

       NOTES

       This almost never catches stuff near the apex of cylindrical maps,
       because the anomalous vectors get arbitrarily small.  This could be
       improved somewhat by looking at individual runs of the pen and using a
       relative length scale that is calibrated to the rest of each run.  it
       is probably not worth the computational overhead.

       t_unit_sphere

         $t = t_unit_sphere(<options>);

       (Cartography) 3-D globe projection (conformal; authalic)

       This is similar to the inverse of t_spherical, but the inverse trans-
       form projects 3-D coordinates onto the unit sphere, yielding only a 2-D
       (lon/lat) output.  Similarly, the forward transform deprojects 2-D
       (lon/lat) coordinates onto the surface of a unit sphere.

       The cartesian system has its Z axis pointing through the pole of the
       (lon,lat) system, and its X axis pointing through the equator at the
       prime meridian.

       Unit sphere mapping is unusual in that it is both conformal and
       authalic.  That is possible because it properly embeds the sphere in
       3-space, as a notional globe.

       This is handy as an intermediate step in lots of transforms, as Carte-
       sian 3-space is cleaner to work with than spherical 2-space.

       Higher dimensional indices are preserved, so that "rider" indices (such
       as pen value) are propagated.

       There is no oblique transform for t_unit_sphere, largely because it's
       so easy to rotate the output using t_linear once it's out into Carte-
       sian space.  In fact, the other projections implement oblique trans-
       forms by wrapping t_linear with t_unit_sphere.

       OPTIONS:

       radius, Radius (default 1.0)
          The radius of the sphere, for the inverse transform.  (Radius is
          ignored in the forward transform).  Defaults to 1.0 so that the
          resulting Cartesian coordinates are in units of "body radii".

       t_rot_sphere

           $t = t_rot_sphere({origin=>[<theta>,<phi>],roll=>[<roll>]});

       (Cartography) Generate oblique projections

       You feed in the origin in (theta,phi) and a roll angle, and you get
       back out (theta', phi') coordinates.  This is useful for making oblique
       or transverse projections:  just compose t_rot_sphere with your
       favorite projection and you get an oblique one.

       Most of the projections automagically compose themselves with
       t_rot_sphere if you feed in an origin or roll angle.

       t_rot_sphere converts the base plate caree projection (straight lon,
       straight lat) to a Cassini projection.

       OPTIONS

       STANDARD POSITIONAL OPTIONS

       t_orthographic

           $t = t_orthographic(<options>);

       (Cartography) Ortho. projection (azimuthal; perspective)

       This is a perspective view as seen from infinite distance.  You can
       specify the sub-viewer point in (lon,lat) coordinates, and a rotation
       angle of the map CW from (north=up).  This is equivalent to specify
       viewer roll angle CCW from (north=up).

       t_orthographic is a convenience interface to t_unit_sphere -- it is
       implemented as a composition of a t_unit_sphere call, a rotation, and a
       slice.

       [*] In the default case where the near hemisphere is mapped, the
       inverse exists.  There is no single inverse for the whole-sphere case,
       so the inverse transform superimposes everything on a single hemi-
       sphere.  If you want an invertible 3-D transform, you want
       t_unit_sphere.

       OPTIONS

       STANDARD POSITIONAL OPTIONS
       m, mask, Mask, h, hemisphere, Hemisphere [default 'near']
          The hemisphere to keep in the projection (see PDL::Transform::Car-
          tography).

       NOTES

       Alone of the various projections, this one does not use t_rot_sphere to
       handle the standard options, because the cartesian coordinates of the
       rotated sphere are already correctly projected -- t_rot_sphere would
       put them back into (theta', phi') coordinates.

       t_caree

           $t = t_caree(<options>);

       (Cartography) Plate Caree projection (cylindrical; equidistant)

       This is the simple Plate Caree projection -- also called a "lat/lon
       plot".  The horizontal axis is theta; the vertical axis is phi.  This
       is a no-op if the angular unit is radians; it is a simple scale other-
       wise.

       OPTIONS

       STANDARD POSITIONAL OPTIONS
       s, std, standard, Standard (default 0)
          The standard parallel where the transformation is conformal.  Con-
          formality is achieved by shrinking of the horizontal scale to match
          the vertical scale (which is correct everywhere).

       t_mercator

           $t = t_mercator(<options>);

       (Cartography) Mercator projection (cylindrical; conformal)

       This is perhaps the most famous of all map projections: meridians are
       mapped to parallel vertical lines and parallels are unevenly spaced
       horizontal lines.  The poles are shifted to +/- infinity.  The output
       values are in units of globe-radii for easy conversion to kilometers;
       hence the horizontal extent is -pi to pi.

       You can get oblique Mercator projections by specifying the "origin" or
       "roll" options; this is implemented via t_rot_sphere.

       OPTIONS

       STANDARD POSITIONAL OPTIONS
       c, clip, Clip (default 75 [degrees])
          The north/south clipping boundary of the transformation.  Because
          the poles are displaced to infinity, many applications require a
          clipping boundary.  The value is in whatever angular unit you set
          with the standard 'units' option.  The default roughly matches
          interesting landforms on Earth.  For no clipping at all, set b=>0.
          For asymmetric clipping, use a 2-element list ref or piddle.

       s, std, Standard (default 0)
          This is the parallel at which the map has correct scale.  The scale
          is also correct at the parallel of opposite sign.

       t_utm

         $t = t_utm(<zone>,<options>);

       (Cartography) Universal Transverse Mercator projection (cylindrical)

       This is the internationally used UTM projection, with 2 subzones
       (North/South).  The UTM zones are parametrized individually, so if you
       want a Zone 30 map you should use "t_utm(30)".  By default you get the
       northern subzone, so that locations in the southern hemisphere get neg-
       ative Y coordinates.  If you select the southern subzone (with the
       "subzone=>-1" option), you get offset southern UTM coordinates.

       The 20-subzone military system is not yet supported.  If/when it is
       implemented, you will be able to enter "subzone=>[a-t]" to select a N/S
       subzone.

       Note that UTM is really a family of transverse Mercator projections
       with different central meridia.  Each zone properly extends for six
       degrees of longitude on either side of its appropriate central merid-
       ian, with Zone 1 being centered at -177 degrees longitude (177 west).
       Properly speaking, the zones only extend from 80 degrees south to 84
       degrees north; but this implementation lets you go all the way to 90
       degrees.  The default UTM coordinates are meters.  The origin for each
       zone is on the equator, at an easting of -500,000 meters.

       The default output units are meters, assuming that you are wanting a
       map of the Earth.  This will break for bodies other than Earth (which
       have different radii and hence different conversions between lat/lon
       angle and meters).

       The standard UTM projection has a slight reduction in scale at the
       prime meridian of each zone: the transverse Mercator projection's stan-
       dard "parallels" are 180km e/w of the central meridian.  However, many
       Europeans prefer the "Gauss-Kruger" system, which is virtually identi-
       cal to UTM but with a normal tangent Mercator (standard parallel on the
       prime meridian).  To get this behavior, set "gk=>1".

       Like the rest of the PDL::Transform::Cartography package, t_utm uses a
       spherical datum rather than the "official" ellipsoidal datums for the
       UTM system.

       This implementation was derived from the rather nice description by
       Denis J. Dean, located on the web at:
       http://www.cnr.colostate.edu/class_info/nr502/lg3/datums_coordi-
       nates/utm.html

       OPTIONS

       STANDARD OPTIONS
          (No positional options -- Origin and Roll are ignored)

       ou, ounit, OutputUnit (default 'meters')
          (This is likely to become a standard option in a future release) The
          unit of the output map.  By default, this is 'meters' for UTM, but
          you may specify 'deg' or 'km' or even (heaven help us) 'miles' if
          you prefer.

       sz, subzone, SubZone (default 1)
          Set this to -1 for the southern hemisphere subzone.  Ultimately you
          should be able to set it to a letter to get the corresponding mili-
          tary subzone, but that's too much effort for now.

       gk, gausskruger (default 0)
          Set this to 1 to get the (European-style) tangent-plane Mercator
          with standard parallel on the prime meridian.  The default of 0
          places the standard parallels 180km east/west of the prime meridian,
          yielding better average scale across the zone.  Setting gk=>1 makes
          the scale exactly 1.0 at the central meridian, and >1.0 everywhere
          else on the projection.  The difference in scale is about 0.3%.

       t_sin_lat

           $t = t_sin_lat(<options>);

       (Cartography) Cyl. equal-area projection (cyl.; authalic)

       This projection is commonly used in solar Carrington plots; but not
       much for terrestrial mapping.

       OPTIONS

       STANDARD POSITIONAL OPTIONS
       s,std, Standard (default 0)
          This is the parallel at which the map is conformal.  It is also con-
          formal at the parallel of opposite sign.  The conformality is
          achieved by matched vertical stretching and horizontal squishing (to
          achieve constant area).

       t_sinusoidal

           $t = t_sinusoidal(<options>);

       (Cartography) Sinusoidal projection (authalic)

       Sinusoidal projection preserves the latitude scale but scales longitude
       according to sin(lat); in this respect it is the companion to
       t_sin_lat, which is also authalic but preserves the longitude scale
       instead.

       OPTIONS

       STANDARD POSITIONAL OPTIONS

       t_conic

           $t = t_conic(<options>)

       (Cartography) Simple conic projection (conic; equidistant)

       This is the simplest conic projection, with parallels mapped to
       equidistant concentric circles.  It is neither authalic nor conformal.
       This transformation is also referred to as the "Modified Transverse
       Mercator" projection in several maps of Alaska published by the USGS;
       and the American State of New Mexico re-invented the projection in 1936
       for an official map of that State.

       OPTIONS

       STANDARD POSITIONAL OPTIONS
       s, std, Standard (default 29.5, 45.5)
          The locations of the standard parallel(s) (where the cone intersects
          the surface of the sphere).  If you specify only one then the other
          is taken to be the nearest pole.  If you specify both of them to be
          one pole then you get an equidistant azimuthal map.  If you specify
          both of them to be opposite and equidistant from the equator you get
          a Plate Caree projection.

       t_albers

           $t = t_albers(<options>)

       (Cartography) Albers conic projection (conic; authalic)

       This is the standard projection used by the US Geological Survey for
       sectionals of the 50 contiguous United States of America.

       The projection reduces to the Lambert equal-area conic (infrequently
       used and not to be confused with the Lambert conformal conic, t_lam-
       bert!)  if the pole is used as one of the two standard parallels.

       Notionally, this is a conic projection onto a cone that intersects the
       sphere at the two standard parallels; it works best when the two paral-
       lels straddle the region of interest.

       OPTIONS

       STANDARD POSITIONAL OPTIONS
       s, std, standard, Standard (default (29.5,45.5))
          The locations of the standard parallel(s).  If you specify only one
          then the other is taken to be the nearest pole and a Lambert Equal-
          Area Conic map results.  If you specify both standard parallels to
          be the same pole, then the projection reduces to the Lambert
          Azimuthal Equal-Area map as aq special case.  (Note that t_lambert
          is Lambert's Conformal Conic, the most commonly used of Lambert's
          projections.)

          The default values for the standard parallels are those chosen by
          Adams for maps of the lower 48 US states: (29.5,45.5).  The USGS
          recommends (55,65) for maps of Alaska and (8,18) for maps of Hawaii
          -- these latter are chosen to also include the Canal Zone and
          Philippine Islands farther south, which is why both of those paral-
          lels are south of the Hawaiian islands.

          The transformation reduces to the cylindrical equal-area (sin-lat)
          transformation in the case where the standard parallels are opposite
          and equidistant from the equator, and in fact this is implemented by
          a call to t_sin_lat.

       t_lambert

           $t = t_lambert(<options>);

       (Cartography) Lambert conic projection (conic; conformal)

       Lambert conformal conic projection is widely used in aeronautical
       charts and state base maps published by the USA's FAA and USGS.  It's
       especially useful for mid-latitude charts.  In particular, straight
       lines approximate (but are not exactly) great circle routes of up to ~2
       radians.

       The default standard parallels are 33 and 45 to match the USGS state
       1:500,000 base maps of the United States.  At scales of 1:500,000 and
       larger, discrepancies between the spherical and ellipsoidal projections
       become important; use care with this projection on spheres.

       OPTIONS

       STANDARD POSITIONAL OPTIONS
       s, std, standard, Standard (default (33,45))
          The locations of the standard parallel(s) for the conic projection.
          The transform reduces to the Mercator projection in the case where
          the standard parallels are opposite and equidistant from the equa-
          tor, and in fact this is implemented by a call to t_mercator.

       c, clip, Clip (default [-75,75])
          Because the transform is conformal, the distant pole is displaced to
          infinity.  Many applications require a clipping boundary.  The value
          is in whatever angular unit you set with the standard 'unit' option.
          For consistency with t_mercator, clipping works the same way even
          though in most cases only one pole needs it.  Set this to 0 for no
          clipping at all.

       t_stereographic

           $t = t_stereographic(<options>);

       (Cartography) Stereographic projection (az.; conf.; persp.)

       The stereographic projection is a true perspective (planar) projection
       from a point on the spherical surface opposite the origin of the map.

       OPTIONS

       STANDARD POSITIONAL OPTIONS
       c, clip, Clip (default 120)
          This is the angular distance from the center to the edge of the pro-
          jected map.  The default 120 degrees gives you most of the opposite
          hemisphere but avoids the hugely distorted part near the antipodes.

       t_gnomonic

           $t = t_gnomonic(<options>);

       (Cartography) Gnomonic (focal-plane) projection (az.; persp.)

       The gnomonic projection projects a hemisphere onto a tangent plane.  It
       is useful in cartography for the property that straight lines are great
       circles; and it is useful in scientific imaging because it is the pro-
       jection generated by a simple optical system with a flat focal plane.

       OPTIONS

       STANDARD POSITIONAL OPTIONS
       c, clip, Clip (default 75)
          This is the angular distance from the center to the edge of the pro-
          jected map.  The default 75 degrees gives you most of the hemisphere
          but avoids the hugely distorted part near the horizon.

       t_az_eqd

         $t = t_az_eqd(<options>);

       (Cartography) Azimuthal equidistant projection (az.; equi.)

       Basic azimuthal projection preserving length along radial lines from
       the origin (meridians, in the original polar aspect).  Hence, both
       azimuth and distance are correct for journeys beginning at the origin.

       Applied to the celestial sphere, this is the projection made by fisheye
       lenses; it is also the projection into which "t_vertical" puts perspec-
       tive views.

       The projected plane scale is normally taken to be planetary radii; this
       is useful for cartographers but not so useful for scientific observers.
       Setting the 't=>1' option causes the output scale to shift to camera
       angular coordinates (the angular unit is determined by the standard
       'Units' option; default is degrees).

       OPTIONS

       STANDARD POSITIONAL OPTIONS
       c, clip, Clip (default 180 degrees)
          The largest angle relative to the origin.  Default is the whole
          sphere.

       t_az_eqa

         $t = t_az_eqa(<options>);

       (Cartography) Azimuthal equal-area projection (az.; auth.)

       OPTIONS

       STANDARD POSITIONAL OPTIONS
       c, clip, Clip (default 180 degrees)
          The largest angle relative to the origin.  Default is the whole
          sphere.

       t_aitoff


       t_hammer

       (Cartography) Hammer/Aitoff elliptical projection (az.; auth.)

       The Hammer/Aitoff projection is often used to display the Celestial
       sphere.  It is mathematically related to the Lambert Azimuthal Equal-
       Area projection (t_az_eqa), and maps the sphere to an ellipse of unit
       eccentricity, with vertical radius sqrt(2) and horizontal radius of 2
       sqrt(2).

       OPTIONS

       STANDARD POSITIONAL OPTIONS

       t_vertical

           $t = t_vertical(<options>);

       (Cartography) Vertical perspective projection (az.; persp.)

       Vertical perspective projection is a generalization of gnomonic and
       stereographic projection, and a special case of perspective projection.
       It is a projection from the sphere onto a focal plane at the camera
       location.

       OPTIONS

       STANDARD POSITIONAL OPTIONS
       m, mask, Mask, h, hemisphere, Hemisphere [default 'near']
          The hemisphere to keep in the projection (see PDL::Transform::Car-
          tography).

       r0, R0, radius, d, dist, distance [default 2.0]
          The altitude of the focal plane above the center of the sphere.  The
          default places the point of view one radius above the surface.

       t, telescope, Telescope, cam, Camera (default '')
          If this is set, then the central scale is in telescope or camera
          angular units rather than in planetary radii.  The angular units are
          parsed as with the normal 'u' option for the lon/lat specification.
          If you specify a non-string value (such as 1) then you get tele-
          scope-frame radians, suitable for working on with other transforma-
          tions.

       f, fish, fisheye (default '')
          If this is set then the output is in azimuthal equidistant coordi-
          nates instead of in tangent-plane coordinates.  This is a conve-
          nience function for '(t_az_eqd) x !(t_gnomonic) x (t_vertical)'.

       t_perspective

           $t = t_perspective(<options>);

       (Cartography) Arbitrary perspective projection

       Perspective projection onto a focal plane from an arbitrary location
       within or without the sphere, with an arbitary central look direction,
       and with correction for magnification within the optical system.

       In the forward direction, t_perspective generates perspective views of
       a sphere given (lon/lat) mapping or vector information.  In the reverse
       direction, t_perspective produces (lon/lat) maps from aerial or distant
       photographs of spherical objects.

       Viewpoints outside the sphere treat the sphere as opaque by default,
       though you can use the 'm' option to specify either the near or far
       surface (relative to the origin).  Viewpoints below the surface treat
       the sphere as transparent and undergo a mirror reversal for consistency
       with projections that are special cases of the perspective projection
       (e.g. t_gnomonic for r0=0 or t_stereographic for r0=-1).

       Magnification correction handles the extra edge distortion due to
       higher angles between the focal plane and focused rays within the opti-
       cal system of your camera.  If you do not happen to know the magnifica-
       tion of your camera, a simple rule of thumb is that the magnification
       of a reflective telescope is roughly its focal length (plate scale)
       divided by its physical length; and the magnification of a compound
       refractive telescope is roughly twice its physical length divided by
       its focal length.  Simple optical sytems with a single optic have mag-
       nification = 1.  Fisheye lenses have magnification < 1.

       This transformation was derived by direct geometrical calculation
       rather than being translated from Voxland & Snyder.

       OPTIONS

       STANDARD POSITIONAL OPTIONS
          As always, the 'origin' field specifies the sub-camera point on the
          sphere.

          The 'roll' option is the roll angle about the sub-camera point, for
          consistency with the other projectons.

       p, ptg, pointing, Pointing (default (0,0,0))
          The pointing direction, in (horiz. offset, vert. offset, roll) of
          the camera relative to the center of the sphere.  This is a spheri-
          cal coordinate system with the origin pointing directly at the
          sphere and the pole pointing north in the pre-rolled coordinate sys-
          tem set by the standard origin.  It's most useful for space-based
          images taken some distance from the body in question (e.g. images of
          other planets or the Sun).

          Be careful not to confuse 'p' (pointing) with 'P' (P angle, a stan-
          dard synonym for roll).

       c, cam, camera, Camera (default undef)
          Alternate way of specifying the camera pointing, using a spherical
          coordinate system with poles at the zenith (positive) and nadir
          (negative) -- this is useful for aerial photographs and such, where
          the point of view is near the surface of the sphere.  You specify
          (azimuth from N, altitude from horizontal, roll from vertical=up).
          If you specify pointing by this method, it overrides the 'pointing'
          option, above.  This coordinate system is most useful for aerial
          photography or low-orbit work, where the nadir is not necessarily
          the most interesting part of the scene.

       r0, R0, radius, d, dist, distance [default 2.0]
          The altitude of the point of view above the center of the sphere.
          The default places the point of view 1 radius aboove the surface.
          Do not confuse this with 'r', the standard origin roll angle!  Set-
          ting r0 < 1 gives a viewpoint inside the sphere.  In that case, the
          images are mirror-reversed to preserve the chiralty of the perspec-
          tive.  Setting r0=0 gives gnomonic projections; setting r0=-1 gives
          stereographic projections.  Setting r0 < -1 gives strange results.

       iu, im_unit, image_unit, Image_Unit (default 'degrees')
          This is the angular units in which the viewing camera is calibrated
          at the center of the image.

       mag, magnification, Magnification (default 1.0)
          This is the magnification factor applied to the optics -- it affects
          the amount of tangent-plane distortion within the telescope.  1.0
          yields the view from a simple optical system; higher values are
          telescopic, while lower values are wide-angle (fisheye).  Higher
          magnification leads to higher angles within the optical system, and
          more tangent-plane distortion at the edges of the image.  The magni-
          fication is applied to the incident angles themselves, rather than
          to their tangents (simple two-element telescopes magnify tan(theta)
          rather than theta itself); this is appropriate because wide-field
          optics more often conform to the equidistant azimuthal approximation
          than to the tangent plane approximation.  If you need more detailed
          control of the relationship between incident angle and focal-plane
          position, use mag=1.0 and compose the transform with something else
          to tweak the angles.

       m, mask, Mask, h, hemisphere, Hemisphere [default 'near']
          'hemisphere' is by analogy to other cartography methods although the
          two regions to be selected are not really hemispheres.

       f, fov, field_of_view, Field_Of_View [default 60 degrees]
          The field of view of the telescope -- sets the crop radius on the
          focal plane.  If you pass in a scalar, you get a circular crop.  If
          you pass in a 2-element list ref, you get a rectilinear crop, with
          the horizontal 'radius' and vertical 'radius' set separately.

       EXAMPLES

       Model a camera looking at the Sun through a 10x telescope from Earth
       (~230 solar radii from the Sun), with an 0.5 degree field of view and a
       solar P (roll) angle of 30 degrees, in February (sub-Earth solar lati-
       tude is 7 degrees south).  Convert a solar FITS image taken with that
       camera to a FITS lon/lat map of the Sun with 20 pixels/degree latitude:

         # Define map output header (no need if you don't want a FITS output map)
         $maphdr = {NAXIS1=>7200,NAXIS2=>3600,            # Size of image
                    CTYPE1=>longitude,CTYPE2=>latitude,   # Type of axes
                    CUNIT1=>deg,CUNIT2=>deg,              # Unit of axes
                    CDELT1=>0.05,CDELT2=>0.05,            # Scale of axes
                    CRPIX1=>3601,CRPIX2=>1801,            # Center of map
                    CRVAL1=>0,CRVAL2=>0                   # (lon,lat) of center
                    };

         # Set up the perspective transformation, and apply it.
         $t = t_perspective(r0=>229,fov=>0.5,mag=>10,P=>30,B=>-7);
         $map = $im->map( $t , $maphdr );

       Draw an aerial-view map of the Chesapeake Bay, as seen from a sounding
       rocket at an altitude of 100km, looking NNE from ~200km south of Wash-
       ington (the radius of Earth is 6378 km; Washington D.C. is at roughly
       77W,38N).  Superimpose a linear coastline map on a photographic map.

         $a = graticule(1,0.1)->glue(1,earth_coast());
         $t = t_perspective(r0=>6478/6378.0,fov=>60,cam=>[22.5,-20],o=>[-77,36])
         $w = pgwin(size=>[10,6],J=>1);
         $w->fits_imag(earth_image()->map($t,[800,500],{m=>linear}));
         $w->hold;
         $w->lines($a->apply($t),{xt=>'Degrees',yt=>'Degrees'});
         $w->release;

       Model a 5x telescope looking at Betelgeuse with a 10 degree field of
       view (since the telescope is looking at the Celestial sphere, r is 0
       and this is just an expensive modified-gnomonic projection).

         $t = t_perspective(r0=>0,fov=>10,mag=>5,o=>[88.79,7.41])



perl v5.8.8                       2004-07-21                  Cartography(3pm)
 

©2005 Comrite