NETGeographicLib::Geohash Class Reference

.NET wrapper for GeographicLib::Geohash. More...

#include <NETGeographicLib/Geohash.h>

List of all members.

Static Public Member Functions

static void Forward (double lat, double lon, int len,[System::Runtime::InteropServices::Out] System::String^ %geohash)
static void Reverse (System::String^ geohash,[System::Runtime::InteropServices::Out] double% lat,[System::Runtime::InteropServices::Out] double% lon,[System::Runtime::InteropServices::Out] int% len, bool centerp)
static double LatitudeResolution (int len)
static double LongitudeResolution (int len)
static int GeohashLength (double res)
static int GeohashLength (double latres, double lonres)
static int DecimalPrecision (int len)

Detailed Description

.NET wrapper for GeographicLib::Geohash.

Geohashes are described in

They provide a compact string representation of a particular geographic location (expressed as latitude and longitude), with the property that if trailing characters are dropped from the string the geographic location remains nearby.

C# Example:

using System;
using NETGeographicLib;

namespace example_Geohash
{
    class Program
    {
        static void Main(string[] args)
        {
            try {
                {
                    // Sample forward calculation
                    double lat = 57.64911, lon = 10.40744; // Jutland (the wikipedia example)
                    string geohash;
                    int maxlen = Geohash.GeohashLength(1.0e-5);
                    for (int len = 0; len <= maxlen; ++len) {
                        Geohash.Forward(lat, lon, len, out geohash);
                        Console.WriteLine( geohash );
                    }
                }
                {
                    // Sample reverse calculation
                    string geohash = "u4pruydqqvj";
                    double lat, lon;
                    for (int i = 0; i <= geohash.Length; ++i) {
                        int len;
                        Geohash.Reverse(geohash.Substring(0, i), out lat, out lon, out len, true);
                        Console.WriteLine(String.Format("Length: {0} Latitude: {1} Longitude: {2}", len, 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 {
        {
            // Sample forward calculation
            double lat = 57.64911, lon = 10.40744; // Jutland (the wikipedia example)
            String^ geohash;
            int maxlen = Geohash::GeohashLength(1.0e-5);
            for (int len = 0; len <= maxlen; ++len) {
                Geohash::Forward(lat, lon, len, geohash);
                Console::WriteLine( geohash );
            }
        }
        {
            // Sample reverse calculation
            String^ geohash = "u4pruydqqvj";
            double lat, lon;
            for (int i = 0; i <= geohash->Length; ++i) {
                int len;
                Geohash::Reverse(geohash->Substring(0, i), lat, lon, len, true);
                Console::WriteLine(String::Format("Length: {0} Latitude: {1} Longitude: {2}", len, 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_Geohash
    Sub Main()
        Try
            ' Sample forward calculation
            Dim lat As Double = 57.64911, lon = 10.40744 ' Jutland (the wikipedia example)
            Dim ghash As String
            Dim maxlen As Integer = Geohash.GeohashLength(0.00001)
            For len As Integer = 0 To maxlen
                Geohash.Forward(lat, lon, len, ghash)
                Console.WriteLine(ghash)
            Next
            ' Sample reverse calculation
            ghash = "u4pruydqqvj"
            For i As Integer = 0 To ghash.Length - 1
                Dim len As Integer
                Geohash.Reverse(ghash.Substring(0, i), lat, lon, len, True)
                Console.WriteLine(String.Format("Length: {0} Latitude: {1} Longitude: {2}", len, lat, lon))
            Next
        Catch ex As GeographicErr
            Console.WriteLine(String.Format("Caught exception: {0}", ex.Message))
        End Try
    End Sub
End Module

Definition at line 34 of file Geohash.h.


Member Function Documentation

static void NETGeographicLib::Geohash::Forward ( double  lat,
double  lon,
int  len,
[System::Runtime::InteropServices::Out] System::String^ %  geohash 
) [static]

Convert from geographic coordinates to a geohash.

Parameters:
[in] lat latitude of point (degrees).
[in] lon longitude of point (degrees).
[in] len the length of the resulting geohash.
[out] geohash the geohash.
Exceptions:
GeographicErr if la is not in [90, 90].
GeographicErr if lon is not in [540, 540).
std::bad_alloc if memory for geohash can't be allocated.

Internally, len is first put in the range [0, 18].

If lat or lon is NaN, the returned geohash is "nan".

static void NETGeographicLib::Geohash::Reverse ( System::String^   geohash,
[System::Runtime::InteropServices::Out] double%   lat,
[System::Runtime::InteropServices::Out] double%   lon,
[System::Runtime::InteropServices::Out] int%   len,
bool  centerp 
) [static]

Convert from a geohash to geographic coordinates.

Parameters:
[in] geohash the geohash.
[out] lat latitude of point (degrees).
[out] lon longitude of point (degrees).
[out] len the length of the geohash.
[in] centerp if true (the default) return the center of the geohash location, otherwise return the south-west corner.
Exceptions:
GeographicErr if geohash contains illegal characters.

Only the first 18 characters for geohash are considered. The case of the letters in geohash is ignored.

If the first three characters in geohash are "nan", then lat and lon are set to NaN.

static double NETGeographicLib::Geohash::LatitudeResolution ( int  len  )  [static]

The latitude resolution of a geohash.

Parameters:
[in] len the length of the geohash.
Returns:
the latitude resolution (degrees).

Internally, len is first put in the range [0, 18].

static double NETGeographicLib::Geohash::LongitudeResolution ( int  len  )  [static]

The longitude resolution of a geohash.

Parameters:
[in] len the length of the geohash.
Returns:
the longitude resolution (degrees).

Internally, len is first put in the range [0, 18].

static int NETGeographicLib::Geohash::GeohashLength ( double  res  )  [static]

The geohash length required to meet a given geographic resolution.

Parameters:
[in] res the minimum of resolution in latitude and longitude (degrees).
Returns:
geohash length.

The returned length is in the range [0, 18].

static int NETGeographicLib::Geohash::GeohashLength ( double  latres,
double  lonres 
) [static]

The geohash length required to meet a given geographic resolution.

Parameters:
[in] latres the resolution in latitude (degrees).
[in] lonres the resolution in longitude (degrees).
Returns:
geohash length.

The returned length is in the range [0, 18].

static int NETGeographicLib::Geohash::DecimalPrecision ( int  len  )  [static]

The decimal geographic precision required to match a given geohash length. This is the number of digits needed after decimal point in a decimal degrees representation.

Parameters:
[in] len the length of the geohash.
Returns:
the decimal precision (may be negative).

Internally, len is first put in the range [0, 18]. The returned decimal precision is in the range [2, 12].


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