NETGeographicLib  1.43
Properties | List of all members
NETGeographicLib::GeoCoords Class Reference

.NET wrapper for GeographicLib::GeoCoords. More...

#include <NETGeographicLib/GeoCoords.h>

Public Member Functions

Initializing the GeoCoords object
 GeoCoords ()
 
 GeoCoords (System::String^ s, bool centerp, bool swaplatlong)
 
 GeoCoords (double latitude, double longitude, int zone)
 
 GeoCoords (int zone, bool northp, double easting, double northing)
 
 ~GeoCoords ()
 
void Reset (System::String^ s, bool centerp, bool swaplatlong)
 
void Reset (double latitude, double longitude, int zone)
 
void Reset (int zone, bool northp, double easting, double northing)
 
String representations of the GeoCoords object
System::String ^ GeoRepresentation (int prec, bool swaplatlong)
 
System::String ^ DMSRepresentation (int prec, bool swaplatlong, char dmssep)
 
System::String ^ MGRSRepresentation (int prec)
 
System::String ^ UTMUPSRepresentation (int prec, bool abbrev)
 
System::String ^ UTMUPSRepresentation (bool northp, int prec, bool abbrev)
 
System::String ^ AltMGRSRepresentation (int prec)
 
System::String ^ AltUTMUPSRepresentation (int prec, bool abbrev)
 
System::String ^ AltUTMUPSRepresentation (bool northp, int prec, bool abbrev)
 

Properties

double AltEasting [get]
 
double AltNorthing [get]
 
double AltConvergence [get]
 
double AltScale [get]
 
Querying the GeoCoords object
double Latitude [get]
 
double Longitude [get]
 
double Easting [get]
 
double Northing [get]
 
double Convergence [get]
 
double Scale [get]
 
bool Northp [get]
 
char Hemisphere [get]
 
int Zone [get]
 
int AltZone [get, set]
 
Inspector functions
double MajorRadius [get]
 
double Flattening [get]
 

Detailed Description

.NET wrapper for GeographicLib::GeoCoords.

This class allows .NET applications to access GeographicLib::GeoCoords.

This class stores a geographic position which may be set via the constructors or Reset via

The state consists of the latitude and longitude and the supplied UTM or UPS coordinates (possibly derived from the MGRS coordinates). If latitude and longitude were given then the UTM/UPS coordinates follows the standard conventions.

The mutable state consists of the UTM or UPS coordinates for a alternate zone. A method SetAltZone is provided to set the alternate UPS/UTM zone.

Methods are provided to return the geographic coordinates, the input UTM or UPS coordinates (and associated meridian convergence and scale), or alternate UTM or UPS coordinates (and their associated meridian convergence and scale).

Once the input string has been parsed, you can print the result out in any of the formats, decimal degrees, degrees minutes seconds, MGRS, UTM/UPS.

C# Example:

using System;
namespace example_GeoCoords
{
class Program
{
static void Main(string[] args)
{
try {
// Miscellaneous conversions
double lat = 33.3, lon = 44.4;
GeoCoords c = new GeoCoords(lat, lon, -1);
Console.WriteLine(c.MGRSRepresentation(-3));
c.Reset("18TWN0050", true, false);
Console.WriteLine(c.DMSRepresentation(0, false, 0));
Console.WriteLine(String.Format("Latitude: {0} Longitude: {1}", c.Latitude, c.Longitude));
c.Reset("1d38'W 55d30'N", true, false);
Console.WriteLine(c.GeoRepresentation(0, false));
}
catch (GeographicErr e) {
Console.WriteLine(String.Format("Caught exception: {0}", e.Message));
}
}
}
}

Managed C++ Example:

using namespace System;
using namespace NETGeographicLib;
int main(array<System::String ^> ^/*args*/)
{
try {
// Miscellaneous conversions
double lat = 33.3, lon = 44.4;
GeoCoords^ c = gcnew GeoCoords(lat, lon, -1);
Console::WriteLine(c->MGRSRepresentation(-3));
c->Reset("18TWN0050", true, false);
Console::WriteLine(c->DMSRepresentation(0, false, 0));
Console::WriteLine(String::Format("Latitude: {0} Longitude: {1}", c->Latitude, c->Longitude));
c->Reset("1d38'W 55d30'N", true, false);
Console::WriteLine(c->GeoRepresentation(0, false));
}
catch (GeographicErr^ e) {
Console::WriteLine(String::Format("Caught exception: {0}", e->Message));
return -1;
}
return 0;
}

Visual Basic Example:

Imports NETGeographicLib
Module example_GeoCoords
Sub Main()
Try
' Miscellaneous conversions
Dim lat As Double = 33.3, lon = 44.4
Dim c As GeoCoords = New GeoCoords(lat, lon, -1)
Console.WriteLine(c.MGRSRepresentation(-3))
c.Reset("18TWN0050", True, False)
Console.WriteLine(c.DMSRepresentation(0, False, 0))
Console.WriteLine(String.Format("Latitude: {0} Longitude: {1}", c.Latitude, c.Longitude))
c.Reset("1d38'W 55d30'N", True, False)
Console.WriteLine(c.GeoRepresentation(0, False))
Catch ex As GeographicErr
Console.WriteLine(String.Format("Caught exception: {0}", ex.Message))
End Try
End Sub
End Module

INTERFACE DIFFERENCES:
The following functions are implemented as properties: MajorRadius, Flattening, Latitude, Longitude, Easting, Northing, Convergence, Scale, Northp, Hemisphere, Zone, AltZone, AltEasting, AltNorthing, AltConvergence, and AltScale.

Definition at line 55 of file GeoCoords.h.

Constructor & Destructor Documentation

◆ GeoCoords() [1/4]

NETGeographicLib::GeoCoords::GeoCoords ( )

The default constructor sets the coordinate as undefined.

Referenced by ~GeoCoords().

◆ GeoCoords() [2/4]

NETGeographicLib::GeoCoords::GeoCoords ( System::String^  s,
bool  centerp,
bool  swaplatlong 
)

Construct from a string.

Parameters
[in]s1-element, 2-element, or 3-element string representation of the position.
[in]centerpgoverns the interpretation of MGRS coordinates (see below).
[in]swaplatlonggoverns the interpretation of geographic coordinates (see below).
Exceptions
GeographicErrif the s is malformed (see below).

Parse as a string and interpret it as a geographic position. The input string is broken into space (or comma) separated pieces and Basic decision on which format is based on number of components

  1. MGRS
  2. "Lat Long" or "Long Lat"
  3. "Zone Easting Northing" or "Easting Northing Zone"

The following inputs are approximately the same (Ar Ramadi Bridge, Iraq)

  • Latitude and Longitude
    • 33.44 43.27
    • N33d26.4' E43d16.2'
    • 43d16'12"E 33d26'24"N
    • 43:16:12E 33:26:24
  • MGRS
    • 38SLC30
    • 38SLC391014
    • 38SLC3918701405
    • 37SHT9708
  • UTM
    • 38N 339188 3701405
    • 897039 3708229 37N

Latitude and Longitude parsing: Latitude precedes longitude, unless a N, S, E, W hemisphere designator is used on one or both coordinates. If swaplatlong = true (default is false), then longitude precedes latitude in the absence of a hemisphere designator. Thus (with swaplatlong = false)

  • 40 -75
  • N40 W75
  • -75 N40
  • 75W 40N
  • E-75 -40S

are all the same position. The coordinates may be given in decimal degrees, degrees and decimal minutes, degrees, minutes, seconds, etc. Use d, ', and " to mark off the degrees, minutes and seconds. Various alternative symbols for degrees, minutes, and seconds are allowed. Alternatively, use : to separate these components. (See DMS::Decode for details.) Thus

  • 40d30'30"
  • 40d30'30
  • 40°30'30
  • 40d30.5'
  • 40d30.5
  • 40:30:30
  • 40:30.5
  • 40.508333333

all specify the same angle. The leading sign applies to all components so -1d30 is -(1+30/60) = -1.5. Latitudes must be in the range [−90°, 90°] and longitudes in the range [−540°, 540°). Internally longitudes are reduced to the range [−180°, 180°).

UTM/UPS parsing: For UTM zones (−80° ≤ Lat < 84°), the zone designator is made up of a zone number (for 1 to 60) and a hemisphere letter (N or S), e.g., 38N. The latitude zone designer ([C–M] in the southern hemisphere and [N–X] in the northern) should NOT be used. (This is part of the MGRS coordinate.) The zone designator for the poles (where UPS is employed) is a hemisphere letter by itself, i.e., N or S.

MGRS parsing interprets the grid references as square area at the specified precision (1m, 10m, 100m, etc.). If centerp = true (the default), the center of this square is then taken to be the precise position; thus:

  • 38SMB = 38N 450000 3650000
  • 38SMB4484 = 38N 444500 3684500
  • 38SMB44148470 = 38N 444145 3684705

Otherwise, the "south-west" corner of the square is used, i.e.,

  • 38SMB = 38N 400000 3600000
  • 38SMB4484 = 38N 444000 3684000
  • 38SMB44148470 = 38N 444140 3684700

◆ GeoCoords() [3/4]

NETGeographicLib::GeoCoords::GeoCoords ( double  latitude,
double  longitude,
int  zone 
)

Construct from geographic coordinates.

Parameters
[in]latitude(degrees).
[in]longitude(degrees).
[in]zoneif specified, force the UTM/UPS representation to use a specified zone using the rules given in UTMUPS::zonespec.
Exceptions
GeographicErrif latitude is not in [−90°, 90°].
GeographicErrif longitude is not in [−540°, 540°).
GeographicErrif zone cannot be used for this location.

◆ GeoCoords() [4/4]

NETGeographicLib::GeoCoords::GeoCoords ( int  zone,
bool  northp,
double  easting,
double  northing 
)

Construct from UTM/UPS coordinates.

Parameters
[in]zoneUTM zone (zero means UPS).
[in]northphemisphere (true means north, false means south).
[in]easting(meters).
[in]northing(meters).
Exceptions
GeographicErrif zone, easting, or northing is outside its allowed range.

◆ ~GeoCoords()

NETGeographicLib::GeoCoords::~GeoCoords ( )
inline

The destructor calls the finalizer.

Definition at line 190 of file GeoCoords.h.

References GeoCoords(), and Reset().

Member Function Documentation

◆ Reset() [1/3]

void NETGeographicLib::GeoCoords::Reset ( System::String^  s,
bool  centerp,
bool  swaplatlong 
)

Reset the location from a string. See GeoCoords(const std::string& s, bool centerp, bool swaplatlong).

Parameters
[in]s1-element, 2-element, or 3-element string representation of the position.
[in]centerpgoverns the interpretation of MGRS coordinates.
[in]swaplatlonggoverns the interpretation of geographic coordinates.
Exceptions
GeographicErrif the s is malformed.

Referenced by ~GeoCoords().

◆ Reset() [2/3]

void NETGeographicLib::GeoCoords::Reset ( double  latitude,
double  longitude,
int  zone 
)

Reset the location in terms of geographic coordinates. See GeoCoords(double latitude, double longitude, int zone).

Parameters
[in]latitude(degrees).
[in]longitude(degrees).
[in]zoneif specified, force the UTM/UPS representation to use a specified zone using the rules given in UTMUPS::zonespec.
Exceptions
GeographicErrif latitude is not in [−90°, 90°].
GeographicErrif longitude is not in [−540°, 540°).
GeographicErrif zone cannot be used for this location.

◆ Reset() [3/3]

void NETGeographicLib::GeoCoords::Reset ( int  zone,
bool  northp,
double  easting,
double  northing 
)

Reset the location in terms of UPS/UPS coordinates. See GeoCoords(int zone, bool northp, double easting, double northing).

Parameters
[in]zoneUTM zone (zero means UPS).
[in]northphemisphere (true means north, false means south).
[in]easting(meters).
[in]northing(meters).
Exceptions
GeographicErrif zone, easting, or northing is outside its allowed range.

◆ GeoRepresentation()

System::String ^ NETGeographicLib::GeoCoords::GeoRepresentation ( int  prec,
bool  swaplatlong 
)

String representation with latitude and longitude as signed decimal degrees.

Parameters
[in]precprecision (relative to about 1m).
[in]swaplatlongif true give longitude first (default = false)
Exceptions
std::bad_allocif memory for the string can't be allocated.
Returns
decimal latitude/longitude string representation.

Precision specifies accuracy of representation as follows:

  • prec = −5 (min), 1°
  • prec = 0, 10−5° (about 1m)
  • prec = 3, 10−8°
  • prec = 9 (max), 10−14°

◆ DMSRepresentation()

System::String ^ NETGeographicLib::GeoCoords::DMSRepresentation ( int  prec,
bool  swaplatlong,
char  dmssep 
)

String representation with latitude and longitude as degrees, minutes, seconds, and hemisphere.

Parameters
[in]precprecision (relative to about 1m)
[in]swaplatlongif true give longitude first (default = false)
[in]dmssepif non-null, use as the DMS separator character (instead of d, ', " delimiters).
Exceptions
std::bad_allocif memory for the string can't be allocated.
Returns
DMS latitude/longitude string representation.

Precision specifies accuracy of representation as follows:

  • prec = −5 (min), 1°
  • prec = −4, 0.1°
  • prec = −3, 1'
  • prec = −2, 0.1'
  • prec = −1, 1"
  • prec = 0, 0.1" (about 3m)
  • prec = 1, 0.01"
  • prec = 10 (max), 10−11"

◆ MGRSRepresentation()

System::String ^ NETGeographicLib::GeoCoords::MGRSRepresentation ( int  prec)

MGRS string.

Parameters
[in]precprecision (relative to about 1m).
Exceptions
std::bad_allocif memory for the string can't be allocated.
Returns
MGRS string.

This gives the coordinates of the enclosing grid square with size given by the precision. Thus 38N 444180 3684790 converted to a MGRS coordinate at precision −2 (100m) is 38SMB441847 and not 38SMB442848. prec specifies the precision of the MGRS string as follows:

  • prec = −5 (min), 100km
  • prec = −4, 10km
  • prec = −3, 1km
  • prec = −2, 100m
  • prec = −1, 10m
  • prec = 0, 1m
  • prec = 1, 0.1m
  • prec = 6 (max), 1μm

◆ UTMUPSRepresentation() [1/2]

System::String ^ NETGeographicLib::GeoCoords::UTMUPSRepresentation ( int  prec,
bool  abbrev 
)

UTM/UPS string.

Parameters
[in]precprecision (relative to about 1m)
[in]abbrevif true (the default) use abbreviated (n/s) notation for hemisphere; otherwise spell out the hemisphere (north/south)
Exceptions
std::bad_allocif memory for the string can't be allocated.
Returns
UTM/UPS string representation: zone designator, easting, and northing.

Precision specifies accuracy of representation as follows:

  • prec = −5 (min), 100km
  • prec = −3, 1km
  • prec = 0, 1m
  • prec = 3, 1mm
  • prec = 6, 1μm
  • prec = 9 (max), 1nm

◆ UTMUPSRepresentation() [2/2]

System::String ^ NETGeographicLib::GeoCoords::UTMUPSRepresentation ( bool  northp,
int  prec,
bool  abbrev 
)

UTM/UPS string with hemisphere override.

Parameters
[in]northphemisphere override
[in]precprecision (relative to about 1m)
[in]abbrevif true (the default) use abbreviated (n/s) notation for hemisphere; otherwise spell out the hemisphere (north/south)
Exceptions
GeographicErrif the hemisphere override attempts to change UPS N to UPS S or vice versa.
std::bad_allocif memory for the string can't be allocated.
Returns
UTM/UPS string representation: zone designator, easting, and northing.

◆ AltMGRSRepresentation()

System::String ^ NETGeographicLib::GeoCoords::AltMGRSRepresentation ( int  prec)

MGRS string for the alternate zone. See GeoCoords::MGRSRepresentation.

Parameters
[in]precprecision (relative to about 1m).
Exceptions
std::bad_allocif memory for the string can't be allocated.
Returns
MGRS string.

◆ AltUTMUPSRepresentation() [1/2]

System::String ^ NETGeographicLib::GeoCoords::AltUTMUPSRepresentation ( int  prec,
bool  abbrev 
)

UTM/UPS string for the alternate zone. See GeoCoords::UTMUPSRepresentation.

Parameters
[in]precprecision (relative to about 1m)
[in]abbrevif true (the default) use abbreviated (n/s) notation for hemisphere; otherwise spell out the hemisphere (north/south)
Exceptions
std::bad_allocif memory for the string can't be allocated.
Returns
UTM/UPS string representation: zone designator, easting, and northing.

◆ AltUTMUPSRepresentation() [2/2]

System::String ^ NETGeographicLib::GeoCoords::AltUTMUPSRepresentation ( bool  northp,
int  prec,
bool  abbrev 
)

UTM/UPS string for the alternate zone, with hemisphere override.

Parameters
[in]northphemisphere override
[in]precprecision (relative to about 1m)
[in]abbrevif true (the default) use abbreviated (n/s) notation for hemisphere; otherwise spell out the hemisphere (north/south)
Exceptions
GeographicErrif the hemisphere override attempts to change UPS n to UPS s or vice verse.
std::bad_allocif memory for the string can't be allocated.
Returns
UTM/UPS string representation: zone designator, easting, and northing.

Property Documentation

◆ Latitude

double NETGeographicLib::GeoCoords::Latitude
get
Returns
latitude (degrees)

Definition at line 241 of file GeoCoords.h.

◆ Longitude

double NETGeographicLib::GeoCoords::Longitude
get
Returns
longitude (degrees)

Definition at line 246 of file GeoCoords.h.

◆ Easting

double NETGeographicLib::GeoCoords::Easting
get
Returns
easting (meters)

Definition at line 251 of file GeoCoords.h.

◆ Northing

double NETGeographicLib::GeoCoords::Northing
get
Returns
northing (meters)

Definition at line 256 of file GeoCoords.h.

◆ Convergence

double NETGeographicLib::GeoCoords::Convergence
get
Returns
meridian convergence (degrees) for the UTM/UPS projection.

Definition at line 261 of file GeoCoords.h.

◆ Scale

double NETGeographicLib::GeoCoords::Scale
get
Returns
scale for the UTM/UPS projection.

Definition at line 266 of file GeoCoords.h.

◆ Northp

bool NETGeographicLib::GeoCoords::Northp
get
Returns
hemisphere (false means south, true means north).

Definition at line 271 of file GeoCoords.h.

◆ Hemisphere

char NETGeographicLib::GeoCoords::Hemisphere
get
Returns
hemisphere letter N or S.

Definition at line 276 of file GeoCoords.h.

◆ Zone

int NETGeographicLib::GeoCoords::Zone
get
Returns
the zone corresponding to the input (return 0 for UPS).

Definition at line 281 of file GeoCoords.h.

◆ AltZone

int NETGeographicLib::GeoCoords::AltZone
getset

Gets/Sets the current alternate zone (0 = UPS).

Exceptions
GeographicErrif zone cannot be used for this location.

See UTMUPS::zonespec for more information on the interpretation of zone. Note that zone == UTMUPS::STANDARD (the default) use the standard UPS or UTM zone, UTMUPS::MATCH does nothing retaining the existing alternate representation. Before this is called the alternate zone is the input zone.

Definition at line 293 of file GeoCoords.h.

◆ AltEasting

double NETGeographicLib::GeoCoords::AltEasting
get
Returns
easting (meters) for alternate zone.

Definition at line 303 of file GeoCoords.h.

◆ AltNorthing

double NETGeographicLib::GeoCoords::AltNorthing
get
Returns
northing (meters) for alternate zone.

Definition at line 308 of file GeoCoords.h.

◆ AltConvergence

double NETGeographicLib::GeoCoords::AltConvergence
get
Returns
meridian convergence (degrees) for alternate zone.

Definition at line 313 of file GeoCoords.h.

◆ AltScale

double NETGeographicLib::GeoCoords::AltScale
get
Returns
scale for alternate zone.

Definition at line 318 of file GeoCoords.h.

◆ MajorRadius

double NETGeographicLib::GeoCoords::MajorRadius
get
Returns
a the equatorial radius of the WGS84 ellipsoid (meters).

(The WGS84 value is returned because the UTM and UPS projections are based on this ellipsoid.)

Definition at line 470 of file GeoCoords.h.

◆ Flattening

double NETGeographicLib::GeoCoords::Flattening
get
Returns
f the flattening of the WGS84 ellipsoid.

(The WGS84 value is returned because the UTM and UPS projections are based on this ellipsoid.)

Definition at line 478 of file GeoCoords.h.


The documentation for this class was generated from the following file: