refactor and test for getting latlng
This commit is contained in:
parent
a60945a4b9
commit
f4768f7a60
|
@ -28,14 +28,25 @@
|
||||||
var S2 = exports.S2 = {};
|
var S2 = exports.S2 = {};
|
||||||
|
|
||||||
var LatLngToXYZ = function(latLng) {
|
var LatLngToXYZ = function(latLng) {
|
||||||
var d2r = S2.L.LatLng.DEG_TO_RAD;
|
// http://stackoverflow.com/questions/8981943/lat-long-to-x-y-z-position-in-js-not-working
|
||||||
|
var lat = latLng.lat;
|
||||||
|
var lon = latLng.lng;
|
||||||
|
var DEG_TO_RAD = Math.PI / 180.0;
|
||||||
|
|
||||||
var phi = latLng.lat*d2r;
|
var phi = lat * DEG_TO_RAD;
|
||||||
var theta = latLng.lng*d2r;
|
var theta = lon * DEG_TO_RAD;
|
||||||
|
|
||||||
var cosphi = Math.cos(phi);
|
var cosLat = Math.cos(phi);
|
||||||
|
var sinLat = Math.sin(phi);
|
||||||
|
var cosLon = Math.cos(theta);
|
||||||
|
var sinLon = Math.sin(theta);
|
||||||
|
var rad = 500.0;
|
||||||
|
|
||||||
return [Math.cos(theta)*cosphi, Math.sin(theta)*cosphi, Math.sin(phi)];
|
return [
|
||||||
|
rad * cosLat * cosLon
|
||||||
|
, rad * cosLat * sinLon
|
||||||
|
, rad * sinLat
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
var XYZToLatLng = function(xyz) {
|
var XYZToLatLng = function(xyz) {
|
||||||
|
@ -192,8 +203,6 @@ var pointToHilbertQuadList = function(x,y,order) {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// S2Cell class
|
// S2Cell class
|
||||||
|
|
||||||
S2.S2Cell = function(){};
|
S2.S2Cell = function(){};
|
||||||
|
@ -258,6 +267,11 @@ S2.S2Cell.prototype.getFaceAndQuads = function() {
|
||||||
|
|
||||||
return [this.face,quads];
|
return [this.face,quads];
|
||||||
};
|
};
|
||||||
|
S2.S2Cell.prototype.toHilbertQuadkey = function () {
|
||||||
|
var quads = pointToHilbertQuadList(this.ij[0], this.ij[1], this.level);
|
||||||
|
|
||||||
|
return this.face.toString(10) + '/' + quads.join('');
|
||||||
|
};
|
||||||
|
|
||||||
S2.S2Cell.prototype.getNeighbors = function() {
|
S2.S2Cell.prototype.getNeighbors = function() {
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
-10 4 '9749618424903892992' '4/032212303102122' '40.253289,-111.712279' 15
|
||||||
|
-9 4 '9749618427051376640' '4/032212303102123' '40.253874,-111.709298' 15
|
||||||
|
-8 4 '9749618429198860288' '4/032212303102130' '40.254460,-111.706317' 15
|
||||||
|
-7 4 '9749618431346343936' '4/032212303102131' '40.252022,-111.706317' 15
|
||||||
|
-6 4 '9749618433493827584' '4/032212303102132' '40.252607,-111.703336' 15
|
||||||
|
-5 4 '9749618435641311232' '4/032212303102133' '40.255045,-111.703336' 15
|
||||||
|
-4 4 '9749618437788794880' '4/032212303102200' '40.257483,-111.703336' 15
|
||||||
|
-3 4 '9749618439936278528' '4/032212303102201' '40.259920,-111.703336' 15
|
||||||
|
-2 4 '9749618442083762176' '4/032212303102202' '40.259335,-111.706317' 15
|
||||||
|
-1 4 '9749618444231245824' '4/032212303102203' '40.256897,-111.706317' 15
|
||||||
|
0 4 '9749618446378729472' '4/032212303102210' '40.256312,-111.709298' 15
|
||||||
|
1 4 '9749618448526213120' '4/032212303102211' '40.255727,-111.712279' 15
|
||||||
|
2 4 '9749618450673696768' '4/032212303102212' '40.258165,-111.712279' 15
|
||||||
|
3 4 '9749618452821180416' '4/032212303102213' '40.258750,-111.709298' 15
|
||||||
|
4 4 '9749618454968664064' '4/032212303102220' '40.261188,-111.709298' 15
|
||||||
|
5 4 '9749618457116147712' '4/032212303102221' '40.260602,-111.712279' 15
|
||||||
|
6 4 '9749618459263631360' '4/032212303102222' '40.263040,-111.712279' 15
|
||||||
|
7 4 '9749618461411115008' '4/032212303102223' '40.263625,-111.709298' 15
|
||||||
|
8 4 '9749618463558598656' '4/032212303102230' '40.264210,-111.706317' 15
|
||||||
|
9 4 '9749618465706082304' '4/032212303102231' '40.261773,-111.706317' 15
|
||||||
|
10 4 '9749618467853565952' '4/032212303102232' '40.262358,-111.703336' 15
|
|
@ -0,0 +1,21 @@
|
||||||
|
-10 4 '9749615149991329792' '4/032212302322211' '40.235133,-111.655639' 15
|
||||||
|
-9 4 '9749615152138813440' '4/032212302322212' '40.234549,-111.658620' 15
|
||||||
|
-8 4 '9749615154286297088' '4/032212302322213' '40.232110,-111.658620' 15
|
||||||
|
-7 4 '9749615156433780736' '4/032212302322220' '40.231526,-111.661601' 15
|
||||||
|
-6 4 '9749615158581264384' '4/032212302322221' '40.233965,-111.661601' 15
|
||||||
|
-5 4 '9749615160728748032' '4/032212302322222' '40.233381,-111.664582' 15
|
||||||
|
-4 4 '9749615162876231680' '4/032212302322223' '40.230942,-111.664582' 15
|
||||||
|
-3 4 '9749615165023715328' '4/032212302322230' '40.228503,-111.664582' 15
|
||||||
|
-2 4 '9749615167171198976' '4/032212302322231' '40.229087,-111.661601' 15
|
||||||
|
-1 4 '9749615169318682624' '4/032212302322232' '40.226647,-111.661601' 15
|
||||||
|
0 4 '9749615171466166272' '4/032212302322233' '40.226063,-111.664582' 15
|
||||||
|
1 4 '9749615173613649920' '4/032212302322300' '40.223624,-111.664582' 15
|
||||||
|
2 4 '9749615175761133568' '4/032212302322301' '40.221184,-111.664582' 15
|
||||||
|
3 4 '9749615177908617216' '4/032212302322302' '40.221768,-111.661601' 15
|
||||||
|
4 4 '9749615180056100864' '4/032212302322303' '40.224208,-111.661601' 15
|
||||||
|
5 4 '9749615182203584512' '4/032212302322310' '40.224791,-111.658620' 15
|
||||||
|
6 4 '9749615184351068160' '4/032212302322311' '40.225375,-111.655639' 15
|
||||||
|
7 4 '9749615186498551808' '4/032212302322312' '40.222935,-111.655639' 15
|
||||||
|
8 4 '9749615188646035456' '4/032212302322313' '40.222352,-111.658620' 15
|
||||||
|
9 4 '9749615190793519104' '4/032212302322320' '40.219912,-111.658620' 15
|
||||||
|
10 4 '9749615192941002752' '4/032212302322321' '40.220496,-111.655639' 15
|
|
@ -3,13 +3,37 @@
|
||||||
var S2 = require('../src/s2geometry.js').S2;
|
var S2 = require('../src/s2geometry.js').S2;
|
||||||
|
|
||||||
var level = 15;
|
var level = 15;
|
||||||
var latlng = { lat: 40.2574448, lng: -111.7089464 };
|
|
||||||
|
// Provo, UT (Center St)
|
||||||
|
// '9749618446378729472' '4/032212303102210' '40.256312,-111.709298' 15
|
||||||
|
// 4/032212303102210
|
||||||
|
//var lat = 40.2574448;
|
||||||
|
//var lng = -111.7089464;
|
||||||
|
var latlng = { lat: 40.256312, lng: -111.709298 };
|
||||||
var cell = S2.S2Cell.FromLatLng(latlng, level);
|
var cell = S2.S2Cell.FromLatLng(latlng, level);
|
||||||
|
|
||||||
|
console.log(cell.toHilbertQuadkey(), '4/032212303102210' === cell.toHilbertQuadkey());
|
||||||
|
console.log(cell.getLatLng(), '40.256312,-111.709298' === cell.getLatLng(), '40.256312,-111.709298');
|
||||||
|
|
||||||
|
// Startup Building in Provo
|
||||||
|
// '9749615171466166272' '4/032212302322233' '40.226063,-111.664582' 15
|
||||||
|
// 4/032212302322233
|
||||||
|
//var lat = 40.2262363;
|
||||||
|
//var lng = -111.6630927;
|
||||||
|
var latlng = { lat: 40.226063, lng: -111.664582 };
|
||||||
|
var cell = S2.S2Cell.FromLatLng(latlng, level);
|
||||||
|
|
||||||
|
console.log(cell.toHilbertQuadkey(), '4/032212302322233' === cell.toHilbertQuadkey());
|
||||||
|
console.log(cell.getLatLng(), '40.226063,-111.664582' === cell.getLatLng(), '40.226063,-111.664582');
|
||||||
|
|
||||||
|
/*
|
||||||
cell.getNeighbors(); // [ cellLeft, cellDown, cellRight, cellUp ]
|
cell.getNeighbors(); // [ cellLeft, cellDown, cellRight, cellUp ]
|
||||||
|
|
||||||
latlng = cell.getLatLng(); // { lat: 40.2574448, lng: -111.7089464 }
|
latlng = cell.getLatLng(); // { lat: 40.2574448, lng: -111.7089464 }
|
||||||
|
|
||||||
|
console.log(orig);
|
||||||
|
console.log(latlng);
|
||||||
|
|
||||||
if (40 === Math.round(latlng.lat) && -112 === Math.round(latlng.lng)) {
|
if (40 === Math.round(latlng.lat) && -112 === Math.round(latlng.lng)) {
|
||||||
console.log('OK');
|
console.log('OK');
|
||||||
process.exit(0);
|
process.exit(0);
|
||||||
|
@ -19,3 +43,4 @@ else {
|
||||||
console.log(latlng);
|
console.log(latlng);
|
||||||
process.exit(1);
|
process.exit(1);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
|
@ -1,9 +1,14 @@
|
||||||
var S2 = require('s2geometry-node');
|
var S2 = require('s2geometry-node');
|
||||||
var lat = 40.2574448;
|
|
||||||
var lng = -111.7089464;
|
// Provo, UT (Center St)
|
||||||
|
//var lat = 40.2574448;
|
||||||
|
//var lng = -111.7089464;
|
||||||
|
|
||||||
|
// Startup Building in Provo
|
||||||
|
var lat = 40.2262363;
|
||||||
|
var lng = -111.6630927;
|
||||||
|
|
||||||
var s2latlng = new S2.S2LatLng(lat, lng);
|
var s2latlng = new S2.S2LatLng(lat, lng);
|
||||||
var point;
|
|
||||||
var cellId = new S2.S2CellId(s2latlng).parent(15);
|
var cellId = new S2.S2CellId(s2latlng).parent(15);
|
||||||
var cell;
|
var cell;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue