-
Notifications
You must be signed in to change notification settings - Fork 3
/
README
171 lines (120 loc) · 5.36 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
General Information
-------------------
This is the NSIDC mapx library version 0.9.
Mapx is free software and covered by the GNU LGPL.
Information and the latest version of the software can be found at
http://nsidc.org/data/tools/
Installation
------------
See the file 'INSTALL'
Prerequisites
-------------
C compiler
Manifest
--------
Your kit should contain the following files:
README This file
INSTALL A brief installation guide
COPYING The GNU Lesser General Public License
Makefile Top level make file
Documentation/ppgc.html Documentation for configuration files
*.[ch] Source code
unit_test/utest.pl Script to run unit tests
Description
-----------
Geographic coordinate transformations are used in many applications at the
National Snow & Ice Data Center, including gridded data display tools,
data processing systems, and online area search interfaces. These
applications require accurate, efficient, and reusable transformation
routines. The common packages GCTP and PROJ were difficult to use in our
modern multi-threaded event driven software architectures. The mapx
library was developed to fill this gap for our internal uses. We are now
offering the library to outside users.
Features:
The main benefit of an object-oriented design for the mapping library is
that each transformation is independent. Often, in the available standard
packages, only one instance of a given projection can be initialized at a
time. In mapx the creation and initialization of a new transformation has
no effect on existing mapx objects. This is an important feature where
concurrent processing is required. Examples include simultaneously
ingesting data from different maps, pixel-by-pixel conversion of one map
to another, or an online map server with multiple projection options.
Projections:
The following projections are currently implemented:
* Azimuthal_Equal_Area
* Cylindrical_Equal_Area
* Mercator
* Mollweide
* Orthographic
* Sinusoidal
* Cylindrical_Equidistant
* Polar_Stereographic
* Polar_Stereographic_Ellipsoid
* Azimuthal_Equal_Area_Ellipsoid
* Cylindrical_Equal_Area_Ellipsoid
* Lambert_Conic_Conformal_Ellipsoid
* Interupted_Homolosine_Equal_Area
* Albers_Conic_Equal_Area
* Albers_Conic_Equal_Area_Ellipsoid
* Integerized_Sinusoidal
* Transverse_Mercator
* Transverse_Mercator_Ellipsoid
* Universal_Transverse_Mercator
* or anything reasonably similar
And, the library's design makes it easy to add new projections.
Many projections have both spherical and ellipsoidal versions. The
initialization of each transformation allows for the use of a different
datum to describe the spheroid. Even two transformations with the same
projection can have different datums. The datum is not restricted to the
Earth. You could easily use mapx on the moon or Mars, for example.
Accuracy:
The coordinate transformations used in mapx are (for the most part) taken
from Snyder and tested against the numerical examples he gives in Appendix
A. Further, all transformations are tested against their inverse and are
consistent to within one meter.
Application Program Interface (API):
This is the C version of the library. There is also a Java version
available at http://nsidc.org/data/tools/
Both versions provide constructors, a destructor, a forward transformation
(from latitude and longitude to map coordinates), an inverse
transformation (map coordinates to latitude and longitude), and a test to
determine if a point is within a map.
In addition the C version has a derived grid object that abstracts a map
projection and a matrix object for the storage and retrieval of gridded
data.
There are also a couple of two dimensional modeling objects--a polynomial
based model called pmodel and a cubic spline based model called smodel.
And, finally, an interface to a coastlines database derived from a
combination of WDBII and World Vector Shoreline.
Applications:
This package also contains several standalone routines that serve as test
beds and coding examples but also as useful applications in their own
right. Some examples include:
gridloc - output latitude and longitude for every cell in a grid
regrid - interpolate data from one grid to another
resamp - interpolate data from one grid to another (in a slightly
different way)
irregrid - interpolate irregularly sampled data (points) to a grid
mapenum - enumerate (list) map feature vectors from a cdb file
mtest - interactive command line map transformations
gtest - interactive command line grid transformations
Reference:
Snyder, John P., Map Projections Used by the U.S. Geological Survey, 1982.
Points, Pixels, Grids, and Cells
--------------------------------
Predefined map projection files are available from NSIDC. The
documentation describing these configuration files is in
Documentation/ppgc.html. It seems straightforward enough but in practice
can be tricky to get it "just right". We are glad to help. Please contact
NSIDC User Services.
Help and Other Information
__________________________
NSIDC User Services
National Snow and Ice Data Center
CIRES, 449 UCB
University of Colorado
Boulder, CO 80309-0449 USA
phone: (303)492-6199
fax: (303)492-2468
form: http://nsidc.org/forms/contact.html
e-mail: [email protected]