Tessellation Example : breaking a shape into smaller tiles

I’m trying to use the Tessellation capabilities of Orekit so that I can divide a larger area into smaller fixed area tiles (say 10×10 km^2) in order to perform satellite passage prediction over them.
My satellite has swath width of 20 km at 500 km.

I’m not able to find any example for using EllipsoidTessellator class for creating these tiles!

        final  EllipsoidTessellator tessellator = new EllipsoidTessellator(shape,aiming,4);

I’ve put int quantization value as 4 (taken from an example: DOPComputation), what should be correct value for this ?

public List<List<Tile>> tessellate(SphericalPolygonsSet zone, double fullWidth, double fullLength, double widthOverlap, double lengthOverlap, boolean truncateLastWidth, boolean truncateLastLength)

What are the parameters fullWidth, widthOverlap, truncateLastWidth in above function means here?
Is there any documentation I can look into for the same?

4 is a good value for quantization. Basically, it means that if the final tiles you want are say 10kmx10km, then the internal computation will be performed on a grid 2.5km x 2.5km (i.e. the dimensions you give for the final grid divided by the quantization factor), and then on this finer grid the algorithm will select the best 10kmx10km grid, for example to balance the grid with respect to the zone. So the larger the quantization factor is, the better the tiles will be, but the tesselation will take more time to compute as it needs to evaluate more candidate points.

The fullWidth and fullLength are the tile dimension on ground (both set to 10km in your example). The widthOverlap and lengthOverlap specify how tiles are joined together. Setting these values to 0 means that each tile starts exactly where the neighboring tile ends. Setting these values to a positive value (say 1km) means that each tile will orverlap the adjacent tiles. Setting these values to a negative value means tiles will be separated from each other. Negative values are generally not used, but either 0 or a small positive value are often used.

TruncateLastWidth and TruncateLastLength are used to select how “best” tiles are selected using the quantization parameter. If these parameters are set to false (i.e. no truncation), then all tiles will always have exactly the full width and full length as specified. Then if the zone of interest is smaller than the tiles, the algorithm will attempt to balance the margin between the zone and the tiles, moving the tiles either along the aiming direction or across the aiming direction. If on the other hand these parameters are set to true (i.e. truncation), then the first tile will be selected to start very close to the beginning of the zone, and the last tile will be shortened to be just after the end of the zone, hence it will be smaller than the other tiles.

2 Likes

The documentation (admitedly terse) is available here:
Orekit – Tessellation

In the top level picture, the margin parameters have been set to -5km (i.e. a negative value, which as said before is not really useful, but at least allows the picture to be more understandable). The truncation parameters have been set to true, and in this case the tiling was done on a descending orbit (i.e. from North to South), so you see the tiles at the South are shorter than the tiles in the North or in the center.

Also beware that dimensions are specified in SI units that correspond to distances on the body surface. So in your case you should use 10000m x 10000m to define your tiles.

Thanks for explaining so elaborately, I deduced the same information with some guess :slight_smile: but now it’s much clearer. Thanks alot