Refactor the project.

- Use setSpatialFilter() and setTemporalFilter() to choose the
  neccessary filters;

- Supports canceling the processing.