10

有谁知道我在哪里可以找到将纬度/经度位置转换为军事网格参考系统 (MGRS)的代码库?如果可能,我正在寻找 C# 实现。

4

4 回答 4

4

我们最终使用GeoTrans并从代码创建 DLL 并使用 PInvoke 调用函数。我们从源代码中提取以下内容,以防有人想知道(最小解决方案):

  • 极地
  • 转商
  • UPS
  • utm
  • 管理人员

我们使用的 PInvoke 签名:

[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);

对应于 mgrs.h 中的这个函数:

MGRSDLL_API long __stdcall Convert_Geodetic_To_MGRS(
   double Latitude,
   double Longitude,
   long Precision,
   char* MGRS);
于 2011-03-31T15:30:18.130 回答
3

CoordinateSharp作为 Nuget 包提供,可以做到这一点。

Coordinate c = new Coordinate(40.57682, -70.75678);
c.MGRS.ToString(); // Outputs 19T CE 51307 93264
于 2018-03-02T00:48:45.200 回答
2

您可以使用GDAL的 C# 包装器将纬度/经度转换为 UTM。然后,您只需为 MGRS 适当地格式化值,因为它只是具有不同数字格式的 UTM。

于 2010-07-30T19:02:35.190 回答
2

如果有帮助,在js上找到...

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

用法-

var converter = new usngs.Converter();
alert(converter.LLtoMGRS(33.754032, -98.451233, 9));
于 2017-02-14T20:24:27.283 回答