矢量图库与要素图层蒙版间哪些因素需保持一致?

豆丁精品文档: 如何生成矢量图 矢量图生成 什么是矢量图层 矢量图层 矢量图 矢量..
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
栅格根据象元大小生成相应的矢量图层
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口请教个关于矢量图层与光栅图层的问题_comicstudio吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:11,633贴子:
请教个关于矢量图层与光栅图层的问题收藏
大家描线的时候是用矢量图层还是光栅图层呢?贴完网点后是不是直接转为光栅图层就好了?
这个根据个人喜好以及具体的要求,怎么说呢,你建立了一个600分辨率的文件,用光栅图层的话导出图片的质量(哪怕设定成导出1200dpi)只能输出相当于600分辨率效果的图片。若用矢量图层的话,那就没有问题了,可以输出任意分辨率的图片,没有限制!以上是基于对ps位图编辑与CD矢量编辑这两方面内容的理解作出的解答,对于CS来说我没用它进行过印刷什么的,所以不好妄下结论,我想原理是互通的,作为参考还是可以的,以上!
非常感谢,另祝!
登录百度帐号我的游戏推荐游戏
后查看最近玩过的游戏
使用签名档&&
为兴趣而生,贴吧更懂你。或(转载)裁剪矢量图层 - 好工具站长分享平台
(转载)裁剪矢量图层
using Susing System.Collections.Gusing System.Tusing ESRI.ArcGIS.Gusing ESRI.ArcGIS.Gusing ESRI.ArcGIS.Cusing ESRI.ArcGIS.DataSourcesFusing ESRI.ArcGIS.DataSourcesGDB;using System.Windows.Fusing System.IO;
namespace GIS{
&&& /// &summary&&&& /// 裁剪图层类&&& /// &/summary&&&& public&class&ClipClass&&& {
&&&&&&& #region 私有变量&&&&&&& //被裁减图层&&&&&&& private ESRI.ArcGIS.Carto.ILayer p_InL
&&&&&&& //用来裁剪的图层&&&&&&& private ESRI.ArcGIS.Carto.ILayer p_ClipL
&&&&&&& //被裁减图层的要素类&&&&&&& private IFeatureClass pInFeatureC
&&&&&&& //过滤接口用来过滤一个图层被裁减的要素&&&&&&& private ISpatialFilter pSpatialF
&&&&&&& //空间过滤得到的被裁减的要素游标&&&&&&& private& IFeatureCursor pInFeatureC
&&&&&&& //裁剪得到的要素类&&&&&&& private& IFeatureClass pAimFeatureC
&&&&&&& //空间过滤得到的被裁减的要素&&&&&&& private IFeature pF
&&&&&&& //用来裁剪的几何图形对象&&&&&&& //private IGeometry m_pCutG
&&&&&&& //被裁减图层的字段集&&&&&&& private& IFlds pF
&&&&&&& //被裁减图层的字段&&&&&&& private IField pF
&&&&&&& //复制字段集是用到&&&&&&& private IFieldChecker pFieldC
&&&&&&& //裁剪后得到的要素&&&&&&& private IFeature pA
&&&&&&& //拓扑接口的Boundary属性&&&&&&& private IGeometry pBndG
&&&&&&& //拓扑接口用来裁剪判断相交&&&&&&& private ITopologicalOperator pTopoOp;
&&&&&&& //判断空间关系&&&&&&& private IRelationalOperator pRelOp;
&&&&&&& //游标对象用来在裁剪后的要素类中添加要素&&&&&&& private IFeatureCursor pFC
&&&&&&& //内存图层要素用来在内存中为裁剪后得到的要素在内存中存储&&&&&&& private IFeatureBuffer pFB
&&&&&&& //用来判断被裁剪图层的维数即点线面类型&&&&&&& private esriGeometryDimension iD
&&&&&&& //被裁减图层的IFeatureLayer接口&&&&&&& private IFeatureLayer pInFeatureL
&&&&&&& //裁剪后图层存放位置&&&&&&& private& string p_ClipP
&&&&&&& //裁剪图层的几何图形对象集合&&&&&&& private List &IGeometry & pListClipGeometry=new List&IGeometry&() ;
&&&&&&& //用来裁剪的图层的IFeatureLayer接口&&&&&&& private IFeatureLayer pClipFeatureL
&&&&&&& //用来裁剪的图层的要素类&&&&&&& private IFeatureClass pClipFeatureC
&&&&&&& //字段编辑接口用来设置用来裁剪集合对象的空间参考&&&&&&& IGeometryDefEdit pGeometryDefE
&&&&&&& //裁剪后要素的工作空间矢量图层&&&&&&& IFeatureWorkspace pClipFeatureW
&&&&&&& //裁剪后要素的工作空间注记图层&&&&&&& IFeatureWorkspaceAnno pClipFeatureWorkspaceA
&&&&&&& //获得要素的副本&&&&&&& private IGeometry pAimG
&&&&&&& //&&&&&&& long lngP
&&&&&&& //&&&&&&& ProgressBar PProgressBar = new ProgressBar();
&&&&&&& //如果图层是地里则创建要素集&&&&&&& IFeatureDataset pClipFeatureD&&&&&&& #endregion
&&&&&&& #region 构造函数&&&&&&& /// &summary&&&&&&&& /// 可以传入参数的构造函数&&&&&&& /// &/summary&&&&&&&& /// &param name="pInLayer"& pInLayer是被裁减的图层&/param&&&&&&&& /// &param name="pClipLayer"&pClipLayer是用来裁减的图层&/param&&&&&&&& public& ClipClass(ESRI.ArcGIS.Carto.ILayer pInLayer,&ESRI.ArcGIS.Carto.ILayer pClipLayer,string pClipPath)&&&&&&& {&&&&&&&&&&& p_InLayer = pInL&&&&&&&&&&& p_ClipLayer = pClipL&&&&&&&&&&& p_ClipPath = pClipP&&&&&&& }
&&&&&&& public ClipClass(ESRI.ArcGIS.Carto.ILayer pInLayer,&ESRI.ArcGIS.Carto.ILayer pClipLayer)&&&&&&& {&&&&&&&&&&& p_InLayer = pInL&&&&&&&&&&& p_ClipLayer = pClipL&&&&&&&&&&&&&&&&&&& }
&&&&&&& public ClipClass(ESRI.ArcGIS.Carto.ILayer pInLayer,& string pClipPath)&&&&&&& {&&&&&&&&&&& p_InLayer = pInL&&&&&&&&&&&&&&&&&&&&&& p_ClipPath = pClipP&&&&&&& }
&&&&&&& public ClipClass(ESRI.ArcGIS.Carto.ILayer pClipLayer)&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& p_ClipPath = pClipP&&&&&&& }
&&&&&&& /// &summary&&&&&&&& /// 默认的构造函数&&&&&&& /// &/summary&&&&&&&& public& ClipClass()&&&&&&& {
&&&&&&& }&&&&&&& #endregion
&&&&&&& #region 公共属性&&&&&&& //被裁减图层&&&&&&& public ESRI.ArcGIS.Carto.ILayer pInLayer&&&&&&& {&&&&&&&&&&& get&&&&&&&&&&& {&&&&&&&&&&&&&&& return p_InL&&&&&&&&&&& }&&&&&&&&&&& set&&&&&&&&&&& {&&&&&&&&&&&&&&& p_InLayer =&&&&&&&&&&& }&&&&&&& }
&&&&&&& //用来裁剪的图层&&&&&&& public ESRI.ArcGIS.Carto.ILayer pClipLayer&&&&&&& {&&&&&&&&&&& get&&&&&&&&&&& {&&&&&&&&&&&&&&& return p_ClipL&&&&&&&&&&& }&&&&&&&&&&& set&&&&&&&&&&& {&&&&&&&&&&&&&&& p_ClipLayer =&&&&&&&&&&& }&&&&&&& }
&&&&&&& //裁剪后图层存放位置&&&&&&& public string pClipPath&&&&&&& {&&&&&&&&&&& get&&&&&&&&&&& {&&&&&&&&&&&&&&& return p_ClipP&&&&&&&&&&& }&&&&&&&&&&& set&&&&&&&&&&& {&&&&&&&&&&&&&&& p_ClipPath =&&&&&&&&&&& }&&&&&&& }&&&&&&& #endregion
&&&&&&& #region 私有方法&&&&&&& /// &summary&&&&&&&& /// 得到用来裁剪的图层的几何对象集合&&&&&&& /// &/summary&&&&&&&& /// &returns&&/returns&&&&&&&& private List &IGeometry & get_pClipLayerGeometry()&&&&&&& {&&&&&&&&&&& pClipFeatureLayer = p_ClipLayer as IFeatureL&&&&&&&&&&& pClipFeatureClass = pClipFeatureLayer.FeatureC&&&&&&&&&&& for (int i = 0; i & pClipFeatureClass.FeatureCount(null); i++)&&&&&&&&&&& {&&&&&&&&&&&&&&& pListClipGeometry.Add(pClipFeatureClass.GetFeature(i).Shape);&&&&&&&&&&& }&&&&&&&&&&& return pListClipG&&&&&&& }
&&&&&&& //得到被裁减图层的工作空间&&&&&&& private IWorkspace get_pInLayerWorkspace()&&&&&&& {&&&&&&&&&&& IWorkspace pInW&&&&&&&&&&& return pInWorkspace = ((IDataset)((IDataLayer)p_InLayer)).W&&&&&&&&&&&&&&&&&& }
&&&&&&& //创建用来存放裁剪的要素的要素类&&&&&&& //如果是shapefile文件&&&&&&& private void CreaterClipFeatureClass(IFields p_Fields,IFeatureLayer pFeatureLayer)&&&&&&& {&&&&&&&&&&& //如果是shapefile文件则在选择的位置直接创建图层&&&&&&&&&&& if (pFeatureLayer.DataSourceType == "Shapefile要素类" || pInFeatureLayer.DataSourceType == "Shapefile&Feature&Class")&&&&&&&&&&& {&&&&&&&&&&&&&&& pClipFeatureWorkspace = get_pInLayerWorkspace().WorkspaceFactory.OpenFromFile(p_ClipPath,&0) as IFeatureW
&&&&&&&&&&&&&&& //判断指定位置是否存在同名的数据&&&&&&&&&&&&&&& if (File.Exists (p_ClipPath+""))&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&& if (MessageBox.Show("在指定文件夹下已经存在名称为" + p_InLayer.Name + "的图层,您是否要覆盖? 如果选择是则覆盖,选择否则退出裁剪!",&"提示",&MessageBoxButtons.YesNo,&MessageBoxIcon.Warning) == DialogResult.Yes)&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&& IFeatureClass pDelectFeatureClass = pClipFeatureWorkspace.OpenFeatureClass( p_InLayer.Name );&&&&&&&&&&&&&&&&&&&&&&& IDataset pDeleteDataset = pDelectFeatureClass as ID&&&&&&&&&&&&&&&&&&&&&&& pDeleteDataset.Delete();&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&& else&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&& //创建存放裁剪的要素的要素类&&&&&&&&&&&&&&& pAimFeatureClass = pClipFeatureWorkspace.CreateFeatureClass(p_InLayer.Name,&p_Fields,&null,&null,&pInFeatureClass.FeatureType,&pInFeatureClass.ShapeFieldName,&"");&&&&&&&&&&& }&&&&&&&&&&& //如果是个人地理数据集先判断是否有要素集,如果有则在数据库里创建要素集,如果没有则直接在数据库创建要素类&&&&&&&&&&& else if (pFeatureLayer.DataSourceType == "Personal Geodatabase 要素类" || pInFeatureLayer.DataSourceType == "Personal Geodatabase&Feature&Class")&&&&&&&&&&& {&&&&&&&&&&&&&&& //判断指定位置是否存在同名的数据&&&&&&&&&&&&&&& if (File.Exists(p_ClipPath + "\\" + System.IO.Path.GetFileName(get_pInLayerWorkspace().PathName)))&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&& if (MessageBox.Show("在指定文件夹下已经存在名称为" + System.IO.Path.GetFileName(get_pInLayerWorkspace().PathName) + "的个人地理数据库,您是否要覆盖? 如果选择是则覆盖,选择否则退出裁剪!",&"提示",&MessageBoxButtons.YesNo,&MessageBoxIcon.Warning) == DialogResult.Yes)&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& File .Delete (p_ClipPath + "\\" + System.IO.Path.GetFileName(get_pInLayerWorkspace().PathName));&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&& else&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&& //创建个人地里数据库&&&&&&&&&&&&&&& get_pInLayerWorkspace().WorkspaceFactory.Create(p_ClipPath,&System.IO.Path.GetFileName(get_pInLayerWorkspace().PathName),&null,&0);&&&&&&&&&&&&&&& //判断图层是注记层&&&&&&&&&&&&&&& if (pFeatureLayer is IFDOGraphicsLayer)&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&& pClipFeatureWorkspaceAnno = get_pInLayerWorkspace().WorkspaceFactory.OpenFromFile(p_ClipPath + "\\" + System.IO.Path.GetFileName(get_pInLayerWorkspace().PathName),&0) as IFeatureWorkspaceA&&&&&&&&&&&&&&&&&&& pAimFeatureClass = pClipFeatureWorkspaceAnno.CreateAnnotationClass (p_InLayer.Name,&p_Fields,&null,&null,&pInFeatureClass.ShapeFieldName,&"",null&,null&,null&,null&,null&,true );&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&& //如果图层是要素图层&&&&&&&&&&&&&&& else&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&& //打开工作空间&&&&&&&&&&&&&&&&&&& pClipFeatureWorkspace = get_pInLayerWorkspace().WorkspaceFactory.OpenFromFile(p_ClipPath + "\\" + System.IO.Path.GetFileName(get_pInLayerWorkspace().PathName),&0) as IFeatureW&&&&&&&&&&&&&&&&&& //如果有要素数据集&&&&&&&&&&&&&&&&&&& if (pFeatureLayer.FeatureClass.FeatureDataset != null)&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&& //创建要素数据集&&&&&&&&&&&&&&&&&&&&&&& pClipFeatureDataset = pClipFeatureWorkspace.CreateFeatureDataset(pFeatureLayer.FeatureClass.FeatureDataset.Name,&((IGeoDataset)pFeatureLayer).SpatialReference);&&&&&&&&&&&&&&&&&&&&&&& //创建要素数据集下的要素类用于存放裁剪后的要素&&&&&&&&&&&&&&&&&&&&&&& pAimFeatureClass = pClipFeatureDataset.CreateFeatureClass(p_InLayer.Name,&p_Fields,&null,&null,&pInFeatureClass.FeatureType,&pInFeatureClass.ShapeFieldName,&"");&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&& //如果没有要素数据集&&&&&&&&&&&&&&&&&&& else&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&& //创建要素数据集下的要素类用于存放裁剪后的要素&&&&&&&&&&&&&&&&&&&&&&& pAimFeatureClass = pClipFeatureWorkspace.CreateFeatureClass(p_InLayer.Name,&p_Fields,&null,&null,&pInFeatureClass.FeatureType,&pInFeatureClass.ShapeFieldName,&"");&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&& }&&&&&&&&&&& }&&&&&&&&&&& //如果是文件地理数据集先判断是否有要素集,如果有则在数据库里创建要素集,如果没有则直接在数据库创建要素类&&&&&&&&&&& else if (pFeatureLayer.DataSourceType == "File Geodatabas要素类" || pInFeatureLayer.DataSourceType == "File Geodatabase&Feature&Class")&&&&&&&&&&& {&&&&&&&&&&&&&&& //判断指定位置是否存在同名的数据&&&&&&&&&&&&&&& if (File.Exists(p_ClipPath + "\\" + System.IO.Path.GetFileName(get_pInLayerWorkspace().PathName)))&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&& if (MessageBox.Show("在指定文件夹下已经存在名称为" + System.IO.Path.GetFileName(get_pInLayerWorkspace().PathName) + "的个人地理数据库,您是否要覆盖? 如果选择是则覆盖,选择否则退出裁剪!",&"提示",&MessageBoxButtons.YesNo,&MessageBoxIcon.Warning) == DialogResult.Yes)&&&&&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&&&& DeleteFileGDB(p_ClipPath + "\\" + System.IO.Path.GetFileName(get_pInLayerWorkspace().PathName));&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&& else&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& //创建个人地里数据库&&&&&&&&&&&&&&& get_pInLayerWorkspace().WorkspaceFactory.Create(p_ClipPath,&System.IO.Path.GetFileName(get_pInLayerWorkspace().PathName),&null,&0);&&&&&&&&&&&&&&& //判断图层是注记层&&&&&&&&&&&&&&& if (pFeatureLayer is IFDOGraphicsLayer)&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&& pClipFeatureWorkspaceAnno = get_pInLayerWorkspace().WorkspaceFactory.OpenFromFile(p_ClipPath + "\\" + System.IO.Path.GetFileName(get_pInLayerWorkspace().PathName),&0) as IFeatureWorkspaceA&&&&&&&&&&&&&&&&&&& pAimFeatureClass = pClipFeatureWorkspaceAnno.CreateAnnotationClass(p_InLayer.Name,&p_Fields,&null,&null,&pInFeatureClass.ShapeFieldName,&"",&null,&null,&null,&null,&null,&true);&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&& //如果图层是要素图层&&&&&&&&&&&&&&& else&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&& //打开工作空间&&&&&&&&&&&&&&&&&&& pClipFeatureWorkspace = get_pInLayerWorkspace().WorkspaceFactory.OpenFromFile(p_ClipPath + "\\" + System.IO.Path.GetFileName(get_pInLayerWorkspace().PathName),&0) as IFeatureW&&&&&&&&&&&&&&&&&&& //如果有要素数据集&&&&&&&&&&&&&&&&&&& if (pFeatureLayer.FeatureClass.FeatureDataset != null)&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&& //创建要素数据集&&&&&&&&&&&&&&&&&&&&&&& pClipFeatureDataset = pClipFeatureWorkspace.CreateFeatureDataset(pFeatureLayer.FeatureClass.FeatureDataset.Name,&((IGeoDataset)pFeatureLayer).SpatialReference);&&&&&&&&&&&&&&&&&&&&&&& //创建要素数据集下的要素类用于存放裁剪后的要素&&&&&&&&&&&&&&&&&&&&&&& pAimFeatureClass = pClipFeatureDataset.CreateFeatureClass(p_InLayer.Name,&p_Fields,&null,&null,&pInFeatureClass.FeatureType,&pInFeatureClass.ShapeFieldName,&"");&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&& //如果没有要素数据集&&&&&&&&&&&&&&&&&&& else&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&& //创建要素数据集下的要素类用于存放裁剪后的要素&&&&&&&&&&&&&&&&&&&&&&& pAimFeatureClass = pClipFeatureWorkspace.CreateFeatureClass(p_InLayer.Name,&p_Fields,&null,&null,&pInFeatureClass.FeatureType,&pInFeatureClass.ShapeFieldName,&"");&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&& }&&&&&&&&&&& }&&&&&&& }
&&&&&&& #endregion
&&&&&&& #region 公有方法&&&&&&& public void Clip()&&&&&&& {&&&&&&&&&&& get_pClipLayerGeometry();&&&&&&&&&&& pInFeatureLayer = p_InLayer as IFeatureL&&&&&&&&&&& pInFeatureClass = pInFeatureLayer.FeatureC
&&&&&&&&&&& //'设置导出的空间参考,这也是必需的&&&&&&&&&&& LCXS.Projection.ProjectionClass& pProjection = new LCXS.Projection.ProjectionClass();&&&&&&&&&&& pProjection.SetLayerProjectionImport(p_InLayer,&p_ClipLayer);&&&&&&&&&&& //如果被裁减的图层没有要素则退出裁剪不被裁剪&&&&&&&&&&& if (pInFeatureClass.FeatureCount (null )&1)&&&&&&&&&&& {&&&&&&&&&&&&&&& System.Windows.Forms.MessageBox.Show("被裁减的图层没有要素,将不执行裁剪",&"提示");&&&&&&&&&&&&&&&&&&&&&&&&&& }
&&&&&&&&&&& //如果被裁减图层的Extension属性不为空则不执行裁剪&&&&&&&&&&& if (pInFeatureClass.Extension != null)&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&&&&& }
&&&&&&&&&&& //复制属性字段,这是从一个FeatureLayer创建另一个相同的FeatureLayer所必需的&&&&&&&&&&& //也可以遍历字段进行逐个创建,但如果经验不够丰富,这样会始程序极不稳定&&&&&&&&&&& //pFields就是复制出来的字段集对象&&&&&&&&&&& IEnumFieldError pEnumFieldE&&&&&&&&&&& pFieldCheck = new FieldChecker();&&&&&&&&&&& pFieldCheck.ValidateWorkspace = get_pInLayerWorkspace();&&&&&&&&&&& pFieldCheck.Validate(pInFeatureClass.Fields,&out& pEnumFieldError,&out pFields);
&&&&&&&&&&& //设置空间参考,这是必须的。&&&&&&&&&&& pField = pFields.get_Field(pFields.FindField(pInFeatureClass.ShapeFieldName));&&&&&&&&&&& pGeometryDefEdit = pField.GeometryDef as IGeometryDefE&&&&&&&&&&& pGeometryDefEdit.SpatialReference_2 = pProjection.p_SpatialR
&&&&&&&&&&& //创建新图层,用来存放裁剪出的新要素层&&&&&&&&&&& CreaterClipFeatureClass(pFields,&pInFeatureLayer);&&&&&&&&&&& if (pAimFeatureClass == null)&&&&&&&&&&&&&&&&&&&&&&&&&& PProgressBar.Maximum = 1000;&&&&&&&&&&& PProgressBar.Dock = DockStyle.F&&&&&&&&&&& PProgressBar.Height = 20;&&&&&&&&&&& frmClip pfrmclip = new frmClip();&&&&&&&&&&& pfrmclip.Controls.Add(PProgressBar);&&&&&&&&&&& pfrmclip.Show();&&&&&&&&&&& //用用来裁剪的图层的每一个集合对象裁剪呗裁剪的图层&&&&&&&&&&& foreach (IGeometry pClipGeometry in pListClipGeometry)&&&&&&&&&&& {&&&&&&&&&&&&&&& //如果几何对象为空则进行下一个循环&&&&&&&&&&&&&&& if (pClipGeometry.IsEmpty)&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& //设置空间参考,这是必须的。&&&&&&&&&&&&&&& pClipGeometry.Project(pProjection.p_SpatialReference);&&&&&&&&&&&&&&& //设置空间过滤对象得到被裁减图层中要被裁减的要素提高效率&&&&&&&&&&&&&&& pSpatialFilter = new SpatialFilter();&&&&&&&&&&&&&&& pSpatialFilter.Geometry = pClipG&&&&&&&&&&&&&&& pSpatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelI&&&&&&&&&&&&&&& pInFeatureCursor = pInFeatureLayer.Search(pSpatialFilter,&false);
&&&&&&&&&&&&&&& pTopoOp = pClipGeometry as ITopologicalO
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& //提高程序效率:只把和裁剪多边形边界相交(Cross)的Feature进行裁剪,其它的直接复制&&&&&&&&&&&&&&& //其几何图形&&&&&&&&&&&&&&& pBndGeom = pTopoOp.B&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& pFCur = pAimFeatureClass.Insert(true );
&&&&&&&&&&&&&&& pFeature = pInFeatureCursor.NextFeature();&&&&&&&&&&&&&&& if (pFeature != null)&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&& //获得要素的图形的副本&&&&&&&&&&&&&&&&&&& pAimGeometry = pFeature.ShapeC&&&&&&&&&&&&&&&&&&& iDimension = pAimGeometry.Dimension & pClipGeometry.Dimension ? pAimGeometry.Dimension : pClipGeometry.D
&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& while (pFeature != null)&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&& pfrmclip.Text = "正在裁剪" + "[" + p_InLayer.Name + "]" + "图层的第"+ "[" + pFeature.OID.ToString() + "]"+"号要素";&&&&&&&&&&&&&&&&&&& for (int i = 0; i & 500; i++)&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&& PProgressBar.Value += 1;&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&& pFBuff = pAimFeatureClass.CreateFeatureBuffer();&&&&&&&&&&&&&&&&&&& pAimfeature = pFBuff as IF&&&&&&&&&&&&&&&&&&& //先获得副本,然后在必要的情况下进行裁剪&&&&&&&&&&&&&&&&&&& pAimGeometry = pFeature.ShapeC&&&&&&&&&&&&&&&&&&& pRelOp = pAimGeometry as IRelationalO&&&&&&&&&&&&&&&&&&& //如果是点要素,则不需要进行裁剪
&&&&&&&&&&&&&&&&&&& if (pAimGeometry.GeometryType == esriGeometryType.esriGeometryPoint)&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&& pAimfeature.Shape = pFeature.ShapeC&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&& else&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&& //如果该图形和裁剪图形相交,则进行裁剪,否则直接使用副本
&&&&&&&&&&&&&&&&&&&&&&& if (pRelOp.Crosses(pBndGeom))&&&&&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&&&&&& pTopoOp = pFeature.ShapeCopy as ITopologicalO&&&&&&&&&&&&&&&&&&&&&&&&&&& pAimfeature.Shape = pTopoOp.Intersect(pClipGeometry,&iDimension);
&&&&&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&&&&&& else&&&&&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&&&&&& pAimfeature.Shape = pFeature.ShapeC&&&&&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&&&&&& for (int i = 0; i & 500; i++)&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&& PProgressBar.Value += 1;&&&&&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&&&&&& //遍历复制要素的所有属性&&&&&&&&&&&&&&&&&&& for (int lLoop = 0; lLoop & pFields.FieldC lLoop++)&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&& int lTemp = pAimFeatureClass.FindField(pFields.get_Field(lLoop).Name);&&&&&&&&&&&&&&&&&&&&&&& if (lTemp & -1)&&&&&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&&&&&& if (pAimFeatureClass.Fields.get_Field(lTemp).Editable &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& pAimFeatureClass.Fields.get_Field(lTemp).Type != esriFieldType.esriFieldTypeGeometry&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& && pAimFeatureClass.Fields.get_Field(lTemp).Type != esriFieldType.esriFieldTypeOID &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& pFeature.Fields.FindField(pFields.get_Field(lLoop).Name) & -1)&&&&&&&&&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& if (pFeature.get_Value(pFeature.Fields.FindField(pFields.get_Field(lLoop).Name)) != null)&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& pAimfeature.set_Value(lTemp,&pFeature.get_Value(pFeature.Fields.FindField(pFields.get_Field(lLoop).Name)));&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&& pFCur.InsertFeature ( pFBuff);&&&&&&&&&&&&&&&&&&& lngPro += 1;&&&&&&&&&&&&&&&&&&& if (lngPro &= 100)&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&& pFCur.Flush();&&&&&&&&&&&&&&&&&&&&&&& lngPro = 0;&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&& lication.DoEvents();&&&&&&&&&&&&&&&&&&& pFeature = pInFeatureCursor.NextFeature();&&&&&&&&&&&&&&&&&&& PProgressBar.Value = 0;&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&& if (lngPro & 0)&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&& pFCur.Flush();&&&&&&&&&&&&&&& }&&&&&&&&&&& }&&&&&&&&&&& PProgressBar.Dispose();&&&&&&&&&&& pfrmclip.Dispose();&&&&&&&&&&& MessageBox.Show("裁剪成功",&"信息",&MessageBoxButtons.OK,&rmation);&&&&&&& }
&&&&&&& /// &summary&&&&&&&&& /// C# 删除文件夹&&&&&&&& /// 用法: DeleteFolder(@"c:\\1");&&&&&&&& /// &/summary&&&&&&&&& /// &param name="dir"&&/param&&&&&&&&& public&& void DeleteFileGDB(string dir)&&&&&&& {&&&&&&&&&&& if (Directory.Exists(dir))&&&&&&&&&&& {&&&&&&&&&&&&&&& // 循环文件夹里面的内容&&&&&&&&&&&&&&&& foreach (string f in Directory.GetFileSystemEntries(dir))&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&& // 如果是文件存在&&&&&&&&&&&&&&&&&&&& if (File.Exists(f))&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&& FileInfo fi = new FileInfo(f);&&&&&&&&&&&&&&&&&&&&&&& if (fi.Attributes.ToString().IndexOf("Readonly") != 1)&&&&&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&&&&&& fi.Attributes = FileAttributes.N&&&&&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&&&&&& // 直接删除其中的文件&&&&&&&&&&&&&&&&&&&&&&&& File.Delete(f);&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&&&&&& else&&&&&&&&&&&&&&&&&&& {&&&&&&&&&&&&&&&&&&&&&&& // 如果是文件夹存在&&&&&&&&&&&&&&&&&&&&&&&& // 递归删除子文件夹&&&&&&&&&&&&&&&&&&&&&&&& DeleteFileGDB(f);&&&&&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&& }&&&&&&&&&&&&&&& // 删除已空文件夹&&&&&&&&&&&&&&&& Directory.Delete(dir);&&&&&&&&&&& }&&&&&&& }&&&&&&& #endregion
.Net 文章一周点击
.Net 文章一月点击
HaoGongJu.Net ( 好工具 ) All Rights Reserved

我要回帖

更多关于 图层蒙版 的文章

 

随机推荐