Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add all exports #2

Merged
merged 3 commits into from
Feb 4, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
109 changes: 80 additions & 29 deletions dist/mgrs.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@ var O = 79; // O
var V = 86; // V
var Z = 90; // Z

var ZDLS = "CDEFGHJKLMNPQRSTUVWX";
exports.ZDLS = ZDLS;

/**
* Conversion of lat/lon to MGRS.
*
Expand Down Expand Up @@ -94,6 +97,39 @@ function radToDeg(rad) {
return (180.0 * (rad / Math.PI));
}

function lonZone(ll) {
var Lat = ll.lat;
var Long = ll.lon;
ZoneNumber = Math.floor((Long + 180) / 6) + 1;

//Make sure the longitude 180.00 is in Zone 60
if (Long == 180) {
ZoneNumber = 60;
}

// Special zone for Norway
if (Lat >= 56.0 && Lat < 64.0 && Long >= 3.0 && Long < 12.0) {
ZoneNumber = 32;
}

// Special zones for Svalbard
if (Lat >= 72.0 && Lat < 84.0) {
if (Long >= 0.0 && Long < 9.0)
ZoneNumber = 31;
else if (Long >= 9.0 && Long < 21.0)
ZoneNumber = 33;
else if (Long >= 21.0 && Long < 33.0)
ZoneNumber = 35;
else if (Long >= 33.0 && Long < 42.0)
ZoneNumber = 37;
}
return ZoneNumber;
}

exports.lonZone = function(ll) {
return lonZone(ll);
}

/**
* Converts a set of Longitude and Latitude co-ordinates to UTM
* using the WGS84 ellipsoid.
Expand All @@ -105,7 +141,8 @@ function radToDeg(rad) {
* northing, zoneNumber and zoneLetter properties, and an optional
* accuracy property in digits. Returns null if the conversion failed.
*/
exports.LLtoUTM = function(ll) {

function LLtoUTM(ll) {
var Lat = ll.lat;
var Long = ll.lon;
var a = 6378137.0; //ellip.radius;
Expand All @@ -117,35 +154,8 @@ exports.LLtoUTM = function(ll) {
var LatRad = degToRad(Lat);
var LongRad = degToRad(Long);
var LongOriginRad;
var ZoneNumber;
// (int)
ZoneNumber = Math.floor((Long + 180) / 6) + 1;

//Make sure the longitude 180.00 is in Zone 60
if (Long === 180) {
ZoneNumber = 60;
}

// Special zone for Norway
if (Lat >= 56.0 && Lat < 64.0 && Long >= 3.0 && Long < 12.0) {
ZoneNumber = 32;
}

// Special zones for Svalbard
if (Lat >= 72.0 && Lat < 84.0) {
if (Long >= 0.0 && Long < 9.0) {
ZoneNumber = 31;
}
else if (Long >= 9.0 && Long < 21.0) {
ZoneNumber = 33;
}
else if (Long >= 21.0 && Long < 33.0) {
ZoneNumber = 35;
}
else if (Long >= 33.0 && Long < 42.0) {
ZoneNumber = 37;
}
}
var ZoneNumber = lonZone(ll);

LongOrigin = (ZoneNumber - 1) * 6 - 180 + 3; //+3 puts origin
// in middle of
Expand Down Expand Up @@ -177,6 +187,10 @@ exports.LLtoUTM = function(ll) {
};
}

exports.LLtoUTM = function(ll) {
return LLtoUTM(ll);
}

/**
* Converts UTM coords to lat/long, using the WGS84 ellipsoid. This is a convenience
* class where the Zone can be specified as a single string eg."60N" which
Expand Down Expand Up @@ -274,6 +288,10 @@ function UTMtoLL(utm) {
return result;
}

exports.latZone = function(lat) {
return getLetterDesignator(lat);
}

/**
* Calculates the MGRS letter designator for the given latitude.
*
Expand Down Expand Up @@ -742,5 +760,38 @@ function getMinNorthing(zoneLetter) {

}

exports.zoneBounds = function(zoneNumber, zoneLetter) {
var latIndex = ZDLS.indexOf(zoneLetter);
var minLon = (zoneNumber - 1) * 6.0 - 180.0;
var minLat = latIndex * 8.0 - 80.0;
var latRange = 8.0;
var lonRange = 6.0;
if (zoneLetter == 'X') {
latRange = 12.0;
if (zoneNumber == 31) {
lonRange = 9.0;
} else if (zoneNumber == 37) {
minLon -= 3.0;
lonRange = 9.0;
} else if (zoneNumber == 33 || zoneNumber == 35) {
lonRange = 12.0;
minLon -= 3.0;
}
} else if (zoneLetter == 'V') { // Norway special case areas.
if (zoneNumber == 31) {
lonRange = 3.0;
} else if (zoneNumber == 32) {
minLon -= 3.0;
lonRange = 9.0;
}
}
return {
minLon: minLon,
minLat: minLat,
lonRange: lonRange,
latRange: latRange
}
}

},{}]},{},[1])(1)
});
109 changes: 80 additions & 29 deletions mgrs.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ var O = 79; // O
var V = 86; // V
var Z = 90; // Z

var ZDLS = "CDEFGHJKLMNPQRSTUVWX";
exports.ZDLS = ZDLS;

/**
* Conversion of lat/lon to MGRS.
*
Expand Down Expand Up @@ -93,6 +96,39 @@ function radToDeg(rad) {
return (180.0 * (rad / Math.PI));
}

function lonZone(ll) {
var Lat = ll.lat;
var Long = ll.lon;
ZoneNumber = Math.floor((Long + 180) / 6) + 1;

//Make sure the longitude 180.00 is in Zone 60
if (Long == 180) {
ZoneNumber = 60;
}

// Special zone for Norway
if (Lat >= 56.0 && Lat < 64.0 && Long >= 3.0 && Long < 12.0) {
ZoneNumber = 32;
}

// Special zones for Svalbard
if (Lat >= 72.0 && Lat < 84.0) {
if (Long >= 0.0 && Long < 9.0)
ZoneNumber = 31;
else if (Long >= 9.0 && Long < 21.0)
ZoneNumber = 33;
else if (Long >= 21.0 && Long < 33.0)
ZoneNumber = 35;
else if (Long >= 33.0 && Long < 42.0)
ZoneNumber = 37;
}
return ZoneNumber;
}

exports.lonZone = function(ll) {
return lonZone(ll);
}

/**
* Converts a set of Longitude and Latitude co-ordinates to UTM
* using the WGS84 ellipsoid.
Expand All @@ -104,7 +140,8 @@ function radToDeg(rad) {
* northing, zoneNumber and zoneLetter properties, and an optional
* accuracy property in digits. Returns null if the conversion failed.
*/
exports.LLtoUTM = function(ll) {

function LLtoUTM(ll) {
var Lat = ll.lat;
var Long = ll.lon;
var a = 6378137.0; //ellip.radius;
Expand All @@ -116,35 +153,8 @@ exports.LLtoUTM = function(ll) {
var LatRad = degToRad(Lat);
var LongRad = degToRad(Long);
var LongOriginRad;
var ZoneNumber;
// (int)
ZoneNumber = Math.floor((Long + 180) / 6) + 1;

//Make sure the longitude 180.00 is in Zone 60
if (Long === 180) {
ZoneNumber = 60;
}

// Special zone for Norway
if (Lat >= 56.0 && Lat < 64.0 && Long >= 3.0 && Long < 12.0) {
ZoneNumber = 32;
}

// Special zones for Svalbard
if (Lat >= 72.0 && Lat < 84.0) {
if (Long >= 0.0 && Long < 9.0) {
ZoneNumber = 31;
}
else if (Long >= 9.0 && Long < 21.0) {
ZoneNumber = 33;
}
else if (Long >= 21.0 && Long < 33.0) {
ZoneNumber = 35;
}
else if (Long >= 33.0 && Long < 42.0) {
ZoneNumber = 37;
}
}
var ZoneNumber = lonZone(ll);

LongOrigin = (ZoneNumber - 1) * 6 - 180 + 3; //+3 puts origin
// in middle of
Expand Down Expand Up @@ -176,6 +186,10 @@ exports.LLtoUTM = function(ll) {
};
}

exports.LLtoUTM = function(ll) {
return LLtoUTM(ll);
}

/**
* Converts UTM coords to lat/long, using the WGS84 ellipsoid. This is a convenience
* class where the Zone can be specified as a single string eg."60N" which
Expand Down Expand Up @@ -273,6 +287,10 @@ function UTMtoLL(utm) {
return result;
}

exports.latZone = function(lat) {
return getLetterDesignator(lat);
}

/**
* Calculates the MGRS letter designator for the given latitude.
*
Expand Down Expand Up @@ -740,3 +758,36 @@ function getMinNorthing(zoneLetter) {
}

}

exports.zoneBounds = function(zoneNumber, zoneLetter) {
var latIndex = ZDLS.indexOf(zoneLetter);
var minLon = (zoneNumber - 1) * 6.0 - 180.0;
var minLat = latIndex * 8.0 - 80.0;
var latRange = 8.0;
var lonRange = 6.0;
if (zoneLetter == 'X') {
latRange = 12.0;
if (zoneNumber == 31) {
lonRange = 9.0;
} else if (zoneNumber == 37) {
minLon -= 3.0;
lonRange = 9.0;
} else if (zoneNumber == 33 || zoneNumber == 35) {
lonRange = 12.0;
minLon -= 3.0;
}
} else if (zoneLetter == 'V') { // Norway special case areas.
if (zoneNumber == 31) {
lonRange = 3.0;
} else if (zoneNumber == 32) {
minLon -= 3.0;
lonRange = 9.0;
}
}
return {
minLon: minLon,
minLat: minLat,
lonRange: lonRange,
latRange: latRange
}
}
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "mgrs",
"version": "0.0.4-alpha",
"version": "0.0.4-pwilczynski",
"description": "Utility for converting between WGS84 lat/lng and MGRS coordinates",
"main": "mgrs.js",
"scripts": {
Expand Down