一、在ArcMap中的定位操作

已知若干点的经纬度坐标,要求在地图中进行定位:

1.通过Tool 》Add X Y data 定位点,注意选择地理坐标系下的wgs 1984坐标系;

2.定位后的点不能执行查询、分析等操作,需要重新export data;

3.导出的数据最好转换成投影坐标,以便于计算。可首先把已知投影坐标的图层加载到地图中,然后加入第二步产生的点图层,然后将点图层export data,注意坐标系统选择“the data frame”

二、在ArcObject开发时定位的代码示例

2.1 代码参考1

 private void axMapControl1_OnMouseDown(object sender, IMapControlEvents2_OnMouseDownEvent e)
{ if (i >= )//测试目的
return;
i++; ITextElement te = createTextElement(e.mapX,e.mapY,"魁x");
axMapControl1.ActiveView.GraphicsContainer.AddElement(te as IElement, );
axMapControl1.Refresh(esriViewDrawPhase.esriViewGraphics, null, null); }
int i; public IBalloonCallout createBalloonCallout(double x, double y)
{
IRgbColor rgb = new RgbColorClass();
{
rgb.Red = ;
rgb.Green = ;
rgb.Blue = ; }
ISimpleFillSymbol sfs = new SimpleFillSymbolClass();
{
sfs.Color = rgb;
sfs.Style = esriSimpleFillStyle.esriSFSSolid;
} IPoint p = new PointClass();
{
p.PutCoords(x, y);
} IBalloonCallout bc = new BalloonCalloutClass();
{
bc.Style = esriBalloonCalloutStyle.esriBCSRoundedRectangle;
//
bc.Symbol = sfs;
//
bc.LeaderTolerance = ;
// bc.AnchorPoint = p;
} return bc;
} public ITextElement createTextElement(double x, double y, string text)
{
IBalloonCallout bc = createBalloonCallout(x, y); IRgbColor rgb = new RgbColorClass();
{
//rgb.Red = 255;
rgb.Green = ;
}
ITextSymbol ts = new TextSymbolClass();
{
ts.Color = rgb;
} IFormattedTextSymbol fts = ts as IFormattedTextSymbol;
{
fts.Background = bc as ITextBackground;
}
//fts.Size = 8;
ts.Size = ; IPoint point = new PointClass();
{
double width = axMapControl1.Extent.Width / ;
double height = axMapControl1.Extent.Height / ;
point.PutCoords(x + width, y + height);
} ITextElement te = new TextElementClass();
//IMarkerElement me = new MarkerElementClass();
{
te.Symbol = ts;
//ts.Text = text;
te.Text = text;
} IElement e = te as IElement;
{
e.Geometry = point;
}
return te; }
}

2.2 地图中添加label以标注地图

有多种方法:

1.使用TextElement

2.使用Label属性或与lyr文件或mxd文件结合进行标注

3.使用AnnotateLayerPropertiesCollection对象进行复杂标注

其中,第二种方法的代码为:

    private void AddLabel2Map(string strField)
{
IGeoFeatureLayer pGeoFeatureLayer;
ILineLabelPosition pLineLabelPosition;
ILabelEngineLayerProperties pLabelEngineLayerProperties;
IAnnotateLayerProperties pAnnotateLayerProperties; pGeoFeatureLayer = (IGeoFeatureLayer)pMapControl.get_Layer();
pGeoFeatureLayer.AnnotationProperties.Clear(); pLineLabelPosition = new LineLabelPositionClass();
pLineLabelPosition.Above = false;
pLineLabelPosition.AtEnd = false;
pLineLabelPosition.Below = false;
pLineLabelPosition.Horizontal = false;
pLineLabelPosition.InLine = true;
pLineLabelPosition.OnTop = true;
pLineLabelPosition.Parallel = true;
pLineLabelPosition.ProduceCurvedLabels = true; pLabelEngineLayerProperties = new LabelEngineLayerPropertiesClass();
pLabelEngineLayerProperties.Symbol = new TextSymbolClass();
pLabelEngineLayerProperties.IsExpressionSimple = true;
pLabelEngineLayerProperties.Expression = "[" + strField + "]";//需要中括号
pLabelEngineLayerProperties.BasicOverposterLayerProperties.LineLabelPosition = pLineLabelPosition; pAnnotateLayerProperties = (IAnnotateLayerProperties)pLabelEngineLayerProperties;
pAnnotateLayerProperties.DisplayAnnotation = true;
pAnnotateLayerProperties.FeatureLayer = pGeoFeatureLayer; pAnnotateLayerProperties.LabelWhichFeatures = esriLabelWhichFeatures.esriAllFeatures;
pAnnotateLayerProperties.WhereClause = ""; pGeoFeatureLayer.AnnotationProperties.Add(pAnnotateLayerProperties);
pGeoFeatureLayer.DisplayAnnotation = true;
pMapControl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);
}

这种方法的一个简化是,在ArcMap中事先设定好图层标记的属性,保存为mxd或lyr文件,程序中只使用

pGeoFeatureLayer.DisplayAnnotation和pGeoFeatureLayer.DisplayField设定显示的字段以及是否显示。

在ArcMap中设定的一些细节为:

1.设定标记是否重复、是否每个图元一个标记、或每个图元的每一部分都有一个标记,如图:

2.如何设定label只保留两位小数,如图:

还可以设置其他更为丰富的格式。

参考文章

1. 风过 无痕.arcEngine经典代码-添加气泡提示框(标注,文本,). 2008-8.

2. 丛晓男. 在地图中添加label以标注地图. 2010-6.

Arc Engine 中添加气泡提示框的更多相关文章

  1. MFC中添加ToolTip提示框

    PART 1 MFC 对话框中的 Buttton添加提示 例如我们想在一个对话框中的一个button控件添加tooltip,实现的方法如下: 1. 在该对话框的类中添加一个CToolTipCtrl类型 ...

  2. 在vue项目中添加全局提示框

    1.写一个提示框组件:msg.vue (注明:这里用两个div的原因是成功和失败的提示不能用同一个div,因为他们可能紧接着出现,所以不能从始至终只有一个提示框在工作) 2.写一个调用此组建的js : ...

  3. Qt显示Linux desktop natification气泡提示框

    在现代Linux桌面环境上我们时常可以看到类似的消息框: 这些消息框常用在如下场景: 即时聊天软件的新消息 闹钟定时提示 电池电量提示 邮件消息 长耗时操作的完成提示 在freedesktop.org ...

  4. iOS 灵活,简易,扩展性强的气泡提示框LFBubbleView(含源码)

    一.效果图 二.使用方法 使用简单,4行代码集成. _bubbleView = [[LFBubbleView alloc] initWithFrame:CGRectMake(, , , )]; _bu ...

  5. JSP中添加弹出框

    JSP中添加弹出框 %> <script language="javascript" type="text/javascript"> aler ...

  6. 在ASP.NET中引用自定义提示框

    在html网页中自定义提示框 正文: 在一般的B/S架构中项目,与用户的交互信息是非常重要的.在一般的情况下,设计人员都在把用户信息呈现在html中,用div和span去弹出相关信息.对于一般的情况而 ...

  7. ARC工程中添加非ARC文件

    转载自:http://blog.csdn.net/zhenweicao/article/details/16988543 分类: IOS2013-11-27 17:02 626人阅读 评论(0) 收藏 ...

  8. ArcGIS Engine中添加点、线、面元素

    转自原文 ArcGIS Engine中添加点.线.面元素 此种方式为IElement的方式在axMapControl的GraphicsContainer中好绘制图形. //画点 IPoint pt = ...

  9. UWP中的消息提示框(一)

    不管什么平台,应用内难免会出现一些消息提示框,下面就来聊聊我在UWP里用到的消息提示框. 弹窗也可按是否需要用户操作促发一些逻辑进行分为两大类. 不需要用户干涉的一类: MessageDialog:操 ...

随机推荐

  1. HDU 1301 Jungle Roads (最小生成树,基础题,模版解释)——同 poj 1251 Jungle Roads

    双向边,基础题,最小生成树   题目 同题目     #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include<stri ...

  2. 防止注入网上查了下用SqlParameter可以,那SqlParameter处理单引号时候是自动转义了吗

    String sql = String.Format(); SqlCommand com = new SqlCommand(sql, con); 一般而言,把 一个单引号,替换成 两个单引号就可以了.

  3. ASP.NET连接数据库并获取数据

    关键词:连接对象的用法SqlConnection,SqlCommand,SqlDataAdapter *数据访问方式的写法 工具/原料 VS SQL SERVER 2012 R2 方法/步骤1: 1. ...

  4. python logging 学习笔记

    logging.basicConfig函数各参数: filename: 指定日志文件名 filemode: 和file函数意义相同,指定日志文件的打开模式,'w'或'a' format: 指定输出的格 ...

  5. SQL索引一步到位(此文章为“数据库性能优化二:数据库表优化”附属文章之一)

    SQL索引一步到位(此文章为“数据库性能优化二:数据库表优化”附属文章之一) SQL索引在数据库优化中占有一个非常大的比例, 一个好的索引的设计,可以让你的效率提高几十甚至几百倍,在这里将带你一步步揭 ...

  6. JS代码片段:一个日期离现在多久了

    var dateDiff = function(hisTime,nowTime){ if(!arguments.length) return ''; var arg = arguments, now ...

  7. Android权限安全(12)apk安装在sd卡上时,如何保证数据安全

    apk安装在sd卡上时,如果把sd卡拿下安在另一个手机B上,那么apk的数据就可以被B里的恶意应用访问了. 下面是android解决这个问题的方案: 绑定设备 1,绑定perDevice使得应用以及应 ...

  8. BZOJ 1923 外星千足虫(高斯消元)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1923 题意:有n个数字,m次测试.每个数字为0或者1.每次测试选出一些数字出来把他们加起 ...

  9. 什么是LBS?地理位置服务

    做微信开发中必有的LBS,查了下复制过来做个了解. 关键字:定位 服务 基于位置的服务,是指通过电信移动运营商的无线电通讯网络或外部定位方式,获取移动终端用户的位置信息,在GIS平台的支持下,为用户提 ...

  10. [Codeforces137B]Permutation(贪心?思路?,水题)

    题目链接:http://codeforces.com/contest/137/problem/B 给n个数字,要求修改成1~n的全排列数中的一个,修改的次数尽可能少,问最少需要修改几个数. 记下数组里 ...