修改shp数据字段名字#
public bool UpdateArea(IFeatureClass pfeatureclass, string oldfieldName, string newfieldName)
{
bool updateSuc = false;
try
{
using (ComReleaser comReleaser = new ComReleaser())
{
if (pfeatureclass == null) return false;
ITable pTable = pfeatureclass as ITable;
IFields pfields = pfeatureclass.Fields;
IField pfield = null;
for (int i = 0; i < pfields.FieldCount; i++)
{
pfield = pfields.get_Field(i);
if (pfield.Name.ToLower() == oldfieldName.ToLower())
{
IField pField = new FieldClass();
IFieldEdit pFieldEdit = pField as IFieldEdit;
pFieldEdit.Name_2 = newfieldName;
pFieldEdit.AliasName_2 = newfieldName;
pFieldEdit.Type_2 = pfield.Type;
pFieldEdit.Length_2 = pfield.Length;
pFieldEdit.Precision_2 = pfield.Precision;
pFieldEdit.Scale_2 = pfield.Scale;
pTable.AddField(pField);
break;
}
}
int Index = pTable.FindField(newfieldName);
int indexP = pTable.FindField(oldfieldName);
if (Index == -1 || indexP == -1) return false;
ICursor updateCursor = pTable.Update(null, true);
comReleaser.ManageLifetime(updateCursor);
IRow row = null;
while ((row = updateCursor.NextRow()) != null)
{
double v = Convert.ToDouble(row.get_Value(indexP));
row.set_Value(Index, v);
updateCursor.UpdateRow(row);
}
pTable.DeleteField(pfield);
}
updateSuc = true;
}
catch (Exception ex)
{
updateSuc = false;
}
return updateSuc;
}
批量将一个字段的值赋值给另一个字段#
public bool BatchSetValue(string pFeatureClassName, string fromFieldName, string toFieldName)
{
bool updateSuc = false;
try
{
using (ESRI.ArcGIS.ADF.ComReleaser comReleaser = new ESRI.ArcGIS.ADF.ComReleaser())
{
IFeatureClass pFeatureClass = gms.GetFeatureClass(pFeatureClassName);
if (pFeatureClass == null) return false;
int fromIndex = pFeatureClass.Fields.FindField(fromFieldName);
int toIndex = pFeatureClass.Fields.FindField(toFieldName);
if (fromIndex == -1 || toIndex == -1) return false;
IQueryFilter pQueryfilter = new QueryFilterClass();
pQueryfilter.SubFields = pFeatureClass.OIDFieldName + "," + fromFieldName + "," + toFieldName + ",Shape";
IFeatureCursor pFeatureCursor = null;
pFeatureCursor = pFeatureClass.Update(pQueryfilter, true);
IFeature pFeature = pFeatureCursor.NextFeature();
while (pFeature != null)
{
object A = pFeature.get_Value(fromIndex);
pFeature.set_Value(toIndex, pFeature.get_Value(fromIndex));
pFeatureCursor.UpdateFeature(pFeature);
pFeature = pFeatureCursor.NextFeature();
}
}
updateSuc = true;
}
catch (Exception ex)
{
LogManager.LogHelper.WriteMessage(ex.Message, ex.StackTrace, LogManager.LogHelper.LogType.ERROR);
updateSuc = false;
}
return updateSuc;
}
根据要素选择集,创建新图层#
IFeatureLayer featureLayer = new FeatureLayerClass();
featureLayer.FeatureClass = featureClass;
IFeatureSelection featureSelection = featureLayer as IFeatureSelection;
IQueryFilter queryFilter1 = new QueryFilterClass();
queryFilter1.WhereClause = "XZQDM like '" + xz_xzqdm + "%'";
featureSelection.SelectFeatures(queryFilter1, esriSelectionResultEnum.esriSelectionResultNew, false);
ISelectionSet selectionSet = featureSelection.SelectionSet;
IFeatureLayer newFeatureLayer = null;
if (selectionSet.Count > 0)
{
IFeatureLayerDefinition featureLayerDefinition = featureLayer as IFeatureLayerDefinition;
newFeatureLayer = featureLayerDefinition.CreateSelectionLayer(featureClass.AliasName, true, null, null);
}
AE二次开发中,过滤后的图层,实现缩放至图层效果#
IEnvelope pEnvelope = new EnvelopeClass();
IEnumGeometryBind enumGeometryBind = new EnumFeatureGeometryClass();
enumGeometryBind.BindGeometrySource(null, pFeatureClassDLTB);
IEnumGeometry enumGeometry = (IEnumGeometry)enumGeometryBind;
IGeometryFactory geoFactory = new GeometryEnvironment() as IGeometryFactory;
IGeometry geo = geoFactory.CreateGeometryFromEnumerator(enumGeometry);
pEnvelope.Union(geo.Envelope);
System.Runtime.InteropServices.Marshal.ReleaseComObject(geo);
System.Runtime.InteropServices.Marshal.ReleaseComObject(geoFactory);
System.Runtime.InteropServices.Marshal.ReleaseComObject(enumGeometry);
mcView.ActiveView.FullExtent = pEnvelope;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?