Mentor Software Inc.

303-278-3534 X100
Sales via RockWare, Inc.

Home    Products    Casual Cartographer    Support    Freebies   Download

 

For Licensing and Pricing Information call 1-888-ASK-NORM (1-888-275-6676) or send email to norm@rockware.com

Coordinate System Mapping Library (CS-MAP)

Technical Specifications

OVERVIEW

The Coordinate System Mapping Library (CS-MAP) consists of over 300 functions written in ANSI compliant C. These functions enable application programs to convert geocoordinates from any defined coordinate system/datum/ellipsoid to any another; most applications can be written using a single CS-MAP function. Conversion rates of 35,000 per second (Pentium 120 MHz) are routinely observed. A companion product, TralaineDLL provides the same functionality in a 32 bit Windows DLL.

LANGUAGE

CS-MAP is written entirely in ANSI compliant C and has been compiled on PC, Apple Macintosh, Sun SparcStation, IBM-6000, Silicon Graphics, and other UNIX based platforms. Use in the C++ environment is fully supported. Automatic byte swapping functions provide additional portability.

HIGH LEVEL INTERFACE

This interface was originally designed for use in high level development environments such as Visual Basic and Delphi. A single function (see Code Sample 1) provides all the functionality required by most applications. Applications are also insulated from the most drastic of changes to the CS-MAP package. (In fact, except for the function prototype, the CS-MAP header file does not even have to be included to use this function.) Application components which perform coordinate conversion have no need to be aware of the projections, datums, ellipsoids involved in the conversion. All CS-MAP functionality is available through this interface, and datum shift calculations are fully automated. Automatic caching limits performance penalties to an absolute minimum.

// The following code fragment illustrates the use

// of the High Level Interface. For illustration

// purposes, we have hard coded coordinate

// system names. End user specified values are

// usually provided via character arrays.

//

double coord [3];

.

.

while (read (fdi,coord,sizeof (coord)) == sizeof (coord))

{

CS_cnvrt (“UTM27-13”,”CO83-C”,coord);

write (fdo,coord,sizeof (coord));

}

Code Sample 1

HIGH PERFORMANCE INTERFACE

This is the original interface developed for CS-MAP. Use of this interface insulates your application from CS-MAP changes while providing the application programmer with full control over the conversion process. Automatic datum conversion is built in, but can be overridden using this interface. As it name implies, this interface is designed for high performance, real time, conversions. This interface is designed specifically for the C programmer, and requires use of structure pointers (see Code Sample 2). Using this interface, there is no practical limit on the number of different coordinate system and/or datum conversions which may be active concurrently.

PROJECTIONS

CS-MAP currently supports 30 projections. The more popular of which are: Transverse Mercator (AKA Gauss-Kruger); Lambert Conformal Conic, Albers Equal Area Conic, Hotine Oblique Mercator; Mercator, Azimuthal Equidistant, Lambert Tangential, American Polyconic; Modified Polyconic. Projections are routinely added, call for the latest information.

DATUM CONVERSION

In normal usage, datum conversions are automatically applied to the intermediary latitude and longitudes produced by the coordinate system conversion process. Eight conversion methods are supported: Molodensky Transformation, Bursa/Wolfe (AKA Seven Parameter Transformation), Multiple Regression, National Geodetic Service NADCON, National Geodetic Service HARN, Canadian National Transformation Versions 1 and 2, and WGS 1972. CS-MAP automatically selects the most precise technique appropriate, and as many as is necessary, to accomplish the datum shift required. Typical applications do not know of any of this; it is usually left for CS-MAP to handle without assistance.

COORDINATE SYSTEMS

Definitions of over 800 coordinate systems are provided in CSMAP's Coordinate System Dictionary, including all UTM zones, State Plane Zones (NAD27 and NAD83), and several others. End users refer to coordinate systems by key names. No need to remember or enter long lists of parameters; a simple key name is all that is required. Thus applications become easy for non-technical personnel to operate reliably.

DATUMS

CS-MAP's Datum Dictionary includes over 161 Molodensky datum transformation definitions and 39 Multiple Regression formula definitions. Applications rarely, if ever, concern themselves with datums as CS-MAP handles this automatically.

ELLIPSOIDS

CS-MAP's Ellipsoid Dictionary includes 41 different ellipsoid definitions such as Clarke 1866, GRS 1980, WGS84, and many others. Applications rarely, if ever, concern themselves with ellipsoids as CS-MAP handles this automatically.

NADCON ALGORITHM

NAD27, NAD83, HARN (NAD83/91, HPGN, et al), and Canadian National Transformation (versions 1 and 2) conversions are all accomplished using the same algorithm and data files as the respective government agency's own transformation program (e.g. NADCON, INITGRD). Numerical results are identical to the government sanctioned program in all cases. To users of CS-MAP based applications, NAD83 is a single entity. CS-MAP automatically determines when to use the US version and the Canadian version; and which specific NADCON data files to use.

// The following code fragment illustrates use

// of the High Performance Interface. Again, the

// coordinate system names are hard coded for

// illustrative purposes.

int fdi, fdo;

struct cs_Csprm_ *src_ptr, *dst_ptr;

struct cs_Dtcvt_ *dtc_prm;

double coord [3];

.

.

src_ptr = CS_csloc (“UTM27-13”);

dst_ptr = CS_csloc (“CO83-C”);

dtc_ptr = CS_dtcsu (src_cs,dst_cs);

while (read (fdi,coord,sizeof (coord)) == sizeof (coord))

{

CS_cs2ll (src_cs,coord,coord);

CS_dtcvt (dtc_prm,coord,coord);

CS_ll2cs (dst_cs,coord,coord);

write (fdo,&coord,sizeof (coord));

}

CS_dtcls (dtc_prm);

free (src_cs);

free (dst_cs);

Code Sample 2

CONVERGENCE/GRID SCALE

Functions are provided which return the Grid Scale Factor or Convergence Angle at any point on any defined coordinate system. This capability is available in both interfaces.

UNITY PROJECTION

This is a projection which does nothing and enables applications to handle/process latitude and longitude input/output without any sacrifice of the complete generality of the application interface. This technique also enables latitude and longitude coordinate systems to be based on different datums, reference prime meridians other than Greenwich, and use units other than degrees.

PROJECTION MANAGEMENT

Removing a single line of code (an entry in a table) removes all reference to a projection. Similarly, new projections are added to the system by writing six functions and adding a one line entry to the projection table. (The projection table has six elements.) The new projection will be indistinguishable from previously existing projections.

DICTIONARY MAINTENANCE

Functions are provided for adding, modifying, and removing entries in the Coordinate System Dictionary, the Datum Dictionary, and the Ellipsoid Dictionary. Programs which compile version controllable ASCII source files are provided to maintain production dictionaries. Automatic byte swapping built into CS-MAP provides complete portability of the resulting binary data files.

ACCURACY

All calculations are performed using double precision real numbers; a minimum of 12 digits of precision can be expected. Coordinate system conversions are within a millimeter within the useful range of the projection. NAD27/NAD83 conversions are numerically identical to the appropriate governmental standard. Molodensky, Bursa/Wolfe, and Multiple Regression datum conversions are, by their nature, less precise.

PERFORMANCE

Our standard conversion performance test repeatedly converts a limited list of random coordinates which reside in the same general geographic location, simulating a small scale map such as a 7½ minute quad map. The coordinates are converted from NAD27 UTM, Zone 13, to NAD83 Colorado State Planes, Central Zone. Our test system is a 120MHz Pentium based PC running Windows NT 3.51. Our latest release produced 35,000 conversions per second. That’s an inverse Transverse Mercator calculation, a NAD27 to NAD83 shift, and a forward Lambert Conformal Conic calculation in 28 microseconds.

MAINTENANCE

All licenses include source code, maintenance for the first full year, and technical support. Technical support is limited to assistance in compiling, linking, and accessing the capabilities of, the CS-MAP software. Assistance with regard to projections, datums, and other geographic/geodetic concepts is considered consulting and is invoiced separately. Annual maintenance renewal is available at 18% of the basic license fee per year.


Home | Products | Support | FAQs | About Us | News | Site Index

Mentor Software, Inc.
2221 East St. Suite 203
Golden, CO 80401
303-279-9366