博客
关于我
MapXtreme 2005 学习心得 一些基础函数代码(四)
阅读量:801 次
发布时间:2023-02-07

本文共 3263 字,大约阅读时间需要 10 分钟。

MapInfo 开发实例:基础操作示例

一、创建图层

1. 创建图层函数代码:CreateLayer

public static void CreateLayer(string tableName, string layerName)
{
MapInfo.Mapping.Map myMap = MapInfo.Engine.Session.Current.MapFactory[0];
MapInfo.Mapping.FeatureLayer myLayer = new MapInfo.Mapping.FeatureLayer(table, layerName, layerName);
myMap.Layers.Add(myLayer);
}

2. 添加点函数代码:AddPoint

public static void AddPoint(string layerName, DPoint dPoint, short shortCode, Color color)
{
MapInfo.Mapping.Map myMap = MapInfo.Engine.Session.Current.MapFactory[0];
FeatureLayer workLayer = myMap.Layers[layerName];
FeatureGeometry point = new FeatureGeometry(workLayer.CoordSys, dPoint);
// 设置样式
Style style = new SimpleVectorPointStyle(shortCode, color, 20);
CompositeStyle compositeStyle = new CompositeStyle(style);
// 添加点
Feature pointRow = new Feature(table.TableInfo.Columns);
pointRow.Geometry = point;
pointRow.Style = compositeStyle;
pointRow["index"] = Random().Next(999);
pointRow["value"] = "这是一个点";
table.InsertFeature(pointRow);
}

3. 添加线函数代码:AddLine

public static void AddLine(string layerName, DPoint startPoint, DPoint endPoint, short shortCode, Color color)
{
MapInfo.Mapping.Map myMap = MapInfo.Engine.Session.Current.MapFactory[0];
FeatureLayer workLayer = myMap.Layers[layerName];
FeatureGeometry line = MultiCurve.CreateLine(workLayer.CoordSys, startPoint, endPoint);
// 设置样式
Style lineStyle = new SimpleLineStyle(new LineWidth(3, LineWidthUnit.Pixel), shortCode, color);
CompositeStyle compositeStyle = new CompositeStyle(lineStyle);
// 添加线
Feature lineRow = new Feature(table.TableInfo.Columns);
lineRow.Geometry = line;
lineRow.Style = compositeStyle;
lineRow["index"] = Random().Next(999);
lineRow["value"] = "这是一个线";
table.InsertFeature(lineRow);
}

二、显示标注文本

1. 显示标注函数代码:ShowValue

public static void ShowValue(string tableName, string columnName)
{
MapInfo.Mapping.Map myMap = MapInfo.Engine.Session.Current.MapFactory[0];
// 创建标注图层
LabelLayer labelLayer = new LabelLayer();
myMap.Layers.Add(labelLayer);
// 获取表
Table table = MapInfo.Engine.Session.Current.Catalog.GetTable(tableName);
// 绑定数据源
LabelSource source = new LabelSource(table);
// 设置显示的字段
source.DefaultLabelProperties.Caption = columnName;
// 添加到标注图层
labelLayer.Sources.Append(source);
// 加载数据
source.Load();
// 设置样式
source.DefaultLabelProperties.Visibility.Enabled = true;
source.DefaultLabelProperties.Visibility.VisibleRangeEnabled = true;
source.DefaultLabelProperties.Visibility.VisibleRange = new VisibleRange(0.01, 10, MapInfo.Geometry.DistanceUnit.Mile);
source.DefaultLabelProperties.Visibility.AllowDuplicates = true;
source.DefaultLabelProperties.Visibility.AllowOverlap = true;
source.DefaultLabelProperties.Visibility.AllowOutOfView = true;
// 设置字体样式
Font font = new Font("黑体", 12);
font.ForeColor = System.Drawing.Color.Red;
source.DefaultLabelProperties.Style.Font = font;
}

三、使用命名空间

using MapInfo.Geometry;
using MapInfo.Mapping;
using MapInfo.Styles;
using MapInfo.Data;
using MapInfo.Text;
using System.Drawing;

通过以上代码示例,可以快速实现MapInfo环境下的基础操作,包括图层的创建、几何对象的添加以及标注的显示。这些代码可以整合到一个类中,记得添加必要的命名空间声明。

转载地址:http://igufk.baihongyu.com/

你可能感兴趣的文章
MySQL高级-视图
查看>>
nacos集群搭建
查看>>
Nessus漏洞扫描教程之配置Nessus
查看>>
Nest.js 6.0.0 正式版发布,基于 TypeScript 的 Node.js 框架
查看>>
Netpas:不一样的SD-WAN+ 保障网络通讯品质
查看>>
Netty WebSocket客户端
查看>>
Netty工作笔记0011---Channel应用案例2
查看>>
Netty工作笔记0014---Buffer类型化和只读
查看>>
Netty工作笔记0050---Netty核心模块1
查看>>
Netty工作笔记0084---通过自定义协议解决粘包拆包问题2
查看>>
Netty常见组件二
查看>>
netty底层源码探究:启动流程;EventLoop中的selector、线程、任务队列;监听处理accept、read事件流程;
查看>>
Netty核心模块组件
查看>>
Netty框架的服务端开发中创建EventLoopGroup对象时线程数量源码解析
查看>>
Netty源码—2.Reactor线程模型一
查看>>
Netty源码—4.客户端接入流程一
查看>>
Netty源码—4.客户端接入流程二
查看>>
Netty源码—5.Pipeline和Handler一
查看>>
Netty源码—6.ByteBuf原理二
查看>>
Netty源码—7.ByteBuf原理三
查看>>