# maptekomf.maptek
Provides support for inter-operability with the Open Mining Format (OMF) and
Maptek applications which share an underlying infrastructure. This includes
BlastLogic, PointStudio and Vulcan GeologyCore.
The sister package maptekomf.vulcan provides support for inter-operability with
the Open Mining Format (OMF) and Maptek Vulcan which does not share the same
underlying infrastructure of Maptek's other applications.
## Usage
This package can be installed as a Python package and used to develop
in-house tooling for working with Open Mining Format (OMF) and Maptek
applications.
Alternatively, it can be provided alongside workflows to enable the Maptek
Workbench to provide custom import/export functionality for OMF.
### Set-up workflows
#### Method 1
1. Install the maptekomf package
1. Copy/download the workflows to a suitable folder
1. Run the workflows.
#### Method 2
1. Download the `maptekomf_with_workflows.zip` archive.
1. Extract the archive
1. Run the workflows from the extracted location.
#### Follow-up
If you are wishing to export from an application other than PointStudio,
you will need to edit the workflow to use the `Get Active Selection` component
from the other application.
### Within a script
#### Import a file to project
The following script will import a file called `test_file.omf` into the
Maptek project at the path `/scrapbook/omf/test_file`.
```python
from mapteksdk.project import Project
from maptekomf.maptek.importer import omf_to_project
if __name__ == '__main__':
with Project() as project:
omf_to_project('test_file.omf' project, '/scrapbook/omf/test_file',
overwrite=False)
```
#### Export selection to OMF
The following script will export selected objects into a file called
`exported.omf`. It will however not skip over any unsupported objects.
```python
from mapteksdk.project import Project
from maptekomf.maptek.importer import omf_to_project
if __name__ == '__main__':
with Project() as project:
omf_to_project(project, project.get_selected(), 'exported.omf')
```
## Supported application versions
* Maptek PointStudio 2021 to 2023.
* Maptek Vulcan GeologyCore 2021 to 2023.2.
The recommended version of mapteksdk to use this with is 1.6.
Version 1.4 and 1.5 of the mapteksdk are supported, but it recommended to
upgrade where you can, and to use newer applications you will often need to
use the newer SDK.
## Implementation defined behaviour
This OMF importer/exporter implementation has the following behaviour that
may be different to how other implementations, scripts and applications handle
a given OMF project file. This is done in places where the OMF specification
does not specify how such cases should be handled, especially in cases
where data can't be represented natively in the data format.
### Naming
The name of objects in an OMF project are not required to be unique.
The names of objects in a given container in a Maptek project must be
unique.
As a result, during import if a duplicate name is detected a numerical suffix,
will be added. When adding this suffix, if there is an object in the OMF
project with that name, it will be skipped even if that element/object won't be
imported. For example, if an OMF file contained three objects, two called
"point_set" and a third called "point_set 2" then the first will be named
"point_set", the second will be named "point set 3" so that it does not clash
with "point_set 2" and the last will be called "point_set 2". The name
"point_set 1" will not be used when selecting a unique name; "point_set" is
considered the first object.
### Point colouring
Maptek applications built on a shared underlying infrastructure have the
concept of per-point colour.
If the colours are not all the same when exporting, then they will be written
as an attribute of type `omf.ColorData` on the object called "point colours".
When importing, the "point colours" attribute will be recognised and read in
as a colour array. Maptek applications only support one set of colours per
primitive (primitive being point, edge, cell or facet). Multiple colour array
attributes are not supported.
### Cell visibility
The Maptek object type `GridSurface` has the concept of point visibility, which
is a way to hide cells that are not relevant. For example, they may fall
outside the data range (i.e. the area that was measured/recorded). This is
achieved by saving it as an attribute for vertices called "visibility" in OMF
and recognising the attribute in the importer.
## Limitations
* Maptek objects of type `Polyline` and `Polygon` will be re-imported as
`EdgeNetwork`. There is potential here to improve this situation.
* Objects cannot have primitive attributes of type "date time" in Maptek
applications. Importing an OMF element with date time attributes is not
supported.
* The Maptek object type `GridSurface` does not support textures. This means
textures for gridded surfaces in an OMF file won't be imported.
* The Maptek object type `GridSurface` does not support cell colouring.
* Exporting a `GridSurface` object from a Maptek project may not work, as
the `GridSurface` object is more general than the gridded surface object in
OMF.
* Exporting a textured `Surface` from a Maptek project to OMF may not work,
as texturing in Maptek applications is more sophisticated than what OMF
supports.
* Only one colour map (legend) will be imported per object. Maptek applications
only allow a single colour map to be assigned to an object.
* Importing colour maps on edge, cell and facet attributes is not supported in
the 2021 versions of Maptek applications. If there are strings in the legend,
then the strings will still be imported as an edge, cell or facet attribute.
* Only specific cases of `omf.MappedData` will be imported; at this time, this
means string and colour. Only data that was found in the sample data file
provided by the OMF GitHub project is handled, as the full scope of what
is possible appears to be unbounded.
* Primitive visibility is not preserved in the export. This means certain
types of filtering in Maptek applications will be lost on export.
* Container hierarchy will not be preserved, as OMF has no concept of
containers or folders within its file format. This may be subject to change
depending on what other OMF applications handle (for example using
backslashes in the names of objects to define a hierarchy).
## Future work
* Import and export for block models.
Support may be added on request; however the plan is to wait until this
package is updated to use omf-2.0.
* Upgrade omf package from 1.0 to 2.0.
* Add handling for identifying `Polyline` and `Polygon`, so they aren't
imported as `EdgeNetwork`.
## Distribution
This project is typically distributed as a Python wheel through PyPi.
However, other mechanisms exist.
Raw data
{
"_id": null,
"home_page": "",
"name": "maptekomf-maptek",
"maintainer": "",
"docs_url": null,
"requires_python": "<3.12,>=3.7",
"maintainer_email": "",
"keywords": "mining,data,interchange",
"author": "",
"author_email": "Maptek <support@maptek.com.au>",
"download_url": "",
"platform": null,
"description": "# maptekomf.maptek\r\nProvides support for inter-operability with the Open Mining Format (OMF) and\r\nMaptek applications which share an underlying infrastructure. This includes\r\nBlastLogic, PointStudio and Vulcan GeologyCore.\r\n\r\nThe sister package maptekomf.vulcan provides support for inter-operability with\r\nthe Open Mining Format (OMF) and Maptek Vulcan which does not share the same\r\nunderlying infrastructure of Maptek's other applications.\r\n\r\n## Usage\r\nThis package can be installed as a Python package and used to develop\r\nin-house tooling for working with Open Mining Format (OMF) and Maptek\r\napplications.\r\n\r\nAlternatively, it can be provided alongside workflows to enable the Maptek\r\nWorkbench to provide custom import/export functionality for OMF.\r\n\r\n### Set-up workflows\r\n\r\n#### Method 1\r\n1. Install the maptekomf package\r\n1. Copy/download the workflows to a suitable folder\r\n1. Run the workflows.\r\n\r\n#### Method 2\r\n1. Download the `maptekomf_with_workflows.zip` archive.\r\n1. Extract the archive\r\n1. Run the workflows from the extracted location.\r\n\r\n#### Follow-up\r\nIf you are wishing to export from an application other than PointStudio,\r\nyou will need to edit the workflow to use the `Get Active Selection` component\r\nfrom the other application.\r\n\r\n### Within a script\r\n\r\n#### Import a file to project\r\n\r\nThe following script will import a file called `test_file.omf` into the\r\nMaptek project at the path `/scrapbook/omf/test_file`.\r\n\r\n```python\r\nfrom mapteksdk.project import Project\r\n\r\nfrom maptekomf.maptek.importer import omf_to_project\r\n\r\nif __name__ == '__main__':\r\n with Project() as project:\r\n omf_to_project('test_file.omf' project, '/scrapbook/omf/test_file',\r\n overwrite=False)\r\n```\r\n\r\n#### Export selection to OMF\r\n\r\nThe following script will export selected objects into a file called\r\n`exported.omf`. It will however not skip over any unsupported objects.\r\n\r\n```python\r\nfrom mapteksdk.project import Project\r\n\r\nfrom maptekomf.maptek.importer import omf_to_project\r\n\r\nif __name__ == '__main__':\r\n with Project() as project:\r\n omf_to_project(project, project.get_selected(), 'exported.omf')\r\n```\r\n\r\n## Supported application versions\r\n* Maptek PointStudio 2021 to 2023.\r\n* Maptek Vulcan GeologyCore 2021 to 2023.2.\r\n\r\nThe recommended version of mapteksdk to use this with is 1.6.\r\nVersion 1.4 and 1.5 of the mapteksdk are supported, but it recommended to\r\nupgrade where you can, and to use newer applications you will often need to\r\nuse the newer SDK.\r\n\r\n## Implementation defined behaviour\r\nThis OMF importer/exporter implementation has the following behaviour that\r\nmay be different to how other implementations, scripts and applications handle\r\na given OMF project file. This is done in places where the OMF specification\r\ndoes not specify how such cases should be handled, especially in cases\r\nwhere data can't be represented natively in the data format.\r\n\r\n### Naming\r\nThe name of objects in an OMF project are not required to be unique.\r\nThe names of objects in a given container in a Maptek project must be\r\nunique.\r\n\r\nAs a result, during import if a duplicate name is detected a numerical suffix,\r\nwill be added. When adding this suffix, if there is an object in the OMF\r\nproject with that name, it will be skipped even if that element/object won't be\r\nimported. For example, if an OMF file contained three objects, two called\r\n\"point_set\" and a third called \"point_set 2\" then the first will be named\r\n\"point_set\", the second will be named \"point set 3\" so that it does not clash\r\nwith \"point_set 2\" and the last will be called \"point_set 2\". The name\r\n\"point_set 1\" will not be used when selecting a unique name; \"point_set\" is\r\nconsidered the first object.\r\n\r\n### Point colouring\r\nMaptek applications built on a shared underlying infrastructure have the\r\nconcept of per-point colour.\r\n\r\nIf the colours are not all the same when exporting, then they will be written\r\nas an attribute of type `omf.ColorData` on the object called \"point colours\".\r\n\r\nWhen importing, the \"point colours\" attribute will be recognised and read in\r\nas a colour array. Maptek applications only support one set of colours per\r\nprimitive (primitive being point, edge, cell or facet). Multiple colour array\r\nattributes are not supported.\r\n\r\n### Cell visibility\r\nThe Maptek object type `GridSurface` has the concept of point visibility, which\r\nis a way to hide cells that are not relevant. For example, they may fall\r\noutside the data range (i.e. the area that was measured/recorded). This is\r\nachieved by saving it as an attribute for vertices called \"visibility\" in OMF\r\nand recognising the attribute in the importer.\r\n\r\n## Limitations\r\n\r\n* Maptek objects of type `Polyline` and `Polygon` will be re-imported as\r\n `EdgeNetwork`. There is potential here to improve this situation.\r\n* Objects cannot have primitive attributes of type \"date time\" in Maptek\r\n applications. Importing an OMF element with date time attributes is not\r\n supported.\r\n* The Maptek object type `GridSurface` does not support textures. This means\r\n textures for gridded surfaces in an OMF file won't be imported.\r\n* The Maptek object type `GridSurface` does not support cell colouring.\r\n* Exporting a `GridSurface` object from a Maptek project may not work, as\r\n the `GridSurface` object is more general than the gridded surface object in\r\n OMF.\r\n* Exporting a textured `Surface` from a Maptek project to OMF may not work,\r\n as texturing in Maptek applications is more sophisticated than what OMF\r\n supports.\r\n* Only one colour map (legend) will be imported per object. Maptek applications\r\n only allow a single colour map to be assigned to an object.\r\n* Importing colour maps on edge, cell and facet attributes is not supported in\r\n the 2021 versions of Maptek applications. If there are strings in the legend,\r\n then the strings will still be imported as an edge, cell or facet attribute.\r\n* Only specific cases of `omf.MappedData` will be imported; at this time, this\r\n means string and colour. Only data that was found in the sample data file\r\n provided by the OMF GitHub project is handled, as the full scope of what\r\n is possible appears to be unbounded.\r\n* Primitive visibility is not preserved in the export. This means certain\r\n types of filtering in Maptek applications will be lost on export.\r\n* Container hierarchy will not be preserved, as OMF has no concept of\r\n containers or folders within its file format. This may be subject to change\r\n depending on what other OMF applications handle (for example using\r\n backslashes in the names of objects to define a hierarchy).\r\n\r\n## Future work\r\n* Import and export for block models.\r\n Support may be added on request; however the plan is to wait until this\r\n package is updated to use omf-2.0.\r\n* Upgrade omf package from 1.0 to 2.0.\r\n* Add handling for identifying `Polyline` and `Polygon`, so they aren't\r\n imported as `EdgeNetwork`.\r\n\r\n## Distribution\r\nThis project is typically distributed as a Python wheel through PyPi.\r\nHowever, other mechanisms exist.\r\n",
"bugtrack_url": null,
"license": "Maptek End User Licence Agreement",
"summary": "Provides interoperability between Maptek SDK and OMF.",
"version": "1.0.3",
"project_urls": {
"Documentation": "https://help.maptek.com/mapteksdk/",
"Homepage": "https://www.maptek.com",
"Support": "https://www.maptek.com/support/index.html"
},
"split_keywords": [
"mining",
"data",
"interchange"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "2b92d73e26d3082750b15d7a7b76fd4edee4e32f9e51a6eeb0f5b39650da9f68",
"md5": "6d3a85a7493cd6585ac44314dd6b67c4",
"sha256": "a27d96f7bc8bfc65a919f2d7010eead443a69a5ad581e0c7b904425cc3c03745"
},
"downloads": -1,
"filename": "maptekomf_maptek-1.0.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "6d3a85a7493cd6585ac44314dd6b67c4",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<3.12,>=3.7",
"size": 26275,
"upload_time": "2023-12-13T02:50:24",
"upload_time_iso_8601": "2023-12-13T02:50:24.697970Z",
"url": "https://files.pythonhosted.org/packages/2b/92/d73e26d3082750b15d7a7b76fd4edee4e32f9e51a6eeb0f5b39650da9f68/maptekomf_maptek-1.0.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-12-13 02:50:24",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "maptekomf-maptek"
}