Skip to main content
1 of 3
lummers
  • 139
  • 4

Knowledge Check - Military Grid Refernce System (MGRS)

I was hoping to sense check what I'm seeing as I don't understand!

What I'm trying to do

My ultimate objective is to create shapefiles to represent the Military Grid Reference System (MGRS) to a precision of 100m. With these shapefiles, I can then use them in chloropleths and other types of analyses.

NASA World Winds

I'm using this very helpful package which is based on the NASA World Winds SDK: https://github.com/Berico-Technologies/Geo-Coordinate-Conversion-Java

So, what's up?

I decided to draw an arbitrary bounding box near Haneda airport in Tokyo. The SW corner of that box should have the grid refernece 54SUE8059730440. This is a 1m precision and is returning a lat/lon of 35.510370, 139.683313. I have no concerns with this, looks valid.

To change the precision to 100m, my working assumption is that I need to trunc this grid refernece down to [54SUE] + 6 digits. That would cut the last two digits and create a refernece of 54SUE80597304.

When using the Java package above to convert 54SUE80597304 to a lat/long, it returns 35.89436034148521, 139.67690044404682. This location is more than 40km away!

  • 54SUE8059730440 = 1m precision? = (35.510370, 139.683313) = Kawasaki, Tokoyo
  • 54SUE80597304 = 100m precision? = (35.89436034148521, 139.67690044404682) = Saitama

What did you expect?

My assumption is that the converstion from military grids to lat/lon typically returns the South-West coordinate of the grid. Given this, I further assume that relaxing the precision as I have done should result in the same SW corner coordinate with the NW and SE corners moving out by c. 100 meters.

What am I missing?

Thanks to anybody who can help me to better understand.

Bonus points -- is there any online tool out there where I can input a 100m grid reference and see a visualization of the grid lines? That will help a lot!


double[] gridOneStart = Coordinates.latLonFromMgrs("54SUE8059730440");
System.out.println(String.format("%s, %s", gridOneStart[0], gridOneStart[1]));

35.51036511480732, 139.683307831635

double[] gridOneStart = Coordinates.latLonFromMgrs("54SUE80597304");
System.out.println(String.format("%s, %s", gridOneStart[0], gridOneStart[1]));

35.89436034148521, 139.67690044404682

lummers
  • 139
  • 4