diff --git a/test/data/unitTest/3dTiles/dragon_low.b3dm b/test/data/unitTest/3dTiles/dragon_low.b3dm new file mode 100644 index 0000000000..0bf1dd923d Binary files /dev/null and b/test/data/unitTest/3dTiles/dragon_low.b3dm differ diff --git a/test/data/unitTest/3dTiles/dragon_medium.b3dm b/test/data/unitTest/3dTiles/dragon_medium.b3dm new file mode 100644 index 0000000000..5ba6f5410b Binary files /dev/null and b/test/data/unitTest/3dTiles/dragon_medium.b3dm differ diff --git a/test/data/unitTest/3dTiles/tile.b3dm b/test/data/unitTest/3dTiles/tile.b3dm new file mode 100644 index 0000000000..c9eda60d78 Binary files /dev/null and b/test/data/unitTest/3dTiles/tile.b3dm differ diff --git a/test/data/unitTest/3dTiles/tileset.json b/test/data/unitTest/3dTiles/tileset.json new file mode 100644 index 0000000000..580327e95f --- /dev/null +++ b/test/data/unitTest/3dTiles/tileset.json @@ -0,0 +1 @@ +{"asset":{"version":"1.0","extras":{"$schema":"http://json-schema.org/draft-04/schema","title":"Extras","description":"This tileset is the result of Py3DTiles /home/vincent/Documents/dev/py3dtilers/py3dtilers/CityTiler/CityTiler.py script run with data extracted from database citygml_lyon_1 obtained from server 127.0.0.1."}},"geometricError":500.0,"root":{"boundingVolume":{"box":[4440984.500080556,374956.0940220337,4547574.5000074925,400.99983333190903,0.0,0.0,0.0,948.1564022827079,0.0,0.0,0.0,420.0003779446706]},"geometricError":500.0,"refine":"ADD","children":[{"boundingVolume":{"box":[4.722812175750732,-37.1746711730957,-3.3374218940734863,45.50000047683716,0.0,0.0,0.0,152.67187118530273,0.0,0.0,0.0,49.75000047683716]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/0.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441194.777,374344.159,4547442.087,1.0]},{"boundingVolume":{"box":[10.375656604766846,-11.05841064453125,-9.685863494873047,52.74999952316284,0.0,0.0,0.0,202.96875,0.0,0.0,0.0,48.0]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/1.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441149.874,374666.871,4547462.686,1.0]},{"boundingVolume":{"box":[-2.728515625,8.4044189453125,12.986328125,24.0,0.0,0.0,0.0,100.625,0.0,0.0,0.0,44.25]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/2.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441157.229,374209.439,4547500.764,1.0]},{"boundingVolume":{"box":[-5.198631763458252,-80.66845703125,11.611298561096191,53.25000047683716,0.0,0.0,0.0,288.390625,0.0,0.0,0.0,54.74999713897705]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/3.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441124.949,374684.747,4547494.139,1.0]},{"boundingVolume":{"box":[-1.1704177856445312,-18.132585525512695,-6.983922958374023,27.0,0.0,0.0,0.0,81.64062309265137,0.0,0.0,0.0,24.5]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/4.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441113.17,374973.054,4547473.984,1.0]},{"boundingVolume":{"box":[1.816962718963623,4.405415058135986,-10.154762268066406,38.00000047683716,0.0,0.0,0.0,57.21875047683716,0.0,0.0,0.0,39.75]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/5.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441113.183,375079.532,4547466.905,1.0]},{"boundingVolume":{"box":[-0.044872283935546875,1.507568359375,-1.7792015075683594,36.25,0.0,0.0,0.0,75.75,0.0,0.0,0.0,31.5]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/6.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441088.795,374956.242,4547494.779,1.0]},{"boundingVolume":{"box":[-3.9559478759765625,-7.125068664550781,-0.92510986328125,27.0,0.0,0.0,0.0,52.140625,0.0,0.0,0.0,29.0]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/7.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441083.456,375091.109,4547490.925,1.0]},{"boundingVolume":{"box":[-9.394668102264404,-43.10064697265625,-9.348983764648438,50.50000047683716,0.0,0.0,0.0,147.890625,0.0,0.0,0.0,67.25]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/8.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441114.895,374238.71,4547571.099,1.0]},{"boundingVolume":{"box":[-17.22222137451172,63.017059326171875,1.2690467834472656,62.0,0.0,0.0,0.0,283.71875,0.0,0.0,0.0,52.25]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/9.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441102.222,374543.545,4547574.981,1.0]},{"boundingVolume":{"box":[-1.6180033683776855,-40.82470703125,-5.99391508102417,44.00000047683716,0.0,0.0,0.0,200.015625,0.0,0.0,0.0,48.50000047683716]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/10.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441064.618,374284.59,4547637.494,1.0]},{"boundingVolume":{"box":[-0.8534092903137207,17.848007202148438,2.145404815673828,49.50000047683716,0.0,0.0,0.0,236.75,0.0,0.0,0.0,57.75]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/11.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441038.853,374671.683,4547642.105,1.0]},{"boundingVolume":{"box":[-5.270587921142578,-12.126838684082031,3.2411766052246094,27.75,0.0,0.0,0.0,67.03125,0.0,0.0,0.0,36.5]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/12.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441062.021,375029.502,4547529.259,1.0]},{"boundingVolume":{"box":[-8.664836406707764,1.9570732116699219,5.005492687225342,31.000001430511475,0.0,0.0,0.0,41.296875,0.0,0.0,0.0,40.00000047683716]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/13.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441052.165,375108.184,4547531.495,1.0]},{"boundingVolume":{"box":[1.103775978088379,-4.7984466552734375,-5.3930816650390625,39.0,0.0,0.0,0.0,52.265625,0.0,0.0,0.0,39.5]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/14.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441025.396,374944.127,4547611.893,1.0]},{"boundingVolume":{"box":[1.2186508178710938,-4.131728172302246,-7.545014381408691,41.5,0.0,0.0,0.0,93.15625095367432,0.0,0.0,0.0,59.49999713897705]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/15.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441007.281,375066.194,4547609.545,1.0]},{"boundingVolume":{"box":[-7.581611156463623,3.77752685546875,-6.5,55.00000047683716,0.0,0.0,0.0,84.046875,0.0,0.0,0.0,55.0]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/16.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441172.582,375245.738,4547398.5,1.0]},{"boundingVolume":{"box":[-1.047271728515625,-1.4019889831542969,-5.599090576171875,62.5,0.0,0.0,0.0,30.484375,0.0,0.0,0.0,61.25]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/17.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441196.047,375314.386,4547367.349,1.0]},{"boundingVolume":{"box":[-6.702767372131348,0.022106170654296875,-2.895160675048828,43.0,0.0,0.0,0.0,32.953125,0.0,0.0,0.0,43.25]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/18.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441128.703,375174.931,4547446.145,1.0]},{"boundingVolume":{"box":[2.850856304168701,10.78587532043457,-9.219954490661621,44.25000047683716,0.0,0.0,0.0,66.07812309265137,0.0,0.0,0.0,42.75]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/19.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441116.899,375254.042,4547451.47,1.0]},{"boundingVolume":{"box":[-3.1448974609375,-4.359054088592529,-2.8683719635009766,68.5,0.0,0.0,0.0,37.57812547683716,0.0,0.0,0.0,68.25]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/20.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441254.145,375366.531,4547305.118,1.0]},{"boundingVolume":{"box":[18.97380828857422,-2.2290170192718506,-31.152376174926758,94.25,0.0,0.0,0.0,24.25000023841858,0.0,0.0,0.0,98.7499942779541]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/21.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441272.276,375406.323,4547284.402,1.0]},{"boundingVolume":{"box":[-0.37931060791015625,-0.7310328483581543,-9.994827270507812,66.5,0.0,0.0,0.0,32.93750047683716,0.0,0.0,0.0,67.25]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/22.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441142.879,375344.387,4547420.245,1.0]},{"boundingVolume":{"box":[6.9149169921875,-4.214672565460205,-18.435897827148438,79.0,0.0,0.0,0.0,37.46875047683716,0.0,0.0,0.0,79.0]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/23.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441135.585,375386.215,4547427.936,1.0]},{"boundingVolume":{"box":[-6.965866565704346,3.3111720085144043,-0.5267524719238281,34.249998569488525,0.0,0.0,0.0,39.89062547683716,0.0,0.0,0.0,38.25]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/24.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441069.216,375176.611,4547503.277,1.0]},{"boundingVolume":{"box":[-3.992565155029297,0.3220820426940918,-4.146838665008545,33.0,0.0,0.0,0.0,39.45312547683716,0.0,0.0,0.0,38.00000047683716]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/25.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441074.993,375234.569,4547494.647,1.0]},{"boundingVolume":{"box":[-7.478813171386719,0.9974818229675293,-6.951271057128906,47.25,0.0,0.0,0.0,38.79687452316284,0.0,0.0,0.0,55.25]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/26.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441021.229,375170.112,4547570.201,1.0]},{"boundingVolume":{"box":[-6.219250202178955,-2.678058624267578,-2.9385032653808594,36.999998569488525,0.0,0.0,0.0,41.828125,0.0,0.0,0.0,42.5]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/27.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441023.219,375232.162,4547557.439,1.0]},{"boundingVolume":{"box":[-16.30574131011963,-9.095439910888672,5.768581390380859,49.74999713897705,0.0,0.0,0.0,54.359375,0.0,0.0,0.0,49.75]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/28.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441067.556,375321.767,4547499.481,1.0]},{"boundingVolume":{"box":[-5.819709300994873,-1.5189290046691895,-3.3125,46.75000047683716,0.0,0.0,0.0,30.687498569488525,0.0,0.0,0.0,49.75]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/29.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441049.57,375386.238,4547516.062,1.0]},{"boundingVolume":{"box":[-9.50247573852539,-10.490409851074219,-5.202968120574951,42.0,0.0,0.0,0.0,56.765625,0.0,0.0,0.0,54.50000047683716]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/30.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440989.002,375328.006,4547593.703,1.0]},{"boundingVolume":{"box":[-5.871077537536621,5.466843128204346,5.041813373565674,39.5,0.0,0.0,0.0,26.640623569488525,0.0,0.0,0.0,50.99999952316284]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/31.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440988.871,375380.674,4547585.458,1.0]},{"boundingVolume":{"box":[2.3444290161132812,27.56338119506836,-15.67182731628418,65.25,0.0,0.0,0.0,244.8437614440918,0.0,0.0,0.0,76.75000190734863]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/32.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441023.406,374225.218,4547674.422,1.0]},{"boundingVolume":{"box":[-12.169479370117188,-0.0504150390625,-1.7745351791381836,80.0,0.0,0.0,0.0,164.5,0.0,0.0,0.0,77.00000095367432]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/33.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441002.669,374675.457,4547690.775,1.0]},{"boundingVolume":{"box":[-2.545917510986328,2.328125,-7.710033416748047,57.25,0.0,0.0,0.0,213.5625,0.0,0.0,0.0,54.0]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/34.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440970.796,374384.578,4547743.21,1.0]},{"boundingVolume":{"box":[6.089710235595703,-18.372861862182617,-9.850265502929688,53.0,0.0,0.0,0.0,139.2812557220459,0.0,0.0,0.0,65.75]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/35.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440917.41,374711.967,4547769.6,1.0]},{"boundingVolume":{"box":[-2.676574230194092,4.384613037109375,1.463287353515625,34.500001430511475,0.0,0.0,0.0,85.734375,0.0,0.0,0.0,36.25]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/36.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440975.677,374923.569,4547670.287,1.0]},{"boundingVolume":{"box":[-3.349266529083252,4.313648223876953,-6.709559917449951,37.50000047683716,0.0,0.0,0.0,41.921875,0.0,0.0,0.0,35.000001430511475]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/37.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440968.849,375032.452,4547665.21,1.0]},{"boundingVolume":{"box":[2.8160171508789062,-4.970104217529297,-7.416667938232422,46.0,0.0,0.0,0.0,55.59375,0.0,0.0,0.0,48.75]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/38.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440903.184,374891.501,4547755.167,1.0]},{"boundingVolume":{"box":[-7.485466003417969,8.900619506835938,4.2834320068359375,54.25,0.0,0.0,0.0,82.515625,0.0,0.0,0.0,60.25]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/39.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440914.235,375002.928,4547726.467,1.0]},{"boundingVolume":{"box":[-4.259433746337891,-14.258255004882812,1.1886787414550781,42.5,0.0,0.0,0.0,137.9375,0.0,0.0,0.0,43.5]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/40.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440880.759,374686.821,4547814.311,1.0]},{"boundingVolume":{"box":[4.1019744873046875,11.145968914031982,-6.7269744873046875,31.5,0.0,0.0,0.0,44.67187547683716,0.0,0.0,0.0,33.25]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/41.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440860.898,374838.87,4547807.477,1.0]},{"boundingVolume":{"box":[-12.03402328491211,10.123610973358154,3.94378662109375,38.75,0.0,0.0,0.0,60.73437547683716,0.0,0.0,0.0,39.0]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/42.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440846.784,374644.955,4547863.056,1.0]},{"boundingVolume":{"box":[-4.299297332763672,-4.211341857910156,-3.651409149169922,52.75,0.0,0.0,0.0,115.109375,0.0,0.0,0.0,56.0]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/43.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440812.049,374789.227,4547878.151,1.0]},{"boundingVolume":{"box":[-0.12280654907226562,-2.4654617309570312,-4.783626556396484,34.5,0.0,0.0,0.0,77.890625,0.0,0.0,0.0,36.75]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/44.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440849.623,374950.669,4547808.534,1.0]},{"boundingVolume":{"box":[-1.5413055419921875,-5.474456787109375,-0.8369588851928711,46.5,0.0,0.0,0.0,28.125,0.0,0.0,0.0,64.75000286102295]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/45.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440832.541,375047.318,4547826.587,1.0]},{"boundingVolume":{"box":[-3.375,3.565277099609375,-2.7694435119628906,25.5,0.0,0.0,0.0,51.203125,0.0,0.0,0.0,30.5]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/46.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440772.375,374943.919,4547912.769,1.0]},{"boundingVolume":{"box":[4.064453125,-1.7076416015625,-6.384765625,38.75,0.0,0.0,0.0,45.453125,0.0,0.0,0.0,34.75]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/47.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440763.186,375030.88,4547916.635,1.0]},{"boundingVolume":{"box":[-14.275863647460938,-0.5140094757080078,11.701971530914307,68.5,0.0,0.0,0.0,28.5625,0.0,0.0,0.0,70.00000333786011]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/48.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440940.776,375090.952,4547685.798,1.0]},{"boundingVolume":{"box":[-2.8978500366210938,14.504034996032715,-6.7141571044921875,71.5,0.0,0.0,0.0,62.84375286102295,0.0,0.0,0.0,82.25]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/49.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440924.898,375142.59,4547687.464,1.0]},{"boundingVolume":{"box":[2.9368934631347656,3.5703887939453125,-9.851939678192139,34.5,0.0,0.0,0.0,23.375,0.0,0.0,0.0,52.25000047683716]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/50.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440840.563,375080.992,4547819.102,1.0]},{"boundingVolume":{"box":[-2.307788848876953,-6.836368560791016,-0.5263824462890625,46.25,0.0,0.0,0.0,55.9375,0.0,0.0,0.0,70.25]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/51.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440853.058,375147.93,4547791.276,1.0]},{"boundingVolume":{"box":[1.4302177429199219,-44.13783073425293,-15.081977844238281,42.75,0.0,0.0,0.0,101.79687690734863,0.0,0.0,0.0,58.25]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/52.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440907.32,375321.247,4547690.832,1.0]},{"boundingVolume":{"box":[-10.318283081054688,0.1620311737060547,16.857932090759277,48.25,0.0,0.0,0.0,28.65625,0.0,0.0,0.0,57.75000286102295]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/53.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440928.568,375387.9,4547656.392,1.0]},{"boundingVolume":{"box":[-13.312895774841309,-9.803359985351562,20.754716873168945,59.25000286102295,0.0,0.0,0.0,46.171875,0.0,0.0,0.0,67.74999809265137]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/54.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440864.563,375243.319,4547760.995,1.0]},{"boundingVolume":{"box":[-10.53195571899414,0.5908126831054688,8.88346004486084,51.25,0.0,0.0,0.0,68.421875,0.0,0.0,0.0,71.25000286102295]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/55.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440851.282,375330.769,4547771.367,1.0]},{"boundingVolume":{"box":[2.864795684814453,-0.01833820343017578,-5.130100727081299,38.5,0.0,0.0,0.0,33.71875,0.0,0.0,0.0,36.499998569488525]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/56.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440799.635,375094.8,4547877.63,1.0]},{"boundingVolume":{"box":[-1.3916239738464355,1.1666412353515625,-6.945811986923218,33.50000047683716,0.0,0.0,0.0,69.140625,0.0,0.0,0.0,31.00000023841858]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/57.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440785.892,375180.255,4547887.946,1.0]},{"boundingVolume":{"box":[-6.876793384552002,-0.20267486572265625,-1.6232051849365234,28.249998569488525,0.0,0.0,0.0,52.515625,0.0,0.0,0.0,26.25]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/58.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440752.127,375108.562,4547929.873,1.0]},{"boundingVolume":{"box":[2.3580780029296875,-1.3660621643066406,-9.016376495361328,44.0,0.0,0.0,0.0,55.453125,0.0,0.0,0.0,39.25]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/59.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440741.642,375193.257,4547931.766,1.0]},{"boundingVolume":{"box":[-12.025424480438232,-4.575916290283203,2.4844627380371094,35.750001430511475,0.0,0.0,0.0,49.0625,0.0,0.0,0.0,38.0]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/60.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440789.775,375297.545,4547867.016,1.0]},{"boundingVolume":{"box":[6.000965118408203,2.636523723602295,-10.803089141845703,31.75,0.0,0.0,0.0,33.359376430511475,0.0,0.0,0.0,34.5]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/61.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440768.749,375365.285,4547875.303,1.0]},{"boundingVolume":{"box":[-7.5400543212890625,19.32666015625,4.096682548522949,41.25,0.0,0.0,0.0,49.37500190734863,0.0,0.0,0.0,40.0]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/62.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440740.29,375266.455,4547921.903,1.0]},{"boundingVolume":{"box":[-6.137065887451172,-4.707347869873047,2.43049955368042,40.5,0.0,0.0,0.0,39.171875,0.0,0.0,0.0,43.50000047683716]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/63.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440723.137,375369.004,4547925.569,1.0]},{"boundingVolume":{"box":[-4.6953125,0.5672178268432617,-2.28645658493042,50.25,0.0,0.0,0.0,33.40625,0.0,0.0,0.0,49.75000047683716]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/64.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441328.945,375436.339,4547228.536,1.0]},{"boundingVolume":{"box":[-0.4306950569152832,-0.607879638671875,-13.596534729003906,48.50000047683716,0.0,0.0,0.0,30.65625,0.0,0.0,0.0,54.25]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/65.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441327.431,375474.077,4547227.847,1.0]},{"boundingVolume":{"box":[6.714752197265625,2.336162567138672,-13.167755126953125,54.25,0.0,0.0,0.0,22.0625,0.0,0.0,0.0,53.25]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/66.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441240.035,375445.039,4547314.918,1.0]},{"boundingVolume":{"box":[-4.081127166748047,0.1485919952392578,-0.18708419799804688,54.25,0.0,0.0,0.0,20.59375,0.0,0.0,0.0,54.25]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/67.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441245.831,375469.289,4547304.437,1.0]},{"boundingVolume":{"box":[-2.6540865898132324,-1.6823902130126953,-5.564464330673218,41.25000047683716,0.0,0.0,0.0,25.296875,0.0,0.0,0.0,36.25000023841858]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/68.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441346.904,375506.542,4547205.814,1.0]},{"boundingVolume":{"box":[-5.203540086746216,-3.845500946044922,1.5258097648620605,36.500001668930054,0.0,0.0,0.0,53.65625,0.0,0.0,0.0,36.75000047683716]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/69.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441332.704,375570.189,4547212.224,1.0]},{"boundingVolume":{"box":[-3.4018707275390625,8.737075805664062,-1.3679924011230469,62.5,0.0,0.0,0.0,41.890625,0.0,0.0,0.0,61.75]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/70.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441262.402,375500.497,4547288.618,1.0]},{"boundingVolume":{"box":[-17.069533348083496,-6.472972869873047,4.218544006347656,83.00000095367432,0.0,0.0,0.0,56.9375,0.0,0.0,0.0,80.5]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/71.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441256.57,375569.817,4547292.281,1.0]},{"boundingVolume":{"box":[-7.757896423339844,-3.08001708984375,-0.7776346206665039,83.0,0.0,0.0,0.0,29.15625,0.0,0.0,0.0,83.50000095367432]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/72.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441142.758,375432.736,4547415.278,1.0]},{"boundingVolume":{"box":[-9.149833679199219,0.49310302734375,2.1141738891601562,86.75,0.0,0.0,0.0,31.71875,0.0,0.0,0.0,90.25]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/73.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441143.4,375466.257,4547414.136,1.0]},{"boundingVolume":{"box":[-2.1519246101379395,0.39507293701171875,-1.62115478515625,36.00000047683716,0.0,0.0,0.0,24.734375,0.0,0.0,0.0,36.25]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/74.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441042.652,375425.121,4547517.871,1.0]},{"boundingVolume":{"box":[-6.2184295654296875,-2.0149312019348145,-0.7209892272949219,42.5,0.0,0.0,0.0,31.187498569488525,0.0,0.0,0.0,46.75]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/75.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441035.218,375464.077,4547529.471,1.0]},{"boundingVolume":{"box":[-5.242679595947266,0.6848177909851074,-0.37238216400146484,47.75,0.0,0.0,0.0,37.07812547683716,0.0,0.0,0.0,47.75]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/76.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441103.493,375514.362,4547445.122,1.0]},{"boundingVolume":{"box":[-7.032863616943359,6.000293731689453,2.619716167449951,47.5,0.0,0.0,0.0,38.5625,0.0,0.0,0.0,50.25000047683716]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/77.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441093.533,375573.25,4547450.13,1.0]},{"boundingVolume":{"box":[-6.11419677734375,0.2190699577331543,0.8076133728027344,43.25,0.0,0.0,0.0,32.60937547683716,0.0,0.0,0.0,43.75]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/78.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441041.864,375510.953,4547514.442,1.0]},{"boundingVolume":{"box":[-3.505316734313965,1.4015121459960938,-2.489360809326172,41.0,0.0,0.0,0.0,44.15625,0.0,0.0,0.0,47.25]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/79.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441033.005,375568.161,4547518.739,1.0]},{"boundingVolume":{"box":[1.628166675567627,-6.5448994636535645,-6.625,51.75000047683716,0.0,0.0,0.0,39.40624952316284,0.0,0.0,0.0,49.25]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/80.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441299.122,375645.389,4547239.875,1.0]},{"boundingVolume":{"box":[-5.567431449890137,-3.612353801727295,-1.0082244873046875,42.75,0.0,0.0,0.0,41.95312547683716,0.0,0.0,0.0,39.75]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/81.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441291.317,375694.972,4547242.758,1.0]},{"boundingVolume":{"box":[-0.2527003288269043,2.398479461669922,-9.852703094482422,53.50000047683716,0.0,0.0,0.0,21.265625,0.0,0.0,0.0,53.25]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/82.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441219.253,375649.68,4547320.603,1.0]},{"boundingVolume":{"box":[2.6296615600585938,-4.024681568145752,-9.934745788574219,50.25,0.0,0.0,0.0,32.437498569488525,0.0,0.0,0.0,50.25]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/83.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441198.12,375694.712,4547334.685,1.0]},{"boundingVolume":{"box":[2.71530818939209,-9.626018524169922,-9.909186363220215,62.00000286102295,0.0,0.0,0.0,53.25,0.0,0.0,0.0,58.75000286102295]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/84.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441248.285,375764.564,4547279.659,1.0]},{"boundingVolume":{"box":[21.668861389160156,8.79742431640625,-25.59648895263672,55.25,0.0,0.0,0.0,55.625,0.0,0.0,0.0,53.74999809265137]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/85.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441228.581,375839.828,4547292.346,1.0]},{"boundingVolume":{"box":[-2.5218124389648438,-9.521812438964844,-7.553691864013672,32.5,0.0,0.0,0.0,58.8125,0.0,0.0,0.0,33.0]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/86.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441184.022,375780.397,4547342.554,1.0]},{"boundingVolume":{"box":[-4.978313446044922,-1.6924324035644531,-4.551204681396484,37.5,0.0,0.0,0.0,40.984375,0.0,0.0,0.0,35.25]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/87.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441186.978,375857.646,4547333.301,1.0]},{"boundingVolume":{"box":[13.269628524780273,-1.3301935195922852,-19.008262634277344,74.50000190734863,0.0,0.0,0.0,33.96875,0.0,0.0,0.0,76.0]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/88.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441100.73,375632.424,4547438.008,1.0]},{"boundingVolume":{"box":[-14.816566467285156,5.099884033203125,-0.2953643798828125,71.25,0.0,0.0,0.0,62.453125,0.0,0.0,0.0,72.5]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/89.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441120.067,375662.353,4547426.295,1.0]},{"boundingVolume":{"box":[-10.244717121124268,-5.743507385253906,-0.3380279541015625,41.249998569488525,0.0,0.0,0.0,36.265625,0.0,0.0,0.0,42.75]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/90.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441030.995,375632.697,4547513.088,1.0]},{"boundingVolume":{"box":[-5.401233673095703,-5.229069232940674,-2.524693489074707,40.0,0.0,0.0,0.0,28.484373569488525,0.0,0.0,0.0,42.5]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/91.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441029.901,375675.495,4547511.525,1.0]},{"boundingVolume":{"box":[0.9566726684570312,14.738435745239258,-8.195838928222656,73.0,0.0,0.0,0.0,70.60937309265137,0.0,0.0,0.0,74.5]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/92.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441106.043,375733.058,4547424.196,1.0]},{"boundingVolume":{"box":[-13.674437999725342,-9.668785095214844,4.607276916503906,54.75000047683716,0.0,0.0,0.0,52.703125,0.0,0.0,0.0,53.0]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/93.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441135.924,375845.997,4547383.893,1.0]},{"boundingVolume":{"box":[-5.426567077636719,4.113396644592285,-9.655117511749268,41.75,0.0,0.0,0.0,32.328124046325684,0.0,0.0,0.0,47.99999952316284]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/94.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441023.177,375714.34,4547520.655,1.0]},{"boundingVolume":{"box":[-10.202263832092285,-8.677237510681152,-5.837379455566406,56.49999713897705,0.0,0.0,0.0,60.51562786102295,0.0,0.0,0.0,52.0]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/95.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4441015.702,375790.255,4547515.837,1.0]},{"boundingVolume":{"box":[-5.959999084472656,1.2338542938232422,3.490001678466797,45.75,0.0,0.0,0.0,29.984375,0.0,0.0,0.0,54.75]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/96.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440987.21,375427.094,4547585.26,1.0]},{"boundingVolume":{"box":[-4.325122833251953,-7.376156330108643,-0.3128089904785156,50.75,0.0,0.0,0.0,45.64062547683716,0.0,0.0,0.0,56.5]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/97.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440983.075,375485.017,4547581.813,1.0]},{"boundingVolume":{"box":[5.614841461181641,-4.9633402824401855,-7.5865702629089355,40.0,0.0,0.0,0.0,35.531251430511475,0.0,0.0,0.0,46.50000047683716]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/98.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440916.885,375422.651,4547672.587,1.0]},{"boundingVolume":{"box":[-6.150002479553223,-1.33180570602417,-2.6500020027160645,41.5,0.0,0.0,0.0,36.34375047683716,0.0,0.0,0.0,48.00000047683716]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/99.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440919.65,375472.769,4547672.15,1.0]},{"boundingVolume":{"box":[-8.297363758087158,-0.17345094680786133,-1.0419654846191406,50.50000047683716,0.0,0.0,0.0,38.73437547683716,0.0,0.0,0.0,56.0]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/100.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440974.297,375540.377,4547586.042,1.0]},{"boundingVolume":{"box":[-5.65299129486084,3.89540433883667,0.8198432922363281,49.0,0.0,0.0,0.0,35.92187547683716,0.0,0.0,0.0,58.25]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/101.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440968.153,375592.776,4547592.43,1.0]},{"boundingVolume":{"box":[-6.787425994873047,5.904190540313721,-2.155689239501953,36.5,0.0,0.0,0.0,29.531248569488525,0.0,0.0,0.0,41.0]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/102.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440916.287,375520.033,4547672.656,1.0]},{"boundingVolume":{"box":[-3.515087127685547,-5.234103679656982,-14.27370548248291,45.5,0.0,0.0,0.0,45.15625047683716,0.0,0.0,0.0,56.99999713897705]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/103.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440905.515,375591.265,4547680.774,1.0]},{"boundingVolume":{"box":[-12.760257720947266,-0.6663484573364258,14.69999885559082,46.75,0.0,0.0,0.0,32.90625,0.0,0.0,0.0,58.99999809265137]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/104.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440867.01,375431.323,4547741.8,1.0]},{"boundingVolume":{"box":[-1.5393600463867188,0.9549198150634766,-9.729791641235352,59.75,0.0,0.0,0.0,28.8125,0.0,0.0,0.0,76.0]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/105.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440842.789,375476.795,4547776.23,1.0]},{"boundingVolume":{"box":[-12.565574645996094,-0.981389045715332,4.4562835693359375,72.0,0.0,0.0,0.0,33.625,0.0,0.0,0.0,85.75]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/106.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440758.566,375416.419,4547883.294,1.0]},{"boundingVolume":{"box":[5.112525939941406,2.0370101928710938,-15.551933288574219,78.25,0.0,0.0,0.0,55.484375,0.0,0.0,0.0,83.5]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/107.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440735.137,375466.979,4547907.052,1.0]},{"boundingVolume":{"box":[2.5290451049804688,0.43892669677734375,-10.534233093261719,50.5,0.0,0.0,0.0,36.65625,0.0,0.0,0.0,54.25]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/108.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440846.971,375529.342,4547758.784,1.0]},{"boundingVolume":{"box":[1.6935510635375977,-4.455310344696045,-9.384406566619873,46.0,0.0,0.0,0.0,32.609376430511475,0.0,0.0,0.0,52.75000047683716]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/109.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440843.306,375583.408,4547759.634,1.0]},{"boundingVolume":{"box":[-5.872047424316406,-2.465057849884033,-0.4645700454711914,63.0,0.0,0.0,0.0,30.249998569488525,0.0,0.0,0.0,72.25000095367432]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/110.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440772.372,375529.934,4547849.715,1.0]},{"boundingVolume":{"box":[4.215385437011719,-14.2890625,-9.784614562988281,91.25,0.0,0.0,0.0,63.8125,0.0,0.0,0.0,108.25]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/111.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440732.035,375563.57,4547896.035,1.0]},{"boundingVolume":{"box":[-3.080188751220703,3.466885566711426,-0.7594366073608398,55.5,0.0,0.0,0.0,39.046875,0.0,0.0,0.0,64.25000286102295]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/112.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440946.58,375643.142,4547608.009,1.0]},{"boundingVolume":{"box":[2.4722213745117188,-2.6252479553222656,-11.783066749572754,59.0,0.0,0.0,0.0,32.3125,0.0,0.0,0.0,63.24999713897705]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/113.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440946.028,375687.781,4547605.533,1.0]},{"boundingVolume":{"box":[-5.838233470916748,-4.633939743041992,-8.187164306640625,45.74999952316284,0.0,0.0,0.0,26.234375,0.0,0.0,0.0,55.0]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/114.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440870.088,375636.712,4547711.687,1.0]},{"boundingVolume":{"box":[-8.028106689453125,-7.672429084777832,2.2914199829101562,52.5,0.0,0.0,0.0,36.828124046325684,0.0,0.0,0.0,59.0]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/115.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440873.028,375677.532,4547695.709,1.0]},{"boundingVolume":{"box":[-14.005221843719482,-4.298320770263672,-3.2574610710144043,49.75000047683716,0.0,0.0,0.0,42.96875,0.0,0.0,0.0,44.74999952316284]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/116.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440965.255,375742.267,4547573.507,1.0]},{"boundingVolume":{"box":[-3.774822235107422,2.2308273315429688,-1.8794326782226562,48.75,0.0,0.0,0.0,48.203125,0.0,0.0,0.0,43.0]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/117.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440948.525,375813.191,4547575.879,1.0]},{"boundingVolume":{"box":[-13.063240051269531,-10.17934799194336,3.6758880615234375,69.5,0.0,0.0,0.0,51.1875,0.0,0.0,0.0,62.5]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/118.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440868.563,375775.554,4547655.824,1.0]},{"boundingVolume":{"box":[-6.142158508300781,-6.6729655265808105,-10.720047950744629,73.25,0.0,0.0,0.0,38.296876430511475,0.0,0.0,0.0,74.99999904632568]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/119.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440859.392,375830.314,4547658.72,1.0]},{"boundingVolume":{"box":[-4.676164627075195,0.8548927307128906,-2.6708812713623047,71.75,0.0,0.0,0.0,26.140625,0.0,0.0,0.0,81.5]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/120.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440779.426,375624.442,4547826.171,1.0]},{"boundingVolume":{"box":[-6.6431732177734375,5.469231605529785,10.25,67.0,0.0,0.0,0.0,37.328124046325684,0.0,0.0,0.0,75.75]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/121.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440778.143,375663.578,4547803.0,1.0]},{"boundingVolume":{"box":[-8.629955291748047,0.38959336280822754,-0.7092514038085938,45.5,0.0,0.0,0.0,19.84375023841858,0.0,0.0,0.0,52.0]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/122.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440691.13,375622.829,4547933.209,1.0]},{"boundingVolume":{"box":[-4.61216402053833,4.0972137451171875,2.506755828857422,47.25000047683716,0.0,0.0,0.0,32.015625,0.0,0.0,0.0,50.25]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/123.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440688.862,375658.325,4547913.743,1.0]},{"boundingVolume":{"box":[13.871164321899414,-6.2414703369140625,-6.184051513671875,77.49999809265137,0.0,0.0,0.0,63.3125,0.0,0.0,0.0,89.5]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/124.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440741.129,375743.366,4547798.184,1.0]},{"boundingVolume":{"box":[-19.523086547851562,-3.4157752990722656,14.01517391204834,74.75,0.0,0.0,0.0,40.640625,0.0,0.0,0.0,73.25000286102295]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/125.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440751.273,375818.181,4547761.235,1.0]},{"boundingVolume":{"box":[-6.728260040283203,1.5815191268920898,-1.0913047790527344,37.75,0.0,0.0,0.0,34.28125,0.0,0.0,0.0,50.0]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/126.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440681.478,375707.168,4547904.591,1.0]},{"boundingVolume":{"box":[0.5432472229003906,16.58405876159668,-2.2489471435546875,59.5,0.0,0.0,0.0,74.28125190734863,0.0,0.0,0.0,84.5]},"geometricError":1,"refine":"REPLACE","content":{"uri":"tiles/127.b3dm"},"transform":[1.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,4440642.457,375779.072,4547907.249,1.0]}]}} \ No newline at end of file diff --git a/test/data/unitTest/3dTiles/tilesetBatchTable.json b/test/data/unitTest/3dTiles/tilesetBatchTable.json new file mode 100644 index 0000000000..01553f7241 --- /dev/null +++ b/test/data/unitTest/3dTiles/tilesetBatchTable.json @@ -0,0 +1,53 @@ +{ + "asset": { + "version": "1.0" + }, + "geometricError": 70, + "root": { + "transform": [ + 0.9686356343768792, + 0.24848542777253735, + 0, + 0, + -0.15986460744966327, + 0.623177611820219, + 0.765567091384559, + 0, + 0.19023226619126932, + -0.7415555652213445, + 0.6433560667227647, + 0, + 1215011.9317263428, + -4736309.3434217675, + 4081602.0044800863, + 1 + ], + "refine": "ADD", + "boundingVolume": { + "box": [ + 0, + 0, + 10, + 50, + 0, + 0, + 0, + 50, + 0, + 0, + 0, + 10 + ] + }, + "geometricError": 0, + "content": { + "uri": "tile.b3dm" + } + }, + "extensionsUsed": [ + "3DTILES_batch_table_hierarchy" + ], + "extensionsRequired": [ + "3DTILES_batch_table_hierarchy" + ] +} \ No newline at end of file diff --git a/test/data/unitTest/3dTiles/tilesetDiscretLOD.json b/test/data/unitTest/3dTiles/tilesetDiscretLOD.json new file mode 100644 index 0000000000..b8be025129 --- /dev/null +++ b/test/data/unitTest/3dTiles/tilesetDiscretLOD.json @@ -0,0 +1,95 @@ +{ + "asset": { + "version": "1.0" + }, + "geometricError": 500, + "root": { + "transform": [ + 96.86356343768793, + 24.848542777253734, + 0, + 0, + -15.986465724980844, + 62.317780594908875, + 76.5566922962899, + 0, + 19.02322243409411, + -74.15554020821229, + 64.3356267137516, + 0, + 1215107.7612304366, + -4736682.902037748, + 4081926.095098698, + 1 + ], + "boundingVolume": { + "box": [ + 0, + 0, + 0, + 7.0955, + 0, + 0, + 0, + 3.1405, + 0, + 0, + 0, + 5.0375 + ] + }, + "geometricError": 1, + "refine": "REPLACE", + "content": { + "uri": "dragon_low.b3dm" + }, + "children": [ + { + "boundingVolume": { + "box": [ + 0, + 0, + 0, + 7.0955, + 0, + 0, + 0, + 3.1405, + 0, + 0, + 0, + 5.0375 + ] + }, + "geometricError": 0.1, + "content": { + "uri": "dragon_medium.b3dm" + }, + "children": [ + { + "boundingVolume": { + "box": [ + 0, + 0, + 0, + 7.0955, + 0, + 0, + 0, + 3.1405, + 0, + 0, + 0, + 5.0375 + ] + }, + "geometricError": 0, + "content": { + "uri": "dragon_high.b3dm" + } + } + ] + } + ] + } +} \ No newline at end of file diff --git a/test/data/unitTest/OrientedImage/cameraCalibration.json b/test/data/unitTest/OrientedImage/cameraCalibration.json new file mode 100644 index 0000000000..d7b83f8a4e --- /dev/null +++ b/test/data/unitTest/OrientedImage/cameraCalibration.json @@ -0,0 +1,234 @@ +[ + { + "id": 300, + "rotation": [ + -0.00205265, + -0.999998, + 0.000732591, + 0.999997, + -0.00205156, + 0.00149035, + -0.00148884, + 0.000735648, + 0.999999 + ], + "position": [ + -0.000, + -0.145, + 0.867 + ], + "projection": [ + 1150.66785706630299, + 0, + 1030.29, + 0, + 1150.66785706630299, + 1024.96, + 0, + 0, + 1 + ], + "size": [ + 2048, + 2048 + ], + "distortion": { + "pps": [ + 1042.178, + 1027.565 + ], + "poly357": [ + -1.33791587603751819E-7, + 3.47540977328314388E-14, + -4.44103985918888078E-21 + ], + "limit": 2079 + } + }, + { + "id": 301, + "mask": "images/mask301.jpg", + "rotation": [ + -0.999967, + 0.0057386, + -0.00572497, + -0.00572726, + -0.000383448, + 0.999984, + 0.00573631, + 0.999983, + 0.000416302 + ], + "position": [ + 0.062, + -0.045, + 0.865 + ], + "projection": [ + 1134.10249915110944, + 0, + 1036.59, + 0, + 1134.10249915110944, + 1027.39, + 0, + 0, + 1 + ], + "size": [ + 2048, + 2048 + ], + "distortion": { + "pps": [ + 1042.178, + 1027.565 + ], + "poly357": [ + -1.40358671178762456E-7, + 3.68704437301178485E-14, + -4.70823660788942483E-21 + ], + "limit": 2065 + } + }, + { + "id": 302, + "rotation": [ + 0.0008499, + -0.999978, + -0.00664034, + 0.00460009, + -0.00663636, + 0.999967, + -0.999989, + -0.000880418, + 0.00459435 + ], + "position": [ + -0.103, + -0.086, + 0.867 + ], + "projection": [ + 1129.96581598065382, + 0, + 1044.51, + 0, + 1129.96581598065382, + 1024.87, + 0, + 0, + 1 + ], + "size": [ + 2048, + 2048 + ], + "distortion": { + "pps": [ + 1042.178, + 1027.565 + ], + "poly357": [ + -1.43584241381542442E-7, + 3.85479524108064982E-14, + -5.0301787584825994E-21 + ], + "limit": 2042 + } + }, + { + "id": 303, + "mask": "images/mask303.jpg", + "rotation": [ + 0.999994, + -0.000499298, + -0.00349604, + 0.00349722, + 0.00238871, + 0.999991, + -0.000490943, + -0.999997, + 0.00239044 + ], + "position": [ + -0.060, + -0.248, + 0.865 + ], + "projection": [ + 1128.12363890680899, + 0, + 1027.81, + 0, + 1128.12363890680899, + 1023.82, + 0, + 0, + 1 + ], + "size": [ + 2048, + 2048 + ], + "distortion": { + "pps": [ + 1042.178, + 1027.565 + ], + "poly357": [ + -1.43584241381542442E-7, + 3.85479524108064982E-14, + -5.0301787584825994E-21 + ], + "limit": 2042 + } + }, + { + "id": 304, + "rotation": [ + -0.00375951, + 0.999979, + 0.00529837, + -0.00301241, + -0.0053097, + 0.999981, + 0.999988, + 0.00374348, + 0.0030323 + ], + "position": [ + 0.100, + -0.207, + 0.863 + ], + "projection": [ + 1128.70551522705205, + 0, + 1037.71, + 0, + 1128.70551522705205, + 1015.36, + 0, + 0, + 1 + ], + "size": [ + 2048, + 2048 + ], + "distortion": { + "pps": [ + 1042.178, + 1027.565 + ], + "poly357": [ + -1.4331013261463578E-7, + 3.77792882615437153E-14, + -4.83479389959883182E-21 + ], + "limit": 2056 + } + } +] \ No newline at end of file diff --git a/test/data/unitTest/OrientedImage/panoramicsMetaDataParis.geojson b/test/data/unitTest/OrientedImage/panoramicsMetaDataParis.geojson new file mode 100644 index 0000000000..f78582f364 --- /dev/null +++ b/test/data/unitTest/OrientedImage/panoramicsMetaDataParis.geojson @@ -0,0 +1,812 @@ +{ + "type": "FeatureCollection", + "features": [ + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 651187.76, + 6861379.05, + 41.39 + ] + }, + "properties": { + "id": 482, + "easting": 651187.76, + "northing": 6861379.05, + "altitude": 41.39, + "heading": 176.117188, + "roll": 0.126007, + "pitch": 1.280821, + "date": "2014-06-16T12:31:34.841Z" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 651187.63, + 6861376.21, + 41.43 + ] + }, + "properties": { + "id": 483, + "easting": 651187.63, + "northing": 6861376.21, + "altitude": 41.43, + "heading": 182.681473, + "roll": 0.251712, + "pitch": 1.253257, + "date": "2014-06-16T12:31:35.591Z" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 651187.18, + 6861372.56, + 41.49 + ] + }, + "properties": { + "id": 484, + "easting": 651187.18, + "northing": 6861372.56, + "altitude": 41.49, + "heading": 187.059952, + "roll": 0.450682, + "pitch": 1.238976, + "date": "2014-06-16T12:31:36.481Z" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 651186.76, + 6861369.74, + 41.55 + ] + }, + "properties": { + "id": 485, + "easting": 651186.76, + "northing": 6861369.74, + "altitude": 41.55, + "heading": 188.121552, + "roll": 0.341148, + "pitch": 1.273711, + "date": "2014-06-16T12:31:37.185Z" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 651186.22, + 6861366.08, + 41.61 + ] + }, + "properties": { + "id": 486, + "easting": 651186.22, + "northing": 6861366.08, + "altitude": 41.61, + "heading": 187.635681, + "roll": 0.282036, + "pitch": 1.423814, + "date": "2014-06-16T12:31:38.075Z" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 651185.79, + 6861362.99, + 41.67 + ] + }, + "properties": { + "id": 487, + "easting": 651185.79, + "northing": 6861362.99, + "altitude": 41.67, + "heading": 187.433197, + "roll": 0.147209, + "pitch": 1.528447, + "date": "2014-06-16T12:31:38.763Z" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 651185.32, + 6861359.63, + 41.72 + ] + }, + "properties": { + "id": 488, + "easting": 651185.32, + "northing": 6861359.63, + "altitude": 41.72, + "heading": 187.615814, + "roll": 0.095869, + "pitch": 0.785447, + "date": "2014-06-16T12:31:39.466Z" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 651184.96, + 6861357.18, + 41.73 + ] + }, + "properties": { + "id": 489, + "easting": 651184.96, + "northing": 6861357.18, + "altitude": 41.73, + "heading": 187.727371, + "roll": 0.357807, + "pitch": -0.305624, + "date": "2014-06-16T12:31:39.950Z" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 651184.41, + 6861353.5, + 41.69 + ] + }, + "properties": { + "id": 490, + "easting": 651184.41, + "northing": 6861353.5, + "altitude": 41.69, + "heading": 187.941498, + "roll": 0.485358, + "pitch": -0.282732, + "date": "2014-06-16T12:31:40.653Z" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 651183.96, + 6861350.52, + 41.67 + ] + }, + "properties": { + "id": 491, + "easting": 651183.96, + "northing": 6861350.52, + "altitude": 41.67, + "heading": 188.079483, + "roll": 0.672686, + "pitch": -0.224491, + "date": "2014-06-16T12:31:41.216Z" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 651183.33, + 6861346.2, + 41.63 + ] + }, + "properties": { + "id": 492, + "easting": 651183.33, + "northing": 6861346.2, + "altitude": 41.63, + "heading": 187.868134, + "roll": 0.496007, + "pitch": -0.33595, + "date": "2014-06-16T12:31:42.044Z" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 651182.91, + 6861343.03, + 41.6 + ] + }, + "properties": { + "id": 493, + "easting": 651182.91, + "northing": 6861343.03, + "altitude": 41.6, + "heading": 186.908234, + "roll": 0.458804, + "pitch": -0.427781, + "date": "2014-06-16T12:31:42.684Z" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 651182.61, + 6861339.6, + 41.57 + ] + }, + "properties": { + "id": 494, + "easting": 651182.61, + "northing": 6861339.6, + "altitude": 41.57, + "heading": 184.101685, + "roll": 0.252768, + "pitch": -0.602082, + "date": "2014-06-16T12:31:43.450Z" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 651182.5, + 6861335.95, + 41.54 + ] + }, + "properties": { + "id": 495, + "easting": 651182.5, + "northing": 6861335.95, + "altitude": 41.54, + "heading": 180.865067, + "roll": -0.267166, + "pitch": -0.047629, + "date": "2014-06-16T12:31:44.419Z" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 651182.44, + 6861332.34, + 41.52 + ] + }, + "properties": { + "id": 496, + "easting": 651182.44, + "northing": 6861332.34, + "altitude": 41.52, + "heading": 181.920532, + "roll": -0.754952, + "pitch": -0.483815, + "date": "2014-06-16T12:31:45.669Z" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 651181.5, + 6861328.85, + 41.49 + ] + }, + "properties": { + "id": 497, + "easting": 651181.5, + "northing": 6861328.85, + "altitude": 41.49, + "heading": 201.131104, + "roll": 0.010517, + "pitch": -0.1642, + "date": "2014-06-16T12:31:48.278Z" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 651178.35, + 6861327.41, + 41.46 + ] + }, + "properties": { + "id": 498, + "easting": 651178.35, + "northing": 6861327.41, + "altitude": 41.46, + "heading": 248.148148, + "roll": 0.161304, + "pitch": 0.46552, + "date": "2014-06-16T12:32:04.684Z" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 651175.07, + 6861327.25, + 41.45 + ] + }, + "properties": { + "id": 499, + "easting": 651175.07, + "northing": 6861327.25, + "altitude": 41.45, + "heading": 267.863495, + "roll": 0.376058, + "pitch": -0.359971, + "date": "2014-06-16T12:32:07.262Z" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 651171.47, + 6861327.4, + 41.4 + ] + }, + "properties": { + "id": 500, + "easting": 651171.47, + "northing": 6861327.4, + "altitude": 41.4, + "heading": 272.510254, + "roll": 0.197145, + "pitch": -0.263834, + "date": "2014-06-16T12:32:08.871Z" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 651167.93, + 6861327.61, + 41.37 + ] + }, + "properties": { + "id": 501, + "easting": 651167.93, + "northing": 6861327.61, + "altitude": 41.37, + "heading": 273.558136, + "roll": -0.319205, + "pitch": -0.401148, + "date": "2014-06-16T12:32:10.059Z" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 651164.54, + 6861327.86, + 41.33 + ] + }, + "properties": { + "id": 502, + "easting": 651164.54, + "northing": 6861327.86, + "altitude": 41.33, + "heading": 274.164581, + "roll": -0.495337, + "pitch": -0.447559, + "date": "2014-06-16T12:32:11.059Z" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 651161.16, + 6861328.14, + 41.29 + ] + }, + "properties": { + "id": 503, + "easting": 651161.16, + "northing": 6861328.14, + "altitude": 41.29, + "heading": 274.263947, + "roll": -0.30063, + "pitch": -0.47051, + "date": "2014-06-16T12:32:12.027Z" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 651157.45, + 6861328.43, + 41.24 + ] + }, + "properties": { + "id": 504, + "easting": 651157.45, + "northing": 6861328.43, + "altitude": 41.24, + "heading": 273.907288, + "roll": -0.052647, + "pitch": -0.357822, + "date": "2014-06-16T12:32:12.980Z" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 651154.61, + 6861328.62, + 41.21 + ] + }, + "properties": { + "id": 505, + "easting": 651154.61, + "northing": 6861328.62, + "altitude": 41.21, + "heading": 273.638641, + "roll": -0.132198, + "pitch": -0.357699, + "date": "2014-06-16T12:32:13.652Z" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 651151.24, + 6861328.85, + 41.17 + ] + }, + "properties": { + "id": 506, + "easting": 651151.24, + "northing": 6861328.85, + "altitude": 41.17, + "heading": 273.403442, + "roll": -0.043778, + "pitch": -0.421643, + "date": "2014-06-16T12:32:14.418Z" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 651147.56, + 6861329.07, + 41.13 + ] + }, + "properties": { + "id": 507, + "easting": 651147.56, + "northing": 6861329.07, + "altitude": 41.13, + "heading": 273.171356, + "roll": -0.028044, + "pitch": -0.61156, + "date": "2014-06-16T12:32:15.262Z" + } + }, + { + "type": "Feature", + "geometry": { + "type": "Point", + "coordinates": [ + 651144.28, + 6861329.27, + 41.09 + ] + }, + "properties": { + "id": 508, + "easting": 651144.28, + "northing": 6861329.27, + "altitude": 41.09, + "heading": 273.151581, + "roll": 0.032069, + "pitch": -0.147215, + "date": "2014-06-16T12:32:16.059Z" + } + } + ], + "properties": [ + { + "id": 300, + "rotation": [ + -0.999998, + 0.00205265, + 0.000732591, + -0.00205156, + -0.999997, + 0.00149035, + 0.000735648, + 0.00148884, + 0.999999 + ], + "position": [ + -0.145711, + -0.0008142, + -0.867 + ], + "projection": [ + 1150.667857066303, + 0, + 1030.2919748724225, + 0, + 1150.667857066303, + 1023.0393546954533, + 0, + 0, + 1 + ], + "size": [ + 2048, + 2048 + ], + "distortion": { + "pps": [ + 1042.178, + 1020.435 + ], + "poly357": [ + -1.3379158760375182e-7, + 3.475409773283144e-14, + -4.441039859188881e-21 + ], + "limit": 2079 + } + }, + { + "id": 301, + "mask": "images/mask301.jpg", + "rotation": [ + 0.0057386, + 0.999967, + -0.00572497, + -0.000383448, + 0.00572726, + 0.999984, + 0.999983, + -0.00573631, + 0.000416302 + ], + "position": [ + -0.0449668, + 0.0620361, + -0.865681 + ], + "projection": [ + 1134.1024991511094, + 0, + 1036.5955336275383, + 0, + 1134.1024991511094, + 1020.6036743977118, + 0, + 0, + 1 + ], + "size": [ + 2048, + 2048 + ], + "distortion": { + "pps": [ + 1042.178, + 1020.435 + ], + "poly357": [ + -1.4035867117876246e-7, + 3.687044373011785e-14, + -4.708236607889425e-21 + ], + "limit": 2065 + } + }, + { + "id": 302, + "rotation": [ + -0.999978, + -0.0008499, + -0.00664034, + -0.00663636, + -0.00460009, + 0.999967, + -0.000880418, + 0.999989, + 0.00459435 + ], + "position": [ + -0.0856818, + -0.102837, + -0.866901 + ], + "projection": [ + 1129.9658159806538, + 0, + 1044.5100479098114, + 0, + 1129.9658159806538, + 1023.125913688019, + 0, + 0, + 1 + ], + "size": [ + 2048, + 2048 + ], + "distortion": { + "pps": [ + 1042.178, + 1020.435 + ], + "poly357": [ + -1.4358424138154244e-7, + 3.85479524108065e-14, + -5.0301787584825994e-21 + ], + "limit": 2042 + } + }, + { + "id": 303, + "mask": "images/mask303.jpg", + "rotation": [ + -0.000499298, + -0.999994, + -0.00349604, + 0.00238871, + -0.00349722, + 0.999991, + -0.999997, + 0.000490943, + 0.00239044 + ], + "position": [ + -0.248471, + -0.060197, + -0.865218 + ], + "projection": [ + 1128.123638906809, + 0, + 1027.8178926934027, + 0, + 1128.123638906809, + 1024.175509592031, + 0, + 0, + 1 + ], + "size": [ + 2048, + 2048 + ], + "distortion": { + "pps": [ + 1042.178, + 1020.435 + ], + "poly357": [ + -1.4358424138154244e-7, + 3.85479524108065e-14, + -5.0301787584825994e-21 + ], + "limit": 2042 + } + }, + { + "id": 304, + "rotation": [ + 0.999979, + 0.00375951, + 0.00529837, + -0.0053097, + 0.00301241, + 0.999981, + 0.00374348, + -0.999988, + 0.0030323 + ], + "position": [ + -0.207387, + 0.0996596, + -0.863219 + ], + "projection": [ + 1128.705515227052, + 0, + 1037.7109472587802, + 0, + 1128.705515227052, + 1032.6326827371663, + 0, + 0, + 1 + ], + "size": [ + 2048, + 2048 + ], + "distortion": { + "pps": [ + 1042.178, + 1020.435 + ], + "poly357": [ + -1.4331013261463578e-7, + 3.7779288261543715e-14, + -4.834793899598832e-21 + ], + "limit": 2056 + } + } + ], + "crs": { + "type": "EPSG", + "properties": { + "code": 2154 + } + } +} \ No newline at end of file diff --git a/test/data/unitTest/entwine/ept-hierarchy/0-0-0-0.json b/test/data/unitTest/entwine/ept-hierarchy/0-0-0-0.json new file mode 100644 index 0000000000..5c0e3d69f8 --- /dev/null +++ b/test/data/unitTest/entwine/ept-hierarchy/0-0-0-0.json @@ -0,0 +1,14 @@ +{ + "0-0-0-0": 65341, + "1-0-0-0": 438, + "2-0-1-0": 322, + "1-0-0-1": 56209, + "2-0-1-2": 4332, + "2-1-1-2": 20300, + "2-1-1-3": 64020, + "3-2-3-6": -1, + "3-3-3-7": -1, + "1-0-1-0": 30390, + "2-1-2-0": 2300, + "1-1-1-1": 2303 +} \ No newline at end of file diff --git a/test/data/unitTest/entwine/ept.json b/test/data/unitTest/entwine/ept.json new file mode 100644 index 0000000000..22a8aff588 --- /dev/null +++ b/test/data/unitTest/entwine/ept.json @@ -0,0 +1,34 @@ +{ + "bounds": [634962.0, 848881.0, -1818.0, 639620.0, 853539.0, 2840.0], + "boundsConforming": [635577.0, 848882.0, 406.0, 639004.0, 853538.0, 616.0], + "dataType": "laszip", + "hierarchyType": "json", + "points": 10653336, + "schema": [ + { "name": "X", "type": "signed", "size": 4, "scale": 0.01, "offset": 637291.0 }, + { "name": "Y", "type": "signed", "size": 4, "scale": 0.01, "offset": 851210.0 }, + { "name": "Z", "type": "signed", "size": 4, "scale": 0.01, "offset": 511.0 }, + { "name": "Intensity", "type": "unsigned", "size": 2 }, + { "name": "ReturnNumber", "type": "unsigned", "size": 1 }, + { "name": "NumberOfReturns", "type": "unsigned", "size": 1 }, + { "name": "ScanDirectionFlag", "type": "unsigned", "size": 1 }, + { "name": "EdgeOfFlightLine", "type": "unsigned", "size": 1 }, + { "name": "Classification", "type": "unsigned", "size": 1 }, + { "name": "ScanAngleRank", "type": "float", "size": 4 }, + { "name": "UserData", "type": "unsigned", "size": 1 }, + { "name": "PointSourceId", "type": "unsigned", "size": 2 }, + { "name": "GpsTime", "type": "float", "size": 8 }, + { "name": "Red", "type": "unsigned", "size": 2 }, + { "name": "Green", "type": "unsigned", "size": 2 }, + { "name": "Blue", "type": "unsigned", "size": 2 }, + { "name": "OriginId", "type": "unsigned", "size": 4 } + ], + "span" : 256, + "srs": { + "authority": "EPSG", + "horizontal": "3857", + "vertical": "5703", + "wkt": "PROJCS[\"WGS 84 ... AUTHORITY[\"EPSG\",\"3857\"]]" + }, + "version" : "1.0.0" +} \ No newline at end of file diff --git a/test/data/unitTest/filesource/RAF20_float.gtx b/test/data/unitTest/filesource/RAF20_float.gtx new file mode 100644 index 0000000000..dbcd3bbf89 Binary files /dev/null and b/test/data/unitTest/filesource/RAF20_float.gtx differ diff --git a/test/data/unitTest/filesource/departement-09-ariege.geojson b/test/data/unitTest/filesource/departement-09-ariege.geojson new file mode 100644 index 0000000000..be711df65c --- /dev/null +++ b/test/data/unitTest/filesource/departement-09-ariege.geojson @@ -0,0 +1 @@ +{"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[1.68842,43.27355],[1.69139,43.27173],[1.69233,43.26976],[1.69484,43.26752],[1.69689,43.26492],[1.70055,43.26193],[1.70096,43.2586],[1.70215,43.25708],[1.70266,43.25469],[1.70073,43.2518],[1.69972,43.24923],[1.69812,43.24742],[1.6967,43.24804],[1.69499,43.24699],[1.70007,43.24455],[1.7051,43.24589],[1.70696,43.24441],[1.70255,43.24182],[1.70214,43.24042],[1.70388,43.23867],[1.70914,43.23745],[1.70951,43.23492],[1.71201,43.23324],[1.71771,43.22863],[1.71575,43.22799],[1.71872,43.22651],[1.71978,43.22647],[1.72384,43.22452],[1.72085,43.22311],[1.72088,43.21875],[1.72389,43.21471],[1.72551,43.21194],[1.72415,43.21162],[1.72088,43.20803],[1.71695,43.20684],[1.71421,43.20543],[1.7132,43.20137],[1.70969,43.20045],[1.70819,43.19824],[1.70874,43.1978],[1.70939,43.19469],[1.71007,43.19451],[1.70973,43.19186],[1.70882,43.191],[1.71143,43.18818],[1.71133,43.18669],[1.71348,43.18562],[1.71699,43.18627],[1.71913,43.18614],[1.72392,43.18834],[1.72565,43.18727],[1.73543,43.18579],[1.74087,43.18411],[1.74359,43.18273],[1.74238,43.18006],[1.74485,43.17895],[1.74463,43.17611],[1.7516,43.17431],[1.7523,43.17283],[1.75471,43.17166],[1.75527,43.1705],[1.75793,43.16939],[1.76076,43.16769],[1.76256,43.16743],[1.76681,43.16579],[1.77143,43.16478],[1.7728,43.1628],[1.77583,43.16101],[1.78064,43.15982],[1.78264,43.15592],[1.78244,43.15175],[1.7836,43.1512],[1.78666,43.15401],[1.78653,43.15513],[1.78774,43.15649],[1.79048,43.15835],[1.79276,43.15912],[1.79326,43.15809],[1.79505,43.15724],[1.79836,43.1568],[1.80132,43.15772],[1.80515,43.15675],[1.80817,43.1542],[1.81113,43.15336],[1.8165,43.15028],[1.81994,43.14962],[1.82384,43.14775],[1.82477,43.14581],[1.82594,43.14559],[1.8289,43.14646],[1.8319,43.1467],[1.83677,43.1447],[1.83915,43.14619],[1.84186,43.14702],[1.84438,43.14622],[1.84942,43.14602],[1.85144,43.14648],[1.85242,43.14778],[1.85,43.1502],[1.84777,43.1532],[1.84389,43.15364],[1.84161,43.15534],[1.84275,43.15791],[1.84417,43.15706],[1.84756,43.15649],[1.85026,43.15736],[1.85196,43.16061],[1.85349,43.15963],[1.85455,43.15756],[1.85365,43.15616],[1.85453,43.15387],[1.85536,43.14955],[1.85544,43.14685],[1.85663,43.14451],[1.85829,43.14519],[1.86124,43.14498],[1.8634,43.14401],[1.86671,43.14326],[1.86985,43.14359],[1.87336,43.14269],[1.87675,43.14284],[1.87771,43.14461],[1.88008,43.14713],[1.88077,43.14547],[1.88011,43.14449],[1.88068,43.14218],[1.88031,43.14133],[1.88225,43.13562],[1.88044,43.13372],[1.88015,43.13012],[1.88091,43.12679],[1.88349,43.12757],[1.8843,43.12595],[1.89069,43.12544],[1.89078,43.12197],[1.88866,43.1194],[1.89117,43.11824],[1.89113,43.11689],[1.89372,43.11541],[1.89562,43.11695],[1.8964,43.11925],[1.8981,43.12141],[1.90226,43.12332],[1.90144,43.1258],[1.90205,43.12747],[1.90233,43.13025],[1.90632,43.1322],[1.91026,43.13231],[1.91417,43.13355],[1.91829,43.13301],[1.92033,43.13167],[1.92278,43.13119],[1.92735,43.12949],[1.92822,43.12828],[1.92842,43.12576],[1.928,43.12419],[1.93151,43.12437],[1.93238,43.1238],[1.93685,43.12431],[1.94017,43.12346],[1.94135,43.1228],[1.94368,43.12285],[1.94645,43.12232],[1.94609,43.12137],[1.94915,43.12107],[1.9493,43.11792],[1.9501,43.11778],[1.95277,43.11307],[1.95026,43.11134],[1.95047,43.10874],[1.95012,43.1059],[1.95165,43.10532],[1.95063,43.1027],[1.95449,43.09336],[1.95538,43.08886],[1.95508,43.08742],[1.95578,43.08545],[1.95376,43.08445],[1.95112,43.08389],[1.94996,43.08276],[1.94973,43.08003],[1.95206,43.07967],[1.95469,43.08089],[1.95685,43.08028],[1.95636,43.07936],[1.95755,43.0756],[1.95979,43.07322],[1.9609,43.07133],[1.96386,43.06918],[1.96118,43.0667],[1.95828,43.06687],[1.95136,43.06572],[1.9465,43.06579],[1.943,43.0674],[1.94202,43.06645],[1.93977,43.06288],[1.94218,43.05911],[1.94258,43.0552],[1.94136,43.05447],[1.94076,43.05295],[1.94223,43.05223],[1.94273,43.0511],[1.95086,43.0466],[1.95509,43.04656],[1.95379,43.0484],[1.95374,43.04965],[1.95606,43.05015],[1.9606,43.05044],[1.96225,43.04932],[1.96442,43.04889],[1.96804,43.04714],[1.9721,43.04661],[1.97308,43.04616],[1.97291,43.0446],[1.97543,43.04347],[1.97526,43.04033],[1.98026,43.03746],[1.9834,43.0336],[1.985,43.03261],[1.98576,43.02996],[1.9851,43.02713],[1.98541,43.02447],[1.98469,43.0224],[1.98214,43.01978],[1.98104,43.01964],[1.97908,43.01756],[1.97086,43.00957],[1.97128,43.00845],[1.97638,43.00824],[1.97743,43.00662],[1.9821,43.00533],[1.98315,43.00452],[1.98514,43.0046],[1.98677,43.00255],[1.98752,42.99928],[1.98509,42.99688],[1.98757,42.99346],[1.98602,42.99218],[1.98513,42.98909],[1.98232,42.98836],[1.98257,42.98675],[1.98479,42.98473],[1.9858,42.97865],[1.98488,42.97655],[1.98649,42.97601],[1.98737,42.97236],[1.98496,42.96727],[1.98851,42.96489],[1.99129,42.96391],[1.99252,42.96279],[1.99798,42.96137],[2.00178,42.96191],[2.00189,42.96327],[2.00538,42.96328],[2.00594,42.96219],[2.00423,42.96112],[2.00229,42.9584],[2.00063,42.95844],[2.00088,42.95643],[1.9993,42.95566],[1.99857,42.95426],[1.99656,42.95417],[1.9949,42.95298],[1.99354,42.95375],[1.98859,42.95337],[1.98576,42.95552],[1.98299,42.95668],[1.98011,42.95906],[1.97996,42.9609],[1.97641,42.9608],[1.97445,42.96021],[1.97157,42.96111],[1.96557,42.96086],[1.96256,42.96103],[1.95949,42.96264],[1.95758,42.96425],[1.95649,42.96285],[1.95723,42.96047],[1.95559,42.9583],[1.95309,42.95843],[1.9513,42.95909],[1.95211,42.95667],[1.95083,42.95622],[1.94622,42.95692],[1.9441,42.95394],[1.94011,42.95505],[1.93645,42.95397],[1.93544,42.94801],[1.93373,42.93914],[1.94243,42.93738],[1.94642,42.93685],[1.95402,42.9353],[1.97047,42.93144],[1.97401,42.931],[1.98057,42.92958],[1.98116,42.92342],[1.98328,42.91978],[1.9864,42.91849],[1.98764,42.917],[1.98764,42.91588],[1.98933,42.91049],[1.9903,42.91022],[1.99193,42.9051],[1.98991,42.90423],[1.98477,42.903],[1.98727,42.89612],[1.98642,42.89405],[1.98454,42.89103],[1.98308,42.89012],[1.98301,42.88824],[1.9836,42.88607],[1.98226,42.88413],[1.98233,42.88315],[1.98101,42.87842],[1.98692,42.87101],[1.98107,42.86888],[1.97818,42.86805],[1.95518,42.85952],[1.94566,42.8562],[1.94101,42.85618],[1.91881,42.8542],[1.91039,42.85372],[1.88788,42.85261],[1.87589,42.85274],[1.87536,42.84963],[1.87444,42.84854],[1.87459,42.84662],[1.87564,42.84463],[1.87675,42.84432],[1.8761,42.84007],[1.87496,42.83905],[1.8729,42.83589],[1.86857,42.83354],[1.8662,42.8319],[1.86474,42.8318],[1.86408,42.83041],[1.86024,42.82761],[1.8591,42.82503],[1.85907,42.82216],[1.85951,42.82023],[1.86166,42.81788],[1.86589,42.81728],[1.86816,42.81553],[1.87123,42.81455],[1.87399,42.81411],[1.87795,42.81413],[1.8798,42.81296],[1.88163,42.81246],[1.88414,42.81245],[1.88578,42.81167],[1.88807,42.81147],[1.89394,42.80965],[1.89609,42.80867],[1.89775,42.80715],[1.89856,42.80431],[1.89839,42.80269],[1.90096,42.80077],[1.90612,42.79841],[1.90761,42.79566],[1.90731,42.79436],[1.90823,42.79292],[1.9134,42.78893],[1.91482,42.78593],[1.91963,42.78081],[1.92134,42.77992],[1.92338,42.77769],[1.92884,42.77495],[1.9235,42.77151],[1.9217,42.76996],[1.91788,42.76992],[1.91324,42.76918],[1.90938,42.76921],[1.90818,42.76767],[1.90899,42.76525],[1.91139,42.76251],[1.91361,42.75788],[1.91979,42.75719],[1.92207,42.75517],[1.92982,42.7552],[1.93179,42.75345],[1.93094,42.75115],[1.9334,42.75031],[1.9367,42.74996],[1.93861,42.74794],[1.94129,42.74688],[1.94644,42.74576],[1.94717,42.74437],[1.94689,42.74172],[1.94775,42.73915],[1.9488,42.73799],[1.95163,42.73669],[1.95949,42.73686],[1.96249,42.73771],[1.96365,42.73696],[1.9681,42.7363],[1.97025,42.73535],[1.97585,42.73668],[1.98178,42.73602],[1.98452,42.73675],[1.98686,42.73519],[1.99144,42.7348],[1.99724,42.73594],[2.00009,42.73595],[2.00323,42.73457],[2.00384,42.73348],[2.00793,42.73412],[2.0117,42.73648],[2.01448,42.73973],[2.01998,42.74002],[2.02346,42.73903],[2.02543,42.73899],[2.02681,42.73999],[2.03078,42.74148],[2.03142,42.74652],[2.03472,42.74739],[2.03918,42.74614],[2.04163,42.74633],[2.04327,42.74737],[2.04784,42.74904],[2.04978,42.75139],[2.05234,42.75373],[2.05641,42.756],[2.05769,42.75614],[2.0632,42.75507],[2.06363,42.75444],[2.06613,42.75412],[2.06997,42.75432],[2.07181,42.75364],[2.07505,42.7537],[2.07791,42.75312],[2.07976,42.75214],[2.0814,42.75228],[2.0839,42.75161],[2.08629,42.7518],[2.08594,42.7494],[2.08501,42.74851],[2.08638,42.74594],[2.08639,42.7441],[2.08749,42.74122],[2.08744,42.73901],[2.08892,42.73717],[2.09217,42.73466],[2.09358,42.73448],[2.09638,42.73314],[2.09883,42.73328],[2.10084,42.73148],[2.10206,42.73148],[2.10471,42.7292],[2.10806,42.72722],[2.11155,42.72678],[2.11381,42.7245],[2.11723,42.72381],[2.11925,42.72153],[2.12084,42.7214],[2.12072,42.71995],[2.1233,42.71857],[2.12506,42.71925],[2.12678,42.71683],[2.13155,42.71494],[2.13356,42.71471],[2.13595,42.71324],[2.13955,42.7123],[2.14078,42.71046],[2.14097,42.70852],[2.14061,42.70582],[2.14415,42.70448],[2.14666,42.70138],[2.14788,42.70097],[2.15203,42.70156],[2.15466,42.70135],[2.15971,42.70221],[2.16211,42.69951],[2.16528,42.69821],[2.16786,42.69618],[2.17133,42.69111],[2.1714,42.6895],[2.17587,42.6828],[2.176,42.68145],[2.17308,42.67797],[2.17242,42.67576],[2.16748,42.67338],[2.16532,42.66585],[2.16605,42.66392],[2.15965,42.66435],[2.15386,42.66224],[2.15129,42.66196],[2.14898,42.66277],[2.14337,42.6637],[2.14,42.66505],[2.13262,42.66836],[2.13213,42.6694],[2.1301,42.67115],[2.12784,42.67227],[2.12388,42.67168],[2.11798,42.66847],[2.11201,42.66643],[2.10897,42.66386],[2.10678,42.66525],[2.10428,42.66506],[2.09824,42.66402],[2.09611,42.66402],[2.09489,42.66478],[2.09189,42.66567],[2.08659,42.66544],[2.0853,42.66678],[2.08378,42.66669],[2.0811,42.66465],[2.07634,42.66477],[2.07049,42.66639],[2.06976,42.66495],[2.0677,42.66412],[2.06458,42.66426],[2.06088,42.66168],[2.05452,42.66306],[2.04702,42.66359],[2.0443,42.66016],[2.04327,42.6575],[2.02763,42.65251],[2.02256,42.65339],[2.01879,42.65342],[2.01725,42.65472],[2.01353,42.65611],[2.01225,42.65695],[2.01248,42.65944],[2.007,42.65861],[2.00455,42.65936],[2.00369,42.66022],[2.00051,42.66156],[1.99856,42.66133],[1.99692,42.66007],[1.99736,42.65719],[1.997,42.65611],[1.9953,42.65506],[1.99392,42.65268],[1.99257,42.65232],[1.99271,42.65083],[1.99077,42.64664],[1.98793,42.64479],[1.98635,42.64086],[1.98668,42.64032],[1.98528,42.63722],[1.98257,42.63347],[1.97995,42.63166],[1.97978,42.63039],[1.97759,42.62927],[1.97583,42.62693],[1.97597,42.62481],[1.97726,42.62355],[1.97636,42.62107],[1.97413,42.61941],[1.97176,42.61692],[1.96829,42.61637],[1.96525,42.61631],[1.96311,42.61712],[1.96043,42.61693],[1.9581,42.61746],[1.95602,42.61871],[1.95401,42.61889],[1.95293,42.61816],[1.95012,42.61774],[1.94722,42.61468],[1.94363,42.61314],[1.94451,42.61003],[1.94379,42.60855],[1.94196,42.60767],[1.93887,42.60686],[1.93497,42.60492],[1.93339,42.60482],[1.92991,42.60611],[1.92666,42.60943],[1.92477,42.60879],[1.92228,42.60932],[1.91467,42.60763],[1.9115,42.60761],[1.90729,42.60863],[1.90368,42.61154],[1.90018,42.6149],[1.89748,42.60905],[1.89305,42.60633],[1.89361,42.60476],[1.89546,42.60233],[1.89413,42.60016],[1.89318,42.59616],[1.89127,42.59331],[1.88709,42.59055],[1.88385,42.58987],[1.88019,42.59007],[1.87423,42.59],[1.8735,42.58942],[1.87317,42.58541],[1.87449,42.58141],[1.87015,42.58143],[1.86938,42.57999],[1.86432,42.57899],[1.8617,42.58135],[1.86038,42.58401],[1.85724,42.58278],[1.85617,42.5816],[1.8539,42.58129],[1.85365,42.58232],[1.85157,42.58433],[1.84821,42.58372],[1.84707,42.58305],[1.84176,42.58303],[1.83907,42.58441],[1.83706,42.58454],[1.83477,42.58353],[1.83131,42.58149],[1.82473,42.58124],[1.82157,42.57956],[1.81768,42.57954],[1.81599,42.57818],[1.80634,42.57458],[1.801,42.5724],[1.79874,42.57239],[1.79601,42.57148],[1.79039,42.574],[1.78766,42.573],[1.78613,42.57362],[1.78661,42.57431],[1.78441,42.57587],[1.78313,42.58012],[1.78094,42.5826],[1.77741,42.58205],[1.77316,42.58068],[1.76805,42.58052],[1.76074,42.58092],[1.75859,42.58195],[1.75475,42.58292],[1.75286,42.58264],[1.74961,42.58469],[1.74846,42.58468],[1.74197,42.58775],[1.73539,42.58791],[1.73375,42.58853],[1.73173,42.58806],[1.72826,42.58841],[1.72612,42.58969],[1.72631,42.60031],[1.72899,42.60123],[1.73127,42.60399],[1.73114,42.60569],[1.7319,42.60741],[1.73519,42.60851],[1.73628,42.60932],[1.73663,42.61077],[1.73796,42.61131],[1.73727,42.61424],[1.73622,42.61503],[1.73607,42.61715],[1.73353,42.61579],[1.72951,42.61482],[1.72817,42.61563],[1.72628,42.61548],[1.72281,42.61636],[1.7202,42.61504],[1.71411,42.61461],[1.7102,42.61633],[1.70705,42.6187],[1.70063,42.62119],[1.69818,42.62274],[1.69392,42.6224],[1.69204,42.62195],[1.69031,42.62325],[1.68671,42.6239],[1.6836,42.62486],[1.68056,42.62481],[1.67838,42.6225],[1.67577,42.6223],[1.67346,42.62081],[1.67205,42.62125],[1.66687,42.62153],[1.6644,42.61904],[1.66203,42.61948],[1.66086,42.62037],[1.65689,42.62115],[1.65553,42.62255],[1.65496,42.62447],[1.65372,42.62631],[1.63883,42.62842],[1.63716,42.6303],[1.63072,42.62779],[1.62788,42.62633],[1.62232,42.62728],[1.61953,42.62583],[1.61691,42.62662],[1.61149,42.62667],[1.60934,42.62855],[1.60762,42.62832],[1.60357,42.62585],[1.60205,42.62548],[1.59974,42.62619],[1.59527,42.63179],[1.59313,42.63313],[1.58568,42.63357],[1.5842,42.6341],[1.58236,42.63589],[1.57978,42.63753],[1.57921,42.63902],[1.57944,42.64117],[1.57845,42.64229],[1.57599,42.64336],[1.57589,42.6462],[1.57489,42.64803],[1.57192,42.64796],[1.56879,42.64843],[1.56707,42.64973],[1.56607,42.65148],[1.56239,42.65348],[1.5605,42.65333],[1.55832,42.65215],[1.55562,42.6533],[1.5533,42.65368],[1.54925,42.65578],[1.54396,42.6542],[1.54093,42.65284],[1.53832,42.65255],[1.53548,42.65009],[1.53384,42.64968],[1.53083,42.65124],[1.52864,42.65144],[1.52638,42.65084],[1.52458,42.64956],[1.52215,42.64918],[1.52143,42.64743],[1.51891,42.64548],[1.51262,42.64615],[1.51091,42.64564],[1.50866,42.64571],[1.5058,42.6452],[1.50288,42.64544],[1.50061,42.64515],[1.49963,42.64578],[1.49925,42.6474],[1.49758,42.64873],[1.49375,42.65321],[1.49106,42.65297],[1.48814,42.65194],[1.48474,42.65206],[1.4801,42.65139],[1.47877,42.65165],[1.47874,42.6494],[1.47809,42.64675],[1.47702,42.64524],[1.47796,42.6435],[1.47691,42.64074],[1.4757,42.63957],[1.46991,42.63565],[1.46993,42.63385],[1.46834,42.63082],[1.47098,42.62918],[1.47142,42.62824],[1.47053,42.62626],[1.47105,42.62467],[1.47382,42.62141],[1.47428,42.61939],[1.47573,42.61656],[1.47727,42.61497],[1.47656,42.61302],[1.475,42.61216],[1.47423,42.61089],[1.47042,42.60869],[1.46946,42.60689],[1.46777,42.60638],[1.46478,42.60685],[1.46339,42.60562],[1.46175,42.60562],[1.45981,42.60475],[1.45704,42.60229],[1.4504,42.6026],[1.44782,42.60379],[1.44282,42.60366],[1.43783,42.60321],[1.43567,42.60581],[1.4334,42.60692],[1.43302,42.60831],[1.43085,42.61136],[1.42923,42.61269],[1.42933,42.61444],[1.43056,42.61733],[1.4281,42.61845],[1.42728,42.62095],[1.42379,42.62201],[1.42206,42.62397],[1.4207,42.62473],[1.42019,42.62607],[1.41996,42.62949],[1.41872,42.63069],[1.41974,42.63223],[1.41807,42.63348],[1.41652,42.63568],[1.41593,42.63764],[1.41617,42.63913],[1.4173,42.64],[1.41691,42.64184],[1.41444,42.64407],[1.41366,42.64766],[1.41466,42.6496],[1.41359,42.65145],[1.41441,42.65402],[1.41366,42.65552],[1.41011,42.65669],[1.40837,42.65759],[1.40537,42.65721],[1.40315,42.65887],[1.40377,42.66002],[1.40196,42.66188],[1.40132,42.66457],[1.39664,42.66805],[1.39424,42.66839],[1.38986,42.66804],[1.38778,42.66837],[1.38773,42.67099],[1.38888,42.67289],[1.38891,42.67427],[1.38703,42.67741],[1.38876,42.67991],[1.38752,42.68151],[1.3896,42.68508],[1.38933,42.68679],[1.3866,42.68952],[1.38469,42.69067],[1.381,42.69181],[1.37737,42.69452],[1.37248,42.69475],[1.36955,42.69563],[1.3651,42.69451],[1.3617,42.69776],[1.35693,42.69867],[1.35317,42.70035],[1.35124,42.70266],[1.35103,42.7046],[1.35235,42.70623],[1.35195,42.70835],[1.35303,42.70971],[1.35288,42.71128],[1.35528,42.71355],[1.35801,42.71493],[1.35803,42.71694],[1.35738,42.71941],[1.35604,42.71936],[1.3509,42.72003],[1.3489,42.71988],[1.34372,42.71884],[1.3409,42.71928],[1.33835,42.71857],[1.33729,42.71928],[1.33727,42.72059],[1.33527,42.72404],[1.33283,42.7245],[1.32538,42.72422],[1.31669,42.71869],[1.31138,42.71828],[1.30937,42.71741],[1.30747,42.71847],[1.30381,42.71817],[1.29942,42.71849],[1.29696,42.71937],[1.29256,42.71906],[1.2884,42.71726],[1.28716,42.71703],[1.28117,42.71463],[1.27783,42.71387],[1.27698,42.71643],[1.27494,42.71826],[1.26914,42.71807],[1.2672,42.71751],[1.26692,42.71629],[1.26528,42.71547],[1.25711,42.71529],[1.25316,42.71463],[1.25051,42.71964],[1.24792,42.72093],[1.24722,42.72249],[1.243,42.72286],[1.2412,42.725],[1.23876,42.72461],[1.23521,42.72503],[1.23391,42.72561],[1.23254,42.72738],[1.22911,42.72772],[1.2246,42.72425],[1.22222,42.72369],[1.22066,42.72241],[1.21763,42.72125],[1.21674,42.72002],[1.21424,42.72014],[1.20952,42.72086],[1.20575,42.72024],[1.20498,42.71914],[1.20042,42.71766],[1.19689,42.71767],[1.1922,42.71667],[1.19109,42.71747],[1.18884,42.71731],[1.18674,42.7154],[1.18219,42.71369],[1.17927,42.71326],[1.17691,42.71174],[1.17557,42.70894],[1.17277,42.7081],[1.16986,42.70798],[1.16818,42.70864],[1.16593,42.70871],[1.16364,42.71039],[1.16185,42.71105],[1.15605,42.71499],[1.15222,42.71665],[1.15113,42.71949],[1.14878,42.72122],[1.14595,42.72227],[1.14412,42.72238],[1.14,42.72428],[1.13703,42.72599],[1.13522,42.7275],[1.13327,42.72807],[1.13289,42.73148],[1.13507,42.73556],[1.13388,42.73757],[1.13171,42.73836],[1.13059,42.73947],[1.13054,42.74182],[1.13127,42.74263],[1.12969,42.74564],[1.13146,42.74772],[1.1327,42.75029],[1.13047,42.75158],[1.12808,42.75538],[1.12578,42.75738],[1.12474,42.75755],[1.12305,42.7591],[1.12164,42.75949],[1.11962,42.76303],[1.11249,42.76537],[1.1093,42.7657],[1.10914,42.77079],[1.10698,42.77229],[1.10165,42.77251],[1.0957,42.77419],[1.09322,42.77574],[1.09156,42.7759],[1.08927,42.77777],[1.08645,42.77846],[1.08603,42.78047],[1.08373,42.78198],[1.08296,42.78341],[1.08307,42.78495],[1.07908,42.78828],[1.0775,42.78835],[1.07541,42.78594],[1.07472,42.78395],[1.07335,42.78236],[1.06668,42.78238],[1.0652,42.7829],[1.05854,42.78296],[1.05631,42.78199],[1.05342,42.78254],[1.0468,42.78076],[1.04447,42.78095],[1.0431,42.78224],[1.0442,42.78509],[1.04167,42.78614],[1.03872,42.78682],[1.03562,42.78642],[1.0334,42.7869],[1.03265,42.78527],[1.03106,42.78494],[1.02908,42.78612],[1.02571,42.78654],[1.02229,42.78658],[1.01941,42.78731],[1.01714,42.78706],[1.01461,42.78838],[1.01194,42.7879],[1.01034,42.78833],[1.00705,42.7905],[1.00559,42.7908],[1.00187,42.78972],[0.99648,42.78745],[0.99307,42.78718],[0.99137,42.78658],[0.98649,42.78652],[0.98311,42.78707],[0.98007,42.78919],[0.97834,42.78994],[0.97677,42.79158],[0.9784,42.79249],[0.97807,42.79362],[0.97618,42.79593],[0.97347,42.79744],[0.97096,42.79754],[0.96799,42.79885],[0.9667,42.80203],[0.96414,42.80416],[0.96013,42.80574],[0.95847,42.80386],[0.94747,42.80134],[0.94731,42.79972],[0.94623,42.79912],[0.94325,42.79872],[0.94107,42.79713],[0.93792,42.79605],[0.93716,42.7946],[0.93424,42.79146],[0.93366,42.78979],[0.93077,42.78867],[0.92733,42.78926],[0.92612,42.7891],[0.92079,42.79188],[0.92008,42.79326],[0.91708,42.79395],[0.91543,42.79626],[0.91304,42.79659],[0.90844,42.79658],[0.90696,42.79763],[0.9064,42.80078],[0.90332,42.80196],[0.90243,42.80311],[0.89966,42.80398],[0.8987,42.80586],[0.89715,42.807],[0.89377,42.80738],[0.89192,42.80834],[0.89003,42.81048],[0.88824,42.81108],[0.88507,42.8133],[0.88262,42.81375],[0.87729,42.81422],[0.87419,42.81576],[0.86965,42.81655],[0.86141,42.821],[0.85835,42.82374],[0.85831,42.82572],[0.85906,42.82704],[0.85876,42.82924],[0.86046,42.83263],[0.86071,42.83466],[0.85989,42.83816],[0.85686,42.83966],[0.85709,42.84285],[0.85281,42.84982],[0.85302,42.85149],[0.85032,42.85392],[0.85043,42.85686],[0.84836,42.85709],[0.84887,42.86151],[0.84821,42.86533],[0.84427,42.86631],[0.84128,42.86591],[0.83969,42.86638],[0.84014,42.86801],[0.83851,42.86948],[0.83577,42.87092],[0.83506,42.87236],[0.8357,42.87638],[0.83665,42.87724],[0.83796,42.88149],[0.84058,42.88485],[0.84246,42.8852],[0.84157,42.88667],[0.844,42.88976],[0.84131,42.89167],[0.84056,42.89544],[0.841,42.89719],[0.83966,42.89731],[0.8384,42.89861],[0.8363,42.89916],[0.83292,42.90204],[0.83263,42.90375],[0.83294,42.9065],[0.83362,42.90866],[0.83154,42.91088],[0.82786,42.91345],[0.82613,42.91428],[0.82687,42.91627],[0.82795,42.91727],[0.83241,42.91999],[0.83706,42.92037],[0.84206,42.92358],[0.84463,42.92596],[0.85171,42.92479],[0.85333,42.92401],[0.85774,42.92353],[0.8597,42.92386],[0.86023,42.92491],[0.86233,42.92637],[0.86638,42.92827],[0.86778,42.9286],[0.87027,42.92734],[0.8718,42.92732],[0.87439,42.92626],[0.87761,42.92752],[0.88364,42.93129],[0.88485,42.93243],[0.88602,42.9346],[0.88541,42.93703],[0.8832,42.93974],[0.87933,42.94275],[0.8793,42.94406],[0.87602,42.95014],[0.87577,42.95535],[0.87491,42.95778],[0.87991,42.95897],[0.88207,42.95864],[0.88555,42.95927],[0.88876,42.95823],[0.89566,42.9571],[0.89736,42.95721],[0.89998,42.95823],[0.90366,42.9582],[0.90557,42.9575],[0.90983,42.95859],[0.91702,42.9608],[0.91944,42.96204],[0.92144,42.96252],[0.92803,42.96669],[0.92963,42.96622],[0.93337,42.96649],[0.93879,42.96561],[0.94392,42.96572],[0.94563,42.9661],[0.94955,42.96606],[0.95207,42.96637],[0.95297,42.96705],[0.95602,42.9675],[0.95857,42.96847],[0.96208,42.96833],[0.96392,42.97025],[0.96671,42.97177],[0.96977,42.97185],[0.97111,42.9725],[0.97374,42.97252],[0.97624,42.97309],[0.9791,42.97443],[0.98161,42.98024],[0.98425,42.98211],[0.99058,42.98732],[0.9951,42.99083],[0.99837,42.99794],[1.00134,43.00238],[1.00284,43.00375],[1.00324,43.00506],[1.00459,43.00513],[1.00705,43.00759],[1.00931,43.00833],[1.01766,43.00762],[1.02239,43.0102],[1.01626,43.01022],[1.01346,43.0096],[1.01293,43.0109],[1.01396,43.01155],[1.01155,43.01383],[1.00946,43.01418],[1.01039,43.01716],[1.00878,43.01809],[1.0064,43.02036],[1.00244,43.02216],[0.99681,43.02398],[0.99352,43.0234],[0.98904,43.02339],[0.98685,43.0254],[0.98592,43.03394],[0.98427,43.04445],[0.9871,43.04359],[0.99303,43.0396],[0.99437,43.03984],[0.99338,43.04307],[0.99431,43.04588],[0.99326,43.04842],[0.98857,43.04725],[0.98769,43.04796],[0.98796,43.04948],[0.98606,43.04947],[0.98406,43.05093],[0.98291,43.05334],[0.98364,43.05871],[0.98569,43.06292],[0.98558,43.06544],[0.98434,43.06857],[0.98045,43.0696],[0.97896,43.07258],[0.9819,43.07359],[0.99027,43.07207],[0.99592,43.07227],[0.99713,43.07355],[0.99751,43.07517],[0.99862,43.07527],[1.00042,43.07714],[1.00288,43.0773],[1.00646,43.08212],[1.0046,43.08254],[1.00353,43.08393],[1.00155,43.08408],[1.00018,43.08497],[0.99692,43.08574],[0.99528,43.08761],[0.99341,43.08844],[0.99094,43.09215],[0.99133,43.09351],[0.99273,43.09447],[0.99206,43.09694],[0.99234,43.09801],[0.99486,43.09765],[0.99646,43.09859],[0.99957,43.09882],[0.99972,43.10022],[0.99791,43.10123],[0.9987,43.10197],[1.00339,43.10359],[1.00424,43.10446],[1.00498,43.10708],[1.00361,43.11089],[1.00207,43.11362],[1.00378,43.11377],[1.00652,43.11277],[1.00883,43.11356],[1.00935,43.11213],[1.01191,43.11058],[1.01169,43.1095],[1.01354,43.10854],[1.01571,43.10833],[1.01704,43.10916],[1.01853,43.1084],[1.018,43.10741],[1.01847,43.10544],[1.01984,43.10496],[1.0232,43.10491],[1.02489,43.10417],[1.02481,43.10187],[1.02592,43.10111],[1.02878,43.10056],[1.03049,43.10085],[1.03265,43.10007],[1.03279,43.09913],[1.03605,43.0993],[1.037,43.10026],[1.03884,43.10055],[1.04051,43.10344],[1.04134,43.10697],[1.04436,43.10993],[1.04474,43.11186],[1.04621,43.11517],[1.04716,43.11644],[1.05062,43.11932],[1.05257,43.12537],[1.05215,43.12775],[1.05265,43.13019],[1.05172,43.13076],[1.05227,43.13379],[1.04758,43.13481],[1.04686,43.13669],[1.04845,43.13955],[1.05203,43.13941],[1.05181,43.14066],[1.05298,43.14319],[1.05187,43.14382],[1.05354,43.14545],[1.05891,43.14183],[1.06018,43.13982],[1.05997,43.13846],[1.06254,43.1389],[1.06862,43.13915],[1.07128,43.13899],[1.07437,43.13786],[1.07584,43.13774],[1.07956,43.13634],[1.08462,43.13537],[1.08798,43.13383],[1.0868,43.1375],[1.08838,43.14054],[1.08984,43.14181],[1.09216,43.14225],[1.09414,43.1414],[1.09561,43.14164],[1.0975,43.14303],[1.10608,43.14424],[1.11014,43.14401],[1.11276,43.14458],[1.11147,43.14759],[1.11342,43.14927],[1.11519,43.14952],[1.11781,43.1509],[1.11986,43.1525],[1.12279,43.15347],[1.12404,43.15596],[1.12678,43.1558],[1.12674,43.15477],[1.13006,43.15207],[1.13211,43.15195],[1.13617,43.14843],[1.13694,43.14705],[1.13868,43.14626],[1.14003,43.1447],[1.14185,43.14476],[1.14511,43.14386],[1.14452,43.14277],[1.14244,43.14212],[1.14469,43.14042],[1.14543,43.13782],[1.14976,43.13612],[1.15258,43.13565],[1.15452,43.13473],[1.15933,43.13379],[1.16597,43.1303],[1.16845,43.13244],[1.17082,43.13714],[1.17288,43.13861],[1.17498,43.14097],[1.17781,43.13798],[1.18109,43.13657],[1.18619,43.13362],[1.18724,43.13241],[1.18985,43.13158],[1.19516,43.12682],[1.19839,43.12541],[1.1991,43.12277],[1.20099,43.12143],[1.20823,43.11911],[1.20938,43.11612],[1.21055,43.11549],[1.21102,43.11338],[1.21325,43.10976],[1.21307,43.10904],[1.21059,43.10709],[1.21031,43.10581],[1.21126,43.10372],[1.21631,43.10012],[1.21807,43.09788],[1.21938,43.09344],[1.22196,43.09045],[1.22256,43.08775],[1.22357,43.08593],[1.22781,43.08587],[1.23327,43.08628],[1.23701,43.08714],[1.24183,43.08758],[1.24827,43.08851],[1.25041,43.08929],[1.25685,43.09044],[1.26185,43.09165],[1.26112,43.09479],[1.25912,43.09684],[1.25895,43.09968],[1.26189,43.09952],[1.26261,43.10116],[1.2619,43.10282],[1.25964,43.10469],[1.2587,43.10643],[1.2602,43.10923],[1.26571,43.10951],[1.26928,43.10896],[1.26893,43.11103],[1.27104,43.11046],[1.27393,43.11035],[1.27719,43.1098],[1.28093,43.11061],[1.28114,43.11276],[1.28233,43.11381],[1.28262,43.11584],[1.28579,43.12036],[1.28919,43.12292],[1.29145,43.12412],[1.30272,43.12259],[1.30201,43.12398],[1.29961,43.12469],[1.29749,43.12664],[1.29038,43.13256],[1.289,43.13395],[1.28659,43.13509],[1.28595,43.13635],[1.28377,43.13745],[1.2807,43.13792],[1.27962,43.13975],[1.27793,43.14135],[1.27557,43.1421],[1.27438,43.14362],[1.27449,43.14546],[1.27387,43.14839],[1.27276,43.14856],[1.26893,43.14655],[1.26596,43.1471],[1.26474,43.14636],[1.26235,43.14612],[1.26012,43.14726],[1.25907,43.14689],[1.25569,43.14749],[1.25507,43.14803],[1.25156,43.14795],[1.24818,43.14854],[1.24657,43.14933],[1.24375,43.14863],[1.24078,43.14955],[1.23837,43.14971],[1.2367,43.1505],[1.2319,43.15118],[1.22716,43.15144],[1.22272,43.15212],[1.22136,43.15273],[1.21896,43.15263],[1.21857,43.15402],[1.21707,43.15535],[1.21574,43.1575],[1.21822,43.15941],[1.21674,43.15998],[1.21398,43.16244],[1.21653,43.1639],[1.21943,43.16384],[1.22185,43.16575],[1.22236,43.16797],[1.22409,43.17103],[1.22419,43.17216],[1.22621,43.17272],[1.22773,43.174],[1.22796,43.17522],[1.22706,43.17665],[1.22761,43.1804],[1.2273,43.18345],[1.22872,43.18684],[1.23213,43.18827],[1.23661,43.18881],[1.23894,43.18969],[1.24062,43.18898],[1.24367,43.18956],[1.2464,43.18849],[1.24705,43.18657],[1.2483,43.18613],[1.24938,43.18331],[1.25105,43.18341],[1.25571,43.1848],[1.25802,43.18586],[1.26281,43.18645],[1.26515,43.18931],[1.26814,43.19078],[1.26665,43.19229],[1.26912,43.19438],[1.27229,43.19585],[1.27407,43.19623],[1.27792,43.19497],[1.28205,43.19397],[1.28881,43.19075],[1.29628,43.18928],[1.29816,43.19079],[1.30236,43.19281],[1.30388,43.19444],[1.30572,43.19491],[1.30957,43.19247],[1.31223,43.19142],[1.31461,43.18999],[1.31841,43.19048],[1.3205,43.18992],[1.32452,43.19211],[1.32454,43.19423],[1.32569,43.19612],[1.32961,43.19702],[1.3285,43.20079],[1.32731,43.20217],[1.32782,43.20456],[1.33171,43.20405],[1.3339,43.20519],[1.33843,43.20681],[1.34222,43.20846],[1.34549,43.21224],[1.35017,43.21143],[1.35349,43.21203],[1.35667,43.21301],[1.35974,43.21299],[1.36407,43.21154],[1.36581,43.21025],[1.36849,43.20924],[1.37437,43.21375],[1.37671,43.21715],[1.37744,43.21881],[1.37943,43.22112],[1.38162,43.22641],[1.38161,43.22735],[1.38343,43.22868],[1.38191,43.23199],[1.38193,43.23375],[1.37841,43.23525],[1.37665,43.23722],[1.37491,43.2381],[1.37376,43.2447],[1.37191,43.24518],[1.36995,43.24359],[1.36764,43.24276],[1.36679,43.24181],[1.36475,43.24202],[1.35956,43.24328],[1.3516,43.24438],[1.35113,43.24276],[1.34799,43.24286],[1.34471,43.244],[1.34027,43.24415],[1.33909,43.24517],[1.338,43.24799],[1.33588,43.24987],[1.33139,43.24875],[1.32684,43.2487],[1.32308,43.24944],[1.32177,43.25037],[1.31842,43.25115],[1.32476,43.25476],[1.32893,43.25652],[1.33206,43.25721],[1.33207,43.25964],[1.33067,43.26256],[1.32409,43.26187],[1.3212,43.26099],[1.31855,43.26213],[1.30762,43.2641],[1.30047,43.26395],[1.2971,43.26243],[1.29395,43.26366],[1.29422,43.26556],[1.2931,43.26675],[1.29394,43.26781],[1.29547,43.26814],[1.29748,43.26973],[1.30195,43.2709],[1.30139,43.27435],[1.2979,43.2772],[1.29639,43.27918],[1.29496,43.28275],[1.29326,43.2845],[1.29336,43.28618],[1.29253,43.28837],[1.29575,43.28772],[1.29842,43.28666],[1.30255,43.28625],[1.30071,43.28911],[1.30279,43.29057],[1.30574,43.29069],[1.30623,43.29421],[1.30534,43.2955],[1.30513,43.2982],[1.3095,43.29775],[1.31469,43.2968],[1.31803,43.29589],[1.32152,43.30088],[1.32195,43.30425],[1.32292,43.30547],[1.32397,43.3094],[1.32886,43.31151],[1.33231,43.31564],[1.33388,43.31443],[1.33727,43.31388],[1.34004,43.31426],[1.34482,43.31584],[1.34974,43.31601],[1.35465,43.31449],[1.35781,43.31253],[1.36368,43.31258],[1.37128,43.31081],[1.37302,43.31014],[1.37132,43.30892],[1.36867,43.308],[1.36386,43.30773],[1.3669,43.30401],[1.36545,43.3018],[1.36774,43.30118],[1.37119,43.30081],[1.37445,43.29746],[1.37448,43.2962],[1.37774,43.29618],[1.37722,43.2901],[1.37626,43.28852],[1.38341,43.28805],[1.38534,43.28711],[1.38866,43.28318],[1.39072,43.28149],[1.39303,43.2802],[1.39914,43.27922],[1.40194,43.27761],[1.40326,43.27597],[1.40693,43.27379],[1.40818,43.272],[1.41148,43.27027],[1.41408,43.26939],[1.41396,43.26869],[1.41159,43.26627],[1.41457,43.2653],[1.41888,43.26475],[1.41835,43.26263],[1.41991,43.26137],[1.41961,43.26066],[1.42413,43.26003],[1.42299,43.25862],[1.42388,43.25731],[1.42902,43.25425],[1.42678,43.25185],[1.4265,43.25051],[1.42461,43.24837],[1.42438,43.24728],[1.42674,43.24614],[1.42511,43.24405],[1.4247,43.24141],[1.42025,43.23987],[1.42023,43.23704],[1.41697,43.23675],[1.41781,43.23423],[1.42044,43.232],[1.41909,43.23099],[1.41893,43.22942],[1.4176,43.22838],[1.41762,43.2273],[1.41611,43.22603],[1.41925,43.22497],[1.42196,43.22467],[1.42554,43.22376],[1.42707,43.22098],[1.4301,43.21929],[1.43279,43.2172],[1.43427,43.21658],[1.43994,43.21527],[1.4418,43.21587],[1.44465,43.21405],[1.44905,43.21238],[1.4515,43.21231],[1.45822,43.21159],[1.46162,43.21031],[1.46371,43.2106],[1.46761,43.20884],[1.46956,43.20993],[1.47134,43.21498],[1.47219,43.21571],[1.4755,43.21699],[1.47703,43.22195],[1.47793,43.22318],[1.48179,43.22469],[1.48289,43.22479],[1.48454,43.22616],[1.48735,43.22735],[1.49264,43.22378],[1.49627,43.22264],[1.49863,43.22154],[1.50381,43.22103],[1.50768,43.22147],[1.50301,43.22508],[1.50402,43.22742],[1.50427,43.23283],[1.49889,43.23406],[1.494,43.2364],[1.49335,43.23793],[1.4982,43.23959],[1.49965,43.24143],[1.49984,43.24531],[1.50256,43.24825],[1.50452,43.24953],[1.50433,43.25034],[1.50172,43.25275],[1.49893,43.25344],[1.49768,43.25466],[1.49196,43.25408],[1.49094,43.2569],[1.48943,43.25842],[1.49093,43.26113],[1.49264,43.2628],[1.48869,43.26863],[1.48896,43.27021],[1.49107,43.27288],[1.4934,43.27425],[1.4947,43.27408],[1.49652,43.27562],[1.49365,43.27834],[1.494,43.2797],[1.49305,43.28158],[1.49484,43.28565],[1.49468,43.28883],[1.49582,43.2911],[1.49722,43.29178],[1.49927,43.29041],[1.50145,43.28957],[1.50358,43.28692],[1.5066,43.28617],[1.50826,43.28682],[1.50947,43.28845],[1.50877,43.2898],[1.50907,43.29137],[1.51151,43.29224],[1.51235,43.29325],[1.51403,43.29164],[1.51554,43.29107],[1.51759,43.28942],[1.51485,43.28629],[1.515,43.28543],[1.51686,43.28365],[1.51727,43.28081],[1.51521,43.27914],[1.51666,43.27608],[1.51719,43.27353],[1.51715,43.2714],[1.51873,43.26917],[1.52467,43.27182],[1.52582,43.27304],[1.53213,43.27512],[1.53692,43.27699],[1.54083,43.27824],[1.5418,43.27509],[1.54463,43.27606],[1.54621,43.27738],[1.55261,43.26923],[1.56055,43.25889],[1.56501,43.25333],[1.56957,43.25706],[1.57108,43.25959],[1.57332,43.2619],[1.57383,43.26537],[1.57178,43.26778],[1.56869,43.26862],[1.5675,43.26983],[1.56766,43.27126],[1.56966,43.27403],[1.57204,43.27621],[1.57274,43.27414],[1.57417,43.27298],[1.57682,43.273],[1.57883,43.27512],[1.57971,43.27365],[1.58202,43.2711],[1.58253,43.26884],[1.58903,43.26772],[1.59538,43.26736],[1.60205,43.26597],[1.60692,43.25978],[1.61253,43.25906],[1.61956,43.25843],[1.62943,43.25682],[1.63232,43.25657],[1.63733,43.25548],[1.63648,43.24908],[1.63669,43.24778],[1.63555,43.24398],[1.63424,43.24114],[1.63486,43.2398],[1.63508,43.2371],[1.64149,43.23683],[1.64376,43.23711],[1.64969,43.24029],[1.6517,43.24192],[1.6555,43.24393],[1.65664,43.24596],[1.65521,43.24784],[1.6566,43.24979],[1.65442,43.25198],[1.65232,43.25255],[1.65126,43.2539],[1.65045,43.25997],[1.65001,43.26104],[1.65332,43.26272],[1.65557,43.26437],[1.65756,43.26775],[1.66197,43.27057],[1.66312,43.27251],[1.66526,43.27459],[1.66667,43.27442],[1.66794,43.27574],[1.67004,43.27651],[1.66892,43.27786],[1.66965,43.27849],[1.67285,43.27869],[1.67361,43.28134],[1.6748,43.28121],[1.67857,43.27944],[1.67979,43.27922],[1.68228,43.27721],[1.68409,43.27655],[1.68477,43.27529],[1.68842,43.27355]]]},"properties":{"code":"09","nom":"Ari\u00e8ge"}} \ No newline at end of file diff --git a/test/data/unitTest/pointclouds/data_test.las b/test/data/unitTest/pointclouds/data_test.las new file mode 100644 index 0000000000..c1ab4d2d23 Binary files /dev/null and b/test/data/unitTest/pointclouds/data_test.las differ diff --git a/test/data/unitTest/pointclouds/data_test.laz b/test/data/unitTest/pointclouds/data_test.laz new file mode 100644 index 0000000000..116fc1bba8 Binary files /dev/null and b/test/data/unitTest/pointclouds/data_test.laz differ diff --git a/test/data/unitTest/potree/eglise_saint_blaise_arles.json b/test/data/unitTest/potree/eglise_saint_blaise_arles.json new file mode 100644 index 0000000000..104a672db5 --- /dev/null +++ b/test/data/unitTest/potree/eglise_saint_blaise_arles.json @@ -0,0 +1,29 @@ +{ + "version": "1.7", + "octreeDir": "eglise_saint_blaise_arles", + "projection": "EPSG:4978", + "points": 18380597, + "boundingBox": { + "lx": 4605344.880001068, + "ly": 373051.4399986267, + "lz": 4382088.710000038, + "ux": 4605407.470001221, + "uy": 373114.0299987793, + "uz": 4382151.300000191 + }, + "tightBoundingBox": { + "lx": 4605344.880001068, + "ly": 373051.4399986267, + "lz": 4382088.710000038, + "ux": 4605394.100001068, + "uy": 373114.02999862676, + "uz": 4382143.6100000389 + }, + "pointAttributes": [ + "POSITION_CARTESIAN", + "COLOR_PACKED" + ], + "spacing": 0.5420452952384949, + "scale": 0.001, + "hierarchyStepSize": 5 +} \ No newline at end of file diff --git a/test/data/unitTest/potree/eglise_saint_blaise_arles/r/r.bin b/test/data/unitTest/potree/eglise_saint_blaise_arles/r/r.bin new file mode 100644 index 0000000000..e5cada76a5 Binary files /dev/null and b/test/data/unitTest/potree/eglise_saint_blaise_arles/r/r.bin differ diff --git a/test/data/unitTest/potree/eglise_saint_blaise_arles/r/r.hrc b/test/data/unitTest/potree/eglise_saint_blaise_arles/r/r.hrc new file mode 100644 index 0000000000..9cd91246bf Binary files /dev/null and b/test/data/unitTest/potree/eglise_saint_blaise_arles/r/r.hrc differ diff --git a/test/data/unitTest/potree/eglise_saint_blaise_arles/r/r0.bin b/test/data/unitTest/potree/eglise_saint_blaise_arles/r/r0.bin new file mode 100644 index 0000000000..3b2a426826 Binary files /dev/null and b/test/data/unitTest/potree/eglise_saint_blaise_arles/r/r0.bin differ diff --git a/test/data/unitTest/vectortiles/geojson.json b/test/data/unitTest/vectortiles/geojson.json new file mode 100644 index 0000000000..8bb15eed0d --- /dev/null +++ b/test/data/unitTest/vectortiles/geojson.json @@ -0,0 +1,5 @@ +{ + "tiles": [ + "http://server.geo/vectortiles/{z}/{x}/{y}" + ] +} \ No newline at end of file diff --git a/test/data/unitTest/vectortiles/sprite.json b/test/data/unitTest/vectortiles/sprite.json new file mode 100644 index 0000000000..9e26dfeeb6 --- /dev/null +++ b/test/data/unitTest/vectortiles/sprite.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/test/data/unitTest/vectortiles/style.json b/test/data/unitTest/vectortiles/style.json new file mode 100644 index 0000000000..1f92778ce9 --- /dev/null +++ b/test/data/unitTest/vectortiles/style.json @@ -0,0 +1,25 @@ +{ + "sources": { + "geojson": { + "url": "file://test/data/unitTest/vectortiles/geojson.json" + } + }, + "sprite": "file://test/data/unitTest/vectortiles/sprite", + "layers": [ + { + "type": "background", + "paint": { + "fill-color": "#0000ff" + } + }, + { + "id": "land", + "type": "fill", + "minzoom": 5, + "maxzoom": 13, + "paint": { + "fill-color": "rgb(255, 0, 0)" + } + } + ] +} \ No newline at end of file diff --git a/test/unit/3dtileslayerprocess.js b/test/unit/3dtileslayerprocess.js index 5d6c234029..04a4899550 100644 --- a/test/unit/3dtileslayerprocess.js +++ b/test/unit/3dtileslayerprocess.js @@ -8,17 +8,19 @@ import Coordinates from 'Core/Geographic/Coordinates'; import Renderer from './bootstrap'; describe('3Dtiles layer', function () { - const renderer = new Renderer(); + const url3dTilesDiscretLOD = 'test/data/unitTest/3dTiles/tilesetDiscretLOD.json'; + const renderer = new Renderer(); const p = { coord: new Coordinates('EPSG:4326', -75.6114, 40.03428, 0), heading: 180, range: 4000, tilt: 22 }; - const viewer = new GlobeView(renderer.domElement, p, { renderer, noControls: true }); + const source = new C3DTilesSource({ + // url: 'https://raw.githubusercontent.com/CesiumGS/3d-tiles-samples/master/1.0/TilesetWithDiscreteLOD/tileset.json', + url: url3dTilesDiscretLOD, + networkOptions: process.env.HTTPS_PROXY ? { agent: new HttpsProxyAgent(process.env.HTTPS_PROXY) } : {}, + }); const threedTilesLayer = new C3DTilesLayer('3d-tiles-discrete-lod', { - source: new C3DTilesSource({ - url: 'https://raw.githubusercontent.com/CesiumGS/3d-tiles-samples/master/1.0/TilesetWithDiscreteLOD/tileset.json', - networkOptions: process.env.HTTPS_PROXY ? { agent: new HttpsProxyAgent(process.env.HTTPS_PROXY) } : {}, - }), + source, sseThreshold: 0.05, }, viewer); diff --git a/test/unit/3dtileslayerprocessbatchtable.js b/test/unit/3dtileslayerprocessbatchtable.js index 0cc83f40de..da23d9e7ee 100644 --- a/test/unit/3dtileslayerprocessbatchtable.js +++ b/test/unit/3dtileslayerprocessbatchtable.js @@ -11,6 +11,8 @@ import Coordinates from 'Core/Geographic/Coordinates'; import Renderer from './bootstrap'; describe('3Dtiles batch table', function () { + const url3dTilesBatchTable = 'test/data/unitTest/3dTiles/tilesetBatchTable.json'; + const renderer = new Renderer(); const p = { @@ -27,15 +29,16 @@ describe('3Dtiles batch table', function () { { [C3DTilesTypes.batchtable]: C3DTBatchTableHierarchyExtension }); - const threedTilesLayerBTHierarchy = new C3DTilesLayer( - '3d-tiles-bt-hierarchy', { - name: 'BTHierarchy', - source: new C3DTilesSource({ - url: 'https://raw.githubusercontent.com/AnalyticalGraphicsInc/cesium/master/Apps/SampleData/Cesium3DTiles/Hierarchy/BatchTableHierarchy/tileset.json', - networkOptions: process.env.HTTPS_PROXY ? { agent: new HttpsProxyAgent(process.env.HTTPS_PROXY) } : {}, - }), - registeredExtensions: extensions, - }, viewer); + const source = new C3DTilesSource({ + // url: 'https://raw.githubusercontent.com/AnalyticalGraphicsInc/cesium/master/Apps/SampleData/Cesium3DTiles/Hierarchy/BatchTableHierarchy/tileset.json', + url: url3dTilesBatchTable, + networkOptions: process.env.HTTPS_PROXY ? { agent: new HttpsProxyAgent(process.env.HTTPS_PROXY) } : {}, + }); + const threedTilesLayerBTHierarchy = new C3DTilesLayer('3d-tiles-bt-hierarchy', { + name: 'BTHierarchy', + source, + registeredExtensions: extensions, + }, viewer); it('Add 3dtiles layer with batch table', function (done) { View.prototype.addLayer.call(viewer, threedTilesLayerBTHierarchy) diff --git a/test/unit/3dtileslayerstyle.js b/test/unit/3dtileslayerstyle.js index 6f389d2f51..cb1b877549 100644 --- a/test/unit/3dtileslayerstyle.js +++ b/test/unit/3dtileslayerstyle.js @@ -23,18 +23,6 @@ describe('3DTilesLayer Style', () => { const view = new PlanarView(renderer.domElement, extent, { renderer, noControls: true }); - const $3dTilesLayer = new C3DTilesLayer( - 'id_layer', - { - source: new C3DTilesSource({ - url: 'https://raw.githubusercontent.com/iTowns/iTowns2-sample-data/master/' + - '3DTiles/lyon1_with_surface_type_2018/tileset.json', - networkOptions: process.env.HTTPS_PROXY ? { agent: new HttpsProxyAgent(process.env.HTTPS_PROXY) } : {}, - }), - }, - view, - ); - // Create a 'fake' tile content for this test purpose const createTileContent = (tileId) => { const geometry = new THREE.SphereGeometry(15, 32, 16); @@ -61,28 +49,50 @@ describe('3DTilesLayer Style', () => { return result; }; - $3dTilesLayer.style = new Style({ - fill: { - color: (c3DTileFeature) => { - if (c3DTileFeature.batchId > 1) { - return 'red'; - } else { - return 'blue'; - } - }, - opacity: (c3DTileFeature) => { - if (c3DTileFeature.getInfo().something) { - return 0.1; - } else if (c3DTileFeature.userData.something === 'random') { - return 1; - } else { - return 0.5; - } + let $3dTilesLayer; + let source; + + const url = 'test/data/unitTest/3dTiles/tileset.json'; + + it('should instance C3DTilesLayer', function (done) { + source = new C3DTilesSource({ + url, + networkOptions: process.env.HTTPS_PROXY ? { agent: new HttpsProxyAgent(process.env.HTTPS_PROXY) } : {}, + }); + + $3dTilesLayer = new C3DTilesLayer('id_layer', + { source }, + view, + ); + + $3dTilesLayer.style = new Style({ + fill: { + color: (c3DTileFeature) => { + if (c3DTileFeature.batchId > 1) { + return 'red'; + } else { + return 'blue'; + } + }, + opacity: (c3DTileFeature) => { + if (c3DTileFeature.getInfo().something) { + return 0.1; + } else if (c3DTileFeature.userData.something === 'random') { + return 1; + } else { + return 0.5; + } + }, }, - }, + }); + source.whenReady + .then(() => { + assert.ok(source.isC3DTilesSource); + done(); + }) + .catch(done); }); - it('Load tile content', function () { for (let index = 0; index < 10; index++) { const tileContent = createTileContent(index); diff --git a/test/unit/bootstrap.js b/test/unit/bootstrap.js index ec63468c58..0337dd21c8 100644 --- a/test/unit/bootstrap.js +++ b/test/unit/bootstrap.js @@ -1,4 +1,28 @@ import fetch from 'node-fetch'; +import Fetcher from 'Provider/Fetcher'; +import fs from 'fs/promises'; + +Fetcher.json = async (url) => { + try { + const localURL = url.split('file://')[1] ? url.split('file://')[1] : url; + const data = await fs.readFile(localURL, { encoding: 'utf8' }); + return JSON.parse(data); + } catch (err) { + console.warn(err); + throw err; + } +}; + +Fetcher.arrayBuffer = async (url) => { + try { + const localURL = url.split('file://')[1] ? url.split('file://')[1] : url; + const data = await fs.readFile(localURL, null); + return data.buffer; + } catch (err) { + console.warn(err); + throw err; + } +}; global.window = { addEventListener: () => {}, diff --git a/test/unit/entwine.js b/test/unit/entwine.js index 2de8539ce2..d45d81cbcf 100644 --- a/test/unit/entwine.js +++ b/test/unit/entwine.js @@ -10,7 +10,8 @@ import Renderer from './bootstrap'; describe('Entwine Point Tile', function () { const source = new EntwinePointTileSource({ - url: 'https://raw.githubusercontent.com/iTowns/iTowns2-sample-data/master/pointclouds/entwine', + // url: 'https://raw.githubusercontent.com/iTowns/iTowns2-sample-data/master/pointclouds/entwine', + url: 'test/data/unitTest/entwine', networkOptions: process.env.HTTPS_PROXY ? { agent: new HttpsProxyAgent(process.env.HTTPS_PROXY) } : {}, }); diff --git a/test/unit/featuregeometrylayer.js b/test/unit/featuregeometrylayer.js index 8f1178e1a3..539f514c50 100644 --- a/test/unit/featuregeometrylayer.js +++ b/test/unit/featuregeometrylayer.js @@ -12,20 +12,15 @@ import Style from 'Core/Style'; import Renderer from './bootstrap'; describe('Layer with Feature process', function () { - const renderer = new Renderer(); + const urlFilesource = 'test/data/unitTest/filesource/departement-09-ariege.geojson'; + const renderer = new Renderer(); const placement = { coord: new Coordinates('EPSG:4326', 1.5, 43), range: 300000 }; const viewer = new GlobeView(renderer.domElement, placement, { renderer }); const source = new FileSource({ - url: 'https://raw.githubusercontent.com/gregoiredavid/france-geojson/master/departements/09-ariege/departement-09-ariege.geojson', - crs: 'EPSG:4326', - format: 'application/json', - networkOptions: process.env.HTTPS_PROXY ? { agent: new HttpsProxyAgent(process.env.HTTPS_PROXY) } : {}, - }); - - const source2 = new FileSource({ - url: 'https://raw.githubusercontent.com/gregoiredavid/france-geojson/master/departements/09-ariege/departement-09-ariege.geojson', + // url: 'https://raw.githubusercontent.com/gregoiredavid/france-geojson/master/departements/09-ariege/departement-09-ariege.geojson', + url: urlFilesource, crs: 'EPSG:4326', format: 'application/json', networkOptions: process.env.HTTPS_PROXY ? { agent: new HttpsProxyAgent(process.env.HTTPS_PROXY) } : {}, @@ -44,7 +39,7 @@ describe('Layer with Feature process', function () { }); const ariegeNoProj4 = new FeatureGeometryLayer('ariegeNoProj4', { - source: source2, + source, accurate: false, style: new Style({ fill: { @@ -76,6 +71,7 @@ describe('Layer with Feature process', function () { done(); }).catch(done); }); + it('update', function (done) { ariege.whenReady .then(() => { diff --git a/test/unit/geoidlayer.js b/test/unit/geoidlayer.js index b4f7d51d96..e90a8fe403 100644 --- a/test/unit/geoidlayer.js +++ b/test/unit/geoidlayer.js @@ -14,11 +14,11 @@ describe('GlobeView', function () { const renderer = new Renderer(); const placement = { coord: new Coordinates('EPSG:4326', 4.631512, 43.675626), range: 3919 }; const view = new GlobeView(renderer.domElement, placement, { renderer }); - const url = 'https://raw.githubusercontent.com/iTowns/iTowns2-sample-data/master/altitude-conversion-grids/RAF20_float.gtx'; - + // const url = 'https://raw.githubusercontent.com/iTowns/iTowns2-sample-data/master/altitude-conversion-grids/RAF20_float.gtx'; + const urlGTXFile = 'test/data/unitTest/filesource/RAF20_float.gtx'; const geoidSource = new FileSource({ - url, + url: urlGTXFile, crs: 'EPSG:4326', format: 'application/gtx', networkOptions: process.env.HTTPS_PROXY ? { agent: new HttpsProxyAgent(process.env.HTTPS_PROXY) } : {}, diff --git a/test/unit/gtx.js b/test/unit/gtx.js index 3905422d92..09f21fa9ee 100644 --- a/test/unit/gtx.js +++ b/test/unit/gtx.js @@ -6,12 +6,13 @@ import Fetcher from 'Provider/Fetcher'; describe('GTXParser', function () { let buffer; + const url = 'test/data/unitTest/filesource'; + const GTXFile = 'RAF20_float.gtx'; before(async () => { const networkOptions = process.env.HTTPS_PROXY ? { agent: new HttpsProxyAgent(process.env.HTTPS_PROXY) } : {}; buffer = await Fetcher.arrayBuffer( - 'https://raw.githubusercontent.com/iTowns/iTowns2-sample-data/master/altitude-conversion-grids/' + - 'RAF20_float.gtx', + `${url}/${GTXFile}`, networkOptions, ); }); diff --git a/test/unit/lasparser.js b/test/unit/lasparser.js index 8139bf8173..84b582fca7 100644 --- a/test/unit/lasparser.js +++ b/test/unit/lasparser.js @@ -7,10 +7,11 @@ import { compareWithEpsilon } from './utils'; describe('LASParser', function () { let lasData; let lazData; + // const baseurl = 'https://raw.githubusercontent.com/iTowns/iTowns2-sample-data/master/pointclouds/'; + const baseurl = 'test/data/unitTest/pointclouds/'; before(async () => { const networkOptions = process.env.HTTPS_PROXY ? { agent: new HttpsProxyAgent(process.env.HTTPS_PROXY) } : {}; - const baseurl = 'https://raw.githubusercontent.com/iTowns/iTowns2-sample-data/master/pointclouds/'; lazData = await Fetcher.arrayBuffer(`${baseurl}data_test.laz`, networkOptions); lasData = await Fetcher.arrayBuffer(`${baseurl}data_test.las`, networkOptions); }); diff --git a/test/unit/orientedimagelayer.js b/test/unit/orientedimagelayer.js index 7eeb21460c..1531e5860b 100644 --- a/test/unit/orientedimagelayer.js +++ b/test/unit/orientedimagelayer.js @@ -5,6 +5,7 @@ import OrientedImageSource from 'Source/OrientedImageSource'; import { HttpsProxyAgent } from 'https-proxy-agent'; import Coordinates from 'Core/Geographic/Coordinates'; import GlobeView from 'Core/Prefab/GlobeView'; +import path from 'path'; import Renderer from './bootstrap'; describe('Oriented Image Layer', function () { @@ -22,14 +23,19 @@ describe('Oriented Image Layer', function () { sseSubdivisionThreshold: 10, }); + const orientationsUrl = path.join(process.cwd(), 'test', 'data', 'unitTest', 'OrientedImage', 'panoramicsMetaDataParis.geojson'); + const calibrationUrl = path.join(process.cwd(), 'test', 'data', 'unitTest', 'OrientedImage', 'cameraCalibration.json'); + // Prepare oriented image source const orientedImageSource = new OrientedImageSource({ url: 'http://www.itowns-project.org/itowns-sample-data-small/images/140616/Paris-140616_0740-{cameraId}-00001_0000{panoId}.jpg', - // Url to a GEOJSON file describing feature points. It describre position and orientation of each panoramic. - orientationsUrl: 'https://raw.githubusercontent.com/iTowns/iTowns2-sample-data/master/immersive/exampleParis1/panoramicsMetaDataParis.geojson', + // Url to a GEOJSON file describing feature points. It describes position and orientation of each panoramic. + // orientationsUrl: 'https://raw.githubusercontent.com/iTowns/iTowns2-sample-data/master/immersive/exampleParis1/panoramicsMetaDataParis.geojson', + orientationsUrl, // Url of a a JSON file with calibration for all cameras. see [CameraCalibrationParser]{@link module:CameraCalibrationParser.parse} // in this example, we have the ladybug, it's a set of 6 cameras - calibrationUrl: 'https://raw.githubusercontent.com/iTowns/iTowns2-sample-data/master/immersive/exampleParis1/cameraCalibration.json', + calibrationUrl, + // calibrationUrl: 'https://raw.githubusercontent.com/iTowns/iTowns2-sample-data/master/immersive/exampleParis1/cameraCalibration.json', networkOptions: process.env.HTTPS_PROXY ? { agent: new HttpsProxyAgent(process.env.HTTPS_PROXY) } : {}, }); diff --git a/test/unit/potree.js b/test/unit/potree.js index 27a27c714b..23a829f450 100644 --- a/test/unit/potree.js +++ b/test/unit/potree.js @@ -11,6 +11,8 @@ import OrientedImageMaterial from 'Renderer/OrientedImageMaterial'; import Renderer from './bootstrap'; describe('Potree', function () { + const url = 'test/data/unitTest/potree'; + const placement = { coord: new Coordinates('EPSG:4326', 4.631512, 43.675626), range: 250 }; let renderer; let viewer; @@ -22,13 +24,15 @@ describe('Potree', function () { renderer = new Renderer(); viewer = new GlobeView(renderer.domElement, placement, { renderer }); + const source = new PotreeSource({ + file: 'eglise_saint_blaise_arles.json', + url, + networkOptions: process.env.HTTPS_PROXY ? { agent: new HttpsProxyAgent(process.env.HTTPS_PROXY) } : {}, + }); + // Configure Point Cloud layer potreeLayer = new PotreeLayer('eglise_saint_blaise_arles', { - source: new PotreeSource({ - file: 'eglise_saint_blaise_arles.js', - url: 'https://raw.githubusercontent.com/gmaillet/dataset/master/', - networkOptions: process.env.HTTPS_PROXY ? { agent: new HttpsProxyAgent(process.env.HTTPS_PROXY) } : {}, - }), + source, onPointsCreated: () => {}, crs: viewer.referenceCrs, }); diff --git a/test/unit/potreelayerparsing.js b/test/unit/potreelayerparsing.js index e752effeeb..886673105a 100644 --- a/test/unit/potreelayerparsing.js +++ b/test/unit/potreelayerparsing.js @@ -8,107 +8,121 @@ import { HttpsProxyAgent } from 'https-proxy-agent'; import Renderer from './bootstrap'; describe('Potree Provider', function () { + const url = 'test/data/unitTest/potree'; + const renderer = new Renderer(); const placement = { coord: new Coordinates('EPSG:4326', 1.5, 43), range: 300000 }; const view = new GlobeView(renderer.domElement, placement, { renderer }); - it('should correctly parse normal information in cloud', function (done) { - // No normals - const cloud = { - boundingBox: { lx: 0, ly: 1, ux: 2, uy: 3 }, - scale: 1.0, - pointAttributes: ['POSITION', 'RGB'], - octreeDir: 'eglise_saint_blaise_arles', - }; + describe('cloud information parsing', function _() { + it('cloud with no normal information', function _it(done) { + // No normals + const cloud = { + boundingBox: { lx: 0, ly: 1, ux: 2, uy: 3 }, + scale: 1.0, + pointAttributes: ['POSITION', 'RGB'], + octreeDir: 'eglise_saint_blaise_arles', + }; - const layers = []; - let source = new PotreeSource({ - file: 'eglise_saint_blaise_arles.js', - url: 'https://raw.githubusercontent.com/gmaillet/dataset/master/', - networkOptions: process.env.HTTPS_PROXY ? { agent: new HttpsProxyAgent(process.env.HTTPS_PROXY) } : {}, - cloud, - }); + const source = new PotreeSource({ + file: 'eglise_saint_blaise_arles.json', + url, + // url: 'https://raw.githubusercontent.com/gmaillet/dataset/master/', + networkOptions: process.env.HTTPS_PROXY ? { agent: new HttpsProxyAgent(process.env.HTTPS_PROXY) } : {}, + cloud, + }); - const layer1 = new PotreeLayer('pointsCloud1', { source, crs: view.referenceCrs }); - layers.push(layer1); - const p1 = layer1.whenReady.then((l) => { - const normalDefined = l.material.defines.NORMAL || l.material.defines.NORMAL_SPHEREMAPPED || l.material.defines.NORMAL_OCT16; - assert.ok(!normalDefined); + const layer = new PotreeLayer('pointsCloudNoNormal', { source, crs: view.referenceCrs }); + View.prototype.addLayer.call(view, layer); + layer.whenReady.then((l) => { + const normalDefined = l.material.defines.NORMAL || l.material.defines.NORMAL_SPHEREMAPPED || l.material.defines.NORMAL_OCT16; + assert.ok(!normalDefined); + done(); + }).catch(done); }); - // // // normals as vector - source = new PotreeSource({ - file: 'eglise_saint_blaise_arles.js', - url: 'https://raw.githubusercontent.com/gmaillet/dataset/master/', - networkOptions: process.env.HTTPS_PROXY ? { agent: new HttpsProxyAgent(process.env.HTTPS_PROXY) } : {}, - cloud: { + it('cloud with normals as vector', function _it(done) { + // // // // normals as vector + const cloud = { boundingBox: { lx: 0, ly: 1, ux: 2, uy: 3 }, scale: 1.0, pointAttributes: ['POSITION', 'NORMAL', 'CLASSIFICATION'], octreeDir: 'eglise_saint_blaise_arles', - }, - }); + }; - const layer2 = new PotreeLayer('pointsCloud2', { source, crs: view.referenceCrs }); - layers.push(layer2); - const p2 = layer2.whenReady.then((l) => { - assert.ok(l.material.defines.NORMAL); - assert.ok(!l.material.defines.NORMAL_SPHEREMAPPED); - assert.ok(!l.material.defines.NORMAL_OCT16); + const source = new PotreeSource({ + file: 'eglise_saint_blaise_arles.json', + url, + // url: 'https://raw.githubusercontent.com/gmaillet/dataset/master/', + networkOptions: process.env.HTTPS_PROXY ? { agent: new HttpsProxyAgent(process.env.HTTPS_PROXY) } : {}, + cloud, + }); + + const layer = new PotreeLayer('pointsCloud2', { source, crs: view.referenceCrs }); + View.prototype.addLayer.call(view, layer); + layer.whenReady.then((l) => { + assert.ok(l.material.defines.NORMAL); + assert.ok(!l.material.defines.NORMAL_SPHEREMAPPED); + assert.ok(!l.material.defines.NORMAL_OCT16); + done(); + }).catch(done); }); - // // spheremapped normals - source = new PotreeSource({ - file: 'eglise_saint_blaise_arles.js', - url: 'https://raw.githubusercontent.com/gmaillet/dataset/master/', - networkOptions: process.env.HTTPS_PROXY ? { agent: new HttpsProxyAgent(process.env.HTTPS_PROXY) } : {}, - cloud: { + it('cloud with spheremapped normals', function _it(done) { + // // spheremapped normals + const cloud = { boundingBox: { lx: 0, ly: 1, ux: 2, uy: 3 }, scale: 1.0, pointAttributes: ['POSITION', 'COLOR_PACKED', 'NORMAL_SPHEREMAPPED'], octreeDir: 'eglise_saint_blaise_arles', - }, - }); - const layer3 = new PotreeLayer('pointsCloud3', { source, crs: view.referenceCrs }); + }; + const source = new PotreeSource({ + file: 'eglise_saint_blaise_arles.json', + url, + // url: 'https://raw.githubusercontent.com/gmaillet/dataset/master/', + networkOptions: process.env.HTTPS_PROXY ? { agent: new HttpsProxyAgent(process.env.HTTPS_PROXY) } : {}, + cloud, + }); + const layer = new PotreeLayer('pointsCloud3', { source, crs: view.referenceCrs }); + View.prototype.addLayer.call(view, layer); - layers.push(layer3); - const p3 = layer3.whenReady.then((l) => { - assert.ok(!l.material.defines.NORMAL); - assert.ok(l.material.defines.NORMAL_SPHEREMAPPED); - assert.ok(!l.material.defines.NORMAL_OCT16); + layer.whenReady.then((l) => { + assert.ok(!l.material.defines.NORMAL); + assert.ok(l.material.defines.NORMAL_SPHEREMAPPED); + assert.ok(!l.material.defines.NORMAL_OCT16); + done(); + }).catch(done); }); - // // oct16 normals - source = new PotreeSource({ - file: 'eglise_saint_blaise_arles.js', - url: 'https://raw.githubusercontent.com/gmaillet/dataset/master/', - networkOptions: process.env.HTTPS_PROXY ? { agent: new HttpsProxyAgent(process.env.HTTPS_PROXY) } : {}, - cloud: { + it('cloud with oct16 normals', function _it(done) { + // // // oct16 normals + const cloud = { boundingBox: { lx: 0, ly: 1, ux: 2, uy: 3 }, scale: 1.0, pointAttributes: ['POSITION', 'COLOR_PACKED', 'CLASSIFICATION', 'NORMAL_OCT16'], octreeDir: 'eglise_saint_blaise_arles', - }, - }); - const layer4 = new PotreeLayer('pointsCloud4', { source, crs: view.referenceCrs }); - - layers.push(layer4); - const p4 = layer4.whenReady - .then((l) => { - assert.ok(!l.material.defines.NORMAL); - assert.ok(!l.material.defines.NORMAL_SPHEREMAPPED); - assert.ok(l.material.defines.NORMAL_OCT16); + }; + const source = new PotreeSource({ + file: 'eglise_saint_blaise_arles.json', + url, + // url: 'https://raw.githubusercontent.com/gmaillet/dataset/master/', + networkOptions: process.env.HTTPS_PROXY ? { agent: new HttpsProxyAgent(process.env.HTTPS_PROXY) } : {}, + cloud, }); + const layer = new PotreeLayer('pointsCloud4', { source, crs: view.referenceCrs }); + View.prototype.addLayer.call(view, layer); - layers.forEach(p => View.prototype.addLayer.call(view, p)); - - Promise.all([p1, p2, p3, p4]) - .then(() => done()) - .catch(done); + layer.whenReady + .then((l) => { + assert.ok(!l.material.defines.NORMAL); + assert.ok(!l.material.defines.NORMAL_SPHEREMAPPED); + assert.ok(l.material.defines.NORMAL_OCT16); + done(); + }).catch(done); + }); }); }); - describe('getObjectToUpdateForAttachedLayers', function () { it('should correctly no-parent for the root', function () { const meta = { diff --git a/test/unit/source.js b/test/unit/source.js index 0bf85dd561..b4ee8bede1 100644 --- a/test/unit/source.js +++ b/test/unit/source.js @@ -15,8 +15,10 @@ import { HttpsProxyAgent } from 'https-proxy-agent'; describe('Sources', function () { // geojson url to parse - const urlGeojson = 'https://raw.githubusercontent.com/gregoiredavid/france-geojson/master/departements/09-ariege/departement-09-ariege.geojson'; - + // const urlFilesource = 'https://raw.githubusercontent.com/gregoiredavid/france-geojson/master/departements/09-ariege/departement-09-ariege.geojson'; + const urlFilesource = 'test/data/unitTest/filesource/departement-09-ariege.geojson'; + // const url3dTiles = 'https://raw.githubusercontent.com/iTowns/iTowns2-sample-data/master/3DTiles/lyon_1_4978/tileset.json'; + const url3dTiles = 'test/data/unitTest/3dTiles/tileset.json'; const vendorSpecific = { buffer: 4096, format_options: 'dpi:300;quantizer:octree', @@ -211,9 +213,9 @@ describe('Sources', function () { let fetchedData; describe('FileSource', function () { - it('should instance FileSource and fetch file', function (done) { + it('should instance FileSource with no source.fetchedData', function _it(done) { const source = new FileSource({ - url: urlGeojson, + url: urlFilesource, crs: 'EPSG:4326', format: 'application/json', extent: new Extent('EPSG:4326', 0, 20, 0, 20), @@ -227,7 +229,6 @@ describe('Sources', function () { assert.ok(source.urlFromExtent()); assert.ok(source.extentInsideLimit(extent)); assert.ok(source.fetchedData); - assert.ok(source.fetchedData); assert.ok(!source.features); assert.ok(source.isFileSource); fetchedData = source.fetchedData; @@ -236,7 +237,12 @@ describe('Sources', function () { }).catch(done); }); - it('should instance FileSource with fetchedData and parse data with a layer', function (done) { + it('should instance FileSource with source.fetchedData and parse data with a layer', function (done) { + // TO DO need cleareance: what is this test for ? + // - testing instanceation Filesource when fetchedData and source.feature is already available ? + // - testing instanciate Layer ? + // - testing source.onLayerAdded ? + // - testing souce.loadData ? const source = new FileSource({ fetchedData, format: 'application/json', @@ -302,18 +308,22 @@ describe('Sources', function () { describe('C3DTilesSource', function () { const params3DTiles = { - url: 'https://raw.githubusercontent.com/iTowns/iTowns2-sample-data/master/3DTiles/lyon_1_4978/tileset.json', + url: url3dTiles, }; it('should throw an error for having no required parameters', function () { assert.throws(() => new C3DTilesSource({}), Error); }); - it('should instance C3DTilesSource', function () { + it('should instance C3DTilesSource', function (done) { const source = new C3DTilesSource(params3DTiles); - assert.ok(source.isC3DTilesSource); - assert.strictEqual(source.url, params3DTiles.url); - assert.strictEqual(source.baseUrl, 'https://raw.githubusercontent.com/iTowns/iTowns2-sample-data/master/3DTiles/lyon_1_4978/'); + source.whenReady + .then(() => { + assert.ok(source.isC3DTilesSource); + assert.strictEqual(source.url, params3DTiles.url); + assert.strictEqual(source.baseUrl, params3DTiles.url.slice(0, params3DTiles.url.lastIndexOf('/') + 1)); + done(); + }).catch(done); }); }); diff --git a/test/unit/vectortiles.js b/test/unit/vectortiles.js index fbdfc9b2d2..8faf680df4 100644 --- a/test/unit/vectortiles.js +++ b/test/unit/vectortiles.js @@ -150,18 +150,21 @@ describe('Vector tiles', function () { }); }); - it('loads the style from a file', function _(done) { + it('loads the style from a file', function _it(done) { + const style = 'test/data/unitTest/vectortiles/style.json'; const source = new VectorTilesSource({ - style: 'https://raw.githubusercontent.com/iTowns/iTowns2-sample-data/master/vectortiles/style.json', + // style: 'https://raw.githubusercontent.com/iTowns/iTowns2-sample-data/master/vectortiles/style.json', + style, networkOptions: process.env.HTTPS_PROXY ? { agent: new HttpsProxyAgent(process.env.HTTPS_PROXY) } : {}, }); - source.whenReady.then(() => { - assert.equal(source.styles.land.fill.color, 'rgb(255,0,0)'); - assert.equal(source.styles.land.fill.opacity, 1); - assert.equal(source.styles.land.zoom.min, 5); - assert.equal(source.styles.land.zoom.max, 13); - done(); - }); + source.whenReady + .then(() => { + assert.equal(source.styles.land.fill.color, 'rgb(255,0,0)'); + assert.equal(source.styles.land.fill.opacity, 1); + assert.equal(source.styles.land.zoom.min, 5); + assert.equal(source.styles.land.zoom.max, 13); + done(); + }).catch(done); }); it('sets the correct Style#zoom.min', (done) => {