Supported operations

Contents

Supported operations#

GeoUtils supports scalable execution for most of its raster methods, including nearly all raster–point and raster–vector interface operations. Support for vector and point-cloud accessors is partially supported through Dask-GeoPandas and under development.

Chunked implementations can run through either Dask (via the Xarray and Pandas accessors) or Multiprocessing (via GeoUtils objects such as Raster).

Both object types (accessors or GeoUtils) expose the exact same API, and both chunked backends use the same internal logic, and all methods are tested to yield identical output as in-memory.

Table summary#

The table below summarizes the scalability support of GeoUtils operations with respect to their input and output behavior. Operations marked as chunked are also validated with inputs larger than the memory available to one worker.

If you are unfamiliar with chunked and lazy execution or deferred I/O, see the Concept definitions page.

Legend

  • Chunked — Processes in chunks, without loading (for input) and/or returning (for output) the full data. This is also lazy (deferred execution) when using Dask, but not when using Multiprocessing.

  • In-memory — Loads (for input) or returns (for output) full data in-memory.

  • Deferred I/O — Deferred input/output by updating internal metadata (as Xarray’s isel()).

The ⟶ symbol denotes methods interfacing from one specific object type to another, with point-cloud type shortened to “Point”. The memory usage column lists the number of input chunks loaded in memory for a given operation.

Method

Input

Output

Memory usage (# chunks)

Raster ⟶ Raster

reproject()

Chunked

Chunked

~4 (with default output chunking)

crop() / icrop()

Deferred I/O

Deferred I/O

0

translate()

Deferred I/O

Deferred I/O

0

copy()

Deferred I/O

Deferred I/O

0

filter()

Chunked

Chunked

~2–3 (if small filter window)

proximity()

In-memory

In-memory

—

Raster ⟶ Point

subsample()

Chunked

In-memory

~1

interp_at_points()

Chunked

In-memory

~1

reduce_at_points()

Chunked

In-memory

~1

Raster ⟶ Vector

polygonize()

Chunked

In-memory

~1–2

Raster ⟶ Other

plot()

In-memory

In-memory

—

stats()

In-memory

In-memory

—

Point ⟶ Point

reproject()

In-memory

In-memory

—

translate()

In-memory

In-memory

—

crop()

In-memory

In-memory

—

filter()

Chunked

Chunked

~1 point partition and nearby points within the search radius

Point ⟶ Raster

grid()

Chunked

Chunked

~1 point partition and 1 output chunk

from_pointcloud_regular()

In-memory

In-memory

—

Vector ⟶ Raster

rasterize()

In-memory

Chunked

~1

create_mask()

In-memory

Chunked

~1

Vector ⟶ Point

create_mask()

In-memory

In-memory

—

Point ⟶ Other

stats()

In-memory

In-memory

—

Note that nearly all raster inputs/outputs methods support Chunked, while point and vector inputs/outputs are currently In-memory, as often less limiting.

For more insights into chunked implementation strategies and behaviour expected for each operation, see the Implementation strategies page.