During ingest, the index returns a set of insertion IDs for a given geometry. Each ID is associated with a grid cell. The system checks to see if each grid cell intersects the geometry. Up to four grid cells are returned (quad) if the geometry does not fit into one grid cell. In oddly shaped geometries, not all four grid cells may intersect.
The intersection logic built a small (EPSILON) buffer around the grid cell using the Geometry.buffer to compensate for precision errors. In this simple case, this turns out to be very expensive. Instead, the replacement extends grid cell boundaries by adding/subtracting EPSILON boundaries manually.
During ingest, the index returns a set of insertion IDs for a given geometry. Each ID is associated with a grid cell. The system checks to see if each grid cell intersects the geometry. Up to four grid cells are returned (quad) if the geometry does not fit into one grid cell. In oddly shaped geometries, not all four grid cells may intersect.
The intersection logic built a small (EPSILON) buffer around the grid cell using the Geometry.buffer to compensate for precision errors. In this simple case, this turns out to be very expensive. Instead, the replacement extends grid cell boundaries by adding/subtracting EPSILON boundaries manually.