astrolabsoftware / spark3D

Spark extension for processing large-scale 3D data sets: Astrophysics, High Energy Physics, Meteorology, …
https://astrolabsoftware.github.io/spark3D/
Apache License 2.0
30 stars 16 forks source link

Partitioning using Healpix: the onion space #11

Open JulienPeloton opened 6 years ago

JulienPeloton commented 6 years ago

Here is the current idea for partitioning the space.

healpix_partitioning

JulienPeloton commented 6 years ago

The equivalent of Envelope in JTS will be Sphere here. The difference between 2 concentric spheres will define the elements of the grid (from the partition point of view). In a sense, we will have a onion space!

JulienPeloton commented 6 years ago

With the current implementation, we have:

// Initialise our space:
// z_min = 0.0, z_max = 1.0, with splits every dZ = 0.1.
val partitioning = new OnionPartitioning
partitioning.LinearOnionPartitioning(0.0, 1.0, 0.1)

// Grab the grid elements
val grids = partitioning.getGrids

// Build our partitioner
val partitioner = new OnionPartitioner(GridType.LINEARONIONGRID, grids)

// Draw a point and place it on our grid
val p = new Point3D(0.0, 0.0, 0.45)
val iterator = partitioner.placeObject(p)
JulienPeloton commented 6 years ago

Still plenty of TODOs, but things are moving forward (see https://github.com/JulienPeloton/spark3D/pull/12). Random thoughts:

ChrisArnault commented 6 years ago

Z-Shells may be ordered

JulienPeloton commented 6 years ago

https://github.com/JulienPeloton/spark3D/issues/25