NETGeographicLib::AzimuthalEquidistant Class Reference

.NET wrapper for GeographicLib::AzimuthalEquidistant. More...

#include <NETGeographicLib/AzimuthalEquidistant.h>

List of all members.

Public Member Functions

 AzimuthalEquidistant (void)
 AzimuthalEquidistant (Geodesic^ earth)
 ~AzimuthalEquidistant ()
void Forward (double lat0, double lon0, double lat, double lon,[System::Runtime::InteropServices::Out] double% x,[System::Runtime::InteropServices::Out] double% y,[System::Runtime::InteropServices::Out] double% azi,[System::Runtime::InteropServices::Out] double% rk)
void Reverse (double lat0, double lon0, double x, double y,[System::Runtime::InteropServices::Out] double% lat,[System::Runtime::InteropServices::Out] double% lon,[System::Runtime::InteropServices::Out] double% azi,[System::Runtime::InteropServices::Out] double% rk)
void Forward (double lat0, double lon0, double lat, double lon,[System::Runtime::InteropServices::Out] double% x,[System::Runtime::InteropServices::Out] double% y)
void Reverse (double lat0, double lon0, double x, double y,[System::Runtime::InteropServices::Out] double% lat,[System::Runtime::InteropServices::Out] double% lon)

Properties

Inspector functions



double MajorRadius [get]
double Flattening [get]

Detailed Description

.NET wrapper for GeographicLib::AzimuthalEquidistant.

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

Azimuthal equidistant projection centered at an arbitrary position on the ellipsoid. For a point in projected space (x, y), the geodesic distance from the center position is hypot(x, y) and the azimuth of the geodesic from the center point is atan2(x, y). The Forward and Reverse methods also return the azimuth azi of the geodesic at (x, y) and reciprocal scale rk in the azimuthal direction which, together with the basic properties of the projection, serve to specify completely the local affine transformation between geographic and projected coordinates.

The conversions all take place using a Geodesic object (by default Geodesic::WGS84). For more information on geodesics see Geodesics on an ellipsoid of revolution.

C# Example:

using System;
using NETGeographicLib;

namespace example_AzimuthalEquidistant
{
    class Program
    {
        static void Main(string[] args)
        {
            try {
                Geodesic geod = new Geodesic(); // WGS84
                const double lat0 = 48 + 50/60.0, lon0 = 2 + 20/60.0; // Paris
                AzimuthalEquidistant proj = new AzimuthalEquidistant(geod);
                {
                    // Sample forward calculation
                    double lat = 50.9, lon = 1.8; // Calais
                    double x, y;
                    proj.Forward(lat0, lon0, lat, lon, out x, out y);
                    Console.WriteLine( String.Format("X: {0} Y: {1}", x, y ) );
                }
                {
                    // Sample reverse calculation
                    double x = -38e3, y = 230e3;
                    double lat, lon;
                    proj.Reverse(lat0, lon0, x, y, out lat, out lon);
                    Console.WriteLine( String.Format("Latitude: {0} Longitude: {1}", lat, lon ) );
                }
            }
            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 {
        Geodesic^ geod = gcnew Geodesic(); // WGS84
        const double lat0 = 48 + 50/60.0, lon0 = 2 + 20/60.0; // Paris
        AzimuthalEquidistant^ proj = gcnew AzimuthalEquidistant(geod);
        {
            // Sample forward calculation
            double lat = 50.9, lon = 1.8; // Calais
            double x, y;
            proj->Forward(lat0, lon0, lat, lon, x, y);
            Console::WriteLine( String::Format("X: {0} Y: {1}", x, y ) );
        }
        {
            // Sample reverse calculation
            double x = -38e3, y = 230e3;
            double lat, lon;
            proj->Reverse(lat0, lon0, x, y, lat, lon);
            Console::WriteLine( String::Format("Latitude: {0} Longitude: {1}", lat, lon ) );
        }
    }
    catch (GeographicErr^ e) {
        Console::WriteLine( String::Format( "Caught exception: {0}", e->Message ) );
        return -1;
    }
    return 0;
}

Visual Basic Example:

Imports NETGeographicLib

Module example_AzimuthalEquidistant
    Sub Main()
        Try
            Dim geod As Geodesic = New Geodesic() ' WGS84
            Dim lat0 As Double = 48 + 50 / 60.0, lon0 = 2 + 20 / 60.0 ' Paris
            Dim proj As AzimuthalEquidistant = New AzimuthalEquidistant(geod)
            ' Sample forward calculation
            Dim lat As Double = 50.9, lon = 1.8 ' Calais
            Dim x, y As Double
            proj.Forward(lat0, lon0, lat, lon, x, y)
            Console.WriteLine(String.Format("X: {0} Y: {1}", x, y))
            ' Sample reverse calculation
            x = -38000.0 : y = 230000.0
            proj.Reverse(lat0, lon0, x, y, lat, lon)
            Console.WriteLine(String.Format("Latitude: {0} Longitude: {1}", lat, lon))
        Catch ex As GeographicErr
            Console.WriteLine(String.Format("Caught exception: {0}", ex.Message))
        End Try
    End Sub
End Module

INTERFACE DIFFERENCES:
A default constructor is provided that assumes a WGS84 ellipsoid.

The MajorRadius and Flattening functions are implemented as properties.

Definition at line 47 of file AzimuthalEquidistant.h.


Constructor & Destructor Documentation

NETGeographicLib::AzimuthalEquidistant::AzimuthalEquidistant ( void   ) 

Default Constructor for AzimuthalEquidistant. Assumes WGS84 Geodesic

Referenced by ~AzimuthalEquidistant().

NETGeographicLib::AzimuthalEquidistant::AzimuthalEquidistant ( Geodesic^   earth  ) 

Constructor for AzimuthalEquidistant.

Parameters:
[in] earth the Geodesic object to use for geodesic calculations.
NETGeographicLib::AzimuthalEquidistant::~AzimuthalEquidistant (  )  [inline]

Destructor

frees unmanaged memory.

Definition at line 74 of file AzimuthalEquidistant.h.

References AzimuthalEquidistant().


Member Function Documentation

void NETGeographicLib::AzimuthalEquidistant::Forward ( double  lat0,
double  lon0,
double  lat,
double  lon,
[System::Runtime::InteropServices::Out] double%   x,
[System::Runtime::InteropServices::Out] double%   y,
[System::Runtime::InteropServices::Out] double%   azi,
[System::Runtime::InteropServices::Out] double%   rk 
)

Forward projection, from geographic to azimuthal equidistant.

Parameters:
[in] lat0 latitude of center point of projection (degrees).
[in] lon0 longitude of center point of projection (degrees).
[in] lat latitude of point (degrees).
[in] lon longitude of point (degrees).
[out] x easting of point (meters).
[out] y northing of point (meters).
[out] azi azimuth of geodesic at point (degrees).
[out] rk reciprocal of azimuthal scale at point.

lat0 and lat should be in the range [90, 90] and lon0 and lon should be in the range [540, 540). The scale of the projection is 1 in the "radial" direction, azi clockwise from true north, and is 1/rk in the direction perpendicular to this. A call to Forward followed by a call to Reverse will return the original (lat, lon) (to within roundoff).

void NETGeographicLib::AzimuthalEquidistant::Reverse ( double  lat0,
double  lon0,
double  x,
double  y,
[System::Runtime::InteropServices::Out] double%   lat,
[System::Runtime::InteropServices::Out] double%   lon,
[System::Runtime::InteropServices::Out] double%   azi,
[System::Runtime::InteropServices::Out] double%   rk 
)

Reverse projection, from azimuthal equidistant to geographic.

Parameters:
[in] lat0 latitude of center point of projection (degrees).
[in] lon0 longitude of center point of projection (degrees).
[in] x easting of point (meters).
[in] y northing of point (meters).
[out] lat latitude of point (degrees).
[out] lon longitude of point (degrees).
[out] azi azimuth of geodesic at point (degrees).
[out] rk reciprocal of azimuthal scale at point.

lat0 should be in the range [90, 90] and lon0 should be in the range [540, 540). lat will be in the range [90, 90] and lon will be in the range [180, 180). The scale of the projection is 1 in the "radial" direction, azi clockwise from true north, and is 1/rk in the direction perpendicular to this. A call to Reverse followed by a call to Forward will return the original (x, y) (to roundoff) only if the geodesic to (x, y) is a shortest path.

void NETGeographicLib::AzimuthalEquidistant::Forward ( double  lat0,
double  lon0,
double  lat,
double  lon,
[System::Runtime::InteropServices::Out] double%   x,
[System::Runtime::InteropServices::Out] double%   y 
)

AzimuthalEquidistant::Forward without returning the azimuth and scale.

void NETGeographicLib::AzimuthalEquidistant::Reverse ( double  lat0,
double  lon0,
double  x,
double  y,
[System::Runtime::InteropServices::Out] double%   lat,
[System::Runtime::InteropServices::Out] double%   lon 
)

AzimuthalEquidistant::Reverse without returning the azimuth and scale.


Property Documentation

double NETGeographicLib::AzimuthalEquidistant::MajorRadius [get]
Returns:
a the equatorial radius of the ellipsoid (meters). This is the value inherited from the Geodesic object used in the constructor.

Definition at line 152 of file AzimuthalEquidistant.h.

double NETGeographicLib::AzimuthalEquidistant::Flattening [get]
Returns:
f the flattening of the ellipsoid. This is the value inherited from the Geodesic object used in the constructor.

Definition at line 158 of file AzimuthalEquidistant.h.


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends

Generated on 6 Oct 2014 for NETGeographicLib by  doxygen 1.6.1