parent
							
								
									e04b0b0ecd
								
							
						
					
					
						commit
						68274eb677
					
				@ -186,7 +186,7 @@ S2.IJToST = function(ij,order,offsets) {
 | 
				
			|||||||
// note: rather then calculating the final integer hilbert position, we just return the list of quads
 | 
					// note: rather then calculating the final integer hilbert position, we just return the list of quads
 | 
				
			||||||
// this ensures no precision issues whth large orders (S3 cell IDs use up to 30), and is more
 | 
					// this ensures no precision issues whth large orders (S3 cell IDs use up to 30), and is more
 | 
				
			||||||
// convenient for pulling out the individual bits as needed later
 | 
					// convenient for pulling out the individual bits as needed later
 | 
				
			||||||
var pointToHilbertQuadList = function(x,y,order) {
 | 
					var pointToHilbertQuadList = function(x,y,order,sq) {
 | 
				
			||||||
  var hilbertMap = {
 | 
					  var hilbertMap = {
 | 
				
			||||||
    'a': [ [0,'d'], [1,'a'], [3,'b'], [2,'a'] ],
 | 
					    'a': [ [0,'d'], [1,'a'], [3,'b'], [2,'a'] ],
 | 
				
			||||||
    'b': [ [2,'b'], [1,'b'], [3,'a'], [0,'c'] ],
 | 
					    'b': [ [2,'b'], [1,'b'], [3,'a'], [0,'c'] ],
 | 
				
			||||||
@ -194,7 +194,7 @@ var pointToHilbertQuadList = function(x,y,order) {
 | 
				
			|||||||
    'd': [ [0,'a'], [3,'c'], [1,'d'], [2,'d'] ]
 | 
					    'd': [ [0,'a'], [3,'c'], [1,'d'], [2,'d'] ]
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  var currentSquare='a';
 | 
					  var currentSquare=sq||'a';
 | 
				
			||||||
  var positions = [];
 | 
					  var positions = [];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  for (var i=order-1; i>=0; i--) {
 | 
					  for (var i=order-1; i>=0; i--) {
 | 
				
			||||||
@ -286,7 +286,27 @@ S2.S2Cell.prototype.getCornerLatLngs = function() {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
S2.S2Cell.prototype.getFaceAndQuads = function () {
 | 
					S2.S2Cell.prototype.getFaceAndQuads = function () {
 | 
				
			||||||
  var quads = pointToHilbertQuadList(this.ij[0], this.ij[1], this.level);
 | 
					  var sq;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  switch(this.face) {
 | 
				
			||||||
 | 
					    case 0:
 | 
				
			||||||
 | 
					      /* fallthru */
 | 
				
			||||||
 | 
					    case 2:
 | 
				
			||||||
 | 
					      /* fallthru */
 | 
				
			||||||
 | 
					    case 4:
 | 
				
			||||||
 | 
					      sq = 'a';
 | 
				
			||||||
 | 
					      break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    case 1:
 | 
				
			||||||
 | 
					      /* fallthru */
 | 
				
			||||||
 | 
					    case 3:
 | 
				
			||||||
 | 
					      /* fallthru */
 | 
				
			||||||
 | 
					    case 5:
 | 
				
			||||||
 | 
					      sq = 'd';
 | 
				
			||||||
 | 
					      break;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  var quads = pointToHilbertQuadList(this.ij[0], this.ij[1], this.level, sq);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return [this.face,quads];
 | 
					  return [this.face,quads];
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
				
			|||||||
@ -8,43 +8,54 @@ var lat = -43.525166;
 | 
				
			|||||||
var lng = 172.655096;
 | 
					var lng = 172.655096;
 | 
				
			||||||
//var id = '8678661352471920640';
 | 
					//var id = '8678661352471920640';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
console.log('');
 | 
					var tests = [
 | 
				
			||||||
console.log('Lat/Lng');
 | 
					  [ -13.846153846153854, -41.53846153846155 ]   // face 0
 | 
				
			||||||
console.log('=', lat + ',' + lng);
 | 
					, [ -13.846153846153854, 96.92307692307692 ]    // face 1
 | 
				
			||||||
 | 
					, [ 41.53846153846153, -124.61538461538463 ]    // face 2
 | 
				
			||||||
 | 
					, [ -152.30769230769232, 41.53846153846153 ]    // face 3
 | 
				
			||||||
 | 
					, [ -152.30769230769232, 69.23076923076923 ]    // face 4
 | 
				
			||||||
 | 
					, [ -124.61538461538463, -69.23076923076924 ]   // face 5
 | 
				
			||||||
 | 
					];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//
 | 
					tests.forEach(function (pair, i) {
 | 
				
			||||||
// Lat / Lng to XYZ
 | 
					  var lat = pair[0];
 | 
				
			||||||
//
 | 
					  var lng = pair[1];
 | 
				
			||||||
var nS2LatLng = new nS2.S2LatLng(lat, lng).toPoint();
 | 
					
 | 
				
			||||||
var nXyz = [ nS2LatLng.x(), nS2LatLng.y(), nS2LatLng.z() ];
 | 
					  console.log('');
 | 
				
			||||||
//var oXyz = oS2.LatLngToXYZ({ lat: lat, lng: lng });
 | 
					  console.log('');
 | 
				
			||||||
var jXyz = jS2.LatLngToXYZ({ lat: lat, lng: lng });
 | 
					  console.log('FACE', i);
 | 
				
			||||||
console.log('');
 | 
					
 | 
				
			||||||
console.log('XYZ');
 | 
					  console.log('');
 | 
				
			||||||
console.log('=', nXyz);
 | 
					  console.log('Lat/Lng');
 | 
				
			||||||
//console.log('o', oXyz);
 | 
					  console.log('=', lat + ',' + lng);
 | 
				
			||||||
console.log('j', jXyz);
 | 
					
 | 
				
			||||||
 | 
					  //
 | 
				
			||||||
 | 
					  // Lat / Lng to XYZ
 | 
				
			||||||
 | 
					  //
 | 
				
			||||||
 | 
					  var nS2LatLng = new nS2.S2LatLng(lat, lng).toPoint();
 | 
				
			||||||
 | 
					  //var nXyz = [ nS2LatLng.x(), nS2LatLng.y(), nS2LatLng.z() ];
 | 
				
			||||||
 | 
					  //var jXyz = jS2.LatLngToXYZ({ lat: lat, lng: lng });
 | 
				
			||||||
 | 
					  /*
 | 
				
			||||||
 | 
					  console.log('');
 | 
				
			||||||
 | 
					  console.log('XYZ');
 | 
				
			||||||
 | 
					  console.log('=', nXyz);
 | 
				
			||||||
 | 
					  console.log('j', jXyz);
 | 
				
			||||||
 | 
					  */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var nCell = new nS2.S2CellId(nS2LatLng).parent(15);
 | 
					  var nCell = new nS2.S2CellId(nS2LatLng).parent(15);
 | 
				
			||||||
//var oCell = oS2.S2Cell.FromLatLng({ lat: lat, lng: lng }, 15);
 | 
					  var jCell = jS2.S2Cell.FromLatLng({ lat: lat, lng: lng }, 15);
 | 
				
			||||||
var jCell = jS2.S2Cell.FromLatLng({ lat: lat, lng: lng }, 15);
 | 
					  /*
 | 
				
			||||||
console.log('');
 | 
					  console.log('');
 | 
				
			||||||
console.log('F,IJ,L');
 | 
					  console.log('F,IJ,L');
 | 
				
			||||||
//console.log('=', cellN);
 | 
					  console.log('j', jCell.toString());
 | 
				
			||||||
//console.log('o', oCell.toString());
 | 
					  */
 | 
				
			||||||
console.log('j', jCell.toString());
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
var nKey = nCell.toString();
 | 
					  var nKey = nCell.toString();
 | 
				
			||||||
//var oQuad = oCell.getFaceAndQuads();
 | 
					  var jQuad = jCell.getFaceAndQuads();
 | 
				
			||||||
//var oKey = oQuad[0] + '/' + oQuad[1].join('');
 | 
					  var jKey = jQuad[0] + '/' + jQuad[1].join('');
 | 
				
			||||||
var jQuad = jCell.getFaceAndQuads();
 | 
					  console.log('');
 | 
				
			||||||
var jKey = jQuad[0] + '/' + jQuad[1].join('');
 | 
					  console.log('Quadkey');
 | 
				
			||||||
console.log('');
 | 
					  console.log('=', nKey);
 | 
				
			||||||
console.log('Quadkey');
 | 
					  console.log('j', jKey);
 | 
				
			||||||
console.log('=', nKey);
 | 
					});
 | 
				
			||||||
//console.log('o', oKey);
 | 
					 | 
				
			||||||
console.log('j', jKey);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
//var nCellId = new nS2.S2CellId(id);
 | 
					 | 
				
			||||||
//console.log(nCellId.toLatLng().toString());
 | 
					 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user