Beispiel #1
0
 def _to_omf(self):
     import omf
     geometry = omf.PointSetGeometry(
         vertices=omf.Vector3Array(
             self.vertices,
         ),
     )
     return geometry
 def to_omf(self):
     self.validate()
     omf_point_set = omf.PointSetElement(
         name=self.name or '',
         description=self.description or '',
         geometry=omf.PointSetGeometry(vertices=self.vertices.array, ),
         data=[
             attr.to_omf(cell_location='vertices') for attr in self.data
             if not isinstance(attr, TextureProjection)
         ],
         textures=[
             tex.to_omf() for tex in self.data
             if isinstance(tex, TextureProjection)
         ],
         color=self.defaults.color.value,
     )
     return omf_point_set
Beispiel #3
0
def test_points():
    proj = omf.Project(origin=[5., 5, 5])
    pts = omf.PointSetElement(
        name='my elem',
        description='my desc',
        geometry=omf.PointSetGeometry(
            vertices=[[i / 3, i / 4, i / 5] for i in range(10)],
            origin=[5., 5, 5],
        ),
        color='red',
    )
    proj.elements = [pts]
    proj.validate()
    view = get_view_from_proj(proj)
    view.validate()
    assert len(view.contents) == 2
    pointset = find(view, spatial.ElementPointSet)
    defaults = pointset.defaults.serialize()
    assert defaults['__class__'] == 'OptionsPoints'
    assert defaults['color']['value'] == '#FF0000'
    assert list(pointset.vertices.array[0]) == [10., 10, 10]
    assert pointset.name == 'my elem'
    assert pointset.description == 'my desc'
Beispiel #4
0
import unittest
import os
import shutil
import tempfile

import numpy as np
import omf
import omfvista
import pyvista

PROJECT = omf.Project(name='Test project',
                      description='Just some assorted elements')
POINTSET = omf.PointSetElement(
    name='Random Points',
    description='Just random points',
    geometry=omf.PointSetGeometry(vertices=np.random.rand(100, 3)),
    data=[
        omf.ScalarData(name='rand data',
                       array=np.random.rand(100),
                       location='vertices'),
        omf.ScalarData(name='More rand data',
                       array=np.random.rand(100),
                       location='vertices')
    ],
    #                           textures=[
    #                                   omf.ImageTexture(
    #                                           name='test image',
    #                                           image='test_image.png',
    #                                           origin=[0, 0, 0],
    #                                           axis_u=[1, 0, 0],
    #                                           axis_v=[0, 1, 0]
Beispiel #5
0
# Load the temperature data
_temp = pd.read_csv(gdc19.get_temperature_path('well_based_temperature.csv'))
_temp.head()

###############################################################################
temperature = omf.PointSetElement(
    name='temperature',
    description='cumulative record of one-dimensional temperature modeling '\
        'based off of well data. Temperature log data were exampled and '\
        'extrapolated below the bottom of a number of wells. Temperatures '\
        'are in degrees Celsius, and all location data are georeferenced to '
        'UTM, zone 12N, NAD 83, NAVD 88.',
    subtype='point',
    geometry=omf.PointSetGeometry(
        vertices=_temp[['x', 'y', 'z']].values
    ),
    data=[omf.ScalarData(
        name='temperature (C)',
        array=_temp['T'].values,
        location='vertices'
    ),]
)
temperature.validate()

###############################################################################
omfvtk.wrap(temperature).plot(show_edges=False)

###############################################################################
# Geostatistical Model
# ++++++++++++++++++++
Beispiel #6
0
    def test_doc_ex(self):
        dirname, _ = os.path.split(os.path.abspath(__file__))
        pngfile = os.path.sep.join(dirname.split(os.path.sep)[:-1] +
                                   ['docs', 'images', 'PointSetGeometry.png'])

        proj = omf.Project(
            name='Test project',
            description='Just some assorted elements'
        )

        pts = omf.PointSetElement(
            name='Random Points',
            description='Just random points',
            geometry=omf.PointSetGeometry(
                vertices=np.random.rand(100, 3)
            ),
            data=[
                omf.ScalarData(
                    name='rand data',
                    array=np.random.rand(100),
                    location='vertices'
                ),
                omf.ScalarData(
                    name='More rand data',
                    array=np.random.rand(100),
                    location='vertices'
                )
            ],
            textures=[
                omf.ImageTexture(
                    name='test image',
                    image=pngfile,
                    origin=[0, 0, 0],
                    axis_u=[1, 0, 0],
                    axis_v=[0, 1, 0]
                ),
                omf.ImageTexture(
                    name='test image',
                    image=pngfile,
                    origin=[0, 0, 0],
                    axis_u=[1, 0, 0],
                    axis_v=[0, 0, 1]
                )
            ],
            color='green'
        )

        lin = omf.LineSetElement(
            name='Random Line',
            geometry=omf.LineSetGeometry(
                vertices=np.random.rand(100, 3),
                segments=np.floor(np.random.rand(50, 2)*100).astype(int)
            ),
            data=[
                omf.ScalarData(
                    name='rand vert data',
                    array=np.random.rand(100),
                    location='vertices'
                ),
                omf.ScalarData(
                    name='rand segment data',
                    array=np.random.rand(50),
                    location='segments'
                )
            ],
            color='#0000FF'
        )

        surf = omf.SurfaceElement(
            name='trisurf',
            geometry=omf.SurfaceGeometry(
                vertices=np.random.rand(100, 3),
                triangles=np.floor(np.random.rand(50, 3)*100).astype(int)
            ),
            data=[
                omf.ScalarData(
                    name='rand vert data',
                    array=np.random.rand(100),
                    location='vertices'
                ),
                omf.ScalarData(
                    name='rand face data',
                    array=np.random.rand(50),
                    location='faces'
                )
            ],
            color=[100, 200, 200]
        )

        grid = omf.SurfaceElement(
            name='gridsurf',
            geometry=omf.SurfaceGridGeometry(
                tensor_u=np.ones(10).astype(float),
                tensor_v=np.ones(15).astype(float),
                origin=[50., 50., 50.],
                axis_u=[1., 0, 0],
                axis_v=[0, 0, 1.],
                offset_w=np.random.rand(11, 16).flatten()
            ),
            data=[
                omf.ScalarData(
                    name='rand vert data',
                    array=np.random.rand(11, 16).flatten(),
                    location='vertices'
                ),
                omf.ScalarData(
                    name='rand face data',
                    array=np.random.rand(10, 15).flatten(order='f'),
                    location='faces'
                )
            ],
            textures=[
                omf.ImageTexture(
                    name='test image',
                    image=pngfile,
                    origin=[2., 2., 2.],
                    axis_u=[5., 0, 0],
                    axis_v=[0, 2., 5.]
                )
            ]
        )

        vol = omf.VolumeElement(
            name='vol',
            geometry=omf.VolumeGridGeometry(
                tensor_u=np.ones(10).astype(float),
                tensor_v=np.ones(15).astype(float),
                tensor_w=np.ones(20).astype(float),
                origin=[10., 10., -10]
            ),
            data=[
                omf.ScalarData(
                    name='Random Data',
                    location='cells',
                    array=np.random.rand(10, 15, 20).flatten()
                )
            ]
        )

        proj.elements = [pts, lin, surf, grid, vol]

        assert proj.validate()

        serial_file = os.path.sep.join([dirname, 'out.omf'])
        omf.OMFWriter(proj, serial_file)
        reader = omf.OMFReader(serial_file)
        new_proj = reader.get_project()

        assert new_proj.validate()
        assert str(new_proj.elements[3].textures[0].uid) == \
            str(proj.elements[3].textures[0].uid)
        del reader
        os.remove(serial_file)