本文整理汇总了C#中IFeatureSet.FillAttributes方法的典型用法代码示例。如果您正苦于以下问题:C# IFeatureSet.FillAttributes方法的具体用法?C# IFeatureSet.FillAttributes怎么用?C# IFeatureSet.FillAttributes使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IFeatureSet
的用法示例。
在下文中一共展示了IFeatureSet.FillAttributes方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Intersection
/// <summary>
/// This tests each feature of the input
/// </summary>
/// <param name="self">This featureSet</param>
/// <param name="other">The featureSet to perform intersection with</param>
/// <param name="joinType">The attribute join type</param>
/// <param name="progHandler">A progress handler for status messages</param>
/// <returns>An IFeatureSet with the intersecting features, broken down based on the join Type</returns>
public static IFeatureSet Intersection(this IFeatureSet self, IFeatureSet other, FieldJoinType joinType, IProgressHandler progHandler)
{
IFeatureSet result = null;
ProgressMeter pm = new ProgressMeter(progHandler, "Calculating Intersection", self.Features.Count);
if (joinType == FieldJoinType.All)
{
result = CombinedFields(self, other);
// Intersection is symmetric, so only consider I X J where J <= I
if (!self.AttributesPopulated) self.FillAttributes();
if (!other.AttributesPopulated) other.FillAttributes();
int i = 0;
foreach (IFeature selfFeature in self.Features)
{
List<IFeature> potentialOthers = other.Select(selfFeature.Envelope.ToExtent());
foreach (IFeature otherFeature in potentialOthers)
{
selfFeature.Intersection(otherFeature, result, joinType);
}
pm.CurrentValue = i;
i++;
}
pm.Reset();
}
if (joinType == FieldJoinType.LocalOnly)
{
if (!self.AttributesPopulated) self.FillAttributes();
result = new FeatureSet();
result.CopyTableSchema(self);
result.FeatureType = self.FeatureType;
IFeature union;
pm = new ProgressMeter(progHandler, "Calculating Union", other.Features.Count);
if (other.Features != null && other.Features.Count > 0)
{
union = other.Features[0];
for (int i = 1; i < other.Features.Count; i++)
{
union = union.Union(other.Features[i]);
pm.CurrentValue = i;
}
pm.Reset();
pm = new ProgressMeter(progHandler, "Calculating Intersections", self.NumRows());
Extent otherEnvelope = new Extent(union.Envelope);
for (int shp = 0; shp < self.ShapeIndices.Count; shp++)
{
if (!self.ShapeIndices[shp].Extent.Intersects(otherEnvelope)) continue;
IFeature selfFeature = self.GetFeature(shp);
selfFeature.Intersection(union, result, joinType);
pm.CurrentValue = shp;
}
pm.Reset();
}
}
if (joinType == FieldJoinType.ForeignOnly)
{
if (!other.AttributesPopulated) other.FillAttributes();
result = new FeatureSet();
result.CopyTableSchema(other);
IFeature union;
if (self.Features != null && self.Features.Count > 0)
{
pm = new ProgressMeter(progHandler, "Calculating Union", self.Features.Count);
union = self.Features[0];
for (int i = 1; i < self.Features.Count; i++)
{
union = union.Union(self.Features[i]);
pm.CurrentValue = i;
}
pm.Reset();
if (other.Features != null)
{
pm = new ProgressMeter(progHandler, "Calculating Intersection", other.Features.Count);
int j = 0;
foreach (IFeature otherFeature in other.Features)
{
IFeature test = otherFeature.Intersection(union, result, joinType);
if (test.BasicGeometry != null)
{
result.Features.Add(test);
}
pm.CurrentValue = j;
j++;
}
}
pm.Reset();
}
}
return result;
}
示例2: ClipPolygonFeatureSetWithPolygon
/// <summary>
/// Returns the portions of the polygons in polySF that lie within polygon as a
/// new shapefile of polygons: resultPolySF.
/// </summary>
/// <param name="polygonFeatureSet">The shapefile of polygons that are to be clipped.</param>
/// <param name="polygon">The polygon used for clipping.</param>
/// <param name="resultFeatureSet">The result shapefile for the resulting polygons to be saved (in-memory).</param>
/// <param name="copyAttributes">True if copying attrs</param>
/// <returns>False if an error was encountered, true otherwise.</returns>
public static bool ClipPolygonFeatureSetWithPolygon(
IFeatureSet polygonFeatureSet, IFeature polygon, IFeatureSet resultFeatureSet, bool copyAttributes)
{
if (copyAttributes)
{
polygonFeatureSet.FillAttributes();
resultFeatureSet.CopyTableSchema(polygonFeatureSet);
}
if (polygonFeatureSet.Features.Count != 0 && polygon.NumPoints != 0
&& polygonFeatureSet.FeatureType == FeatureType.Polygon)
{
int numShapes = polygonFeatureSet.Features.Count;
for (int i = 0; i <= numShapes - 1; i++)
{
polygonFeatureSet.Features[i].Intersection(polygon, resultFeatureSet, FieldJoinType.LocalOnly);
}
}
return true;
}
示例3: Initialize
/// <summary>
/// Sets up the Table to work with the specified layer. This should be the copy,
/// and not the original.
/// </summary>
/// <param name="layer"></param>
public void Initialize(IFeatureLayer layer)
{
_original = layer.Symbology;
_newScheme = _original.Copy();
_source = layer.DataSet;
if (!layer.DataSet.AttributesPopulated)
{
if (layer.DataSet.NumRows() < 100000)
{
_source.FillAttributes(); // for small datasets, it is better to just load and cache it.
}
}
if (_source.AttributesPopulated)
{
_expressionDialog.Table = _source.DataTable;
}
else
{
_expressionDialog.AttributeSource = _source;
}
_schemeType = GetSchemeType(layer);
if (_schemeType != SymbolizerType.Polygon)
{
chkUseGradients.Visible = false;
angGradientAngle.Visible = false;
}
else
{
chkUseGradients.Visible = true;
angGradientAngle.Visible = true;
}
if (_schemeType == SymbolizerType.Point)
{
IPointScheme ps = _newScheme as IPointScheme;
if (ps != null)
{
IPointSymbolizer sym;
if (ps.Categories.Count == 0 || ps.Categories[0].Symbolizer == null)
{
sym = new PointSymbolizer();
}
else
{
sym = ps.Categories[0].Symbolizer;
}
_ignoreRefresh = true;
featureSizeRangeControl1.SizeRange = new FeatureSizeRange(sym, _newScheme.EditorSettings.StartSize, _newScheme.EditorSettings.EndSize);
featureSizeRangeControl1.Initialize(new SizeRangeEventArgs(_newScheme.EditorSettings.StartSize, _newScheme.EditorSettings.EndSize, sym, _newScheme.EditorSettings.UseSizeRange));
featureSizeRangeControl1.Scheme = ps;
featureSizeRangeControl1.Visible = true;
_ignoreRefresh = false;
}
}
else if (_schemeType == SymbolizerType.Line)
{
ILineScheme ls = _newScheme as ILineScheme;
if (ls != null)
{
ILineSymbolizer sym;
if (ls.Categories.Count == 0 || ls.Categories[0].Symbolizer == null)
{
sym = new LineSymbolizer();
}
else
{
sym = ls.Categories[0].Symbolizer;
}
_ignoreRefresh = true;
featureSizeRangeControl1.SizeRange = new FeatureSizeRange(sym, _newScheme.EditorSettings.StartSize, _newScheme.EditorSettings.EndSize);
featureSizeRangeControl1.Initialize(new SizeRangeEventArgs(_newScheme.EditorSettings.StartSize, _newScheme.EditorSettings.EndSize, sym, _newScheme.EditorSettings.UseSizeRange));
featureSizeRangeControl1.Scheme = ls;
featureSizeRangeControl1.Visible = true;
_ignoreRefresh = false;
}
}
else
{
featureSizeRangeControl1.Visible = false;
}
UpdateFields();
if (_newScheme.EditorSettings.ClassificationType != ClassificationType.Quantities) return;
nudCategoryCount.Enabled = true;
tabScheme.Visible = true;
dgvCategories.Height = 217;
UpdateStatistics(false, null);
}