12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- import adjust_lon from '../common/adjust_lon';
- import qsfnz from '../common/qsfnz';
- import msfnz from '../common/msfnz';
- import iqsfnz from '../common/iqsfnz';
- /*
- reference:
- "Cartographic Projection Procedures for the UNIX Environment-
- A User's Manual" by Gerald I. Evenden,
- USGS Open File Report 90-284and Release 4 Interim Reports (2003)
- */
- export function init() {
- //no-op
- if (!this.sphere) {
- this.k0 = msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts));
- }
- }
- /* Cylindrical Equal Area forward equations--mapping lat,long to x,y
- ------------------------------------------------------------*/
- export function forward(p) {
- var lon = p.x;
- var lat = p.y;
- var x, y;
- /* Forward equations
- -----------------*/
- var dlon = adjust_lon(lon - this.long0);
- if (this.sphere) {
- x = this.x0 + this.a * dlon * Math.cos(this.lat_ts);
- y = this.y0 + this.a * Math.sin(lat) / Math.cos(this.lat_ts);
- }
- else {
- var qs = qsfnz(this.e, Math.sin(lat));
- x = this.x0 + this.a * this.k0 * dlon;
- y = this.y0 + this.a * qs * 0.5 / this.k0;
- }
- p.x = x;
- p.y = y;
- return p;
- }
- /* Cylindrical Equal Area inverse equations--mapping x,y to lat/long
- ------------------------------------------------------------*/
- export function inverse(p) {
- p.x -= this.x0;
- p.y -= this.y0;
- var lon, lat;
- if (this.sphere) {
- lon = adjust_lon(this.long0 + (p.x / this.a) / Math.cos(this.lat_ts));
- lat = Math.asin((p.y / this.a) * Math.cos(this.lat_ts));
- }
- else {
- lat = iqsfnz(this.e, 2 * p.y * this.k0 / this.a);
- lon = adjust_lon(this.long0 + p.x / (this.a * this.k0));
- }
- p.x = lon;
- p.y = lat;
- return p;
- }
- export var names = ["cea"];
- export default {
- init: init,
- forward: forward,
- inverse: inverse,
- names: names
- };
|