合并熊猫数据帧(三角形光栅化)

问题描述 投票:0回答:0

我正在尝试将某个 h5 数据集栅格化为三角形网格。我想避免使用 QGIS,因为加载结果很耗时,所以我试图用 python 来实现。

我将值导入为 numpy 数组并将其转换为 pandas 数据框,如下所示

import h5py
import numpy as np

f = h5py.File(os.path.join(path,file),'r')
DF5Obj = f['path/to/values/inside/h5/organizer']
Array = np.array(DF5Obj['some_index'])
df_Var = pd.DataFrame(Array)

结果是一个单列的 pandas 数据框。

然后,从 sam h5 文件中,我按如下方式导入三角形几何图形:

df_CellsAll = pd.DataFrame(np.array(f['/CellsAll/Topology/']))
df_CellsAll.columns = ['V1','V2','V3']
df_NodesAll = pd.DataFrame(np.array(f['/NodesAll/Coordnts/']))
df_NodesAll.columns = ['X','Y','Z']

生成的数据帧在下文中报告。

df_CellsAll
包含顶点,即点的 ID,组成三角形(1 行 = 1 个三角形)

           V1      V2      V3
0        3074   11298    2755
1       22113   19404    2938
2        2893   20785   13879
3       20472   21061   21064
4        2846    2768   11299
...       ...     ...     ...
349018  60356  175663  175664
349019  60392   68597  175665
349020  68597   61994  175665
349021  84310   76828  175666
349022  76828   86305  175666

df_NodesAll
包含点的坐标(1行=1点)

                    X             Y           Z
0       730276.367143  5.088697e+06  305.546265
1       730275.790000  5.088697e+06  305.191101
2       730058.090233  5.088762e+06  271.104492
3       730049.725534  5.088758e+06  270.111938
4       729794.066720  5.088584e+06  228.502640
...               ...           ...         ...
175662  730145.876109  5.088131e+06  293.498749
175663  729111.338338  5.088125e+06  179.040268
175664  729110.993515  5.088128e+06  178.975510
175665  729877.943429  5.088636e+06  241.432709
175666  730142.940335  5.088687e+06  286.965424

我想做的是结合

df_CellsAll
df_NodesAll
生成一个新的DataFrame(
df_Triangles
),它类似于df_CellsAll,但包含每个顶点的(X,Y)坐标。

以这种方式

join
merge
两个 pandas 数据帧的最佳方法是什么?我可以遍历数据框行,但有没有办法更有效地做到这一点,或者我是否面临无法避免迭代的问题?

我的问题的更多背景信息:

我这样做的原因是因为我想创建一个栅格并根据结果 df 中包含的值对每个像素的值进行插值。可能是一个三角形包含超过 1 个像素,所以我的想法是:

  1. 在我的新 df 中定义每一行的质心坐标;
  2. 将我想用于栅格的变量值分配给质心(只需将
    df_Var
    df 附加到新的);
  3. 根据顶点坐标和像素大小构建空栅格
  4. 使用质心的值使用算法(IDW、TIN、Kriging ...)对空栅格的值进行插值。

如果有人认为有更好的方法从 h5 文件中插入栅格,我很乐意收到任何建议。

python pandas dataframe raster
© www.soinside.com 2019 - 2024. All rights reserved.