2010-07-30 14 views

Respuesta

4

Terminamos usando GeoTrans y creamos una DLL desde el código y usamos PInvoke para llamar a las funciones. Sacamos lo siguiente de la fuente en caso que alguien quería saber (solución mínima):

  • polarst
  • tranmerc
  • ups
  • UTM
  • mgrs

La Firma PInvoke utilizamos:

[DllImport("mgrs.dll")] 
public static extern int Convert_Geodetic_To_MGRS(
    double Latitude, 
    double Longitude, 
    int Precision, // 1 to 5, we used 4 (10 square meters) 
    StringBuilder MGRS); 

que corresponde a esta función en mgrs.h:

MGRSDLL_API long __stdcall Convert_Geodetic_To_MGRS(
    double Latitude, 
    double Longitude, 
    long Precision, 
    char* MGRS); 
+0

Hola podría compartir el archivo DLL PInvoke que ha creado? – Jason

+0

@Jason - Sí, actualizaré mi respuesta con ella – SwDevMan81

+0

@ SwDevMan81 ¿puede compartir la DLL? Y la forma en que puedo agregarlo a mi proyecto de teléfono de Windows –

2

Puede usar las envolturas C# de GDAL para convertir de lat/lon a UTM. Entonces solo necesita formatear los valores apropiadamente para MGRS, ya que es solo UTM con un formato numérico diferente.

0

encontrado en js si se trata de ayuda ...

https://github.com/codice/usng.js

usage-

var converter = new usngs.Converter(); 
alert(converter.LLtoMGRS(33.754032, -98.451233, 9)); 
0

CoordinateSharp es disponible como un paquete Nuget y puede hacer eso.

Coordinate c = new Coordinate(40.57682, -70.75678); 
c.MGRS.ToString(); // Outputs 19T CE 51307 93264