🌐 An R Package to Convert 'MGRS' (Military Grid Reference System) References To and From Other Coordiante Systems
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
R
README_files
man
src
tests
.Rbuildignore
.codecov.yml
.gitignore
.travis.yml
CONDUCT.md
DESCRIPTION
NAMESPACE
NEWS.md
README.Rmd
README.md
appveyor.yml
codecov.yml
mgrs.Rproj

README.md

Project Status: Active - The project has reached a stable, usable state and is being actively developed. AppVeyor Build Status codecov Travis-CI Build Status keybase verified

mgrs

Convert ‘MGRS’ (Military Grid Reference System) References To and From Other Coordinate Systems

Description

Essentially, a lightweight R wrapper around bits of https://svn.osgeo.org/gdal/trunk/gdal/frmts/nitf/.

Decent reference on MGRS & UTM (Universal Transverse Mercator): https://www.luomus.fi/en/utm-mgrs-atlas-florae-europaeae.

What’s inside the tin?

The following functions are implemented:

  • latlng_to_mgrs: Convert latitude/longitude to MGRS string
  • mgrs_to_latlng: Convert an MGRS string to latitude/longitude (now returns a data.frame)
  • mgrs_to_ups: Convert MGRS to UPS
  • mgrs_to_utm: Convert MGRS to UTM
  • ups_to_mgrs: Convert UPS to MGRS
  • utm_to_mgrs: Convert UTM to MGRS
  • mgrs_precision: Return MGRS grid reference precision (in meters)

TODO

  • Find all the folks/projects I need to add in the DESCRIPTION for auth/ctb & docs
  • Vectorize ALL THE THINGS
  • Add in support for the other MGRS conversion thingys
  • More error checking (basic checking is done)
  • Precision validation
  • More tests (basic testing is done)

Installation

devtools::install_github("hrbrmstr/mgrs")

Usage

library(mgrs)

# current verison
packageVersion("mgrs")
## [1] '0.1.0'
mgrs_to_latlng("33UXP04")
##      mgrs      lat      lng
## 1 33UXP04 48.20535 16.34593
latlng_to_mgrs(48.20535, 16.34593)
## [1] "33UXP0000040000"
mgrs_to_latlng("33UXP0500444996")
##              mgrs      lat      lng
## 1 33UXP0500444996 48.24947 16.41449
latlng_to_mgrs(48.24948, 16.41449)
## [1] "33UXP0500344996"
mgrs_to_latlng("24XWT783908")
##          mgrs      lat       lng
## 1 24XWT783908 83.62738 -32.66879
latlng_to_mgrs(83.62738, -32.66879)
## [1] "25XEN0410486507"
utm_to_mgrs(48, "N", 377299, 1483035)
## [1] "48PUV7729983035"
mgrs_to_utm("48PUV7729883034")
##              mgrs zone hemisphere easting northing
## 1 48PUV7729883034   48          N  377298  1483034
ups_to_mgrs("N", 2426773, 1530125)
## [1] "ZGC2677330125"
mgrs_to_ups("ZGC2677330125")
##            mgrs hemisphere easting northing
## 1 ZGC2677330125          N 2426773  1530125
grefs <- c("4Q", "4QFJ", "4QFJ16", "4QFJ1267", "4QFJ123678",
           "4QFJ12346789", "4QFJ1234567890")
mgrs_precision(grefs)
##         grid_ref precision
## 1             4Q        NA
## 2           4QFJ     1e+05
## 3         4QFJ16     1e+04
## 4       4QFJ1267     1e+03
## 5     4QFJ123678     1e+02
## 6   4QFJ12346789     1e+01
## 7 4QFJ1234567890     1e+00

Visual Verification

library(purrr)
library(ggplot2)

# precision == 1

c("16SEB20", "09UXQ25", "12SVC48", "15SWU64", "11SKA54", "13SDC58", 
"18TYM20", "18SWH08", "17RML38", "17SKR77", "09RYR61", "12TTP62", 
"16TBK93", "16TEK73", "15TVG64", "14SNH75", "16SFG94", "15RWP68", 
"19TEL05", "18SUJ54", "19TBG89", "16TFN87", "15TUM73", "16SBB31", 
"15SWC44", "12TXS28", "14TML57", "11SND12", "19TCJ00", "18SWK62", 
"13SDU11", "18TVN87", "17SQV22", "14TMT13", "17TLE65", "14SPE73", 
"10TGP36", "18TTL93", "19TCG20", "17SNT42", "14TMQ40", "16SEE44", 
"14RNV27", "12SVJ72", "18TXQ90", "17SQB46", "11TKN95", "17SNC25", 
"16TBQ64", "13TCH16") -> mgrs_state_centers

mgrs_to_latlng(mgrs_state_centers) %>% 
  ggplot(aes(lng, lat)) +
  geom_point(shape=22, size=2, color="white", fill="black") +
  coord_map("polyconic")

Code of Conduct

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.