Named exports from ol/reproj

This commit is contained in:
Tim Schaub
2018-02-09 09:38:53 -07:00
parent 9ed3881f34
commit 9c1db1f904
6 changed files with 25 additions and 28 deletions
+9 -12
View File
@@ -5,7 +5,6 @@ import {createCanvasContext2D} from './dom.js';
import {containsCoordinate, createEmpty, extend, getHeight, getTopLeft, getWidth} from './extent.js'; import {containsCoordinate, createEmpty, extend, getHeight, getTopLeft, getWidth} from './extent.js';
import {solveLinearSystem} from './math.js'; import {solveLinearSystem} from './math.js';
import {getPointResolution, transform} from './proj.js'; import {getPointResolution, transform} from './proj.js';
const _ol_reproj_ = {};
/** /**
@@ -20,7 +19,7 @@ const _ol_reproj_ = {};
* @param {number} targetResolution Target resolution. * @param {number} targetResolution Target resolution.
* @return {number} The best resolution to use. Can be +-Infinity, NaN or 0. * @return {number} The best resolution to use. Can be +-Infinity, NaN or 0.
*/ */
_ol_reproj_.calculateSourceResolution = function(sourceProj, targetProj, export function calculateSourceResolution(sourceProj, targetProj,
targetCenter, targetResolution) { targetCenter, targetResolution) {
const sourceCenter = transform(targetCenter, targetProj, sourceProj); const sourceCenter = transform(targetCenter, targetProj, sourceProj);
@@ -51,7 +50,7 @@ _ol_reproj_.calculateSourceResolution = function(sourceProj, targetProj,
} }
return sourceResolution; return sourceResolution;
}; }
/** /**
@@ -63,14 +62,13 @@ _ol_reproj_.calculateSourceResolution = function(sourceProj, targetProj,
* @param {number} x X coordinate of the point (in pixels). * @param {number} x X coordinate of the point (in pixels).
* @param {number} y Y coordinate of the point (in pixels). * @param {number} y Y coordinate of the point (in pixels).
* @return {ol.Coordinate} New point 1 px farther from the centroid. * @return {ol.Coordinate} New point 1 px farther from the centroid.
* @private
*/ */
_ol_reproj_.enlargeClipPoint_ = function(centroidX, centroidY, x, y) { function enlargeClipPoint(centroidX, centroidY, x, y) {
const dX = x - centroidX; const dX = x - centroidX;
const dY = y - centroidY; const dY = y - centroidY;
const distance = Math.sqrt(dX * dX + dY * dY); const distance = Math.sqrt(dX * dX + dY * dY);
return [Math.round(x + dX / distance), Math.round(y + dY / distance)]; return [Math.round(x + dX / distance), Math.round(y + dY / distance)];
}; }
/** /**
@@ -91,7 +89,7 @@ _ol_reproj_.enlargeClipPoint_ = function(centroidX, centroidY, x, y) {
* @param {boolean=} opt_renderEdges Render reprojection edges. * @param {boolean=} opt_renderEdges Render reprojection edges.
* @return {HTMLCanvasElement} Canvas with reprojected data. * @return {HTMLCanvasElement} Canvas with reprojected data.
*/ */
_ol_reproj_.render = function(width, height, pixelRatio, export function render(width, height, pixelRatio,
sourceResolution, sourceExtent, targetResolution, targetExtent, sourceResolution, sourceExtent, targetResolution, targetExtent,
triangulation, sources, gutter, opt_renderEdges) { triangulation, sources, gutter, opt_renderEdges) {
@@ -193,9 +191,9 @@ _ol_reproj_.render = function(width, height, pixelRatio,
context.beginPath(); context.beginPath();
const centroidX = (u0 + u1 + u2) / 3; const centroidX = (u0 + u1 + u2) / 3;
const centroidY = (v0 + v1 + v2) / 3; const centroidY = (v0 + v1 + v2) / 3;
const p0 = _ol_reproj_.enlargeClipPoint_(centroidX, centroidY, u0, v0); const p0 = enlargeClipPoint(centroidX, centroidY, u0, v0);
const p1 = _ol_reproj_.enlargeClipPoint_(centroidX, centroidY, u1, v1); const p1 = enlargeClipPoint(centroidX, centroidY, u1, v1);
const p2 = _ol_reproj_.enlargeClipPoint_(centroidX, centroidY, u2, v2); const p2 = enlargeClipPoint(centroidX, centroidY, u2, v2);
context.moveTo(p1[0], p1[1]); context.moveTo(p1[0], p1[1]);
context.lineTo(p0[0], p0[1]); context.lineTo(p0[0], p0[1]);
@@ -241,5 +239,4 @@ _ol_reproj_.render = function(width, height, pixelRatio,
context.restore(); context.restore();
} }
return context.canvas; return context.canvas;
}; }
export default _ol_reproj_;
+3 -3
View File
@@ -8,7 +8,7 @@ import ImageState from '../ImageState.js';
import {listen, unlistenByKey} from '../events.js'; import {listen, unlistenByKey} from '../events.js';
import EventType from '../events/EventType.js'; import EventType from '../events/EventType.js';
import {getCenter, getIntersection, getHeight, getWidth} from '../extent.js'; import {getCenter, getIntersection, getHeight, getWidth} from '../extent.js';
import _ol_reproj_ from '../reproj.js'; import {calculateSourceResolution, render as renderReprojected} from '../reproj.js';
import Triangulation from '../reproj/Triangulation.js'; import Triangulation from '../reproj/Triangulation.js';
/** /**
@@ -46,7 +46,7 @@ const ReprojImage = function(sourceProj, targetProj,
getIntersection(targetExtent, maxTargetExtent) : targetExtent; getIntersection(targetExtent, maxTargetExtent) : targetExtent;
const targetCenter = getCenter(limitedTargetExtent); const targetCenter = getCenter(limitedTargetExtent);
const sourceResolution = _ol_reproj_.calculateSourceResolution( const sourceResolution = calculateSourceResolution(
sourceProj, targetProj, targetCenter, targetResolution); sourceProj, targetProj, targetCenter, targetResolution);
const errorThresholdInPixels = ERROR_THRESHOLD; const errorThresholdInPixels = ERROR_THRESHOLD;
@@ -148,7 +148,7 @@ ReprojImage.prototype.reproject_ = function() {
const width = getWidth(this.targetExtent_) / this.targetResolution_; const width = getWidth(this.targetExtent_) / this.targetResolution_;
const height = getHeight(this.targetExtent_) / this.targetResolution_; const height = getHeight(this.targetExtent_) / this.targetResolution_;
this.canvas_ = _ol_reproj_.render(width, height, this.sourcePixelRatio_, this.canvas_ = renderReprojected(width, height, this.sourcePixelRatio_,
this.sourceImage_.getResolution(), this.maxSourceExtent_, this.sourceImage_.getResolution(), this.maxSourceExtent_,
this.targetResolution_, this.targetExtent_, this.triangulation_, [{ this.targetResolution_, this.targetExtent_, this.triangulation_, [{
extent: this.sourceImage_.getExtent(), extent: this.sourceImage_.getExtent(),
+3 -3
View File
@@ -9,7 +9,7 @@ import {listen, unlistenByKey} from '../events.js';
import EventType from '../events/EventType.js'; import EventType from '../events/EventType.js';
import {getArea, getCenter, getIntersection} from '../extent.js'; import {getArea, getCenter, getIntersection} from '../extent.js';
import {clamp} from '../math.js'; import {clamp} from '../math.js';
import _ol_reproj_ from '../reproj.js'; import {calculateSourceResolution, render as renderReprojected} from '../reproj.js';
import Triangulation from '../reproj/Triangulation.js'; import Triangulation from '../reproj/Triangulation.js';
/** /**
@@ -125,7 +125,7 @@ const ReprojTile = function(sourceProj, sourceTileGrid,
this.wrappedTileCoord_[0]); this.wrappedTileCoord_[0]);
const targetCenter = getCenter(limitedTargetExtent); const targetCenter = getCenter(limitedTargetExtent);
const sourceResolution = _ol_reproj_.calculateSourceResolution( const sourceResolution = calculateSourceResolution(
sourceProj, targetProj, targetCenter, targetResolution); sourceProj, targetProj, targetCenter, targetResolution);
if (!isFinite(sourceResolution) || sourceResolution <= 0) { if (!isFinite(sourceResolution) || sourceResolution <= 0) {
@@ -237,7 +237,7 @@ ReprojTile.prototype.reproject_ = function() {
const targetExtent = this.targetTileGrid_.getTileCoordExtent( const targetExtent = this.targetTileGrid_.getTileCoordExtent(
this.wrappedTileCoord_); this.wrappedTileCoord_);
this.canvas_ = _ol_reproj_.render(width, height, this.pixelRatio_, this.canvas_ = renderReprojected(width, height, this.pixelRatio_,
sourceResolution, this.sourceTileGrid_.getExtent(), sourceResolution, this.sourceTileGrid_.getExtent(),
targetResolution, targetExtent, this.triangulation_, sources, targetResolution, targetExtent, this.triangulation_, sources,
this.gutter_, this.renderEdges_); this.gutter_, this.renderEdges_);
+2 -2
View File
@@ -11,7 +11,7 @@ import EventType from '../events/EventType.js';
import {containsExtent, getCenter, getForViewAndSize, getHeight, getWidth} from '../extent.js'; import {containsExtent, getCenter, getForViewAndSize, getHeight, getWidth} from '../extent.js';
import {assign} from '../obj.js'; import {assign} from '../obj.js';
import {get as getProjection, transform} from '../proj.js'; import {get as getProjection, transform} from '../proj.js';
import _ol_reproj_ from '../reproj.js'; import {calculateSourceResolution} from '../reproj.js';
import ImageSource from '../source/Image.js'; import ImageSource from '../source/Image.js';
import WMSServerType from '../source/WMSServerType.js'; import WMSServerType from '../source/WMSServerType.js';
import {compareVersions} from '../string.js'; import {compareVersions} from '../string.js';
@@ -141,7 +141,7 @@ ImageWMS.prototype.getGetFeatureInfoUrl = function(coordinate, resolution, proje
const sourceProjectionObj = this.getProjection(); const sourceProjectionObj = this.getProjection();
if (sourceProjectionObj && sourceProjectionObj !== projectionObj) { if (sourceProjectionObj && sourceProjectionObj !== projectionObj) {
resolution = _ol_reproj_.calculateSourceResolution(sourceProjectionObj, projectionObj, coordinate, resolution); resolution = calculateSourceResolution(sourceProjectionObj, projectionObj, coordinate, resolution);
coordinate = transform(coordinate, projectionObj, sourceProjectionObj); coordinate = transform(coordinate, projectionObj, sourceProjectionObj);
} }
+2 -2
View File
@@ -9,7 +9,7 @@ import {buffer, createEmpty} from '../extent.js';
import {assign} from '../obj.js'; import {assign} from '../obj.js';
import {modulo} from '../math.js'; import {modulo} from '../math.js';
import {get as getProjection, transform, transformExtent} from '../proj.js'; import {get as getProjection, transform, transformExtent} from '../proj.js';
import _ol_reproj_ from '../reproj.js'; import {calculateSourceResolution} from '../reproj.js';
import {toSize, buffer as bufferSize, scale as scaleSize} from '../size.js'; import {toSize, buffer as bufferSize, scale as scaleSize} from '../size.js';
import TileImage from '../source/TileImage.js'; import TileImage from '../source/TileImage.js';
import WMSServerType from '../source/WMSServerType.js'; import WMSServerType from '../source/WMSServerType.js';
@@ -135,7 +135,7 @@ TileWMS.prototype.getGetFeatureInfoUrl = function(coordinate, resolution, projec
} }
if (sourceProjectionObj && sourceProjectionObj !== projectionObj) { if (sourceProjectionObj && sourceProjectionObj !== projectionObj) {
tileResolution = _ol_reproj_.calculateSourceResolution(sourceProjectionObj, projectionObj, coordinate, tileResolution); tileResolution = calculateSourceResolution(sourceProjectionObj, projectionObj, coordinate, tileResolution);
tileExtent = transformExtent(tileExtent, projectionObj, sourceProjectionObj); tileExtent = transformExtent(tileExtent, projectionObj, sourceProjectionObj);
coordinate = transform(coordinate, projectionObj, sourceProjectionObj); coordinate = transform(coordinate, projectionObj, sourceProjectionObj);
} }
+6 -6
View File
@@ -1,4 +1,4 @@
import _ol_reproj_ from '../../../../src/ol/reproj.js'; import {calculateSourceResolution} from '../../../../src/ol/reproj.js';
import {get as getProjection, transform} from '../../../../src/ol/proj.js'; import {get as getProjection, transform} from '../../../../src/ol/proj.js';
@@ -14,15 +14,15 @@ describe('ol.reproj', function() {
it('is identity for identical projection', function() { it('is identity for identical projection', function() {
let result; let result;
const resolution = 500; const resolution = 500;
result = _ol_reproj_.calculateSourceResolution( result = calculateSourceResolution(
proj3857, proj3857, origin, resolution); proj3857, proj3857, origin, resolution);
expect(result).to.be(resolution); expect(result).to.be(resolution);
result = _ol_reproj_.calculateSourceResolution( result = calculateSourceResolution(
proj3857, proj3857, point3857, resolution); proj3857, proj3857, point3857, resolution);
expect(result).to.be(resolution); expect(result).to.be(resolution);
result = _ol_reproj_.calculateSourceResolution( result = calculateSourceResolution(
proj4326, proj4326, point4326, resolution); proj4326, proj4326, point4326, resolution);
expect(result).to.be(resolution); expect(result).to.be(resolution);
}); });
@@ -30,13 +30,13 @@ describe('ol.reproj', function() {
it('calculates correctly', function() { it('calculates correctly', function() {
const resolution4326 = 5; const resolution4326 = 5;
const resolution3857 = _ol_reproj_.calculateSourceResolution( const resolution3857 = calculateSourceResolution(
proj3857, proj4326, point4326, resolution4326); proj3857, proj4326, point4326, resolution4326);
expect(resolution3857).not.to.be(resolution4326); expect(resolution3857).not.to.be(resolution4326);
expect(resolution3857).to.roughlyEqual( expect(resolution3857).to.roughlyEqual(
5 * proj4326.getMetersPerUnit(), 1e-4); 5 * proj4326.getMetersPerUnit(), 1e-4);
const result = _ol_reproj_.calculateSourceResolution( const result = calculateSourceResolution(
proj4326, proj3857, point3857, resolution3857); proj4326, proj3857, point3857, resolution3857);
expect(result).to.be(resolution4326); expect(result).to.be(resolution4326);
}); });