resqpy.surface.Mesh
- class resqpy.surface.Mesh(parent_model, uuid=None, mesh_file=None, mesh_format=None, mesh_flavour='explicit', xyz_values=None, nj=None, ni=None, origin=None, dxyz_dij=None, z_values=None, z_supporting_mesh_uuid=None, surface_role='map', crs_uuid=None, title=None, originator=None, extra_metadata=None)
Bases:
BaseSurfaceClass covering meshes (lattices: surfaces where points form a 2D grid; RESQML obj_Grid2dRepresentation).
Public Data Attributes:
resqml_typeInherited from
BaseResqpyDefinition of which RESQML object the class represents.
Standard part name corresponding to self.uuid.
XML node corresponding to self.uuid.
Citation block title equivalent to self.title.
Commonly Used Methods:
__init__(parent_model[, uuid, mesh_file, ...])Initialises a Mesh object from xml, or a regular mesh from arguments.
Methods:
Creates a reg&z flavoured Mesh from an aligned regular grid column property.
is_big()Returns True if the number of nodes exceeds 2^31 - 1, False otherwise.
set_represented_interpretation_root(interp_root)Makes a note of the xml root of the represented interpretation.
Populates a full 2D(+1) numpy array of shape (nj, ni, 3) with xyz values, caches and returns.
surface([quad_triangles])Returns a surface object generated from this mesh.
write_hdf5([file_name, mode, use_xy_only])Create or append to an hdf5 file, writing datasets for the mesh depending on flavour.
create_xml([ext_uuid, use_xy_only, ...])Creates a grid 2d representation xml node from this mesh object and optionally adds as part of model.
Inherited from
BaseSurfacecreate_interpretation_and_feature([kind, ...])Creates xml and objects for a represented interpretaion and interpreted feature, if not already present.
Inherited from
BaseResqpy__init__(model[, uuid, title, originator, ...])Load an existing resqml object, or create new.
Look for an equivalent existing RESQML object and modify the uuid of this object if found.
create_xml([title, originator, ...])Write citation block to XML.
append_extra_metadata(meta_dict)Append a given dictionary of metadata to the existing metadata.
__eq__(other)Implements equals operator; uses is_equivalent() otherwise compares class type and uuid.
__ne__(other)Implements not equal operator.
__repr__()String representation.
- __init__(parent_model, uuid=None, mesh_file=None, mesh_format=None, mesh_flavour='explicit', xyz_values=None, nj=None, ni=None, origin=None, dxyz_dij=None, z_values=None, z_supporting_mesh_uuid=None, surface_role='map', crs_uuid=None, title=None, originator=None, extra_metadata=None)[source]
Initialises a Mesh object from xml, or a regular mesh from arguments.
- Parameters:
parent_model (
model.Model object) – the model to which this Mesh object will be associateduuid (
uuid.UUID, optional) – the uuid of an existing RESQML obj_Grid2dRepresentation object from which this resqpy Mesh object is populatedmesh_file (
string, optional) – file name, required if initialising from an RMS text or zmap+ ascii filemesh_format (
string, optional) – ‘rms’ or ‘zmap’, required if initialising from an ascii filemesh_flavour (
string, default'explicit') – required flavour when reading from a mesh file; one of: ‘explicit’, ‘regular’ (z values discarded), ‘reg&z’, ‘ref&z’xyz_values (
numpy int arrayofshape (nj,ni,3), optional) – can be used to create an explicit mesh directly from the full array of pointsnj (
int, optional) – when generating a regular or ‘ref&z’ mesh, the number of nodes (NB. not ‘cells’) in the j axis of the regular meshni (
int, optional) – the number of nodes in the i axis of the regular or ref&z meshorigin (
triple float, optional) – the xyz origin of the regular mesh; use z value of zero if irrelevantdxyz_dij (
numpy float arrayofshape (2,3), optional) – the xyz increment for each step in i and j axes; use z increments of zero if not applicable; eg. [[50.0, 0.0, 0.0], [0.0, 50.0, 0.0]] for mesh with 50 (m or ft) spacing where the I axis aligns with x axis and the J axis aligns with y axis; first of the two triplets relates to the I axisz_values (
numpy int arrayofshape (nj,ni), optional) – z values used when creating a ref&z flavour mesh; z_supporting_mesh_uuid must also be suppliedz_supporting_mesh_uuid (
uuid.UUID, optional) – used to specify the supporting mesh when creating a ref&z or reg&z flavour mesh; z_values must also be suppliedsurface_role (
string, default'map') – ‘map’ or ‘pick’; ignored if uuid is not Nonecrs_uuid (
uuid.Uuidorstring, optional) – required if generating a regular mesh, the uuid of the crstitle (
str, optional) – the citation title to use for a new mesh; ignored if uuid is not Noneoriginator (
str, optional) – the name of the person creating the mesh, defaults to login id; ignored if uuid is not Noneextra_metadata (
dict, optional) – string key, value pairs to add as extra metadata for the mesh; ignored if uuid is not None
- Returns:
the newly created Mesh object
Notes
a mesh is a set of x,y,z (or x,y) points organised into a 2D lattice indexed by j,i; the z values are sometimes not applicable and then can be set to zero; 3 flavours of mesh are supported (the RESQML standard might allow for others): regular, where a constant xyz delta is applied with each step in i and j, starting from an origin, to yield a planar surface; explicit, where the full xyz (or xy) data is held as an array; ‘ref & z’, where another mesh is referred to for xy data, and z values are held in an array; there are 5 ways to initialise a Mesh object, in order of precedence: 1. pass uuid to initialise from xml 2. pass mesh_file, mesh_format and crs_uuid to load an explicit mesh from an ascii file 3. pass xyz_values and crs_uuid to create an explicit mesh from a numpy array 4. pass nj, ni, origin, dxyz_dij and crs_uuid to initialise a regular mesh directly 5. pass z_values, z_supporting_mesh_uuid and crs_uuid to initialise a ‘ref & z’ mesh 6. leave all optional arguments as None for an empty Mesh object
- append_extra_metadata(meta_dict)
Append a given dictionary of metadata to the existing metadata.
- property citation_title
Citation block title equivalent to self.title.
- create_interpretation_and_feature(kind='horizon', name=None, interp_title_suffix=None, is_normal=True)
Creates xml and objects for a represented interpretaion and interpreted feature, if not already present.
- create_xml(ext_uuid=None, use_xy_only=False, add_as_part=True, add_relationships=True, title=None, originator=None)[source]
Creates a grid 2d representation xml node from this mesh object and optionally adds as part of model.
- Parameters:
ext_uuid (
uuid.UUID, optional) – the uuid of the hdf5 external part holding the mesh arrayuse_xy_only (
boolean, defaultFalse) – if True and the flavour of this mesh is explicit, only the xy coordinates are stored in the hdf5 dataset, otherwise xyz are storedadd_as_part (
boolean, defaultTrue) – if True, the newly created xml node is added as a part in the modeladd_relationships (
boolean, defaultTrue) – if True, a relationship xml part is created relating the new grid 2d part to the crs part (and optional interpretation part), and to the represented interpretation if presenttitle (
string, optional) – used as the citation Title text; should be meaningful to a humanoriginator (
string, optional) – the name of the human being who created the grid 2d representation part; default is to use the login name
- Returns:
the newly created grid 2d representation (mesh) xml node
- classmethod from_regular_grid_column_property(parent_model, grid_uuid, property_uuid)[source]
Creates a reg&z flavoured Mesh from an aligned regular grid column property.
- Parameters:
parent_model (
Model) – the model that the property is part of and the new Mesh will be part ofgrid_uuid (
uuid) – the uuid of the RegularGrid objectproperty_uuid (
uuid) – the uuid of a property whose supporting representation is a RegularGrid and where the indexable elements are columns
- Returns:
a new Mesh object with flavour reg&z, the xy regular points are the column centres and the z values are the property values
Notes
the grid’s (constant) dx, dy & dz properties must be avaiable in the model; the property must not be a points property and must have a count of 1; discrete property data will be converted to continuous (float) data; if the property uom is of quantity class length, a suitable crs will be used for the mesh, otherwise the grid’s crs will be used and a uom extra metadata item will be added; calling code will need to call the write_hdf5() and create_xml() methods for the mesh
- full_array_ref()[source]
Populates a full 2D(+1) numpy array of shape (nj, ni, 3) with xyz values, caches and returns.
Note
z values may be zero or not applicable when using the mesh as support for properties.
- property part
Standard part name corresponding to self.uuid.
- property root
XML node corresponding to self.uuid.
- set_represented_interpretation_root(interp_root)[source]
Makes a note of the xml root of the represented interpretation.
- try_reuse()
Look for an equivalent existing RESQML object and modify the uuid of this object if found.
- Returns:
boolean – True if an equivalent object was found, False if not
Note
by design this method may change this object’s uuid as a side effect
- write_hdf5(file_name=None, mode='a', use_xy_only=False)[source]
Create or append to an hdf5 file, writing datasets for the mesh depending on flavour.
- title
Citation title
- originator
Creator of object. By default, user id.
- uuid
Unique identifier