geovista.geoplotter
===================

.. py:module:: geovista.geoplotter

.. autoapi-nested-parse::

   Provide specialisation to support a geospatial aware plotter.

   See :class:`pyvista.Plotter`.

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

   ..
       !! processed by numpydoc !!


Attributes
----------

.. autoapisummary::

   geovista.geoplotter.ADD_POINTS_STYLE
   geovista.geoplotter.BASE_ZLEVEL_SCALE
   geovista.geoplotter.COASTLINES_RTOL
   geovista.geoplotter.GRATICULE_LABEL_FONT_SIZE
   geovista.geoplotter.GRATICULE_SHOW_LABELS
   geovista.geoplotter.OPACITY_BLACKLIST


Classes
-------

.. autoapisummary::

   geovista.geoplotter.GeoPlotter
   geovista.geoplotter.GeoPlotterBase


Module Contents
---------------

.. py:class:: GeoPlotter(*args, crs = None, manifold = None, theme = None, **kwargs)

   Bases: :py:obj:`GeoPlotterBase`, :py:obj:`pv`


   A geospatial aware plotter.

   See :class:`geovista.geoplotter.GeoPlotterBase` and
   :class:`pyvista.Plotter`.

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



   Create geospatial aware plotter.


   :Parameters:

       **\*args** : :class:`python:tuple`, optional
           See :class:`pyvista.Plotter` for further details.

       **crs** : :obj:`CRSLike <geovista.crs.CRSLike>`, optional
           The target CRS to render geolocated meshes added to the plotter.
           May be anything accepted by :meth:`pyproj.crs.CRS.from_user_input`.
           Defaults to ``EPSG:4326`` i.e., ``WGS 84``.

       **manifold** : :obj:`BBox <geovista.geodesic.BBox>`, optional
           Apply the `manifold` to each mesh added to the plotter so that only
           the region enclosed by the `manifold` is rendered.

       **theme** : :obj:`Theme <pyvista.plotting.themes.Theme>` or :class:`python:str`, optional
           Plot specific theme.

       **\*\*kwargs** : :class:`python:dict`, optional
           See :class:`pyvista.Plotter` for further details.











   .. rubric:: Notes

   .. versionadded:: 0.1.0



   ..
       !! processed by numpydoc !!


.. py:class:: GeoPlotterBase(*args, crs = None, manifold = None, theme = None, **kwargs)

   Base class with common behaviour for a geospatial aware plotter.

   See :class:`pyvista.Plotter`.

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



   Create geospatial aware plotter.


   :Parameters:

       **\*args** : :class:`python:tuple`, optional
           See :class:`pyvista.Plotter` for further details.

       **crs** : :obj:`CRSLike <geovista.crs.CRSLike>`, optional
           The target CRS to render geolocated meshes added to the plotter.
           May be anything accepted by :meth:`pyproj.crs.CRS.from_user_input`.
           Defaults to ``EPSG:4326`` i.e., ``WGS 84``.

       **manifold** : :obj:`BBox <geovista.geodesic.BBox>`, optional
           Apply the `manifold` to each mesh added to the plotter so that only
           the region enclosed by the `manifold` is rendered.

       **theme** : :obj:`Theme <pyvista.plotting.themes.Theme>` or :class:`python:str`, optional
           Plot specific theme.

       **\*\*kwargs** : :class:`python:dict`, optional
           See :class:`pyvista.Plotter` for further details.











   .. rubric:: Notes

   .. versionadded:: 0.1.0



   ..
       !! processed by numpydoc !!


   .. py:method:: add_base_layer(*, mesh = None, resolution = None, radius = None, zlevel = None, zscale = None, rtol = None, atol = None, **kwargs)

      
      Generate a cubed-sphere base layer mesh and add to the plotter scene.

      Optionally, a `mesh` may be provided (e.g. if one is available that
      better fits the geometry of the surface mesh).

      :Parameters:

          **mesh** : :obj:`PolyData <pyvista.PolyData>`, optional
              Use the provided mesh as the base layer.

          **resolution** : :class:`python:str`, optional
              The resolution of the cubed-sphere to generate as the base layer,
              which may be either ``c48``, ``c96`` or ``c192``. Defaults to
              :data:`geovista.pantry.meshes.LFRIC_RESOLUTION`. Alternatively, generate a
              regular grid using a format of ``rN``, where ``N`` is the number of cells
              in latitude, and ``N * 1.5`` cells in longitude. When adding a base layer
              to a projection, the default is to use a regular grid with resolution
              :data:`geovista.pantry.meshes.REGULAR_RESOLUTION`.

          **radius** : :class:`python:float`, optional
              The radius of the spherical mesh to generate as the base layer. Defaults
              to :data:`geovista.common.RADIUS`.

          **zlevel** : :class:`python:int`, optional
              The z-axis level. Used in combination with the `zscale` to offset the
              `radius` by a proportional amount i.e., ``radius * zlevel * zscale``.
              Defaults to ``-1``.

          **zscale** : :class:`python:float`, optional
              The proportional multiplier for z-axis `zlevel`. Defaults to
              :data:`BASE_ZLEVEL_SCALE`.

          **rtol** : :class:`python:float`, optional
              The relative tolerance for longitudes close to the 'wrap meridian' -
              see :func:`geovista.common.wrap` for more.

          **atol** : :class:`python:float`, optional
              The absolute tolerance for longitudes close to the 'wrap meridian' -
              see :func:`geovista.common.wrap` for more.

          **\*\*kwargs** : :class:`python:dict`, optional
              See :meth:`pyvista.Plotter.add_mesh`.



      :Returns:

          :obj:`Actor <pyvista.Actor>`
              The rendered actor added to the plotter scene.








      .. rubric:: Notes

      .. versionadded:: 0.1.0



      ..
          !! processed by numpydoc !!


   .. py:method:: add_coastlines(*, resolution = None, radius = None, zlevel = None, zscale = None, rtol = None, atol = None, **kwargs)

      
      Generate coastlines and add to the plotter scene.


      :Parameters:

          **resolution** : :class:`python:str`, optional
              The resolution of the Natural Earth coastlines, which may be either
              ``110m``, ``50m``, or ``10m``. Defaults to
              :data:`geovista.common.COASTLINES_RESOLUTION`.

          **radius** : :class:`python:float`, optional
              The radius of the sphere. Defaults to :data:`geovista.common.RADIUS`.

          **zlevel** : :class:`python:int`, optional
              The z-axis level. Used in combination with the `zscale` to offset the
              `radius` by a proportional amount i.e., ``radius * zlevel * zscale``.
              Defaults to :data:`geovista.common.ZTRANSFORM_FACTOR`.

          **zscale** : :class:`python:float`, optional
              The proportional multiplier for z-axis `zlevel`. Defaults to
              :data:`geovista.common.ZLEVEL_SCALE`.

          **rtol** : :class:`python:float`, optional
              The relative tolerance for longitudes close to the 'wrap meridian' -
              see :func:`geovista.common.wrap` for more.

          **atol** : :class:`python:float`, optional
              The absolute tolerance for longitudes close to the 'wrap meridian' -
              see :func:`geovista.common.wrap` for more.

          **\*\*kwargs** : :class:`python:dict`, optional
              See :meth:`pyvista.Plotter.add_mesh`.



      :Returns:

          :obj:`Actor <pyvista.Actor>`
              The rendered actor added to the plotter scene.








      .. rubric:: Notes

      .. versionadded:: 0.1.0



      ..
          !! processed by numpydoc !!


   .. py:method:: add_graticule(*, lon_start = None, lon_stop = None, lon_step = None, lat_start = None, lat_stop = None, lat_step = None, n_samples = None, factor = None, poles_parallel = None, poles_label = None, show_labels = None, radius = None, zlevel = None, zscale = None, mesh_args = None, point_labels_args = None, name = None)

      
      Generate a graticule and add to the plotter scene.

      This involves generating lines of constant latitude (parallels) and
      lines of constant longitude (meridians), which together form the graticule.

      :Parameters:

          **lon_start** : :class:`python:float`, optional
              The first line of longitude (degrees). The graticule will include this
              meridian. Defaults to :data:`geovista.gridlines.LONGITUDE_START`.

          **lon_stop** : :class:`python:float`, optional
              The last line of longitude (degrees). The graticule will include this
              meridian when it is a multiple of `lon_step`. Also see
              ``closed_interval`` in :func:`~geovista.gridlines.create_meridians`.
              Defaults to :data:`geovista.gridlines.LONGITUDE_STOP`.

          **lon_step** : :class:`python:float`, optional
              The delta (degrees) between neighbouring meridians. Defaults to
              :data:`geovista.gridlines.LONGITUDE_STEP`.

          **lat_start** : :class:`python:float`, optional
              The first line of latitude (degrees). The graticule will include this
              parallel. Also see `poles_parallel`. Defaults to
              :data:`geovista.gridlines.LATITUDE_START`.

          **lat_stop** : :class:`python:float`, optional
              The last line of latitude (degrees). The graticule will include this
              parallel when it is a multiple of `lat_step`. Defaults to
              :data:`geovista.gridlines.LATITUDE_STOP`.

          **lat_step** : :class:`python:float`, optional
              The delta (degrees) between neighbouring parallels. Defaults to
              :data:`geovista.gridlines.LATITUDE_STEP`.

          **n_samples** : :class:`python:int` | :class:`python:tuple`\[:class:`python:int` | :data:`python:None`, :class:`python:int` | :data:`python:None`], optional
              The number of points in a single line of longitude and latitude.
              If a single integer is provided, both meridians and parallels will
              use that value. If a tuple of two integers is provided, the first
              value will be used for meridians and the second for parallels. A value
              of ``None`` will use the defaults provided by
              :data:`geovista.gridlines.LONGITUDE_N_SAMPLES` and
              :data:`geovista.gridlines.LATITUDE_N_SAMPLES`.

          **factor** : :class:`python:float`, optional
              The factor to scale the number of sample points in a single graticule line
              (meridians and parallels) e.g. a ``factor=2`` will double the number of
              sample points. Defaults to ``1``.

          **poles_parallel** : :class:`python:bool`, optional
              Whether to create a line of latitude at the north/south poles. Defaults to
              :data:`geovista.gridlines.LATITUDE_POLES_PARALLEL`.

          **poles_label** : :class:`python:bool`, optional
              Whether to create a single north/south pole label. Only applies when
              ``poles_parallel=False``. Defaults to
              :data:`geovista.gridlines.LATITUDE_POLES_LABEL`.

          **show_labels** : :class:`python:bool`, optional
              Whether to render the labels of the parallels and meridians. Defaults to
              :data:`GRATICULE_SHOW_LABELS`.

          **radius** : :class:`python:float`, optional
              The radius of the sphere. Defaults to :data:`geovista.common.RADIUS`.

          **zlevel** : :class:`python:int`, optional
              The z-axis level. Used in combination with the `zscale` to offset the
              `radius` by a proportional amount i.e., ``radius * zlevel * zscale``.
              Defaults to :data:`geovista.gridlines.GRATICULE_ZLEVEL`.

          **zscale** : :class:`python:float`, optional
              The proportional multiplier for z-axis `zlevel`. Defaults to
              :data:`geovista.common.ZLEVEL_SCALE`.

          **mesh_args** : :class:`python:dict`, optional
              Arguments to pass through to :meth:`pyvista.Plotter.add_mesh`.

          **point_labels_args** : :class:`python:dict`, optional
              Arguments to pass through to :meth:`pyvista.Plotter.add_point_labels`.

          **name** : :class:`python:str`, optional
              The name for the added graticule actors so that they can be easily updated.
              If actors of this name already exist in the plotter scene, they
              will be replaced by the new actors. Note that the provided `name` will be
              prepended with ``meridian-`` or ``parallel-`` to form the names of the
              graticule actors.











      .. rubric:: Notes

      .. versionadded:: 0.3.0



      ..
          !! processed by numpydoc !!


   .. py:method:: add_meridian(lon, /, *, lat_step = None, n_samples = None, factor = None, show_labels = None, radius = None, zlevel = None, zscale = None, mesh_args = None, point_labels_args = None, name = None)

      
      Generate a line of constant longitude and add to the plotter scene.


      :Parameters:

          **lon** : :class:`python:float`
              The constant line of longitude (degrees) to generate.

          **lat_step** : :class:`python:float`, optional
              The delta (degrees) between neighbouring parallels. Sets the
              frequency of the labels. Defaults to
              :data:`geovista.gridlines.LATITUDE_STEP`.

          **n_samples** : :class:`python:int`, optional
              The number of points in a single line of longitude. Defaults to
              :data:`geovista.gridlines.LONGITUDE_N_SAMPLES`.

          **factor** : :class:`python:float`, optional
              The factor to scale the number of sample points in a single line of
              longitude e.g., a ``factor=2`` will double the number of sample points.
              Defaults to ``1``.

          **show_labels** : :class:`python:bool`, optional
              Whether to render the meridian label. Defaults to
              :data:`GRATICULE_SHOW_LABELS`.

          **radius** : :class:`python:float`, optional
              The radius of the sphere. Defaults to :data:`geovista.common.RADIUS`.

          **zlevel** : :class:`python:int`, optional
              The z-axis level. Used in combination with the `zscale` to offset the
              `radius` by a proportional amount i.e., ``radius * zlevel * zscale``.
              Defaults to :data:`geovista.gridlines.GRATICULE_ZLEVEL`.

          **zscale** : :class:`python:float`, optional
              The proportional multiplier for z-axis `zlevel`. Defaults to
              :data:`geovista.common.ZLEVEL_SCALE`.

          **mesh_args** : :class:`python:dict`, optional
              Arguments to pass through to :meth:`pyvista.Plotter.add_mesh`.

          **point_labels_args** : :class:`python:dict`, optional
              Arguments to pass through to :meth:`pyvista.Plotter.add_point_labels`.

          **name** : :class:`python:str`, optional
              The name for the added meridian/actors so that it can be easily updated.
              If an actor of this name already exists in the plotter scene, it
              will be replaced by the new actor. Note that the provided `name` will be
              prepended with ``meridian-`` along with the longitude to form the name
              of the added meridian/actors.











      .. rubric:: Notes

      .. versionadded:: 0.3.0



      ..
          !! processed by numpydoc !!


   .. py:method:: add_meridians(*, start = None, stop = None, step = None, lat_step = None, n_samples = None, factor = None, show_labels = None, radius = None, zlevel = None, zscale = None, mesh_args = None, point_labels_args = None, name = None)

      
      Generate lines of constant longitude and add to the plotter scene.


      :Parameters:

          **start** : :class:`python:float`, optional
              The first line of longitude (degrees). The graticule will include this
              meridian. Defaults to :data:`geovista.gridlines.LONGITUDE_START`.

          **stop** : :class:`python:float`, optional
              The last line of longitude (degrees). The graticule will include this
              meridian when it is a multiple of `step`. Also see
              ``closed_interval`` in :func:`~geovista.gridlines.create_meridians`.
              Defaults to :data:`geovista.gridlines.LONGITUDE_STOP`.

          **step** : :class:`python:float`, optional
              The delta (degrees) between neighbouring meridians. Defaults to
              :data:`geovista.gridlines.LONGITUDE_STEP`.

          **lat_step** : :class:`python:float`, optional
              The delta (degrees) between neighbouring parallels. Sets the
              frequency of the labels. Defaults to
              :data:`geovista.gridlines.LATITUDE_STEP`.

          **n_samples** : :class:`python:int`, optional
              The number of points in a single line of longitude. Defaults to
              :data:`geovista.gridlines.LONGITUDE_N_SAMPLES`.

          **factor** : :class:`python:float`, optional
              The factor to scale the number of sample points in a single line of
              longitude e.g., a ``factor=2`` will double the number of sample points.
              Defaults to ``1``.

          **show_labels** : :class:`python:bool`, optional
              Whether to render the labels of the meridians. Defaults to
              :data:`GRATICULE_SHOW_LABELS`.

          **radius** : :class:`python:float`, optional
              The radius of the sphere. Defaults to :data:`geovista.common.RADIUS`.

          **zlevel** : :class:`python:int`, optional
              The z-axis level. Used in combination with the `zscale` to offset the
              `radius` by a proportional amount i.e., ``radius * zlevel * zscale``.
              Defaults to :data:`geovista.gridlines.GRATICULE_ZLEVEL`.

          **zscale** : :class:`python:float`, optional
              The proportional multiplier for z-axis `zlevel`. Defaults to
              :data:`geovista.common.ZLEVEL_SCALE`.

          **mesh_args** : :class:`python:dict`, optional
              Arguments to pass through to :meth:`pyvista.Plotter.add_mesh`.

          **point_labels_args** : :class:`python:dict`, optional
              Arguments to pass through to :meth:`pyvista.Plotter.add_point_labels`.

          **name** : :class:`python:str`, optional
              The name for the added meridians/actors so that it can be easily updated.
              If an actor of this name already exists in the plotter scene, it
              will be replaced by the new actor. Note that the provided `name` will be
              prepended with ``meridian-`` along with the longitude to form the name of
              the added meridians/actors.











      .. rubric:: Notes

      .. versionadded:: 0.3.0



      ..
          !! processed by numpydoc !!


   .. py:method:: add_mesh(mesh, /, *, radius = None, zlevel = None, zscale = None, rtol = None, atol = None, **kwargs)

      
      Add the `mesh` to the plotter scene.

      See :meth:`pyvista.Plotter.add_mesh`.

      :Parameters:

          **mesh** : :obj:`PolyData <pyvista.PolyData>`
              The mesh to add to the plotter.

          **radius** : :class:`python:float`, optional
              The radius of the sphere. Defaults to :data:`geovista.common.RADIUS`.

          **zlevel** : :class:`python:int` or :obj:`ArrayLike <numpy.typing.ArrayLike>`, optional
              The z-axis level. Used in combination with the `zscale` to offset the
              `radius`/vertical by a proportional amount e.g.,
              ``radius * zlevel * zscale``. If `zlevel` is not a scalar, then its shape
              must match or broadcast with the shape of the ``mesh.points``.
              Defaults to ``0``.

          **zscale** : :class:`python:float`, optional
              The proportional multiplier for z-axis `zlevel`. Defaults to
              :data:`geovista.common.ZLEVEL_SCALE`.

          **rtol** : :class:`python:float`, optional
              The relative tolerance for longitudes close to the 'wrap meridian' -
              see :func:`geovista.common.wrap` for more.

          **atol** : :class:`python:float`, optional
              The absolute tolerance for longitudes close to the 'wrap meridian' -
              see :func:`geovista.common.wrap` for more.

          **\*\*kwargs** : :class:`python:dict`, optional
              See :meth:`pyvista.Plotter.add_mesh`.



      :Returns:

          :obj:`Actor <pyvista.Actor>`
              The rendered actor added to the plotter scene.








      .. rubric:: Notes

      .. versionadded:: 0.1.0



      ..
          !! processed by numpydoc !!


   .. py:method:: add_parallel(lat, /, *, lon_step = None, n_samples = None, factor = None, poles_parallel = None, show_labels = None, radius = None, zlevel = None, zscale = None, mesh_args = None, point_labels_args = None, name = None)

      
      Generate a line of constant latitude and add to the plotter scene.


      :Parameters:

          **lat** : :class:`python:float`
              The constant line of latitude (degrees) to generate.

          **lon_step** : :class:`python:float`, optional
              The delta (degrees) between neighbouring meridians. Sets the
              frequency of the labels. Defaults to
              :data:`geovista.gridlines.LONGITUDE_STEP`.

          **n_samples** : :class:`python:int`, optional
              The number of points in a single line of latitude. Defaults to
              :data:`geovista.gridlines.LATITUDE_N_SAMPLES`.

          **factor** : :class:`python:float`, optional
              The factor to scale the number of sample points in a single line of
              latitude e.g., a ``factor=2`` will double the number of sample points.
              Defaults to ``1``.

          **poles_parallel** : :class:`python:bool`, optional
              Whether to create a line of latitude at the north/south poles. Defaults to
              :data:`geovista.gridlines.LATITUDE_POLES_PARALLEL`.

          **show_labels** : :class:`python:bool`, optional
              Whether to render the parallel label. Defaults to
              :data:`GRATICULE_SHOW_LABELS`.

          **radius** : :class:`python:float`, optional
              The radius of the sphere. Defaults to :data:`geovista.common.RADIUS`.

          **zlevel** : :class:`python:int`, optional
              The z-axis level. Used in combination with the `zscale` to offset the
              `radius` by a proportional amount i.e., ``radius * zlevel * zscale``.
              Defaults to :data:`geovista.gridlines.GRATICULE_ZLEVEL`.

          **zscale** : :class:`python:float`, optional
              The proportional multiplier for z-axis `zlevel`. Defaults to
              :data:`geovista.common.ZLEVEL_SCALE`.

          **mesh_args** : :class:`python:dict`, optional
              Arguments to pass through to :meth:`pyvista.Plotter.add_mesh`.

          **point_labels_args** : :class:`python:dict`, optional
              Arguments to pass through to :meth:`pyvista.Plotter.add_point_labels`.

          **name** : :class:`python:str`, optional
              The name for the added parallel/actor so that it can be easily updated.
              If an actor of this name already exists in the plotter scene, it
              will be replaced by the new actor. Note that the provided `name` will be
              prepended with ``parallel-`` along with the latitude to form the name of
              the added parallel/actor.











      .. rubric:: Notes

      .. versionadded:: 0.3.0



      ..
          !! processed by numpydoc !!


   .. py:method:: add_parallels(*, start = None, stop = None, step = None, lon_step = None, n_samples = None, factor = None, poles_parallel = None, poles_label = None, show_labels = None, radius = None, zlevel = None, zscale = None, mesh_args = None, point_labels_args = None, name = None)

      
      Generate lines of constant latitude and add to the plotter scene.


      :Parameters:

          **start** : :class:`python:float`, optional
              The first line of latitude (degrees). The graticule will include this
              parallel. Also see `poles_parallel`. Defaults to
              :data:`geovista.gridlines.LATITUDE_START`.

          **stop** : :class:`python:float`, optional
              The last line of latitude (degrees). The graticule will include this
              parallel when it is a multiple of `step`. Also see `poles_parallel`.
              Defaults to :data:`geovista.gridlines.LATITUDE_STOP`.

          **step** : :class:`python:float`, optional
              The delta (degrees) between neighbouring parallels. Defaults to
              :data:`geovista.gridlines.LATITUDE_STEP`.

          **lon_step** : :class:`python:float`, optional
              The delta (degrees) between neighbouring meridians. Sets the
              frequency of the labels. Defaults to
              :data:`geovista.gridlines.LONGITUDE_STEP`.

          **n_samples** : :class:`python:int`, optional
              The number of points in a single line of latitude. Defaults to
              :data:`geovista.gridlines.LATITUDE_N_SAMPLES`.

          **factor** : :class:`python:float`, optional
              The factor to scale the number of sample points in a single line of
              latitude e.g., a ``factor=2`` will double the number of sample points.
              Defaults to ``1``.

          **poles_parallel** : :class:`python:bool`, optional
              Whether to create a line of latitude at the north/south poles. Defaults to
              :data:`geovista.gridlines.LATITUDE_POLES_PARALLEL`.

          **poles_label** : :class:`python:bool`, optional
              Whether to create a single north/south pole label. Only applies when
              ``poles_parallel=False``. Defaults to
              :data:`geovista.gridlines.LATITUDE_POLES_LABEL`.

          **show_labels** : :class:`python:bool`, optional
              Whether to render the labels of the parallels. Defaults to
              :data:`GRATICULE_SHOW_LABELS`.

          **radius** : :class:`python:float`, optional
              The radius of the sphere. Defaults to :data:`geovista.common.RADIUS`.

          **zlevel** : :class:`python:int`, optional
              The z-axis level. Used in combination with the `zscale` to offset the
              `radius` by a proportional amount i.e., ``radius * zlevel * zscale``.
              Defaults to :data:`geovista.gridlines.GRATICULE_ZLEVEL`.

          **zscale** : :class:`python:float`, optional
              The proportional multiplier for z-axis `zlevel`. Defaults to
              :data:`geovista.common.ZLEVEL_SCALE`.

          **mesh_args** : :class:`python:dict`, optional
              Arguments to pass through to :meth:`pyvista.Plotter.add_mesh`.

          **point_labels_args** : :class:`python:dict`, optional
              Arguments to pass through to :meth:`pyvista.Plotter.add_point_labels`.

          **name** : :class:`python:str`, optional
              The name for the added parallels/actors so that it can be easily updated.
              If an actor of this name already exists in the plotter scene, it
              will be replaced by the new actor. Note that the provided `name` will be
              prepended with ``-parallel`` along with the latitude to form the name of
              the added parallels/actors.











      .. rubric:: Notes

      .. versionadded:: 0.3.0



      ..
          !! processed by numpydoc !!


   .. py:method:: add_points(points = None, *, xs = None, ys = None, scalars = None, crs = None, radius = None, style = None, zlevel = None, zscale = None, **kwargs)

      
      Add points to the plotter scene.

      See :meth:`pyvista.Plotter.add_points`.

      :Parameters:

          **points** : :obj:`ArrayLike <numpy.typing.ArrayLike>` or :obj:`PolyData <pyvista.PolyData>`, optional
              Array of xyz points, or the points of the mesh to be rendered.
              Passed to :func:`pyvista.wrap` without any
              cartographic transformation, i.e. ``0 0 0`` is centre of the globe
              (the plot origin), ``0 0 1`` is the north pole.

          **xs** : :obj:`ArrayLike <numpy.typing.ArrayLike>`, optional
              A 1D, 2D or 3D array of point-cloud x-values, in canonical `crs` units.
              Must have the same shape as the `ys`.

          **ys** : :obj:`ArrayLike <numpy.typing.ArrayLike>`
              A 1D, 2D or 3D array of point-cloud y-values, in canonical `crs` units.
              Must have the same shape as the `xs`.

          **scalars** : :class:`python:str` or :obj:`ArrayLike <numpy.typing.ArrayLike>`, optional
              Values used to color the points. Either, the string name of an array that is
              present on the `points` mesh or an array equal to the number of points.
              If both `color` (see `kwargs`) and `scalars` are ``None``, then the active
              scalars on the `points` mesh are used.

          **crs** : :obj:`CRSLike <geovista.crs.CRSLike>`, optional
              The Coordinate Reference System of the provided `points`, or `xs` and `ys`.
              May be anything accepted by :meth:`pyproj.crs.CRS.from_user_input`. Defaults
              to ``EPSG:4326`` i.e., ``WGS 84``.

          **radius** : :class:`python:float`, optional
              The radius of the mesh point-cloud. Defaults to
              :data:`geovista.common.RADIUS`.

          **style** : :class:`python:str`, optional
              Visualization style of the points to be rendered. May be either ``points``
              or ``points_gaussian``. The ``points_gaussian`` option may be controlled
              with the ``emissive`` and ``render_points_as_spheres`` options in
              `kwargs`.

          **zlevel** : :class:`python:int` or :obj:`ArrayLike <numpy.typing.ArrayLike>`, optional
              The z-axis level. Used in combination with the `zscale` to offset the
              `radius` by a proportional amount i.e., ``radius * zlevel * zscale``.
              If `zlevel` is not a scalar, then its shape must match or broadcast
              with the shape of the `xs` and `ys`. Defaults to ``0``.

          **zscale** : :class:`python:float`, optional
              The proportional multiplier for z-axis `zlevel`. Defaults to
              :data:`geovista.common.ZLEVEL_SCALE`.

          **\*\*kwargs** : :class:`python:dict`, optional
              See :meth:`pyvista.Plotter.add_mesh`.



      :Returns:

          :obj:`Actor <pyvista.Actor>`
              The rendered actor added to the plotter scene.








      .. rubric:: Notes

      .. versionadded:: 0.4.0



      ..
          !! processed by numpydoc !!


   .. py:method:: view_poi(x = None, y = None, *, crs = None)

      
      Center the camera at a point-of-interest (POI).

      If no POI is provided, then the center of the previous mesh added to the scene
      is used, if available.

      Note that the camera will be positioned at the POI to view **all** the actors
      added to the scene so far; order is important. The point at which
      :meth:`~geovista.geoplotter.GeoPlotterBase.view_poi` is called relative to the
      other actors influences the final rendered scene.

      :Parameters:

          **x** : :class:`python:float`, optional
              The spatial x-value point, in canonical `crs` units, of the POI.
              Defaults to ``0`` if unspecified and `y` has been provided,
              otherwise ``None``.

          **y** : :class:`python:float`, optional
              The spatial y-value point, in canonical `crs` units, of the POI.
              Defaults to ``0`` if unspecified and `x` has been provided,
              otherwise ``None``.

          **crs** : :obj:`CRSLike <geovista.crs.CRSLike>`, optional
              The Coordinate Reference System of the POI. May be anything accepted by
              :meth:`pyproj.crs.CRS.from_user_input`. Defaults to ``EPSG:4326`` i.e.,
              ``WGS 84``.











      .. rubric:: Notes

      .. versionadded:: 0.5.0


      .. rubric:: Examples

      .. pyvista-plot::

         First, create an RGB mesh of the Bahamas from a GeoTIFF.

         >>> import geovista
         >>> from geovista.pantry import fetch_raster
         >>> fname = fetch_raster("bahamas_rgb.tif")
         >>> bahamas = geovista.Transform.from_tiff(
         ...     fname, rgb=True, sieve=True, extract=True
         ... )

         Now add the ``bahamas`` mesh to a ``plotter`` **before** adding a texture mapped
         base layer. Note that the camera is centered over the ``bahamas`` mesh, which
         is the primary focus of the scene.

         >>> p = geovista.GeoPlotter()
         >>> _ = p.add_mesh(bahamas, rgb=True)
         >>> p.view_poi()
         >>> _ = p.add_base_layer(texture=geovista.natural_earth_1())
         >>> p.show()

         In comparison, add a texture mapped base layer to a ``plotter`` **before** the
         ``bahamas`` mesh. The camera is still centered over the ``bahamas`` in the
         rendered scene, however the base layer is now fully visible.

         >>> p = geovista.GeoPlotter()
         >>> _ = p.add_base_layer(texture=geovista.natural_earth_1())
         >>> _ = p.add_mesh(bahamas, rgb=True)
         >>> p.view_poi()
         >>> p.show()

         ..
             !! processed by numpydoc !!


   .. py:attribute:: crs

      
      The Coordinate Reference System (CRS) for the plotter.
















      ..
          !! processed by numpydoc !!


   .. py:property:: manifold
      :type: geovista.geodesic.BBox | None


      
      The manifold boundary applied to meshes added to the plotter.





      :Returns:

          :obj:`BBox <geovista.geodesic.BBox>` or :data:`python:None`
              The plotter manifold.








      .. rubric:: Notes

      .. versionadded:: 0.6.0



      ..
          !! processed by numpydoc !!


   .. py:attribute:: theme
      :type:  pyvista.plotting.themes.Theme


.. py:data:: ADD_POINTS_STYLE
   :type:  tuple[str, str]
   :value: ('points', 'points_gaussian')


   
   The valid 'style' options for adding points.
















   ..
       !! processed by numpydoc !!

.. py:data:: BASE_ZLEVEL_SCALE
   :type:  float
   :value: 0.001


   
   Proportional multiplier for z-axis levels/offsets of base-layer mesh.
















   ..
       !! processed by numpydoc !!

.. py:data:: COASTLINES_RTOL
   :type:  float
   :value: 1e-08


   
   Coastlines relative tolerance for longitudes close to 'wrap meridian'.
















   ..
       !! processed by numpydoc !!

.. py:data:: GRATICULE_LABEL_FONT_SIZE
   :type:  int
   :value: 9


   
   The default font size for graticule labels.
















   ..
       !! processed by numpydoc !!

.. py:data:: GRATICULE_SHOW_LABELS
   :type:  bool
   :value: True


   
   Whether to render graticule labels by default.
















   ..
       !! processed by numpydoc !!

.. py:data:: OPACITY_BLACKLIST
   :value: [('llvmpipe (LLVM 7.0, 256 bits)', '3.3 (Core Profile) Mesa 18.3.4')]


   
   Known GPU renderer and version combinations that don't support opacity.
















   ..
       !! processed by numpydoc !!

