API Documentation

Reader

class papotch.reader.Reader(uri: str | Path | bytes, layer: int | str | None = None, encoding: str | None = None, columns: str | Sequence[str] | None = None, where: str | None = None, max_features: int | None = None, bbox: tuple[float, float, float, float] | None = None, **kwargs)

Class extracting Data using the polars_st read_file() function.

Parameters:
  • uri (str | Path | bytes) – Path to the data source

  • layer (int | str | None = None) – Index or name of the layer to read

  • encoding (str | None = None) – Data encoding

  • columns (str | Sequence[str] | None = None) – Column(s) to read from the source

  • where (str | None = None) – SQL condition to filter data

  • max_features – Maximum number of features to read

  • bbox (tuple[float, float, float, float] | None = None) – Bounding box spatially filtering read data

extract(active_geometry: str = 'geometry') Data

Extract data using the polars_st read_file() function.

Parameters:

active_geometry (str) – Active geometry name of the returned Data. Default to “geometry”

property bbox: tuple[float, float, float, float] | None
property columns: str | Sequence[str] | None
property encoding: str | None
property layer: int | str | None
property max_features: int | None
property uri: str | Path | bytes
property where: str | None

Data

class papotch.data.Data(df: DataFrame, active_geometry: str = 'geometry')

The central class holding the data.

This is a thin wrapper around a polars DataFrame, passed from polars_st.

Parameters:
  • df (polars.DataFrame) – The DataFrame to be processed.

  • active_geometry (str) – The current geometry column used for the processing.

affine_transform(matrix: Sequence[float]) Data
area(column_name: str = '_area') None
attribute_join(other: DataFrame, left_on: str, right_on: str, how: str = 'inner') Data
boundary() Data
bounds(column_name: str = '_bounds') None
buffer(distance: float) Data
build_area() Data
calculate_attribute(*exprs, **named_exprs) Data
center() Data
centroid() Data
clip_by_rect(rect: tuple[float, float, float, float]) Data
clone()
collect(into: Literal['Unknown', 'Point', 'LineString', 'Polygon', 'MultiPoint', 'MultiLineString', 'MultiPolygon', 'GeometryCollection', 'CircularString', 'CompoundCurve', 'CurvePolygon', 'MultiCurve', 'MultiSurface', 'Curve', 'Surface', 'PolyhedralSurface', 'Tin', 'Triangle'] | None = None) Data
concave_hull() Data
convex_hull() Data
coordinate_dimension(column_name: str = '_coord_dim') None
coordinates(column_name: str = '_coord') None
count_coordinates(column_name: str = '_n_coord') None
count_geometries(column_name: str = '_n_geom') None
count_interior_rings(column_name: str = '_n_rings') None
count_points(column_name: str = '_n_points') None
coverage_union_all() Data
delaunay_triangles(tolerance: float = 0.0, only_edges: bool = False) Data
difference_all(grid_size: float | None = None) Data
dimensions(column_name: str = '_dimensions') None
distance(other: Data, column_name: str = '_distance') None
drop_attribute(attributes: list[str] | str) Data
envelope() Data
explore()
exterior_ring(column_name: str = '_ext_ring') Data
extract_unique_points() Data
filter_attribute(*args, **kwargs) Data
flip_xy() Data
force_2d() Data
force_3d(default_z: float) Data
frechet_distance(other: Data, density: float, column_name: str = '_frechet') Data
geometry_type(column_name: str = '_geom_type') None
get_nth_geometry(column_name: str = '_nth_geom', index: int = 0) Data
get_nth_interior_ring(column_name: str = '_nth_ring', index: int = 0) Data
get_nth_point(column_name: str = '_nth_point', index: int = 0) Data
group_by_attributes(columns: Sequence[str], geom_agg: Literal['coverage_union', 'union', 'difference', 'symmetric_difference', 'collect', 'intersection', 'total_bounds'] = 'coverage_union')
group_by_collect(columns: Sequence[str]) Data
group_by_coverage_union() Data
group_by_difference() Data
group_by_intersection(columns: Sequence[str]) Data
group_by_union() Data
has_m(column_name: str = '_has_m') Data
has_z(column_name: str = '_has_z') Data
hausdorff_distance(other: Data, density: float, column_name: str = '_hausdorff') None
head(n: int = 5) None

Print the first lines of Data.

Parameters:

n (int) – The number of rows to print

interior_rings(column_name: str = '_int_rings') None
interpolate(distance: float, normalize: bool) Data
intersection_all(grid_size: float | None = None) Data
is_ccw(column_name: str = '_is_ccw') Data
is_closed(column_name: str = '_is_closed') Data
is_empty(column_name: str = '_is_empty') Data
is_ring(column_name: str = '_is_ring') Data
is_simple(column_name: str = '_is_simple') Data
is_valid(column_name: str = '_is_valid') Data
is_valid_reason(column_name: str = '_is_val_r') Data
length(column_name: str = '_length') None
line_merge(directed: bool) Data
m(column_name: str = '_m') None
make_valid() Data
minimum_clearance(column_name: str = '_min_clear') None
minimum_rotated_rectangle() Data
multi() Data
node() Data
normalize() Data
offset_curve(distance: float, quad_segs: int = 8, join_style: Literal['round', 'mitre', 'bevel'] = 'round', mitre_limit: float = 5.0) Data
plot(**kwargs)
point_on_surface() Data
polygonize() Data
precision(column_name: str = '_precision') None
project(other: Data, normalize: bool) Data
remove_repeated_points() Data
rename_attribute(attribute: str, new_name: str) Data
reverse() Data
rotate(angle: float, origin: Literal['center', 'centroid'] | Sequence[float] = 'center') Data
scale(x: float, y: float, z: float, origin: Literal['center', 'centroid'] | Sequence[float] = 'center') Data
segmentize(max_length: float) Data
set_precision(grid_size: float, mode: Literal['valid_output', 'no_topo', 'keep_collapsed'] = 'valid_output') Data
set_srid(srid: int) Data
shared_paths(other: Data) Data
simplify(tolerance: float, preserve_topology: bool) Data
skew(x: float, y: float, z: float, origin: Literal['center', 'centroid'] | Sequence[float] = 'center') Data
snap(other: Data, tolerance: float) Data
spatial_join(other: DataFrame, predicate: str, how: str = 'inner') Data
srid(column_name: str = '_srid') Data
substring(start: int, end: int) Data
symmetric_difference_all(grid_size: float | None = None) Data
tail(n: int = 5) None

Print the last lines of Data.

Parameters:

n (int) – The number of rows to print

to_dict(column_name: str = '_dict') Data
to_ewkt(column_name: str = '_ewkt') Data
to_geojson(column_name: str = '_geojson') Data
to_shapely(column_name: str = '_shapely') Data
to_srid(srid: int) Data
to_wkt(column_name: str = '_wkt') Data
total_bounds() Data
translate(x: float = 0.0, y: float = 0.0, z: float = 0.0) Data
unary_union(grid_size: float) Data
union(other: Data, grid_size: float | None = None) Data
union_all(grid_size: float | None = None) Data
voronoi_polygons(tolerance: float = 0.0, extend_to: bytes | None = None, only_edges: bool = False) Data
write(path: str, layer: str, driver: str, **kwargs) None
write_geojson(path: str, **kwargs) None
write_gpkg(path: str, layer: str | None = '_layer', **kwargs) None
write_postgis(uri: str, layer: str, **kwargs) None
write_shapefile(path: str, **kwargs) None
x(column_name: str = '_x') None
y(column_name: str = '_y') None
z(column_name: str = '_z') None
property active_geometry: str

Return the name of the active geometry.

Returns:

The name of the active geometry

Return type:

str

property df: DataFrame

Return the underlying DataFrame.

Returns:

The polars DataFrame hosting the data

Return type:

polars.DataFrame

property extent: Data

Return the extent of the DataFrame.

Returns:

A Data with a single rectangle geometry

Return type:

Data

property schema: dict

Return the schema of the Data instance.

Returns:

The dictionnary of the field names and types

Return type:

dict

property shape: tuple[int, int]

Return the shape of the Data instance.

Returns:

The number of lines and columns of the Data

Return type:

tuple[int, int]