MapInfo Pro和Python基础知识

news2024/11/20 15:38:32

MapInfo Pro用户长期以来一直使用MapBasic脚本语言来自动化任务、构建自定义应用程序、创建Pro的特定领域自定义、将Pro与其他工具集成等。

MapBasic主要是一种编译语言,这对非程序员来说有点障碍。

我们确实有MapBasic窗口,它允许MapBasic语句和代码直接执行(“解释”),这非常有用。然而,与编译的MapBasic相比,它确实有许多限制,例如不支持控制语句,并且不可调试。最近,我们一直在改进解释MapBasic,甚至通过新的SQL窗口扩展它的使用。我们将继续这样做。


MapBasic一直是Pro在我们的用户中取得成功的关键之一。

那么,为什么是Python?

这篇文章将解释2019.1的理由、方向和内容。接下来的文章将展示如何使用Python以及如何入门。

这是怎么一回事?

Python也是一种解释性脚本和编程语言,在所有领域都有广泛的支持和使用。

学习起来又快又容易。

从Python.org网站:https://www.python.org/

任何其他语言的经验丰富的程序员都可以很快学会Python,初学者发现干净的语法和缩进结构很容易学习。

Python是一种功能齐全的语言,用于从编写Pro等应用程序到创建网站,再到数据科学分析和可视化的所有方面。因此,有许多可用的库和资源可以帮助您。Python.org是开始学习更多知识的好地方。

大多数大学毕业后从事任何计算机课程工作,甚至GIS的学生都已经接触过Python。

有一种更强大、更广为人知、更常用的Pro脚本语言可以调试,这将帮助许多现有用户,并有望吸引更多用户。这是对MapBasic向前移动的补充。

从Pro 17.03版本开始,我们启用了在Pro中使用Python创建插件或应用程序的功能。虽然这是一个很好的第一步,我们确实收到了一些兴趣,但除了经验丰富的python开发人员之外,这实际上太难设置了。

我们为MapInfo Pro 2019.1做了什么?

从Pro 2019.1开始,我们正在努力使Python成为Pro中的一流脚本语言。我们还使通过Python创建外接程序变得更加容易。

首先,Python 3.7现在已与Pro一起安装。它是一个可选组件,因此如果您不需要它,可以通过自定义安装将其关闭。(如果是这样的话,现在就停止阅读…)

Pro默认安装几个众所周知的Python库,如numpy、scipy、seaborn、panda、matplotlib、osgeo/gdal、ptvsd、mi_py_debugger。可以根据需要添加和删除其他模块。

在Pro中运行python代码

现在,您可以通过“运行程序”对话框打开并运行python文件(*.py)。这使用了mapbasic语句“run application”file.py。它也可以从mapbasic窗口或编译的mbx中调用。

在未编译MapBasic的情况下创建外接程序

现在,您可以仅使用Python创建外接程序。外接程序与脚本的不同之处在于,它保持加载状态,并且可以添加ui项,如功能区、上下文菜单和停靠窗口。请注意,stock.mbx是在后台自动生成的。

注册基于Python的外接程序

现在,您可以注册并自动加载.py文件加载项。

调试脚本和加载项

python脚本和加载项都可以调试。我们建议并解释如何使用免费的Visual Studio代码应用程序进行此操作。

Python控制台

您可以使用任何Python IDE来开发代码,但我们通过MapInfo Marketplace提供了一个小型Python控制台,以帮助交互式编辑和运行小型Python脚本。它支持语法高亮显示和智能感知。

访问Pro的对象模型

除了MapBasic语句之外,MapInfo Pro还有一个向MapBasic和公开的对象模型。NET开发人员可以轻松地自定义功能区、添加上下文菜单、创建停靠窗口、映射小工具栏等。它还有许多事件,当用户或Pro执行诸如打开工作区或表、进行选择、运行命令等操作时,您可以得到通知。

通过使用Python.NET实现中,我们能够非常容易地将整个对象模型公开给Python代码,甚至支持intellisense。ExtensibilityReference是一个记录对象模型的帮助文件,现在与Pro一起安装(除了与MapBasic一起安装)。发行说明中的Python信息已集成到ExtensionReference中。

随着我们继续扩展对象模型,它将有助于MapBasic。NET和Python脚本/开发人员。

通过Python打开Native和NativeX表

Python安装中包括Osgeo,它包含GDAL——一个众所周知的用于读取和写入地理空间数据的开源库。我们包含了一个名为EFAL的新gdal驱动程序,它是公开的,可以读写Native和NativeX表,这使得与其他python或第三方工具的交互更加容易。

Startup.py

如果发现startup.py文件在全局作用域设置中执行。类似于startup.wor的查找方式。

Python入门

MapInfo Marketplace还提供了一款名为“PythonQuickStart”的应用程序,其中包含一些示例代码和一些关于在Pro中开始使用Python的参考信息。现在它是可用的,但没有我们想要的样品数量。我们将在不久的将来对其进行改进和更新。

Python脚本的快速示例



这是迄今为止我们在MapInfoPro中使用Python的原因和内容的总结。

下面是一个自动化脚本示例:

这是我们正在讨论的那种自动化的一个很好的例子。

如果您需要帮助,请私信给我。

花了大约一个小时使用MapInfo Marketplace中PythonQuickStart插件附带的一些示例数据创建了这个。

它在一组列上创建一个范围主题,并根据列名将其导出为jpg文件。

我使用MapBasic窗口将主题语句和保存窗口作为语句进行回显,然后将它们添加到我的Python脚本中。

Here is the script:

### Description: Shows how to automate the export of multiple themes to jpg

### Category: Mapping

import os

import time

try:

 # open workspace with our map

 modulePath = get_current_module_path()

 table = os.path.abspath(os.path.dirname(modulePath) + r"\..\Data\Demographic_exampleX.TAB")

 do('open table "{}" as demographic'.format(table))

 # create list of columns to them on

 themeColumns = [

 'Age_0_4_P',

 'Age_5_9_P',

 'Age_10_14_P',

 'Age_15_19_P',

 'Age_20_24_P',

 'Age_25_29_P',

 'Age_30_34_P',

 'Age_35_39_P',

 'Age_40_44_P',

 'Age_45_49_P',

 'Age_50_54_P',

 'Age_55_59_P',

 'Age_60_64_P',

 'Age_65_69_P',

 'Age_70_74_P',

 'Age_75_79_P',

 'Age_80_84_P',

 'Age_85_89_P'

 'Age_90_94_P',

 'Age_95_99_P',

 'Age_100_yr_over_P',

 'Age_Total'

 ]

 for col in themeColumns:

 # open map window and zoom

 do('map from demographic width 4 units "in" height 4 units "in" floating')

 do('set map window frontwindow() zoom entire')

 # create the thematic

 do('shade window frontwindow() 1 with {} ranges apply all use color Brush (2,16777168,16777215) 0: 10 Brush (2,16777168,16777215) Pen (1,2,0) ,10: 16 Brush (2,11591824,16777215) Pen (1,2,0) ,16: 21 Brush (2,5296240,16777215) Pen (1,2,0) ,21: 30 Brush (2,2146448,16777215) Pen (1,2,0) ,30: 80 Brush (2,27552,16777215) Pen (1,2,0) default Brush (2,16777215,16777215) Pen (1,2,0) # use 1 round 0.1 inflect off Brush (2,16744640,16777215) at 3 by 1 color 1 # '.format(col))

 # export map to jpg using column name

 dir = os.path.join(os.path.dirname(modulePath),'Output')

 if not os.path.exists(dir):

 os.mkdir(dir)

 file = r'{}\{}.jpg'.format(dir,col)

 do('Save Window frontwindow() As "{}" Type "JPEG" Width 4 Units "in" Height 4 Units "in" Resolution 120'.format(file))

 # close the map window

 do('close window frontwindow()')

 # clean up

 do('close table demographic')

except Exception as e:

 print("Error: {}".format(e.__cause__))



这是文件资源管理器中输出的图片:



只要付出一点额外的努力,我们就可以将地图放入带有标题、图例、比例尺等的布局中,并将其导出为图像或.pdf。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1358348.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

罗德与施瓦茨FSVA40信号和频谱分析仪

罗德与施瓦茨FSVA40是一款功能信号和频谱分析仪,适用于从事射频系统的开发、生产、安装和服务的用户。FSVA40信号和频谱分析仪系列始终提供最佳的价格和性能组合,无论是根据最新通信标准测试生产中的无线设备,还是测量低相位噪声、高灵敏度和…

根本记不住MySQL进阶查询语句

1 MySQL进阶查询 1.1 MySQL进阶查询的语句 全文以数据库location和Store_Info为实例 ---- SELECT ----显示表格中一个或数个字段的所有数据记录 语法:SELECT "字段" FROM "表名"; select 列名 from 表名 ; ---- DISTINCT ----不显示重复的数…

农业银行RPA实践 3大典型案例分析

零接触开放金融服务在疫情之下被越来越多的银行和客户所认同,引起了更广泛的持续关注,各家银行纷纷开展产品服务创新,加速渠道迁移,同时通过远程办公、构建金融生态等方式积极推进零接触开放金融体系建设。 随着商业银行科技力量的…

后端开发——JDBC的学习(三)

本篇继续对JDBC进行总结: ①通过Service层与Dao层实现转账的练习; ②重点:由于每次使用连接就手动创建连接,用完后就销毁,这样会导致资源浪费,因此引入连接池,练习连接池的使用; …

新年福利|这款价值数万的报表工具永久免费了

随着数据资产的价值逐渐凸显,越来越多的企业会希望采用报表工具来处理数据分析,了解业务经营状况,从而辅助经营决策。不过,企业在选型报表工具的时候经常会遇到以下几个问题: 各个报表工具有很多功能和特性&#xff0c…

Python数据处理库之tablib详解

概要 Python 提供了许多库和工具来处理数据,其中之一就是 tablib。tablib 是一个功能强大且易于使用的库,用于处理各种数据格式,包括Excel、CSV、JSON等。它不仅可以用于数据导入和导出,还支持数据转换、过滤、合并等操作。本文将…

《C++语言程序设计(第5版)》(清华大学出版社,郑莉 董渊编著)习题——第2章 C++语言简单程序设计

2-28 用穷举法找出1~100的质数并显示出来。分别使用while、do-while、for循环语句实现。 // 使用while循环#include <iostream>using namespace std;int main() {int number 2;cout << "1~100之间的质数有&#xff1a;";while (number < 100) {int …

HarmonyOS应用开发之ArkTS语言学习记录

1、ArkTS介绍 ArkTS是鸿蒙生态的应用开发语言。它在保持TypeScript&#xff08;简称TS&#xff09;基本语法风格的基础上&#xff0c;对TS的动态类型特性施加更严格的约束&#xff0c;引入静态类型。同时&#xff0c;提供了声明式UI、状态管理等相应的能力&#xff0c;让开发者…

Xcode15在iOS12系统上崩溃的原因

1.1.崩溃在_dyld_start&#xff0c;如图&#xff1a; 崩溃截图 解决办法&#xff1a;在other link flags添加-ld64 注意&#xff1a;该办法只能解决运行真机&#xff0c;archive出来的包依然报错闪退...... 1.2 SwiftUI导致iOS12及以下系统闪退问题 SwiftUI是iOS13开始使用&…

MongoDB 启动时:服务名无效

1.问题场景 电脑睡眠后&#xff0c;再连接服务发现无法连接&#xff0c;启动服务报&#xff1a;服务名无效。 2.打开服务管理&#xff1a; 发现服务中没有MongoDB的服务 3.解决 &#xff08;1&#xff09;先找打MongoDB安装路径&#xff0c;把data文件夹下所有文件删除 &a…

Python之安装和环境配置

python的下载 1.可以去python官网下载&#xff0c;https://www.python.org/ 2.下载完成后&#xff0c;安装即可。 python的检测 1.打开开始-运行-cmd&#xff08;快捷键winR&#xff09;。 如果是mac&#xff0c;打开使用工具-终端。 2.在终端里输入python&#xff0c;以下…

魔法少女小Scarlet#洛谷

题目描述 Scarlet 最近学会了一个数组魔法&#xff0c;她会在 n n n\times n nn 二维数组上将一个奇数阶方阵按照顺时针或者逆时针旋转 9 0 ∘ 90^\circ 90∘。 首先&#xff0c;Scarlet 会把 1 1 1 到 n 2 n^2 n2 的正整数按照从左往右&#xff0c;从上至下的顺序填入初…

「Vue3面试系列」Vue3 所采用的 Composition Api 与 Vue2 使用的 Options Api 有什么不同?

文章目录 开始之前正文一、Options Api二、Composition Api三、对比逻辑组织Options APICompostion API 逻辑复用 小结 开始之前 Composition API 可以说是Vue3的最大特点&#xff0c;那么为什么要推出Composition Api&#xff0c;解决了什么问题&#xff1f; 通常使用Vue2开…

山西电力市场日前价格预测【2024-01-06】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2024-01-06&#xff09;山西电力市场全天平均日前电价为261.48元/MWh。其中&#xff0c;最高日前电价为424.18元/MWh&#xff0c;预计出现在18:00。最低日前电价为0.00元/MWh&#xff0c;预计出…

vivado non-project

https://www.xilinx.com/video/hardware/using-the-non-project-batch-flow.html --video https://cloud.tencent.com/developer/article/1169476 bd related run_my_design.tcl 交互模式 start_gui stop_gui

图解设计模式-中介者模式(Mediator)

中介者模式 定义 使用一个中介者对象&#xff08;mediator&#xff09;集中封装多个具有依赖/关联关系的对象&#xff08;colleague&#xff0c;同事对象&#xff09;之间的交互&#xff0c;使各对象之间不再互相引用&#xff0c;降低对象之间的强耦合程度&#xff0c;对象之…

Vue CLI组件通信

目录 一、组件通信简介1.什么是组件通信&#xff1f;2.组件之间如何通信3.组件关系分类4.通信解决方案5.父子通信流程6.父向子通信代码示例7.子向父通信代码示例8.总结 二、props1.Props 定义2.Props 作用3.特点4.代码演示 三、props校验1.思考2.作用3.语法4.代码演示 四、prop…

借助文档控件Aspose.Words,使用 Java 在 Word 文档中创建表格

Microsoft Word 是一种流行的文字处理应用程序&#xff0c;用于创建各种类型的文档。这些文档可能包含多种类型的元素&#xff0c;包括文本、图像、表格和图表。当涉及到用 Java 自动创建和操作文档时&#xff0c;您可能需要一个轻松的解决方案来在 Word 文档中创建表格。因此&…

CentOS 8 基于官方源码制作openssh 9.6 rpm包(含ssh-copy-id、openssl) —— 筑梦之路

CentOS 8 制作openssh9.6 rpm(含ssh-copy-id命令)包 —— 筑梦之路_centos8 rpmbuild -ba openssh.spec 9.6-CSDN博客 CentOS 8 制作openssh9.0/9.2/9.3 rpm包——筑梦之路_centos8 openssl rpm包-CSDN博客 效果截图&#xff1a; 和使用官方默认的spec文件制作的区别&#xff…

2014年多线冲刺1000万

1、盯重要的科技股票等待机会低价买入&#xff08;投入不超过20万&#xff0c;全亏也认了。&#xff09;目标20倍取出即400万。3次机会达1000万就收手。 2、公司&#xff0c;找机会。1000万。 3、创业&#xff0c;经商做企业。1000万。 4、直播&#xff0c;视频&#xff0c;课程…