本文用于记录一些使用频率较高但归类繁杂,非系统性的一些代码。
主要方便自己使用和查阅,随时更新。
1、从GDB数据库中打开【FeatureDataset\FeatureClass\Table】
cs
using Geodatabase gdb = new Geodatabase(new FileGeodatabaseConnectionPath(new Uri(gdbPath)));
FeatureDataset featureDataset = gdb.OpenDataset<FeatureDataset>(featureDatasetName);
FeatureClass featureClass = gdb.OpenDataset<FeatureClass>(featureClassName);
Table table = gdb.OpenDataset<Table>(tableName);
2、从GDB数据库中获取【FeatureDatasetDefinition\FeatureClassDefinition\TableDefinition】
cs
// 扩展用法:GetDefinitions<>
FeatureDatasetDefinition featureDatasetDefinition = gdb.GetDefinition<FeatureDatasetDefinition>(featureDatasetName);
FeatureClassDefinition featureClassDefinition = gdb.GetDefinition<FeatureClassDefinition>(featureClassName);
TableDefinition tableDefinition = gdb.GetDefinition<TableDefinition>(tableName);
3、从【FeatureLayer\FeatureClass】中获取【Feature\Row】
cs
using (RowCursor rowCursor = featureLayer.Search())
{
while (rowCursor.MoveNext())
{
using Feature feature2 = rowCursor.Current as Feature;
using Row row = rowCursor.Current;
}
}
4、Feature转换为Geometry
cs
Geometry geometry1 = feature.GetShape();
5、Geometry转换为Polygon
cs
Polygon polygon1 = geometry as Polygon;
6、设置Feature的几何形状
cs
feature.SetShape(geometry);
7、获取线、面要素的折点、首末点
cs
ReadOnlyPointCollection mapPoints = polygon.Points;
ReadOnlyPointCollection mapPoints2 = polyline.Points;
MapPoint startPoint = mapPoints.First();
MapPoint endPoint = mapPoints.Last();
8、switch用法示例
cs
string featureclass_type = esriGeometryType switch
{
esriGeometryType.esriGeometryPoint => "Point",
esriGeometryType.esriGeometryPolyline => "Polyline",
esriGeometryType.esriGeometryPolygon => "Polygon",
_ => "",
};
9、获取活动地图视图中选择框选定的要素【SelectiontSet】
cs
SelectionSet selectedSet = MapView.Active.Map.GetSelection();
10、在MapTool中获取选择的要素【SelectiontSet】
cs
SelectionSet selectedSet2 = MapView.Active.GetFeatures(geometry);
11、从【SelectionSet】中获取【Geometry】
cs
var selectionList = selectedSet.ToDictionary();
Inspector inspector = new Inspector();
foreach (var selection in selectionList)
{
MapMember mapMember = selection.Key;
List<long> oids = selection.Value;
foreach (var oid in oids)
{
inspector.Load(mapMember, oid);
Polygon polygon2 = inspector.Shape as Polygon;
}
}
12、Geometry的属性
cs
double polygonArea = polygon.Area; // 面积
Envelope polygonExtent = polygon.Extent; // 范围
GeometryType geometryType = geometry.GeometryType; // 要素类型
SpatialReference spatialReference = geometry.SpatialReference; // 坐标系
int pointCount = polyline.PointCount; // 折点数