2010-07-30 14 views

Trả lời

4

Chúng tôi đã kết thúc bằng cách sử dụng GeoTrans và tạo DLL từ mã và sử dụng PInvoke để gọi các hàm. Chúng tôi kéo sau từ nguồn trong trường hợp bất cứ ai muốn biết (giải pháp tối thiểu):

  • polarst
  • tranmerc
  • up
  • utm
  • MGRS

Các PInvoke Chữ ký chúng tôi đã sử dụng:

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

tương ứng với chức năng này trong mgrs.h:

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

Hi bạn có thể chia sẻ dll PInvoke bạn đã tạo? – Jason

+0

@ Jason - Vâng, tôi sẽ cập nhật câu trả lời của tôi với nó – SwDevMan81

+0

@ SwDevMan81 bạn có thể vui lòng chia sẻ DLL không? Và cách tôi có thể thêm nó vào dự án điện thoại cửa sổ của tôi –

2

Bạn có thể sử dụng trình bao bọc C# GDAL để chuyển đổi từ lat/lon sang UTM. Sau đó bạn chỉ cần định dạng các giá trị phù hợp cho MGRS, vì nó chỉ là UTM với một định dạng số khác nhau.

0

Tìm thấy trên js nếu đó là sự giúp đỡ ...

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

usage-

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

CoordinateSharp là có sẵn như là một gói Nuget và có thể làm điều đó.

Coordinate c = new Coordinate(40.57682, -70.75678); 
c.MGRS.ToString(); // Outputs 19T CE 51307 93264 
Các vấn đề liên quan