# BaseDataArray `BaseDataArray` 是对 `xarray.DataArray` 的扩展,增加了地学处理中常用的数据转换、坐标旋转与访问器能力。 ## API 总览 ### 类:`BaseDataArray` 继承:`xarray.DataArray` #### 构造函数 `__init__(data=dtypes.NA, coords=None, dims=None, name=None, attrs=None, indexes=None, fastpath=False)` **功能**:初始化一个 `BaseDataArray` 实例,参数与 `xarray.DataArray` 基本一致。 **说明**:主要作为父类透传,保留原生 DataArray 构造行为。 --- ### 访问器属性 #### `base_array` **功能**:提供 `BaseArray` 相关工具方法入口。 **说明**:通过缓存访问器注册,避免重复创建对象。 #### `plot` **功能**:提供 `BaseDataArrayPlotAccessor` 绘图能力。 **说明**:用于一对一绘图等可视化流程。 #### `quad_tree` **功能**:提供 `QuadTreeForBaseDataArray` 四叉树处理能力。 **说明**:可用于网格分块、分辨率控制等场景。 #### `signal_detector` **功能**:提供 `SignalDetector` 信号检测能力。 **说明**:使用带缓存的访问器注册(内部键名为 `jump_detector`)。 --- ### 方法 #### `to_dataset(**kwargs)` **功能**:将当前 `BaseDataArray` 转换为 `BaseDataset`。 **参数**: - `**kwargs`:透传给 `xarray.DataArray.to_dataset()`。 **返回**:`BaseDataset`。 #### `to_dataframe()` **功能**:将当前对象转换为 `BaseDataFrame`。 **参数**:无。 **返回**:`BaseDataFrame`。 #### `to_base_array()` **功能**:将当前对象封装为 `BaseArray`。 **参数**:无。 **返回**:`BaseArray`。 #### `rotate_coords(angle_deg, origin=None)` **功能**:仅旋转二维坐标系,不改变数据值。 **参数**: - `angle_deg` (`float`):逆时针旋转角度(单位:度)。 - `origin` (`tuple | None`):旋转中心 `(x0, y0)`;为 `None` 时使用网格中心。 **返回**:新的 `BaseDataArray`(坐标为旋转后的二维坐标)。 **说明**:内部调用 `cls_rotate_coords_cartesian()`。 --- ### 类方法 #### `cls_rotate_coords_cartesian(da, angle_deg, origin=None)` **功能**:对输入二维 `DataArray` 执行笛卡尔坐标旋转,仅更新坐标不修改数值。 **参数**: - `da` (`xr.DataArray`):输入二维数组(维度顺序假定为 `(y_dim, x_dim)`)。 - `angle_deg` (`float`):逆时针旋转角度(度)。 - `origin` (`tuple | None`):旋转中心 `(x0, y0)`;缺省使用网格中心。 **返回**:`BaseDataArray`。 **异常**:当 `da.ndim != 2` 时抛出 `ValueError("只支持二维 DataArray")`。 #### `create_from_numpy_or_pandas(data, columns=None, data_name=None)` **功能**:从 `numpy.ndarray` 或 `pandas.DataFrame` 构建规则网格 `BaseDataArray`。 **参数**: - `data` (`pd.DataFrame | np.ndarray`):输入数据。 - `columns` (`list | None`):列名定义;用于识别坐标列与数据列。 - `data_name` (`str | None`):可选数据名(用于设置坐标中的 `name` 字段)。 **返回**:`BaseDataArray`。 **说明**:内部会进行排序、索引展开与网格化,坐标默认使用 `cnorth`、`ceast`。 ```{warning} 当前实现中 `create_from_numpy_or_pandas()` 使用了 `os.path.basename(data_name)`,但源码未显式导入 `os`。若传入 `data_name`,可能触发 `NameError`。 ``` ## 类:`BaseDataArrayList` 轻量容器类,用于管理多个 `BaseDataArray` 对象。 ### `__init__(values)` **功能**:初始化对象列表。 **参数**: - `values` (`list[BaseDataArray]`):`BaseDataArray` 实例列表。 ### `__getitem__(index)` **功能**:按索引获取 `BaseDataArray`。 **参数**: - `index` (`int`):元素索引。 **返回**:`BaseDataArray`。 ## 参考 - 相关类型:[BaseArray](BaseArray.md)