MapInfo Pro и Python

 

Пользователи MapInfo Pro применяют язык программирования MapBasic для автоматизации задач, создания пользовательских приложений, интеграции MapInfo Pro с другими инструментами и т.д. Однако, MapBasic - это компилируемый язык, который является своего рода барьером для непрограммистов.

В MapInfo Pro есть окно MapBasic, которое позволяет исполнять команды (интерпретировать), что очень полезно, но, тем не менее, окно имеет множество ограничений в использовании по сравнению с компилируемым MapBasic-программами - например, отсутствие управляющих операторов и невозможность отладки. 

 

 

Что такое Python?

 

Python - интерпретируемый язык программирования с широкой поддержкой, применяемый в различных областях. Он простой и легко осваиваемый. Опытные программисты на каком-либо другом языке смогут очень быстро перейти на Python, а новички легко осваивают чистый синтаксис и структуру отступов.

Python - это полнофункциональный язык, используемый для всего: от написания приложений до создания веб-сайтов, анализа и визуализации данных. Существует множество доступных библиотек и ресурсов, которые помогут вам в этом. А сайт Python.org - это хорошее место, чтобы начать изучение языка.

Многие студенты, выпускающиеся из вузов с любой компьютерной курсовой работой, и тем более связанной с ГИС, уже зачастую знакомы с Python.

Таким образом, наличие более мощного, широко известного и используемого языка программирования для MapInfo Pro, который можно отладить, поможет многим существующим пользователям и привлечет новых.

Начиная с версии MapInfo Pro 17.03 в программу была добавлена возможность создавать надстройки или утилиты с использованием Python. Однако несмотря на то, что это был хороший первый шаг, в реальности для пользователей, за исключением опытных разработчиков Python, это было слишком сложно.

 

 

 

Что было сделано для MapInfo Pro 2019.1?

 

Начиная с 2019.1 Pitney Bowes берет курс на то, чтобы сделать Python первоклассным скриптовым языком в MapInfo Pro. А также значительно упростить создание утилит с его помощью.

Во-первых, Python 3.7 теперь устанавливается вместе с MapInfo Pro. Это необязательный компонент, поэтому, если он вам не нужен, вы можете отключить его в процессе пользовательской установки.

Во-вторых, MapInfo Pro устанавливает несколько популярных библиотек Python по умолчанию, таких как: numpy, scipy, seaborn, pandas, matplotlib, osgeo, ptvsd, mi_py_debugger. Дополнительные модули могут быть добавлены и удалены по мере необходимости.

 

 

Запуск кода Python в Pro

 

Начиная с версии 2019.1 вы можете открыть и запустить файл Python (* .py) через окно «Программа». При этом используется оператор MapBasic "Run Application". Его также можно вызвать из окна MapBasic или же скомпилированного mbx.

 

 

 

Создание утилит без компилирования MapBasic


Теперь вы можете создать свою утилиту для MapInfo Pro, используя только Python. Утилита отличается от скрипта тем, что она остается загруженной и может добавлять элементы пользовательского интерфейса, такие как ленты, контекстные меню и плавающие окна. Обратите внимание, что для достижения этой цели автоматически создается файл .mbx.

 

 

Регистрация утилит на основе Python


Начиная с новой версии программы вы можете зарегистрировать и автоматически загружать утилиты в файлах формата (* .py).

 

 

Отладка скриптов и утилит


Теперь можно отлаживать как скрипты Python, так и утилиты. Рекомендации и объяснения, как это сделать, можно найти в бесплатном приложении Visual Studio Code.

 

 

Консоль Python


Для написания кода можно использовать любую среду разработки Python IDE, но Pitney Bowes также предоставляет свою собственную консоль, доступную в Mapinfo Marketplace, которая поможет в интерактивном редактировании и запуске небольших скриптов. Она поддерживает подсветку синтаксиса и intellisense.

 

 

Консоль можно скачать по ссылке, но гораздо удобнее сделать это прямо из интерфейса MapInfo Pro.

 

 

Доступ к объектной модели Pro


Помимо операторов MapBasic, MapInfo Pro имеет объектную модель, доступную разработчикам MapBasic и .NET, которая позволяет легко и просто настраивать ленту, добавлять контекстные меню, создавать стыкуемые панели, мини-панели инструментов и т.д. Она также имеет множество событий, о которых вы можете получать уведомления, когда пользователь, например, открывает рабочий набор или таблицу, запускает команду и т.д.

Используя реализацию Python .NET, мы можем очень легко представить всю объектную модель в коде Python, поддерживается также intellisense. ExtensibilityReference, который является файлом справки, документирующим объектную модель, теперь устанавливается вместе с MapInfo Pro (в дополнение к MapBasic). Информация Python из замечаний к выпуску была интегрирована в ExtensibilityReference.

Поскольку Pitney Bowes продолжает расширять объектную модель, она в равной степени поможет разработчикам и Mapbasic, и .NET, и Python.

 

 

Открытие Native и NativeX таблиц через Python


В комплекте с установкой Python идет Osgeo, который содержит GDAL - хорошо известную библиотеку с открытым исходным кодом для чтения и записи геопространственных данных. Мы включили новый драйвер gdal под названием EFAL, который является общедоступным и может читать и писать как Native, так и NativeX таблицы, что значительно облегчает взаимодействие с другими инструментами Python и инструментами от сторонних разработчиков.

 

 

Справочная информация по Python


Кроме консоли в Mapinfo Marketplace доступно приложение под названием "Python Quick Start", которое содержит некоторые примеры кода и справочную информацию о начале работы с Python в MapInfo Pro. Приложение будет обновляться и пополняться новыми материалами в ближайшее время.

 

 

Приложение также, как и консоль, можно скачать по ссылке, или прямо из интерфейса MapInfo Pro.

 

 

 

Другие полезные статьи:

 

Новые возможности SQL в MapInfo Pro v2019

Использование систем координат СК-42, СК-95, ПЗ-90.11 и ГСК-2011

Тысяча причин обновить MapInfo Pro до 64-битной версии