问题标签 [mapinfo]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
115 浏览

gis - 将 postgis 表转换为 Mapinfo 文件

我有一些从 MIF/MID 文件转换而来的 postgis 表,我对它们进行了一些数据处理。
我使用 ogr2org 将 MIF/MID 转换为 postgis 表,

但是如何将表格转换为 MIF/MID?

0 投票
1 回答
862 浏览

c# - 集成 Mapinfo 和 .NET C#

我正在 MapBasic 中开发一个调用 .NET 程序集库中的方法的应用程序

这就是我在 MapBasice 环境中声明该方法的方式。

我需要的是从我的 .NET C# 代码中回调我的 MapBasic 应用程序中的一些 Sub 或 Funcion。假设当用户单击我的 .NET 表单中的某个按钮时执行 MapBasic 代码的某些部分。

有没有办法做到这一点?如果是这样。我怎样才能实现它?任何帮助将不胜感激。

0 投票
0 回答
376 浏览

c# - DllImport 工作 32 位,失败 64 位 (AccessViolationException)

我在 C# 中使用 .Net 为 MapInfo Pro 构建了一个扩展。MapInfo 的旧版本是 32 位应用程序,最新版本是 64 位应用程序。我希望我的扩展程序能够与两者一起使用。虽然可以使用 .Net 调用 MapInfo 的许多功能,但其中一些仅适用于非托管 dll。其中一个 dll 称为 migrid.dll,我有 32 位和 64 位版本。但是我没有源代码,所以我无法获得该文件中函数的确切定义。

我想使用的函数之一是 GE_WriteContinuousValue。我拥有的关于该函数的唯一文档是如何使用 MapBasic(MapInfo 的默认编程语言)声明它:

声明函数 GE_WriteContinuousValue Lib "Migrid.dll" (

ByVal hGrid As Integer, '网格句柄

ByVal lCol As Integer, '列号

ByVal lRow As Integer, '行号

ByVal dValue As Float 'z 值

) 如果有错误,则为逻辑 'FALSE

'TRUE 成功

在我的 c# 代码中,我将此函数与 DllImport 一起使用:

然后调用它,例如:

使用 32 位 dll 可以正常工作。当我对 64 位 dll 使用相同的内容时,我在这一行得到“'System.AccessViolationException' Attempted to read or write protected memory”:

同一个 dll 中的其他函数在 32 位和 64 位上都可以正常工作。所以它必须是特定于这个功能的东西。

希望有一种方法可以得到这个函数的确切定义,我在网上搜索了一个叫做雪人的工具。这给了我一些信息,但对我没有任何用处。也许它对你有帮助?

32 位 dll 的结果:

来自 64 位 dll 的结果:

有人可以帮我摆脱 System.AccessViolationException 或为我指出正确的方向吗?

0 投票
1 回答
311 浏览

vba - VBA 创建 Mapinfo 表和点

不是很擅长 VBA,只是在基础知识上,所以陷入了下面的想法。

我想要一个 VBA 来创建一个 MapInfo 选项卡文件,并从具有给定坐标和基于另一列的图例的 excel 表中的图例中点。

在网上搜索了很多,但找不到比以下更多的东西。

CreateObject("MapInfo.Application")

请指导我完成这项工作。

谢谢

0 投票
0 回答
141 浏览

gis - 将 MapInfo TAB 转换为 MBTiles 坐标

我有一个 MapInfo TAB 文件,如下所示:

我还有一个参考区域的图像文件。我正在尝试将其转换为几乎可以工作的 mbtiles 文件,但它有点不对齐。

我正在从此文件中获取边界框,400000, 1200000, 500000, 1300000然后将其转换为纬度/经度,即-2.0018997431234, 60.670742105011, -0.17172476489587, 61.580961113449.

然后,我使用以下代码使用 zoom 12 将其转换为 MBTiles 网格:

这会产生一个2025 - 2046和的网格2921 - 2943

到目前为止,一切都很好。接下来,我将关联的图像缩放到 256px * tile X x 256px * tile Y 并导出映射到网格块/列的 256x256 块。

这会生成一个 mbtiles 文件,该文件可以工作,但与真实地图略有不同。

我尝试使用 MapTiler Desktop 导出相同的文件,这会生成一个具有相同网格的 mbtiles 文件,2025 - 20462921 - 2943它完全对齐。我无法为我的生活找出原因。

排队是-100000为了CoordSys Earth Projection什么?MapTiler 将地理位置显示为400000 10 0 1300000 0 -10。我想知道 -10 是偏移量还是我需要考虑的东西。

0 投票
0 回答
422 浏览

c# - 使用 GDAL 和 C# 导出到 MapInfo 选项卡

所以我正在尝试使用 GDAL nuget 包将 kml 文件转换为 mapinfo 选项卡层。我的代码可以使用 gdal 将 kml 转换为 geojson,但是每当我尝试转换为 MapInfo Tab 时,它都会失败并出现错误: CreateFeature() failed: invalid feature id 1 on the CopyLayer line of code。

这是我正在使用的当前代码:

选项卡输出正在输出文件夹中创建 .dat、.map、.tab 和 .id 文件,尽管它们不起作用。

这方面的文档似乎有限(或者我还没有找到)。有人对我所缺少的有任何建议吗?

谢谢,

0 投票
0 回答
41 浏览

gis - 包含 MapInfo Pro 中另一个表中的对象的组合多边形的面积计算错误

我在 MapInfo Pro 中遇到问题。

我有三个带多边形的表,并将表 1 和表 2 中的多边形组合成更大的多边形。现在我只对包含表三中多边形的区域感兴趣。

出于某种原因,当我对该选择进行查询时,我不断得到错误的结果 - 似乎组合多边形内有 4 个表 3 多边形我也得到了组合多边形的面积 4 次!

当我对组合多边形进行查询时,我在面积、多边形数量等方面得到了很好的结果。只有当我选择包含表 3 对象的组合区域时才会出错(Where condition= combined polygons.obj Contain table3.obj)。由于某种原因,结果被重复了好几次。

0 投票
1 回答
61 浏览

gis - 有没有办法应用随机颜色将所选点的样式更改为该颜色

所以我有一个随机颜色函数,我想将其应用于选择的点,但它为每个点提供随机颜色,而不是选择点的随机颜色。我知道选择部分有效,但我不确定如何使其每种颜色仅调用该随机颜色生成器一次。这是我到目前为止所拥有的。感谢您的任何建议/帮助!

0 投票
1 回答
118 浏览

date - MapBasic - 将 Excel 日期转换为 MapInfo 日期

如果我有一个 Excel 日期表:

如何将其转换为 MapInfo 日期格式?

使用 MapBasic。

0 投票
0 回答
35 浏览

sql - 如何知道 Mapbasic 中隐藏的 SQL 运算符或函数?

目前我正在使用 MapInfo 10.5,我很惊讶地知道我可以在 MapInfo SQL 选择中使用 Between 运算符,而不是将它放在运算符列表的下拉列表中。有没有办法知道 MapInfo 中隐藏了多少 SQL 的函数或运算符?就像,我正在尝试在 MapInfo 中使用功能,但它抛出错误并显示“无法识别的命令”。