arcengine 栅格镶嵌栅格进行分级渲染的分级值怎么设置

ArcEngine栅格和矢量渲染(含可视化颜色带)
时间: 04:40:31
&&&& 阅读:463
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&使用ArcEngine9.3开发的栅格和矢量的渲染。
开发环境:ArcEngine9.3,VS2008。
功能:栅格(拉伸和分级)和矢量(简单、唯一值、分级、比例)渲染。
开发界面如图所示。
图1 主界面
图2 栅格渲染界面
图3 矢量渲染界面
部分源码:
1 public void SimpleRenderer(IFeatureLayer featLayer, string fieldName, IColorRamp colorRamp)
IGeoFeatureLayer pGeoFeatureLayer = featLayer as IGeoFeatureL
IFeatureClass pFeatureClass = featLayer.FeatureC
//获取图层上的featureClass
IFeatureCursor pFeatureCursor = pFeatureClass.Search(null, false);
IUniqueValueRenderer pUniqueValueRenderer = new UniqueValueRendererClass();
//唯一值渲染器
//设置渲染字段对象
pUniqueValueRenderer.FieldCount = 1;
pUniqueValueRenderer.set_Field(0, fieldName);
ISimpleFillSymbol pSimFillSymbol = new SimpleFillSymbolClass();
//创建填充符号
pUniqueValueRenderer.DefaultSymbol = (ISymbol)pSimFillS
pUniqueValueRenderer.UseDefaultSymbol = false;
int n = pFeatureClass.FeatureCount(null);
for (int i = 0; i & i++)
IFeature pFeature = pFeatureCursor.NextFeature();
IClone pSourceClone = pSimFillSymbol as IC
ISimpleFillSymbol pSimpleFillSymbol = pSourceClone.Clone() as ISimpleFillS
string pFeatureValue = pFeature.get_Value(pFeature.Fields.FindField(fieldName)).ToString();
pUniqueValueRenderer.AddValue(pFeatureValue, "", (ISymbol)pSimpleFillSymbol);
//为每个符号设置颜色
for (int i = 0; i &= pUniqueValueRenderer.ValueCount - 1; i++)
string xv = pUniqueValueRenderer.get_Value(i);
if (xv != "")
ISimpleFillSymbol pNextSymbol = (ISimpleFillSymbol)pUniqueValueRenderer.get_Symbol(xv);
pNextSymbol.Color = colorRamp.get_Color(127);
pUniqueValueRenderer.set_Symbol(xv, (ISymbol)pNextSymbol);
pGeoFeatureLayer.Renderer = (IFeatureRenderer)pUniqueValueR
public void UniqueRenderer(IFeatureLayer featLayer, string fieldName, IColorRamp colorRamp)
IGeoFeatureLayer pGeoFeatureLayer = featLayer as IGeoFeatureL
IFeatureClass pFeatureClass = featLayer.FeatureC
//获取图层上的featureClass
IFeatureCursor pFeatureCursor = pFeatureClass.Search(null, false);
IUniqueValueRenderer pUniqueValueRenderer = new UniqueValueRendererClass();
//唯一值渲染器
//设置渲染字段对象
pUniqueValueRenderer.FieldCount = 1;
pUniqueValueRenderer.set_Field(0, fieldName);
ISimpleFillSymbol pSimFillSymbol = new SimpleFillSymbolClass();
//创建填充符号
pUniqueValueRenderer.DefaultSymbol = (ISymbol)pSimFillS
pUniqueValueRenderer.UseDefaultSymbol = false;
int n = pFeatureClass.FeatureCount(null);
for (int i = 0; i & i++)
IFeature pFeature = pFeatureCursor.NextFeature();
IClone pSourceClone = pSimFillSymbol as IC
ISimpleFillSymbol pSimpleFillSymbol = pSourceClone.Clone() as ISimpleFillS
string pFeatureValue = pFeature.get_Value(pFeature.Fields.FindField(fieldName)).ToString();
pUniqueValueRenderer.AddValue(pFeatureValue, "", (ISymbol)pSimpleFillSymbol);
//为每个符号设置颜色
for (int i = 0; i &= pUniqueValueRenderer.ValueCount - 1; i++)
string xv = pUniqueValueRenderer.get_Value(i);
if (xv != "")
ISimpleFillSymbol pNextSymbol = (ISimpleFillSymbol)pUniqueValueRenderer.get_Symbol(xv);
//pColor = ramp.get_Color(j * (ramp.Size - 1) / (count - 1));
pNextSymbol.Color = colorRamp.get_Color(i * (colorRamp.Size-1) / (pUniqueValueRenderer.ValueCount-1));
pUniqueValueRenderer.set_Symbol(xv, (ISymbol)pNextSymbol);
pGeoFeatureLayer.Renderer = (IFeatureRenderer)pUniqueValueR
public void ClassRenderer(IFeatureLayer featLayer, string fieldName, IColorRamp colorRamp, int count)
IBasicHistogram pBasicHis = new BasicTableHistogramClass();
ITableHistogram pTabHis = (ITableHistogram)pBasicH
//贫困发生率
IClassifyGEN pClassify = new EqualIntervalClass();
pTabHis.Field = fieldN
//IGeoFeatureLayer geolayer = (IGeoFeatureLayer)L
ILayer Layer = (ILayer)featL
ITable pTab = (ITable)L
pTabHis.Table = pT
object doubleArrVal, longArrF
pBasicHis.GetHistogram(out doubleArrVal, out longArrFreq);
int nDes =
pClassify.Classify(doubleArrVal, longArrFreq, ref nDes);
object classes = pClassify.ClassB
double[] ClassN
ClassNum = (double[])pClassify.ClassB
int ClassCountResult = ClassNum.GetUpperBound(0);
IClassBreaksRenderer pRender = new ClassBreaksRendererClass();
pRender.BreakCount = ClassCountR
pRender.Field = fieldN
ISimpleFillSymbol pS
for (int j = 0; j & ClassCountR j++)
pColor = colorRamp.get_Color(j * (colorRamp.Size-1) / (ClassCountResult-1));
pSym = new SimpleFillSymbolClass();
pSym.Color = pC
pRender.set_Symbol(j, (ISymbol)pSym);
pRender.set_Break(j, ClassNum[j + 1]);
pRender.set_Label(j, ClassNum[j].ToString("0.00") + " - " + ClassNum[j + 1].ToString("0.00"));
IGeoFeatureLayer pGeoLyr = (IGeoFeatureLayer)L
pGeoLyr.Renderer = (IFeatureRenderer)pR
public void ProportionalRenderer(IFeatureLayer featLayer, string fieldName, IColorRamp colorRamp, double count)
IProportionalSymbolRenderer psrender = new ProportionalSymbolRendererClass();
psrender.Field = fieldN
psrender.ValueUnit = esriUnits.esriUnknownU
psrender.ValueRepresentation = esriValueRepresentations.esriValueRepU
//选择渲染的样式,与颜色 minsymbol为比填内容,否则没有效果
ISimpleMarkerSymbol markersym = new SimpleMarkerSymbol();
markersym.Size =
markersym.Style = esriSimpleMarkerStyle.esriSMSC
markersym.Color = colorRamp.get_Color(127);
psrender.MinSymbol = markersym as IS
//IFeatureLayer featLayer = featL
IGeoFeatureLayer geofeat = featLayer as IGeoFeatureL
ICursor cursor = ((ITable)featLayer).Search(null, true);
IDataStatistics datastat = new DataStatisticsClass();
datastat.Cursor =
datastat.Field = fieldN//千万不能忽视
IStatisticsResults statisticsR
statisticsResult = datastat.S
psrender.MinDataValue = statisticsResult.Minimum + 0.1;
psrender.MaxDataValue = statisticsResult.M
MessageBox.Show("错误,选择的属性不是数值型!", "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
////设置background的样式
IFillSymbol fillsym = new SimpleFillSymbolClass();
fillsym.Color = getcolor(201, 201, 251);
ILineSymbol linesym = new SimpleLineSymbolClass();
linesym.Width = 1;
fillsym.Outline =
psrender.BackgroundSymbol =
psrender.LegendSymbolCount = 6;//legend的数量
psrender.CreateLegendSymbols();//创建TOC的legend
geofeat.Renderer = (IFeatureRenderer)
完整源码下载:标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&原文:http://www.cnblogs.com/zhzhx/p/3594312.html
教程昨日排行
&&国之画&&&& &&&&&&
&& &&&&&&&&&&&&&&
鲁ICP备号-4
打开技术之扣,分享程序人生!SOE出现之前,一些复杂、耗时的gis操作,通常都是使用gp服务实现的。前面将gp服务和soe进行了对比分析,为了测试两种的效率,曾经做了个demo,使用soe和gp同时执行相同的业务逻辑,记录两者的完成的时间,通过我个人的测试(ps,不代表官方立场)同样的业务gp一次请求比soe慢2s左右,如果并发的话,soe的优势应该更加的明显。下面就介绍这个demo。
一、demo背景
demo为对高程点数据进行插值,重分类,并最后将插值结果转换成矢量以json的形式返回到前端
1.1demo的最终效果&
开发环境:vs2010,ags server 10.1,ags server javascript api 3.3
二、gp的实现
gp的实现通过model builder创建,这是gp比soe有优势的地方,实现特别简单,通过拖拽。关于如何创建和发布gp服务,可以参考另一篇文章:
三、soe的实现
制作demo的过程中,为了演示soe中的参数的处理,属性的使用,结果的处理,指定了下面的几点条件
1.输入参数分别为栅格像元大小和插值方法
2.可以变换插值图层和插值字段
3.插值结果进行前端展
3.1属性的设置和获取
通过在rest模板的Properties中设置属性,这里设置了Field_name 插值字段和Layer_Name插值图层,并设置了默认值。从10.1开始属性的设置非常的简单和方便,在Rest模板的Properties中设置即可。
当设置完后,soe部署后,在manager 对应的soe下可以看到属性栏中增加了插值字段和图层,如下图所示,方便soe的管理人员控制插值字段和插值图层
在soe,属性值的获取,一般是Construct()方法内,通过下面的代码可以获取在manager中设置的属性值
3.2 参数的反序列化
在插值操作的处理函数中,通过获取JsonObject对象的TryGetString()和TryGetAsDouble,在soe端获取前端指定的插值像元大小和插值方法,demo中只涉及到两插值方法krige和idw
tips:请注意这里像元大小的类型是double?,表示cellsize的值可以为null值&
&3.3 数据源的获取
demo中获取数据源的代码分为三步,1.通过IMapServer接口获取MapServer对象,给对象中包含地图文档内容,并通IMapLayerInfo和IMapLayerInfos获取某一图层和所有的图层 2.通过判断图层名是否等于属性中设置的插值图层名3.使用IMapServerDataAccess的GetDataSource方法获取插值图层。
tips:这里并没有使用IMap和ILayer接口,获取地图文档和图层
3.4 业务的实现
业务的实现,主要是调用Ao接口的过程,完成插值,等插值结果进行重分类,默认为等间距的重分类,对重分类结果进行raster to polygon的操作。
3.5结果的序列化
插值的结果为栅格,通过将栅格转换成矢量,将矢量中每个feature转换成graphic的形式返回前端,并在前端利用api的进行渲染。下面的代码遍历feature中的id值和分类等级作为graphic中attribute,而将feature.shape作为grapic的geometry,构建json形式的graphic对象
tips:当时这么做的目的是方便,但是这样会存在着隐患,一是当栅格转矢量的效率,二是当矢量要素过大时,通常当要素大于1000时,浏览器渲染表现就会吃力。
四、前端的调用
前端调用包含几个方面的内容:
1、参数的传递
2、接受服务器端返回的json的graphic对象
3、graphic的渲染
&五、完整的代码下载
文件夹中包含客户端代码和前端代码
下载地址:
阅读(...) 评论()文章- 285&
&&&&&&&&&&&
文章分类 - ArcEngine
摘要: 如何使用Name对象,包括WorkspaceNames和DatasetNames 如何使用Name对象,包括WorkspaceNames和DatasetNames一、Name对象 Name对象是一个代表性对象。通过使用Name对象,可以访问它所代表的对象的一些基本属性,而不用将整个对象调入内存,如果
bobird 阅读(128) |
摘要: /// /// 旋转元素工具/// public sealed class BTGraphicsRotateElement : BaseTool{ #region 成员变量 private IHookHelper m_hookHelper = private IPoi...
bobird 阅读(917) |
摘要: /// /// 添加到注记图层 /// /// 注记图层 /// 插入的位置:一般是一个IPoint /// protected bool InsertAnnoFea(IFeatureClass pF...
bobird 阅读(205) |
摘要: 摘自:http://shaopengluo.blog.163.com/blog/static/6/检查发现是QueryFilter.WhereClause语句在查询shapefile格式的图层出现了问题,试验在查询gdb格式的图层不会报错。打开ArcG...
bobird 阅读(35) |
摘要: ArcGIS中,Shapefile文件是没有容差设置的,所以无论什么单位的坐标写入shapefile文件,都不存在容差问题。而在Geodatabase(gdb、mdb、sde)中,却有容差的问题。Geodatabase的默认的resolution为0.0001个单位,当单位为度的时候,0.0001度...
bobird 阅读(211) |
摘要: ITopologicalOperator2=topoOp=feature.Shape as ITopologicalOpearator2;//此次为feature.Shape,不知道为什么,提前对Polygon做Simplify()会无效.topoOp.IsKnownSimple2=//...
bobird 阅读(145) |
摘要: 在搞AE开发的时候,经常碰到的一个问题就是不同坐标系统之间的转换,AE中IGlobeControl控件中提供了IGlobeViewUtil类实现了大地坐标、屏幕坐标和地理坐标三者之间的转换,IMapControl中则提供了ToMapPoint和FromMapPoint两种方法实现屏幕坐标和地理坐标之...
bobird 阅读(162) |
摘要: 分类:GIS 16:40486人阅读评论(0)收藏举报ArcEngine读取ShapeFile时,如果用LicenseControl的话,字段中含有汉字时可以正常使用,当使用LicenseInitializer进行初始化时,读取含有汉字的字段时,就会出现乱码。 乱码肯定是由于编码...
bobird 阅读(82) |
摘要: IPropertySet pPropertySet=new PropertySetClass();pPropertySet.SetProperty(&server&,&10.2.1.35&);pPropertySet.SetProperty(&instance&,&sde:oracle11g:sjzx2011&);pPropertySet.SetProperty(&user&,&&);pPropertySet.SetProperty(&password&,
bobird 阅读(102) |
摘要: ArcSDE的二种连接方式——估且称为客户端负载连接方式和服务器端负载连接方式。二种连接方式的设置:服务器端负载连接(最常用的连接方式):服务器名称(Server):SDE服务器的主机名称。服务端口(Service):安装SDE时选择的端口。默认是5151或esri_sde数据库(Database):根据不同的DBMS决定是否要填。oracle系列不用填,而SQLServer需要填写。用户名(UserName):不要解释了吧,哈哈。密码(password):也不要解释了吧。客户端负载连接:服务器名称(Server):不用填写。服务端口(Service):SDE:数据库类型。比如:如果是orac
bobird 阅读(135) |
摘要: 添加Element:pGraphicsContainer.AddElement(pElement,0);Engine中IGraphicsContainer类似于栈,加Element时,默认加到第一个,所以会将之前加的要素盖住(这里,AddElement函数中的ZOrder参数貌似没有作用),要想改变Element的显示顺序,可以用BringForward,BringToFront,SendToBack,SendBackward这些函数来调整但是,这些函数的输入参数是IEnumElement,这个貌似有点不好弄到,找了半天终于找到一种方法可以得到:IGraphicsContainerSelect
bobird 阅读(117) |
摘要: 新旧图幅号转换的公式如下图所示:共有50W,25W,10W,5W,2.5W,1W几种比例尺下面的公式中,字母的下标表示对应的比例尺H代表新图幅号中的行号,例如:J49E016003中的016,共三位,不足三位的在前面补0L代表新图幅号中的列号,例如:J49E016003中的003,共三位,不足三位的在前面补0X代表旧图幅号中的地图代码值,有A,B,C,D的一律转为1,2,3,4其中[]表示取整,()表示取模旧-&新新-&旧:下面是一段将新图幅号转为旧图幅号的示例代码(C#,100W,50W,25W,10W,5W几种比例尺)//新图幅号转到旧图幅号 private string S.
bobird 阅读(101) |
摘要: public void EnableFeatureLayerLabel(IFeatureLayer pFeaturelayer, string sLableField, IRgbColor pRGB, int size, string angleField) { //判断图层是否为空 if (pFeaturelayer == null) IGeoFeatureLayer pGeoFeaturelayer = (IGeoFeatureLayer)pFeat...
bobird 阅读(103) |
摘要: 1.使用TextElment绘制标注. 这种方法的原理就是把属性表中的某个属性创建TextElment对象,然后使用IGraphicsContainer 的AddElement方法添加标注.实例代码://使用TextElment绘制标注, fieldName为要绘制的属性 public static void AddLable(AxMapControl axMapControl, ILayer layer, string fieldName) { IRgbColor pColor = new RgbColorClass() ...
bobird 阅读(414) |
摘要: ITextElement ele = new TextElementClass(); ele.Text = &大学四年生活&; IPoint point= new PointClass(){ X=e.mapX,Y=e.mapY}; (ele as IElement).Geometry = IFormattedTextSymbol formatted = new TextSymbolClass(); IRgbColor rgb = new RgbC...
bobird 阅读(58) |
摘要: using Susing System.Tusing System.Windows.Fusing ESRI.ArcGIS.ConversionTusing ESRI.ArcGIS.DataManagementTusing ESRI.ArcGIS.Gusing ESRI.ArcGIS.Gusing ESRI.ArcGIS.esriSnamespace GeodatabaseConversion{ class ToFileGDB { [STAThread] ...
bobird 阅读(269) |
摘要: private IFeatureClass GPClipTool(IFeatureLayer inFeatureLayer,IFeatureLayer clipFeatureLayer) { Geoprocessor gp = new Geoprocessor(); Clip clipTool = new Clip(); clipTool.in_features = inFeatureL clipTool.clip_features = clipFeatureLaye...
bobird 阅读(77) |
摘要: IMap接口的ClipGeometry可以裁剪地图,ComputerDistance可以计算两点间的距离。IMapOptions接口用于设置裁剪的各种情况。
bobird 阅读(101) |
摘要: /// /// 将ShapeFile的数据导入到FeatureClass中 /// /// ShapeFile工作路径 /// ShapeFile要素类名称 /// 目标要素类 public bool ConvertShapeFileToFeatureClass(string strShapeFileFolder, string strShapeFileFeatureClassName, IFeatureClass targetFeatureClass) ...
bobird 阅读(121) |
摘要: The logic used to determine if the OID field should be renamed to &ObjectID& can be classified with 4 cases.Case1: Both the InputWorkspace and ValidateWorkspace are provided.The OID field is renamed to &ObjectID& if the InputWorkspace is of type esriFileSystemWorkspace and the Va
bobird 阅读(40) |
摘要: arcengine 要素类的复制 using S using System.Collections.G using System.T using ESRI.ArcGIS.G using ESRI.ArcGIS.G using ESRI.ArcGIS.C namespace MyGISClass { /// /// 该类主要包含了要素类的复制以及同要素类数据的加载 /// 函数主要用于...
bobird 阅读(492) |
摘要: using Susing System.Collections.Gusing System.Tusing ESRI.ArcGIS.Cusing ESRI.ArcGIS.Cusing ESRI.ArcGIS.Dusing ESRI.ArcGIS.Gusing ESRI.ArcGIS.ADF.BaseCusing ESRI.ArcGIS.ADF.CATIDs;using ESRI.ArcGIS.esriSusing System.Runtime.InteropSusi
bobird 阅读(64) |
摘要: ArcGIS Engine提供了保存Mxd文件的类MapDoment。但在具体保存MXD文件过程中有下面几种情况: 1 直接使用IMapDocument接口的Open方法来打开MXD文件,编辑过后进行保存。 2 使用Engine中带的OpenDocument方法来打开MXD文件,然后编辑过之后要进行保存。 3 使用自己写的添加数据的工具直接添加数据,也就是说一开始没有MXD文件,在编辑完之后需要把当前的地图保存为一个MXD文件。 过程描述 解决方法: 首先这三种情况都可以使用Engine中自带的SaveDoument的工具进行保存 1 这种情况比较简单,直接使用IMapDocument的sav
bobird 阅读(711) |
摘要: ArcGIS Engine许可初始化关于初始化Engine许可的,其实原理都很简单,大家一般都没有问题,但又往往会因为不够细心加上Engine的“小脾气”,让不少程序员都要在这里犯错。以Engine9.2为例,应用程序是强制初始化许可,也就是说必须使用LicenseControl或AO接口初始化许可,否则应用程序无法启动。Engine9.1未采取强制初始化许可策略,而是应用程序创建时就初始化标准Engine许可。在一般情况下,我们会用将LicenseControl拖放到主窗体上完成初始化。但当Engine程序需要使用ArcGIS Engine Enterprise Geodatabase(以下
bobird 阅读(653) |
摘要: ArcGIS Engine中总调用IFeatureClass.Search(filter, Recycling)方法,习惯中会把Recycling参数设置为False,但就是不理解为什么要设置为False,和True有什么差别。之前也看过Engine的帮助文档,但感觉越看越糊涂,前几天有自己看了一下,加上之前的使用经验和试验,大致领悟了其中的差异。 参数Recycling为True的时候理解为传引用,为False的时候理解为传值。因此在应用的时候应该注意的“传值”和“传址”的差异。 我们知道引用传递(“传址”)效率较高,因此在绘画要素的时候可以采用 True参数。但当要进行遍历后将Featur
bobird 阅读(633) |
摘要: 如果在ESRI的Toolbar控件上添加一个Combobox 需要在Command类中实现IToolControl接口 在将指定控件的句柄做为 IToolControl.hwnd 返回即可 过程描述 public class MyCombobox:BaseCommand,IToolControl { private int _handle=0; private ICompletionNotify _CompN public MyCombobox(int handle) { _handle = }public override void OnCreate(object
bobird 阅读(68) |
摘要: 们平常使用ITopologicalOperator的buffer是圆角的图形。如下图但实有时候我们也需要像下面那样的平头buffer的效果。如何做到这种效果?说一下思路。下面是使用线去生成这种平头的buffer图形1.分别使用线的图形向正方向和负方向平移一定的距离,使用IConstructCurve接口可以实现等距偏移这样可以很好的支持曲线和折线2.分别把偏移后的两条线的所有节点添加到一个IPointCollection里面3.用一个PolygonClass去初始化一个IPointCollection,把刚才的所有节点注入此IPointCollection4.重排IPointCollectio
bobird 阅读(168) |
摘要: 1、说明在使用ArcGIS桌面产品的时候,有时会碰到这样的情况:同时在ArcCatalog和ArcMap中浏览图层数据,然后在ArcMap中remove掉图层,再回到ArcCatalog中删除该图层,却得到该图层被锁的信息。非得关掉ArcMap才能正常删除。同样的情况也会在ArcEngine开发的应用程序中碰到。可有时候会有这样需要,在不关闭ArcEngine应用程序的情况下,对图层数据做相应的操作,如将图层数据压缩打包。对这个问题ArcEngine提供了相应的接口控制,只是我们很少去关注而已。2、解锁资源文件解除对资源文件的锁定需要使用IWorkspaceFactoryLockControl
bobird 阅读(2414) |
摘要: 前言: 在基于Arcgis平台的地理信息系统开发中,数据有时是从别的平台的格式中转过来的,如从CAD转成Shapefile格式,在格式转换的过程中,经常会出现SpatialReference丢失的现象,这样的数据在使用中就会出现一些问题。为此,需要人为设置数据的SpatialReference。有两种方式设置SpatialReference。详述如下: 1、通过desktop设置数据的SpatialReference 可以用desktop的arccatalog,找到数据文件,选中点右键\properties,在弹出来的shapefile properties对话框中,选fields\Shap.
bobird 阅读(1873) |
摘要: 前言: 网络分析是地理信息空间分析的一个重要组成部分,随着社会经济和空间信息技术的快速发展网络分析日益完善。不同的GIS平台都有相应的网络分析分析模块,下面就Arcgis Engine中网络分析所涉及的类和接口做简单分析。一、主要类及接口概述 1、NetworkLoader 组件对象类 主要作用:由FeatureDataset生成NetWork2、TraceFlowSolver组件对象类 主要作用:指定Network、指定barriers;定义权重;网络分析操作等。 TraceFlowSolver类实现了以下接口: InetSolver接口: 指定Network,指定barriers Ine.
bobird 阅读(185) |
摘要: 符号化是GIS应用开发中重要的功能或者是处理,由于程序中每次调入一个图层的图层的符号都是随机的,动态变化的,所以不利于图层的美观。还有一点就是符号有增加电子地图可读性的功能。符号的来源符号的来源有以下几种: 1、符号库Desktop的符号文件把要用的符号用desktop的style manage制作相应符号,并把他存成style文件。该文件实际为mdb数据库。Style文件对应于desktop,在desktop开发包中有相应的类(StyleGallery类)支持该文件的读取。Arcgis Engine符号文件Arcgis engine的符号文件的扩展名为serverstyle,在目前argis
bobird 阅读(180) |
摘要: ArcMap中有一个功能是Label Features,就是可以将图层内指定字段值显示以Label形式显示在主窗口上,在Label Features后,用右键点击图层,发现可以出现一个原来灰色的功能名,ConvertLabelsToAnnotation。这个功能在AE中提供,可是自己找不到设定字段值的位置,无可奈何,只有另辟蹊径。就是先创建一个注记层,然后按照图层里指定字段的值来生成注记。就是一个一个Feature点转换。可能会比AE提供的接口效率低,没有办法,自己不会用那个接口,也就只能这样勉强的用着了。这个方面最难点就是创建一个新的注记图层,有很多属性需要设置,比较麻烦,下面是代码 pr.
bobird 阅读(169) |
摘要: 下面是我最近对Annotation研究的一些学习资料,收集于此,供大家学习之用。 一、Annotation要素类介绍 在GeoDatabase中有五种类型的要素类,即点、线、面、标注要素类和注记要素类。注记要素类涉及的较少,这里不谈。本文主要讨论标注要素类的特征,即Annotation FeatureClass的特性。 标注要素类是一种专门用于存储和显示文本或图形元素的数据结构,在这之前,我们只谈过文本或图像只能通过MXD的方式来存储。标注要素类可以是独立的,也可以与一个要素类相关联。如果是独立standalone的要素类,它就是其它要素类的一种背景;一旦与某个要素类相联系link,那么标注要
bobird 阅读(71) |
摘要: (一)GIS系统数据是基础,想必大家在做ArcEngine二次开发的过程中都会遇到向MDB和SDE写入数据的工作,我们将会通过几个篇幅,从大数据量导入过程中的问题和解决方式入手带给大家一些实用的经验。1.数据的写入和删除要使用IWorkspaceEdit.StartEditing来开启一个编辑流程,千万别草率的写入和删除。使用该接口,如果数据在处理过程中出现任何异常,可以不对操作结果进行保存编辑和结束编辑IWorkspaceEdit.StopEditing,这样能够保证你处理的数据不被破坏。2.读取数据要释放游标和要素类,循环IFeatureCursor过程中要释放Feature,循环结束时释
bobird 阅读(527) |
摘要: IFeatureClass annocls = 获取注记图层 IDataset pDataset = annocls as ID ITransactions pTransactions = pDataset.Workspace as IT pTransactions.StartTransaction(); IFDOGraphicsLayerFactory pFDOGL...
bobird 阅读(119) |
摘要: 先看两张图,第一张是AE自带的Add data对话框, 相信所有做AE开发的人都见过;另一张是本人仿制和扩展的添加数据对话框,大家肯定没见过。 各位筒子,有没有觉得十分震撼?这是我整整一天的劳动结晶,下面就让我来隆重介绍一下。 我的风格是有所保留的奉献源码,无所顾忌的贡献思路。 为什么做这个东西 一个原因是本人可能是极端分子,在做软件时,要么全部用中文,要么全部用英文,最不喜欢半洋半中,因此一直有个宏伟的计划,就是将AE里面自带的对话框和浮动窗体都重做一下,这个工作仍然在进行中;另一个原因是AE自带的这个对话框只能加载其指定的数据类型,连Desktop中支持的CAD图都不能加载,就别说自定义的
bobird 阅读(467) |
摘要: AE中对MDB,SDE等数据库操作时,打开后却往往不能及时释放资源,导致别人操作提示对象被锁定。很多帖子说了很多原理,看的也烦且不实用,比如一句话概括的用System.Runtime.InteropServices.Marshal.ReleaseComObject(object o)释放,说的很不清楚,很多人试过觉的释放不掉。事实上,的确是用该方法,但释放的技巧在于,新建几个AE对象就要逐步释放几个,例如:IWorkspaceFactory Fact = new AccessWorkspaceFactoryClass ();IFeatureWorkspace Workspace = Fact.
bobird 阅读(287) |
摘要: ArcGIS的转换工具(ConversionTools)提供了将图层输出到kml的接口LayerToKML,这个方法被封装在ESRI.ArcGIS.ConversionTools中 LayerToKML接口的输入参数layer接收两种类型的参数:本地磁盘的图层文件(*.lyr)、内存中的图层。n 将本地磁盘图层文件(*.lyr)输出kml// LayerToKML接口输出kmlGeoprocessor pGeoProcessor = new Geoprocessor(); ESRI.ArcGIS.ConversionTools.LayerToKML pLayerToKML = new ESRI
bobird 阅读(81) |
摘要: ArcGIS空间分析扩展模块提供了对栅格数据进行裁剪抽取操作的功能,在ArcGISEngine中可以调用相关的GP工具来对栅格数据操作。调用空间分析ArcToolbox中Extract By Polygon工具private void ExtractByPolygon() { IVariantArray parameters = new VarArrayClass(); string sDocPath = @&C:\filerastergdb.gdb\raster&; //地图文档路径 string sDocPath1 = @&C:\filerasteroutpu
bobird 阅读(94) |
摘要: 在ArcGISEngine中实现目标要素镜像复制主要用到下面几个接口Ø ITransformationØ IAffineTransformation2DØ ITransform2D具体功能实现的代码如下ILine nLine = new LineClass();//镜像轴线nLine.PutCoords(pPoint1, pPoint2);ITransformation nTransformation = new AffineTransformation2DClass();IAffineTransformation2D nAffineTransformation2
bobird 阅读(105) |
摘要: 通过IWorkspaceName接口的WorkspaceFactoryProgID属性来判断IFeatureClass pFC = pFeatureLyr.FeatureC IDataset dataset = pFC as ID IWorkspaceName ws = ((IDatasetName)(dataset.FullName)).WorkspaceN if (ws.WorkspaceFactoryProgID.IndexOf(&AccessWorkspaceFactory&) & -1) {} else if (ws.Work
bobird 阅读(65) |
摘要: 在项目中往往会遇到对double类型的数据进行模糊查询,在arcengine开发中应该如何做呢,查了一下帮助应该用cast方法进行数据类型转换,具体方法如下://查询条件 string strb = string.E if (this.tbxcode.Text != string.Empty) { strb = strb + &and cast(八位站号 as varchar(20)) like '%& + this.tbxcode.Text.ToUpper() + &%'&; }注:八位站号为字段名称。
bobird 阅读(42) |
摘要: 有时候,我们要对图层上的地物进行有选择性的显示,以此来满足实际的功能要求。按下面介绍的方法可轻松实现图层属性过滤显示:1、当图层已经加载时 private void ShowByFilter(AxMapControl sMapCtr, IFeatureLayer sFlyr, string sFilter) { ESRI.ArcGIS.Carto.IFeatureLayerDefinition pDef = (ESRI.ArcGIS.Carto.IFeatureLayerDefinition)sF pDef.D...
bobird 阅读(67) |
摘要: 1、创建字段的属性域 IDomian。IDomain分为两类CodedValueDomainClass和RangeDomainClass。前者是用来设置枚举型值域的,后者用来设置连续的范围值域。两种属性域的创建方法见下面的例子。public void IDomain_Example(IWorkspace workspace) { //The following example shows how the IDomain interface can be used to set properties on //new RangeDomain and Coded...
bobird 阅读(373) |
摘要: 主要包括下面几个步骤:1.自定义一个PictureComboBox类,可以Image作为Item添加的ComboBox;//构造函数 public PictureComboBox() { //以下两句是关键的; DrawMode = DrawMode.OwnerDrawF DropDownStyle. = ComboBoxStyle.DropDownL } //重写函数 protected override void OnDrawItem(...
bobird 阅读(48) |
摘要: 使用 IFeatureDataConverter2 接口 使用方法ConvertFeatureClass method(),这个方法需要下面的参数public IEnumInvalidObject ConvertFeatureClass ( IDatasetName inputFClassName, IQueryFilter InputQueryFilter, ISelectionSet InputSelectionSet, IFeatureDatasetName outputFDatasetName, IFeatureClassName outputFClassName, IGe...
bobird 阅读(90) |
摘要: 因项目需要,需对mapcontrol控件响应上下左右键,从网上找的方法都一样,都值提到了需要设置axMapControl1的KeyIntercept属性为1,但这样做的结果是,除了自己在onkeydown中设置的平移1/10个屏幕大小外,系统还会有一个默认的平移操作。经研究发现,设置axMapControl1的autokeyboardscrolling属性为false即可屏蔽系统默认的对上下左右键的相应方法。axMapControl1.AutoKeyBoardScrolling=axMapControl1.KeyIntercept = 1;private void axMapCon
bobird 阅读(191) |
摘要: 添加Element:pGraphicsContainer.AddElement(pElement, 0); Engine中IGraphicsContainer类似于栈,加Element时,默认加到第一个,所以会将之前加的要素盖住(这里,AddElement函数中的ZOrder参数貌似没有作用),要想改变Element的显示顺序,可以用BringForward,BringToFront,SendToBack,SendBackward这些函数来调整但是,这些函数的输入参数是IEnumElement,这个貌似有点不好弄到,找了半天终于找到一种方法可以得到:IGraphicsContainerSele
bobird 阅读(36) |
摘要: /// 从新图幅号计算角点坐标 /// 输入的新图幅号(请先验证图幅号格式合法,再) /// 角点列表 public static List CalPointListFromNewNo(string newNumber) { List resultLst = new List(); double delX = 0, delY = 0; //该比例尺下的图幅经度差和纬度差 int H = 0, L = 0; //H...
bobird 阅读(118) |
摘要: 1、插入 /// ///向featureclass中批量插入features ,批量插入features,用buffer的方法,要比循环一个个Store的方法快 /// /// 操作数据所在的IFeatureClass private void InsertFeatures( IFeatureClass pFeatureClass , List pGeos ) { IFeatureBuffer pFeatBuf = pFeatureClass.CreateFeatureBuffer(); IFeature pFeat = pFeatB IFeatureCursor pFeatCur= p
bobird 阅读(232) |
摘要: 写了一个小程序,从一个列表中读取坐标串,每个坐标串生成一个IPolygon,然后将这些Polygon添加到一个SDE图层中,向SDE中添加要素的初始代码类似下面:IWorkspaceEdit workspaceEdit = (IWorkspaceEdit)workspaceEdit.StartEditing(true);workspaceEdit.StartEditOperation();for(int i=0;i&polygons.i++){ IFeature tmpFea = fc.CreateFeature(); //fc是图层...
bobird 阅读(53) |
摘要: 在FeatureClass中编辑,删除,或添加要素后,可用如下的代码手动更新一下其Extent((IFeatureClassManage)pFeatureClass).UpdateExtent();获取图层Extent的方法为:((IGeoDataset)pFeatureClass).Extent或根据图层中的所有要素计算一下Extent:IEnvelopeenv =intfeaCount = fc.FeatureCount(null);for (inti =0; i& feaCi++){if (env== null) env = fc.GetFeature(i).E
bobird 阅读(83) |
摘要: 注意需要在编辑模式下进行snapping的添加(也即先需要使用IEngineEditor进入编辑状态): IMapControl3 mMap = (IMapControl3)((IToolbarControl)toolHook).B IEngineEditor m_engineEditor = new EngineEditorClass(); if (m_engineEditor.EditState == esriEngineEditState.esriEngineStateNotEditing) { ...
bobird 阅读(52) |
摘要: 当在ICommand 或ITool 中编写代码时,传入了一个hook,后被赋值到IHookHelper 对象上. 在整个ICommand或ITool 中,主要使用的也是IHookHelper,通过IHookHelper获取IActiveView或FocusMap,然后操作Map或Layer. 感觉似乎在ICommand或ITool中&脱离&了与主窗体的联系. 有时候,在ICommand中需要show 一个窗体,而这个窗体还想作为主窗体的子窗体,那问题来了,如何去获取主窗体呢? 下面介绍一种方法,很方便.用到就是句柄.代码如下:IntPtr pHandle =new IntP
bobird 阅读(51) |
摘要: /// /// 打印输出.该功能目前测试只适用于JPEG,BMP.格式 /// /// /// 分辨率 /// 输出路径 /// 自定义可见区域 private void FunExportImage(IExport pExport, double dResolution, string outputPath,IEnvelope pVisibleBounds) { IEnvelope pPixelB ESRI.ArcGIS...
bobird 阅读(66) |
摘要: /// /// (重载)图层标注 /// /// 标注图层 /// 标注字段 /// 颜色 /// 大小 public static void FunLabelFeatureLayer(IFeatureLayer pFeaturelayer, string sLableField, IRgbColor pRGB, int size) { if (pFeaturelayer == null) ...
bobird 阅读(107) |
摘要: 前言在AE开发过程中,我们经常使用Element(元素)。它的出现让地图与用户之间的交互增加了不少的效果。在地图上,可以通过各种element元素来表现我们需要的效果.例如高亮显示中用到element比较频繁.往往需要往地图中添加一个element来显示效果。当在地图上element越来越多时,而且还是通过不同的功能添加进来的,那么,这么多而复杂的element 就需要用一种管理方法来进行有序管理,让element有他的归属。如何管理呢? 其一: 使用IGroupElement.将同一类或功能相似的element都添加到IGroupElement中.以Group的形式来管理, 删除时,只需删除
bobird 阅读(103) |
摘要: using Susing System.Collections.Gusing System.Tusing ESRI.ArcGIS.Gusing ESRI.ArcGIS.Gusing ESRI.ArcGIS.Cnamespace MyGISClass{ /// /// 该类主要包含了要素类的复制以及同要素类数据的加载 /// 函数主要用于SDE与Personal GDB之间数据的处理 /// class FeatureClassDataManager { ///...
bobird 阅读(144) |
摘要: 有时候,我们要对图层上的地物进行有选择性的显示,以此来满足实际的功能要求。按下面介绍的方法可轻松实现图层属性过滤显示: 1、当图层已经加载时 private void ShowByFilter(AxMapControl sMapCtr, IFeatureLayer sFlyr, string sFilter) { ESRI.ArcGIS.Carto.IFeatureLayerDefinition pDef = (ESRI.ArcGIS.Carto.IFeatureLayerDefinition)sF ...
bobird 阅读(23) |
摘要: ESRI.ArcGIS.Display.IStyleGallery styCls = new ESRI.ArcGIS.Framework.StyleGalleryClass()as ESRI.ArcGIS.Display.IStyleG int iRefsLeft = 0; do { iRefsLeft = Marshal.ReleaseComObject(styCls); } while (iRefsLeft & 0);帮助文档里面见过,请教楼主一个问题:AE中的COM对象和非COM对象怎么区分呢? 比如实现图层符号...
bobird 阅读(78) |
摘要: 在写一个对属性表的统计函数时,发现执行速度奇慢无比,百思不得其解,其实算法并不复杂,后来逐句排查终于发现竟是Arcengine的函数读取属性值的问题。在获取属性表的值时有多种方法:方法一:ITable pTable = pLayer.FeatureClass as ITclsFldValue = pTable.GetRow(i).get_Value(3);方法二:IFeatureCursor FCursor = pLayer.FeatureClass.Search(new QueryFilterClass(), false);IFeature feature = FCursor.Ne
bobird 阅读(120) |
摘要: 如题,在MapControl中有一系列的Feature被选中并高亮显示 然后,我想实现点选MapControl获得点选到的Feature,如果之前Feature已经被选中则修改它,设置它为不选择状态;如果Feature没被选中则设置它被选中状态问题就是:我现在怎么判断一个Feature在MapControl或者是FeatureLayers中是否被选择上???anthony_f005 发表于
16:33自己先顶一个,高手指点啊OASIS 发表于
17:24IFeatureSelection pFeaSel = mFeatLyr as IFeatureSe.
bobird 阅读(107) |
摘要: 在Engine的工具(ITool)里:OnClick事件处理函数中:首先需要获取一个图层,作为Snapping的参照,IFeatureLayer targetLayer然后声明一个IMovePointFeedBack作为鼠标移动时捕捉点的显示: IMovePointFeedback m_pMovePtFeed = new MovePointFeedback(); mFeedback = (IDisplayFeedback)m_pMovePtF ISimpleMarkerSymbol simpleMarkerSymbol ...
bobird 阅读(382) |
摘要: 修改一批要素的属性有多种方法,当数据量较大时,若选择不当可能会大大影响速度。一、IRowBuffer 方法此法适用于将一批数据更新为某一相同的属性。IQueryFilter pFilter = new QueryFilterClass();pFilter.WhereClause = &Z='T'&;pFilter.SubFields = &Z&;int nIndex = pFeatureClass.FindField(&Z&);ITable pTable = pFeatureClass as ITIRowBu
bobird 阅读(81) |
摘要: ================以下摘自ArcGIS10.1帮助===================文件地理数据库允许在 QueryDef 中通过 SubFields(字段列表)方法使用表达式和别名完善分析和报告。此外,通过 PostFixClause 支持 ORDER BY 和 GROUP BY。在支持 GROUP BY 时,表达式包括聚合函数,如 MIN、MAX 和 SUM。ALIAS提供给列另外一个名称以提供更易于理解的输出。SQLSELECT NAME, POP1997 - POP1990 as PopChangeFROM counties ORDER BY NAMEArcObjec
bobird 阅读(41) |
摘要: 家知道arcmap提供了非常灵活的标注方式,除了一般的标注 同时支持vbscript和jscript,同样AE也提供了相应的功能。比如:ArcMap Expression(vbscript):Function FindLabel ([ST_NAME], [SUFFIX]) IF ([SUFFIX] = &HWY&) THEN FindLabel = [ST_NAME] END IF End Function//Global Variablesprivate IAnnotateLayerPropertiesCollection pAnnoP private ILab
bobird 阅读(47) |
摘要: 2012年年底在TM网站上上线了《公众气象服务平台》这个系统,更多信息如下:http://tm.arcgisonline.cn/6.html该系统在数据处理的时候包括一系列自动化流程,数据的获取,配准,裁剪,入库等,并且被作为一个windows服务,无需人为干预,部分代码如下:class GDBInput { #region 工作空间枚举类型 public enum GDBType { MDB = 1, SDE = 2, FGDB = 3, ...
bobird 阅读(98) |
摘要: 在符号化制图的时候,我们或许已经有了一个lyr的文件,该文件保留了我们符号化的信息,当我们在其他地方配图的时候可能会使用已有的lyr文件来符号化,那么AE是如何做到的呢?整个代码如下:/// /// 保存lyr文件 /// /// /// public void SaveToLayerFile(System.String pLayerFilePath, ESRI.ArcGIS.Carto.ILayer pLayer) { if (pLayer == null...
bobird 阅读(109) |
摘要: //定义成员变量private IActiveView pActiveVprivate IMap pMprivate IWorkspaceEdit pWorkspaceEprivate IPoint startPprivate INewLineFeedback pLineFprivate IMoveGeometryFeedback pMoveGeometryFprivate ISet pMoveSpublic override void OnMouseDown(int Button, int Shift, int X, i.
bobird 阅读(72) |
摘要: private void button2_Click(object sender, EventArgs e) { IWorkspace pFileWs = GetSDEWorkspace(&E:\\影像\\Geodatabase.gdb&); IMosaicDataset pMosaic = OpenMosaicDataset(pFileWs, &test1&); ITable pTable = pMosaic.Catalog as IT int i = pTa...
bobird 阅读(66) |
摘要: public void CreateTextElment(double x, double y) { IPoint pPoint = new PointClass(); IMap pMap = axMapControl1.M IActiveView pActiveView = pMap as IActiveV IGraphicsContainer pGraphicsC IElement pElement = new MarkerEleme...
bobird 阅读(56) |
摘要: private void axMapControl1_OnOleDrop(object sender, ESRI.ArcGIS.Controls.IMapControlEvents2_OnOleDropEvent e){ IDataObjectHelper dataObject = (IDataObjectHelper)e.dataObjectH esriControlsDropAction action = e.dropA e.effect = (int)esriControlsDragDropEffect.esriDragDropNon...
bobird 阅读(90) |
摘要: public void AddGlobalID(ITable table, String globalIdFieldName){ ISchemaLock schemaLock = (ISchemaLock) try { schemaLock.ChangeSchemaLock(esriSchemaLock.esriExclusiveSchemaLock); IClassSchemaEdit3 classSchemaEdit3 = (IClassSchemaEdit3) classSchema...
bobird 阅读(40) |
摘要: 下面是将Feature对象的Geometry对象和属性分别转换为两个Json文本,代码很简单: /// /// 提取feature的geometry,并将其转换为json对象 /// /// 要素对象 /// private string feature2JsonGeometry(ESRI.ArcGIS.Geodatabase.IFeature pFeature) { ESRI.ArcGIS.Geometry.IGeometry pGeo = pFeature.S ...
bobird 阅读(131) |
摘要: 现在的很多照片都可以带坐标,出去旅游的时候,如果将这些照片跟拍摄位置结合就可以使用照片定位,并且查看当地的风景。这些照片存储着坐标信息,其实不仅仅是坐标信息,还有很多其他的,这类照被称为Extif格式。Exif是英文Exchangeable Image File(可交换图像文件)的缩写,最初由日本电子工业发展协会(JEIDA --Japan Electronic Industry Development Association) 制订,目前的最新版本是发表于2002年04月的2.21 版。国际标准化组织(ISO)正在制订的相机文件设计标准(DCF -- Design role for Came
bobird 阅读(112) |
摘要: 方法一// Create the query filter.IQueryFilter queryFilter = new QueryFilterClass();// Select the fields to be returned—the name and address of the businesses.queryFilter.SubFields = &NAME, ADDRESS&;// Set the filter to return only restaurants.queryFilter.WhereClause = &TYPE = 'Restau
bobird 阅读(112) |
摘要: void ReadPoints1(IPointCollection ptCol) { int iCount = ptCol.PointC IP for (int i = 0; i & iC i++) { pt = ptCol.get_Point(i); } } void ReadPoints2(IPointCollection ptCol) { int iCount = ptCol.PointC IP for (int i = ...
bobird 阅读(77) |
摘要: private void button8_Click(object sender, EventArgs e) { IWorkspace pWs = GetWorkspace(@&C:\csdn\ChinaGPS.gdb&); IMapDocument pDoc= new MapDocumentClass(); pDoc.Open(axMapControl1.DocumentFilename); ChangePath(pDoc, ...
bobird 阅读(68) |
摘要: if (serialPort1.IsOpen) { #region 新建坐标系 Type factoryType = Type.GetTypeFromProgID(&esriGeometry.SpatialReferenceEnvironment&); System.Object bj = Activator.CreateInstance(factoryType); ISpatialReferenceFactory3 spatialReferenceFa...
bobird 阅读(83) |
摘要: bool bCreateElement = int internalTime = 5;//时间间隔 int snapTime = 10;//初始值 IElement m_element = //界面绘制点元素 IPoint currentPoint = new PointClass(); //当前鼠标点 IPoint snapPoint = //捕捉到的点 IMovePointFeedback pFeedback = new MovePointFeedbackClas...
bobird 阅读(396) |
摘要: ArcEngine Runtime 9.3版本,注册程序为其安装目录下的bin/SoftwareAuthorization.exe安装位置在注册表中有记录:具体项为:HKLM/SOFTWARE/ESRI/ArcGIS Engine Runtime下的InstallDir值授权文件名称为ecp后缀的,此处命名为lic.ecp安装授权文件的参数为SoftwareAuthorization.exe -lif &lic.ecp& -s其中-lif为指定授权文件,-S为不弹出界面使用批处理文件处理过程:1 检索注册表获取安装目录,拼装为完整路径,2 使用参数注册授权文件批处理方式下具
bobird 阅读(77) |
摘要: /// /// 序列化图层的标注属性 /// /// 矢量图层 /// byte[],包括标注的字体样式和位置 public static byte[] SerializeLabelProperty(IGeoFeatureLayer lyr) { try { IXMLStream pStream = new XMLStreamClass(); IXMLWri...
bobird 阅读(109) |
摘要: 图层的配置息都是存放在mxd中的,若是将图层数据导入到sde中保存的话,再进行加载的时候,这些配置信息都是找不到的,要想按照mxd的样式从数据库加载图层, 就得把每个图层的配置信息提取出来,放到数据库中,这样就要考虑标注、图层渲染、图层顺序、图层组、图层的可视范围、图层是否可选、图层是否可见、 地图的投影系等等。这就引入了更多的复杂性, 其实可以这样,把mxd也单独的保存一份,在每次连接到数据库时,先将此mxd文件中的各个图层的指向到sde中的对应图层,然后再打开此mxd,即可省去很多麻烦。讲讲实现思路: 首先遍历mxd的各个图层,使用IMapDocument接口打开mxd文件,使用IMap接
bobird 阅读(500) |
摘要: 捕捉功能主要使用ArcEngine中的两个接口1. IHitTest用于作点击测试2. IFeatureCache 用于建立做缓存由于数据库中有多个FeatureClass ,而每个FeatureClass又可以做多种点击测试所以这里有会有好几种捕捉方案。我们称呼每一个可以执行捕捉的对象叫捕捉代理,所有的代理在一个捕捉环境中方案1:每个代理负责测试一种FeatureClass的一种点击方式方案2:每个代理负责测试一种FeatureClass的所有点击方式方案3:一代理负责测试所有的FeatureClass的一种点击方式方案4:一个代理负责测试所有FeatureClass的所有点击方式在实际使用
bobird 阅读(130) |
摘要: 对于二三维同步中的三维视图肯定是需要通过二维元素来符号化成三维元素的,之前项目测试临时采用这个自代的圆管状:esriSimple3DLineStyle AxisStyle = esriSimple3DLineStyle.esriS3DLST 进行符号化,但是这个自带样式不能做更多的扩展,仍然需要对它进行手动graphic,今天花了半天时间看了下官方的例子,总算是捣鼓出了将指定坐标的两个点连成的线符号化成正方体状,中间也碰到一些问题。本以为arcengine提供了相当好的API,我只用传入两个点或是一根线,再给它一个Polygon,它就能帮我沿着这个线的方向画成正方体了,可是弄来弄去,不
bobird 阅读(117) |
摘要: 上次说了将一个多边形的点集合保存入数据库,见此文:将图元包含的点集合(IPointCollection)序列化为二进制保存到数据库这次有需要,把数据读取出来然后再生成一个多边形,在ArcEngine中生成多边形还蛮曲折的,可能是考虑到环和岛的状况。具体的需求是使用点集生成多边形,然后进行定位,闪烁啊什么的//.....//.....//.....if (coordData != null) { int ptCount = System.BitConverter.ToInt32(coordData, 0);//点数 ...
bobird 阅读(412) |
摘要: 需求:把图元包含的点集合按点数x1y1x2y2......这样保存到byte[]数组中并存储到数据库(oracle的blob或sqlserver的image型)IFeature ftrftr=......IGeometry boundGeometry = ftr.S IPointCollection pointCollection = boundGeometry as IPointCint ptCount = pointCollection.PointCbyte[] bytePts = new byte[ptCoun...
bobird 阅读(81) |
摘要: 文章出处:http://blog.csdn.net/yanleigis/article/details/、 查找数据Search Cursors //by yl
[C#]//Create an envelope for the lower right portion of dataIEnvelope envelope = new EnvelopeClass();envelope.PutCoords(, 684341);// create a spati
bobird 阅读(97) |
摘要: ArrayList GetValue(IRasterLayer pRasterLayer,double x,double y) { ArrayList pArray = new ArrayList(); IRaster2 pRaster = (IRaster2)pRasterLayer.R int col, pRaster.MapToPixel(x, y, out col, out row); //转换数鼠标位置坐标为影像行列号 for (i...
bobird 阅读(37) |
摘要: C#+ArcEngine打印横向和纵向调整在用C#开发ArcEngine程序实现Pagelaylout打印功能的时候,在实现横向打印的时候,总会出现如下图的情况通过修改axPageLayoutControl1.Page.Orientation = 1;属性发现也不作用;需要通过修改IMapFrame进行修改能够实现横向和纵向的合理变化;横向显示代码如下 IMap pM IGraphicsContainer pGraphicsC IMapFrame pMapF pMap = axPageLayoutControl1.ActiveView.FocusM pG
bobird 阅读(166) |
摘要: 文章出处/** * 空间大地直角坐标-&大地坐标 */public GeoPoint XYZ_BLH(int ellipse, Point3D point){GeoPoint geoPoint = new GeoPoint();if(geoPoint == null || point == null){System.out.println(&对象为空!&);}double a = 0,b = 0,e1 = 0,e2 = 0;//a为长半轴,b为短半轴,e1为第一偏心率,e2为第一偏心率的平方double deta = 0.0000001;switch(ellipse)
bobird 阅读(104) |
摘要: 文章出处主要完成用C#,通过AE将本地Shapefile文件导入到SDE的指定数据集下面。首先说下思路:(1) 通过OpenFileDialog打开本地的Shp文件;(2)通过获取的Shp文件创建FeatureClass,获取shp的字段 IFields,并判断图层类别;(3)连接SDE中指定数据集,并创建新的FeatureClass;(4)将shp文件对应的 FeatureClass里的Feature复制到SDE中新建的FeatureClass中。接着说明下,开发过程中遇到的一些诡异问题:(1) 在调用IFeatureDataset的CreateFeatureClass方法时,报错提示:Th
bobird 阅读(76) |
摘要: 原文地址:C#+ArcEngine加载CAD数据的几种方法打开cad文件的几种方法 方法一、通过遍历CAD数据集,依次加载中点线面注记等图层,所加载的数据均为一个独立的图层。 IWorkspaceFactory pWorkspaceF IFeatureWorkspace pFeatureW IFeatureLayer pFeatureL IFeatureDataset pFeatureD //打开CAD数据集 pWorkspaceFactory = new CadWorkspaceFactoryClass(); pFeat...
bobird 阅读(221) |
摘要: ArcGIS的空间参考的定义中,坐标系统包含地理坐标系统(Geographic Coordinate System)和投影坐标系统(Projected Coordinate System)两类。地理坐标系统以经纬度为基本的存储单位,是一个球面坐标系统;投影坐标系统是一个平面坐标系统。这两种坐标系统之间的转换简单来讲即为投影和逆投影的过程。以某点的坐标系统的转换为例。实现思路:首先获取某点的对象,然后获取该点的空间参考,使用要素对象中的project方法将点投影到指定的坐标系统即可。示例,以投影坐标系统中的某点转换到地理坐标系统为例/// &summary&/// 平面坐标转换为经纬
bobird 阅读(546) |
摘要: ArcEngine中打开各种数据源(WorkSpace)的连接(SDE、personal/File、ShapeFile、CAD数据、影像图、影像数据集)ArcEngine 可以接受多种数据源。在开发过程中我们使用了如下几种数据源1.企业数据库(SDE) 企业数据库需要使用SDE来管理,所以需要使用SDE的Workspace来表示连接。在AE接口中,Workspace是由Factory打开的。代码如下: // //准备连接参数ESRI.ArcGIS.esriSystem.IPropertySet pPropSet=new PropertySetClass();pPropSet.SetProper
bobird 阅读(61) |
摘要: 在做一般的数据处理时,要想得到某字段唯一值,我们可以利用SQL语言之关键字Distinct方便地获得。但是在用AE作开发时,我们应该怎样去做呢?当然我们可以首先获得某个字段的所有值,然后再去比较、提取、获得唯一值。这样的工作写起来麻烦,效率也非常低。其实AE类库ESRI.ArcGIS.Geodatabase之接口IDataStatistics已为我们提供了这样的方法。ArcGIS开发帮助文档有很多示例,大都都是用VB或是VBA编写,下面是本人利用C#+AE9.1编写的示例:1 /// &summary& 2 /// 得到要素类某字段的唯一值 3 ///...
bobird 阅读(1461) |
摘要: ?相关网址:http://www.cnblogs.com/wall/archive//1398447.html http://www.gisall.com/html/77/.html http://blog.csdn.net/yanleigis/article/details/4770267ArcEngine 中有很多对象是可以序列化,凡是实现了?IPersistStream接口的对象都可序列化,序列化之后的好处呢有很多,比如:你可以将Ilayer,IfeatureLayer,Irasterlayer,ifeatureSender....等等序列化之后存
bobird 阅读(183) |
摘要: ESRI.ArcGIS.Display.IStyleGallery styCls = new ESRI.ArcGIS.Framework.StyleGalleryClass()as ESRI.ArcGIS.Display.IStyleG int iRefsLeft = 0; do { iRefsLeft = Marshal.ReleaseComObject(styCls); } while (iRefsLeft & 0);文章出处
bobird 阅读(57) |
摘要: public void IEnumerator GetUniqueValue(IFeatureClass pFeatClass, string fieldName, string whereClause){ IQueryFilter filter = new QueryFilterClass(); filter.WhereClause = whereC ICursor cursor = (ICursor)pFeatClass.Search(filter, false); IDataStatistics dataStat = new DataStatisticsClass(); da
bobird 阅读(56) |
摘要: private void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e) { pActiveview.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection , null, null);IFeatureLayer pFeaturelayer = pMapcontrol3.CustomProperty as IFeatureL IFeatureSelection pFeatureselection = pFeature...
bobird 阅读(59) |
摘要: 符号化Symbol(符号)体系ArcGISEngine9.3为开发人员提供了32种符号,主要分为三大类符号MarkerSymbol(点符号)、LineSymbol(线符号)和FillSymbol(填充符号)来绘制地理要素的几何图形。此外还有两种特殊类型的符号:一种是TextSymbol用于文字标注;另一种是3DChart符号,用于显示饼图等三维对象,如需详细了解请查找帮助文档。1.MarkerSymbol对象MarkerSymbol用于修饰点对象的符号,它拥有十三个子类如表2所示,其中不同的子类可以产生不同类型的点符号。所有的MarkerSymbol类都实现了IMarkerSymbol接口,这
bobird 阅读(1229) |
摘要: 符号化是GIS应用开发中重要的功能或者是处理,由于程序中每次调入一个图层的图层的符号都是随机的,动态变化的,所以不利于图层的美观。还有一点就是符号有增加电子地图可读性的功能。符号的来源 符号的来源有以下几种:1、符号库Desktop的符号文件把要用的符号用desktop的style manage制作相应符号,并把他存成style文件。该文件实际为mdb数据库。Style文件对应于desktop,在desktop开发包中有相应的类(StyleGallery类)支持该文件的读取。Arcgis Engine符号文件Arcgis engine的符号文件的扩展名为serverstyle,在目前argis
bobird 阅读(267) |
摘要: 1 关于 Page.PageToPrinterMapping的这个属性的区别1) esriPageToPrinterMapping.esriPageMappingT2) esriPageToPrinterMapping.esriPageMappingScale 3) esriPageToPrinterMapping.esriPageMappingCrop这三个属性都是针对当前pagelayout的布局大于当前选择的打印机的页面时才用到的,也就是打印机的纸张一页装不下当前的页面布局。esriPageToPrinterMapping.esriPageMappingT 全部打印,将打
bobird 阅读(126) |
摘要: 本程序实现了对具有,并在MapControl中显示.ILayerpLIFeatureLayerpFeatureLIFeatureClasspFeatureCIWorkspaceNamepNewWSNIBasicGeoprocessorpBasicGIFeatureClassNamepFeatureClassNIDatasetNamepDatasetNIFeatureClasspOutputFeatCIFeatureLayerpOutputFeatLIArraypAITablepT//合并图层的
bobird 阅读(73) |
摘要: 近来发现的ArcGIS新的小功能,比较好用。以下列出来一些简要的代码片段,也算做个回顾。1.//(1)实现图层的选择性显示IFeatureLayerDefinitionpFeatLyrDef=pFeatLyrasIFeatureLayerDpFeatLyrDef.DefinitionExpression=&OBJECTID&10&;pActiveView.Refresh();//(2)实现图层的完全不显示/完全显示IFeatureLayerDefinitionpFeatLyrDef=pFeatLyrasIFeatureLayerDefinition
bobird 阅读(327) |
摘要: 文章出处此部分为编辑SDE数据而作的工具条,代码不完全,但是看看一般可以自己解决其余部分。using Susing System.Collections.Gusing System.ComponentMusing System.Dusing System.Dusing System.Tusing System.Cusing System.Windows.Fusing ESRI.ArcGIS.Cusing ESRI.ArcGIS.Cusing ESRI.ArcGIS.Dis
bobird 阅读(1673) |
摘要: 来自:http://blog.csdn.net/wanliyun2009/article/details/4735534工作中常有这样的需求,一个作业图层由几个作业员来操作,我们要控制每一个作业员只能看到他负责的区域。作业员的可见区域控制有时候是按空间区域划分,有时候是按照作业属性划分,有时候是属性和区域结合来划分,在程序中应该如何控制呢?本人总结了如下几种可用的方法,不知大家是否有更好的解决方案。Ø唯一值符号法该方法比较简单,就是通过给图层设置一个唯一值符号渲染,把不想显示的要素符号设置为空。虽然简单,这种方法有这很大的局限性,如果我们要控制某一个区域的要素可见状态,该方法无法实现
bobird 阅读(434) |
摘要: 来自:http://www.gisall.com/html/63/7.html//转成txtpublic static void ConvertTable2Txt(ITable pTable, string pFilePath) { int pIndex = 0; string pStrLast = &&; string pTxtFile = System.IO.Path.Combine(pFilePath, (pTable as IDataset).Name + &.txt&); System.IO.FileStream pTxt1
bobird 阅读(55) |
摘要: 来自:http://www.gisall.com/html/63/5.html在前面一篇博客中,我们对IWorkspaceEdit接口做了介绍,通过IWorkspaceEdit接口,我们实现了对要素的添加,而在编辑介绍的那篇博文中,我还提到了另外一个接口IEngineEditor。IEngineEditor接口被EngineEditorClass实现,而EngineEditor对象相当于我们在ArcMap中编辑的时候用到的Editor工具条,回想下我们要在一个线图层中添加一条新的要素,我们往往是按照下面的步骤1)start editing2)将targetlayer 设置为
bobird 阅读(783) |
摘要: 文章来源:http://www.cnblogs.com/yhlx125/archive//2363237.html在Geodatabase中有一张Table,希望通过AE开发的方式将信息存储到表的一个Blob字段中。这个该如何实现? 1 IWorkspaceName pWpsName = //当前工作空间名称 2 pWpsName= GWorkSapce.CreateAccessWorkSpace(); 3 if (pWpsName==null) 4 { 5 ...
bobird 阅读(53) |
摘要: 大家可能在平时开发中可能会遇到按行政区加载图层数据的需求,比方说整个国土资源部有某一类型专题数据有若干图层,每个图层数据的范围是整个中国,这时国土资源部开发一套系统可能有这个需求,每个省只能加载本省的数据。以下函数即为按按行政区范围创建行政区范围的图层。比方说我想获取河南省的数据只需传入行政区图层中河南省图元的Geometry即可。另外如果如果遇到行政区层必须用 esriSpatialRelEnum.esriSpatialRelContains这个参数,否则行政区这个图层就不能只获取河南这个省份,它会把河南省的周围省份,河北,湖北,安徽,陕西,山东,山西等省份的图元也添加创建到新图层。Code
bobird 阅读(161) |
摘要: [转].NET+AE开发中常见几种非托管对象的释放我们知道.Net中对于内存的管理有两种方式,一种是托管对象管理,另一种是非托管对象管理。而我们通常理解的内存管理就是GC(垃圾收集),虽然GC通过对托管堆的管理,可以使我们有机会从繁锁的诸如内存泄漏之类的问题中解放出来,可以将精力专注于程序的逻辑上。但是将所有的事情都交给GC有时会损及程序的效率,严重的甚至会导致错误。为什么会出现这种情况呢?问题在于对非托管资源(文件句柄)或者需要特别关照的对象(Bitmap)对象等,GC表现得就有点差强人意了(这句话或许说得并不正确,因为微软设计GC的本意就是用来针对托管对象管理)。如何有效地利用GC来进行内
bobird 阅读(101) |
摘要: 文章来源:http://www.cnblogs.com/St_Dlng/archive//2037453.html //确保布局视图中的所有元素都保存 mapDoc.ReplaceContents((IMxdContents)axPageLayoutControl1.PageLayout); //处理异常关键三句代码 IObjectCopy objectCopy = new ObjectCopyClass(); mapControl.Map = (IMap)objectCopy.Copy(mapDoc.get_Map(0)); objectCop...
bobird 阅读(71) |
摘要: 文章来源:http://www.cnblogs.com/St_Dlng/archive//1803476.html通过双击要素图例,闪烁定位到要素,并且闪烁一段时间:IFeatureLayer featureLayer = layer as IFeatureL ITable table = featureLayer as IT IRow row = table.GetRow((int)data); IFeature feature = row as IF IEnvelope envelope = feature.Shape.Envelop.
bobird 阅读(741) |
摘要: 文章来源:http://www.cnblogs.com/St_Dlng/archive//2271813.html在ArcMap中,实现水平分子式标注的方法是在Label Expression中选中Advanced,输入如下VBA代码:Function FindLabel ( [FieldName1] , [FieldName2] ) FindLabel = [FieldName1] &chr(13)&&———————————&&chr(13)& [FieldName2] End Function或者:Function F
bobird 阅读(79) |
摘要: 文章来源ArcEngine Geometry库定义了基本几何图形的矢量表达形式,顶级的几何图形有Points、Multipoints、Polylines、Polygons、 Multipatches,Geodatabase和绘图系统使用这些几何图形来定义其他各种形状的特征和图形,提供了编辑图形的操作方法和地图符号系统 符号化特征数据的途径。 Geometry库中几个核心类和接口构成了Geometry对象的基本框架。 GeometryEnvironment GeometryEnvironment提供了从不同的输入、设置或获取全局变量来创建几何图形的方法,以便控制geometry方法的行为。Geo
bobird 阅读(70) |
摘要: 用ArcEngine9.3开发GIS应用程序图层符号化解决方案(转)在看这篇文章之前大家首先有个观念用ArcEngine开发C/S应用程序时,一个成熟的GIS项目在加载数据这方面是不允许直接把SDE里边的数据以MXD的形式组织起来这是不科学的,原因如下:1.从数据安全性考虑一个MXD文档包含了SDE数据库里与MXD数据的详细信息,通常对于数据拥有者来说是不希望外部能够获取这些信息的。2.从系统灵活性考虑通过程序动态加载所需同层,动态符号化相关图层能够为程序带来很大的灵活性。习惯直接在MapControl上LoadMXDFile的就会有疑问,不通过MXD怎么展现图层的符号化。接下来我将从两种途径
bobird 阅读(105) |
摘要: 来自:http://blog.sina.com.cn/s/blog_4d0b.html//获取最近的结点,然后在 OnMouseMove中显示//pnt:鼠标移动点//mapSize:设置的地理范围public static IPoint GetNearestVertex(IActiveView actview, IPoint pnt, double mapSize) { IPoint vetex = IPoint hitPnt=new PointClass(); IHitTe...
bobird 阅读(184) |
摘要: 单个要素的删除private bool DeleteFeature(IFeature pFeature) { try { var pFeatureClass = pFeature.Class as IFeatureC var pDataset = pFeatureClass as ID IWorkspace pWorkspace = pDataset.W var pWorks...
bobird 阅读(61) |
摘要: 判断两条线段相交的算法文章出处:http://acm.hdu.edu.cn/discuss/public/post/reply.php?postid=2124&messageid=2&deep=1private bool intersect(double xa1, double ya1, double xa2, double ya2, double xb1, double yb1, double xb2, double yb2) { if (((xa2 - xa1) * (yb1 - ya1) - (xb1 - xa1) * (ya2 - ya1)) * ((xa2 - xa1
bobird 阅读(40) |
摘要: 来自:http://www.cnblogs.com/wangzihao/archive//2197875.html判断任意多边形与矩形的相交(线段与矩形相交或线段与线段相交)任意多边形与矩形的相交,其实就是判断多条线段是否与这个矩形相交,再简单点就是判断线段是否与矩形的每一条边相交了。那现在,我们先来看看判断一条线段与矩形的其中一条线段的相交的情况(上方水平线):(图形中的a/b=d/c如果看不明白的,我也无语了,回去翻下几何图形的那中学课本。)图中已知的是红色的线段,就是要检测的线段,其起点就是star,重点是end,其坐标是已知的。图中的蓝色线是辅助理解的线。而图中的y
bobird 阅读(61) |
摘要: 计算两线段交点/*求两直线交点,前提是两条直线必须有交点在相交的情况下,可以应付各种情况(垂直、系数等)*/POINT GetCrossPoint(POINT p1, POINT p2, POINT q1, POINT q2){ //必须相交求出的才是线段的交点,但是下面的程序段是通用的 assert(IsLineSegmentCross(p1,p2,q1,q2)); /*根据两点式化为标准式,进而求线性方程组*/ POINT crossP long tempLeft,tempR //求x坐标 tempLeft = (q2.x - q1.x) * (p1.y - p2.y)
bobird 阅读(61) |
摘要: 来自:http://www.cnblogs.com/wangzihao/archive//1871616.html有时候需要根据外部关联表格的某一个字段的值来符号化一个图层,例如,有一个行政区的图层,它和一个属性表格关联,这个表格中记录有行政区的属性,比如“人口”,现我们需要根据人口值来符号化每一个要素。因为图层和属性表格不在同一个表格中,因此,需要将它们“Join”起来,保存在内存中,以便符号化图层的时候能读取到关联表格的字段值。这里需要注意的是取字段的时候要注明表格名称,如iField = pFields.FindField(&tract_pop.POPULA
bobird 阅读(41) |
摘要: 自定义arcengine编辑条 (能够撤销和重做)http://bbs.esrichina-bj.cn/ESRI/viewthread.php?tid=75611&extra=&page=1http://www.gisall.com/?uid-99501-mode-theme代码 #region IEditStack interface IEditStack { bool IsEditing(); bool HasEdited(); void StartEditing(); void SaveEditing(bool save...
bobird 阅读(76) |
摘要: 来自:http://www.cnblogs.com/wangzihao/archive//1832435.html影像数据的裁切和保存-Arcengine,C#using ESRI.ArcGIS.esriSusing ESRI.ArcGIS.Cusing ESRI.ArcGIS.SystemUI;using ESRI.ArcGIS.Cusing ESRI.ArcGIS.Gusing ESRI.ArcGIS.DataSourcesGDB;using ESRI.ArcGIS.Gusing ESRI.Ar
bobird 阅读(34) |
摘要: 来自:http://blog.csdn.net/chanyinhelv/article/details/8446260&spanstyle=&font-family:A&&UID中value的几种值以及表示的意思:&/span&{6CA416B1-E160-11D2-9F4E-00C04F6BC78E} IDataLayer{40A9E885--98BE-00805F7CED21} IFeatureLayer{E156D7E5-22AF-11D3-9F99-00C04F6BC78E} IGeoFeatureLayer{34
bobird 阅读(55) |
摘要: 来自:http://blog.csdn.net/chanyinhelv/article/details/8467966//高亮显示节点和端点 public void HighLightNode() { //清空 _mapCtrl.Map.ClearSelection(); _mapCtrl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeoSelection, null, _mapCtrl.ActiveView.Extent); ...
bobird 阅读(75) |
摘要: 来自:http://blog.csdn.net/chanyinhelv/article/details/8467997#region 校验合法性 ArrayList pFeatureArray = pFeatureArray = Application.Editor.FeatureSelection(); int count=pFeatureArray.C if (count&1) { MessageBox.Show(&最少必须选择1...
bobird 阅读(85) |
摘要: 来自:http://blog.csdn.net/yanleigis/article/details/2627649一、几种删除方法代码1.查询结果中删除privatevoidDelete1(IFeatureClassPFeatureclass){IQueryFilterpQueryFilter =newQueryFilterClass();pQueryFilter.WhereClause =&objectID&=&+ DeleteNIFeatureCursorpFeatureCursor = PFeatureclass.Search(pQueryFilter,f
bobird 阅读(18) |
摘要: 文章出处:http://blog.sina.com.cn/s/blog_4c5f70df0100a0ti.html在ArcGIS的开发中,我们经常需要将当前地图打印(或是转出)到图片文件中。将Map或Layout中的图象转出有两种方法,一种为通过IActiveView的OutPut函数,另外一种是通过IExport接口来实现。第一种方法导出速度较快,实现也比较方便,但该方法对于图片的行或列数超过10000左右时,导出经常会失败(具体原因未知),第二种方法导出速度较慢,但效果较好,且可以在导出过程中通过ITrackCancel来中止导出操作。通过IActiveView的方式导出是通过创建Grap
bobird 阅读(63) |
摘要: 文章出处:http://blog.sina.com.cn/s/blog_4c5f70df0100a00i.html在ESRI的帮助文档和例子中,给了很多将ILayer对象存储到ArcSDE的例子和方法。但是,在实际应用中,由于ArcSDE中,通过Engine编程读取和写入记录都比较麻烦,查询检索效率较低。另外,有些同仁将ILayer直接存储为文件,再将Layer(*.lyr)文件以BLOB的方式存入数据库表,这种方式运行效率低,并且,存储了一些额外的信息(如:文件头,格式说明等),这样会比ILayer对象大几十K的空间。我通过研究发现,实际上是可以通过普通数据的方式(OracleClient,
bobird 阅读(432) |
摘要: [1]the application is not licensed to Create or Modify Schama for this type of Data (该异常是ArcEngine许可选择不正确,编辑ArcSDE数据,需要许可类型为ArcGIS Engine Enterprise GeoDatabase,前提是ArcEngine破解的许可文件中必须有这个许可类型。)解决方案:http://www.cnblogs.com/qb371/archive//2366295.html
bobird 阅读(29) |
摘要: 文章出处:http://www.cnblogs.com/wylaok/articles/2363208.html 可以把AE自带的重做、撤销按钮或工具添加到axToolBarControl上,再把axToolBarControl工具条隐藏,同时,在自定义的工具条上新建对应的按钮,按下此按钮实际触发的是AE自带的按钮功能!如在基础平台上的撤销!代码如下://开始定义工具条IOperationStack operationStack = new ControlsOperationStackClass(); axUndoRedoToolbar.OperationStack = operatio...
bobird 阅读(357) |
摘要: 出处:http://blog.sina.com.cn/s/blog_47cd421e0100b39q.html//获取对象信息pFeatIdObj = pIDArray.get_Element(0) as IFeatureIdentifyOpIdObj = pFeatIdObj as IIdentifyOpIdObj.Flash(pActiveView.ScreenDisplay);IRowIdentifyObject pRowIdObj = pFeatIdObj as IRowIdentifyO//获取对象的属性值int idx1 = pRowIdObj.Row.Fi
bobird 阅读(310) |

我要回帖

更多关于 栅格渲染 的文章

 

随机推荐