Source code for ecoscope.base.ecodataframe

import warnings
from copy import deepcopy

import geopandas as gpd  # type: ignore[import-untyped]


[docs] class EcoDataFrame: """ `EcoDataFrame` wraps `geopandas.GeoDataFrame` to provide customizations and allow for simpler extension. """ def __init__(self, gdf: gpd.GeoDataFrame): self.gdf = gdf
[docs] @classmethod def from_file(cls, filename, **kwargs): result = gpd.GeoDataFrame.from_file(filename, **kwargs) return cls(result)
[docs] @classmethod def from_features(cls, features, **kwargs): result = gpd.GeoDataFrame.from_features(features, **kwargs) return cls(result)
[docs] def reset_filter(self, inplace=False): if inplace: frame = self else: frame = deepcopy(self) frame.gdf["junk_status"] = False if not inplace: return frame
[docs] def remove_filtered(self, inplace=False): if inplace: frame = self else: frame = deepcopy(self) if not frame.gdf["junk_status"].dtype == bool: warnings.warn( f"junk_status column is of type {frame.gdf['junk_status'].dtype}, expected `bool`. " "Attempting to automatically convert." ) frame.gdf["junk_status"] = frame.gdf["junk_status"].astype(bool) frame.gdf.query("~junk_status", inplace=True) if not inplace: return frame