計算地質学と視覚化:Python 3 JupyterNotebookの例

今日は、地質学的モデルについて説明する代わりに、Python3のJupyterNotebook環境で、Pandas、NumPy、SciPy、XArray、Dask Distributed、Numba、VTK、PyVista、Matplotlibライブラリを使用したプログラミングの例を紹介します。これは、マルチスレッドをサポートし、ビッグデータの処理、遅延計算、結果の視覚的な3D視覚化のためにローカルおよびクラスターで実行する機能を備えた、非常にシンプルなラップトップです。確かに、私はたくさんの複雑な技術的概念をまとめて、それらを単純に保つように努めました。 Amazon AWSでクラスターを作成するには、Jupyter PythonGIS処理用のAWSInitスクリプトを参照して、インスタンスのセットを作成し、マスターインスタンスでリソーススケジューラを一度に実行します。



Visualization Toolkit(VTK)とPyVistaを使用した視覚化はMatplotlibではなくなりました







, , , , ( ) . -, Python , . , , , , . , , , — , . — ( ) , , , . , Python , . , . PyVista VTK — Visualization Toolkit, … , ParaView N-Cube ParaView plugin for 3D/4D GIS Data Visualization, Python + VTK.







GitHub basic.ipynb , , . dask , . AWS Init script for Jupyter Python GIS processing . NumPy, , , , XArray NumPy (object.values). NumPy , Numba (, 15%):







from numba import jit
@jit(nopython=True, parallel=True)
def delta_grav_vertical(delta_mass, x, y, z):
    G=6.67408*1e-11
    return -np.sum((100.*1000)*G*delta_mass*z/np.power(x**2 + y**2 + z**2, 1.5))
      
      





(, , ) :







def forward_gravity(da):
    (da_y, da_x, da_z) = xr.broadcast(da.y, da.x, da.z)
    deltagrav = lambda x0, y0: delta_grav_vertical(da.values.ravel(), (da_x.values.ravel()-x0), (da_y.values.ravel()-y0), (da_z.values.ravel()-0))
    gravity = xr.apply_ufunc(deltagrav, da_x.isel(z=0).chunk(50), da_y.isel(z=0).chunk(50), vectorize=True, dask='parallelized')
    ...
      
      





xarray.broadcast ravel() x, y, z . da_x.isel(z=0) da_y.isel(z=0) x, y , (, , .. ). xarray.apply_ufunc() dask deltagrav. , XArray , dask dask , da_x.isel(z=0).chunk(50) da_y.isel(z=0).chunk(50), 50 x, y ( ). , — chunk() XArray , dask .







, dask- (), forward_gravity() , , load(). , , . , NetCDF — , . , . , dask , "".







. . , ( ), . , . ( ).







結論として、さまざまな地質モデルとBlenderおよびParaViewでの視覚化、およびさまざまな分析の例を備えたGitHubリポジトリにアクセスすることをお勧めしますYouTubeチャンネルの既製の視覚化も参照してください








All Articles