ORCA2 Grid (Projected)

On this page

ORCA2 Grid (Projected)#

This example demonstrates how to render a projected extruded curvilinear grid.

📋 まとめ#

Creates a mesh from 2D latitude and longitude curvilinear cell bounds.

出来上がったメッシュには四角形セルが含まれます。

It uses an ORCA2 global ocean with tri-polar model grid with sea water potential temperature data. The data targets the mesh faces/cells.

Note that a threshold is applied to remove land NaN cells, before the mesh is then transformed to the Mollweide pseudo-cylindrical projection and extruded to give depth to the projected surface. Finally, 10m resolution Natural Earth coastlines are also rendered.

🏷 Tags: component: coastlines component: texture domain: oceanography filter: cast filter: extrude filter: threshold load: curvilinear projection: crs projection: transform version: 0.1.0


from 2d  orca moll
from __future__ import annotations

import geovista as gv
from geovista.common import cast_UnstructuredGrid_to_PolyData as cast
from geovista.pantry.data import nemo_orca2
from geovista.transform import transform_mesh


def main() -> None:
    """Plot a projected ORCA2 curvilinear grid.

    Notes
    -----
    .. versionadded:: 0.1.0

    """
    # Load the sample data.
    sample = nemo_orca2()

    # Create the mesh from the sample data.
    mesh = gv.Transform.from_2d(
        sample.lons,
        sample.lats,
        data=sample.data,
        name=f"{sample.name} / {sample.units}",
    )

    # Remove cells from the mesh with NaN values.
    mesh = cast(mesh.threshold())

    # Transform the mesh to the Mollweide projection and extrude.
    mesh = transform_mesh(mesh, crs := "esri:54009")
    mesh.extrude((0, 0, -1000000), capping=True, inplace=True)

    # Plot the curvilinear mesh.
    p = gv.GeoPlotter(crs=crs)
    p.add_mesh(mesh)
    p.add_coastlines(color="black")
    p.add_axes()
    p.add_text(
        f"ORCA ({crs}, extrude)",
        position="upper_left",
        font_size=10,
    )

    # Define a specific camera position.
    p.view_xy()
    p.camera.zoom(1.5)

    p.add_axes()
    p.show()


if __name__ == "__main__":
    main()

Sphinx-Galleryによって生成されたギャラリー