本文整理汇总了C#中IFeatureSet.GetAttributes方法的典型用法代码示例。如果您正苦于以下问题:C# IFeatureSet.GetAttributes方法的具体用法?C# IFeatureSet.GetAttributes怎么用?C# IFeatureSet.GetAttributes使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IFeatureSet
的用法示例。
在下文中一共展示了IFeatureSet.GetAttributes方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CopyFeatures
/// <inheritdoc/>
public void CopyFeatures(IFeatureSet source, bool copyAttributes)
{
ProgressMeter = new ProgressMeter(ProgressHandler, "Copying Features", ShapeIndices.Count);
Vertex = source.Vertex.Copy();
_shapeIndices = new List<ShapeRange>();
foreach (ShapeRange range in source.ShapeIndices)
{
_shapeIndices.Add(range.Copy());
}
if (copyAttributes)
{
foreach (DataColumn dc in source.GetColumns())
{
if (dc != null)
{
DataColumn outCol = new DataColumn(dc.ColumnName, dc.DataType, dc.Expression, dc.ColumnMapping);
Field fld = new Field(outCol);
DataTable.Columns.Add(fld);
}
}
}
if (source.AttributesPopulated)
{
// Handle data table content directly
if (!IndexMode)
{
// If not in index mode, just handle this using features
Features.SuspendEvents();
int i = 0;
foreach (IFeature f in source.Features)
{
IFeature copy = AddFeature(f.BasicGeometry);
copy.ShapeIndex = ShapeIndices[i];
if (copyAttributes)
{
copy.DataRow.ItemArray = f.DataRow.ItemArray.Copy();
}
i++;
}
Features.ResumeEvents();
}
else
{
// We need to copy the attributes, but just copy a datarow
if (copyAttributes)
{
foreach (DataRow row in source.DataTable.Rows)
{
DataRow result = DataTable.NewRow();
result.ItemArray = row.ItemArray.Copy();
DataTable.Rows.Add(result);
}
}
}
}
else
{
AttributesPopulated = false;
// Handle data table content directly
if (!IndexMode)
{
// If not in index mode, just handle this using features
Features.SuspendEvents();
int i = 0;
foreach (IFeature f in source.Features)
{
IFeature result = AddFeature(f.BasicGeometry);
result.ShapeIndex = ShapeIndices[i];
i++;
}
Features.ResumeEvents();
}
if (copyAttributes)
{
// We need to copy the attributes, but use the page system
int maxRow = NumRows();
const int pageSize = 10000;
int numPages = (int)Math.Ceiling(maxRow / (double)pageSize);
for (int i = 0; i < numPages; i++)
{
int numRows = pageSize;
if (i == numPages - 1)
{
numRows = numPages - (pageSize * i);
}
DataTable dt = source.GetAttributes(i * pageSize, numRows);
SetAttributes(i * pageSize, dt);
}
}
}
}