Расширение функционала ГГИС Micromine при помощи скриптов. Расчет истинной мощности


На сегодняшний день при проведении геологоразведочных работ и подсчете запасов широко применяются специализированные программные продукты — горно-геологические информационные системы (ГГИС). ГГИС по своему назначению подразделяются на несколько категорий, однако для подсчета запасов и сопутствующих операций применяются в основном горные системы общего назначения (аналог в зарубежной терминологии — GMP, General Mining Package). Эти системы обычно модульного типа и стандартно включают в себя такие разделы, как геологическое моделирование, оценка запасов, проектирование и планирование горных работ, календарное планирование и маркшейдерия. Однако вполне естественно, что в рамках подобных программ невозможно реализовать абсолютно все пожелания и инструменты, необходимые пользователям, поскольку любое отдельно взятое производство имеет свою специфику. Исходя из этого, правилом хорошего тона является наличие модуля скриптинга, с помощью которого можно создавать новые функции и автоматизировать процессы. В ГГИС Micromine с версии 2013 появился данный модуль, который значительно расширил функционал и открыл абсолютно новые возможности программы. В данной статье авторы поделятся опытом применения скриптов для решения специализированных задач.
Сразу оговоримся, что авторы статьи не являются профессиональными программистами, поэтому все технические вопросы рассмотрены именно с точки зрения геологов. В качестве языка программирования для написания скриптов в системе Micromine применятся Python. Данный язык довольно прост и понятен, по нему довольно много литературы, в том числе и на русском языке. На наш взгляд, одним из наиболее значимых достоинств данного языка является огромное число подключаемых специализированных модулей, предназначенных для решения самых разнообразных задач (от работы с табличными данными вплоть до геостатистического анализа). Ниже перечислены основные модули, которыми авторы пользуются в повседневной работе.
NumPy предоставляет средства для высокоэффективной работы с огромными многомерными массивами данных. Как составная часть и основа модуль входит в большинство проектов, использующих язык Python и требующих мало-мальски громоздких вычислений. В частности, с его использованием написаны такие популярные пакеты как: Scipy, MathplotLib, Pandas. NumPy добавляет поддержку больших многомерных массивов и матриц вместе с большой библиотекой высокоуровневых математических функций для операций с этими массивами.
Pandas делает Python мощным инструментом для анализа данных. Позволяет строить сводные таблицы, выполнять различные группировки, дает возможность рисовать графики на полученных наборах данных и многое другое. Необходимо отметить очень информативную книгу «Python и анализ данных», целиком посвященную этому модулю и в 2015 году вышедшую на русском языке.
XlsxWriter является модулем Python для записи файлов в формат файла xlsx.
Модуль может использоваться для записи текста, чисел и формул к многократным рабочим листам и поддерживает такие функции как форматирование, вывод изображений, построение диаграмм, управление страницами, автофильтры, условное форматирование и многое другое.
Отдельно хочется отметить модуль FileClass, разработанный сотрудником московского офиса Micromine П. Яковлевым. Данный модуль значительно расширяет возможности работы с файлами Micromine.
Применение скриптинга для вычисления истинных мощностей по формуле Леонтовского
Пересчет на истинные мощности — это стандартная операция, с которой сталкивался, наверное, каждый, кто считал запасы для ГКЗ. Формула Леонтовского имеет вид:
Lист = L x (sin(A) x cos(B) x cos(G) ± cos(A) x sin(B))
где: A — угол падения рудного тела;
B — угол падения пересечения (угол скважины);
G — [острый] угол между заданными азимутами (азимутом падения рудного тела и азимутом пересечения).
Не будем сильно вдаваться в историю, однако отметим, что первоначально формула непосредственно для определения истинных мощностей в скважине не применялась.
Программная реализация данной формулы выявила свои подводные камни. Первая проблема заключалась в отсутствии четкого алгоритма определения значения угла падения рудного тела. Кстати, данную проблему также отмечали современники П.М. Леонтовского еще в начале прошлого века. Дело в том, что рудное тело в разрезе чаще всего не является идеальной геометрической фигурой, для которой можно определить единственный и однозначный угол падения. Соответственно встает вопрос об алгоритме аппроксимации.
Вторая проблема связана со знаком «±», который изменяется в зависимости от направления азимута пересечения(выработки) и азимута падения рудного тела в разные («+»), либо в одну («-») стороны. Интересно, что в зарубежном аналоге формулы Леонтовского — формуле Сетчелла — используется только знак «-», и именно в таком виде реализована встроенная функция расчета истинной мощности в Micromine.
Основные этапы работы
Отрисовка серединных линий — «ручная» работа, заключающая в том, что геолог строит стринг, проходящий через середины рудных интервалов и границы блоков. Данный процесс можно автоматизировать, но в случае месторождений 3-й и 4-й групп сложности велика вероятность возникновения ошибки, поэтому лучше сделать вручную.
Расчет серединных точек — автоматический процесс вычисления середин отрезков линий (рис. 1).
Рис. 1. Расчет серединных точек
Расчет азимутов и углов падения для серединных линий — реализован автоматически с помощью функции Micromine Стринги-Утилиты-Расчеты по стрингам (рис. 2).
Рис. 2. Расчеты по стрингам
Расчет азимутов и углов падения для рудных интервалов — реализован на основе усреднения (рис. 3 и рис. 4). В результате для каждого рудного интервала вычисляются азимут и угол падения.
Рис. 3. Расчет азимутов и углов падения рудных тел
Рис. 4. Присвоение азумутов и углов падения рудным интревалам
Расчет истинной мощности — непосредственная реализация формулы Леонтовского (рис. 5). В данном случае значение 35 — это экспериментально подобранная для конкретного объекта величина, относительно которой мы можем судить о том, в одну или в разные стороны падают рудное тело и выработка, и на основании этого применяем тот или иной вариант формулы.
Рис. 5. Расчет истинной мощности
В итоге в таблицу рудных интервалов добавляется поле истинной мощности. Кроме того, абсолютно никакой технической сложности не представляет пересчет на вертикальную и горизонтальную мощности.
Таким образом, применение скриптинга позволило успешно решить поставленную задачу по расчету истинных мощностей по формуле Леонтовского.
Опубликовано в журнале «Золото и технологии», № 4 (30)/декабрь 2015 г.