Arcengine geometric network 流向代码(转载)
转自:http://www.thinkgis.cn/topic/54203518d97a20db38e59101/
以前学习几何网络时,对效用网络流向进行了总结,原理与效果图见:http://thinkgis.duapp.com/topic/542034b0d97a20db38e59100 但是代码一直没贴出来,因为网上有很多类似的代码,这几天一个网友想交流一下,自己也好久没看这个代码了,在这里把显示流向的代码贴出来分享下,如果你有更好的方法,可以的话也请你分享一下,谢谢。
/// <summary>
/// 得到IGeometricNetwork
/// </summary>
/// <param name="layer"></param>
/// <returns></returns>
public static IGeometricNetwork GetGeometricNetwork(ILayer layer)
{
IFeatureClass featureClass = ((IFeatureLayer)layer).FeatureClass;
IFeatureDataset featureDataset = featureClass.FeatureDataset;
INetworkCollection networkCollection = featureDataset as INetworkCollection;
IGeometricNetwork geometricNetwork = networkCollection.get_GeometricNetworkByName(GN_NAME);
return geometricNetwork;
}
/// <summary>
/// 显示网络流向
/// </summary>
/// <param name="map"></param>
public static void ShowFlowDirection(IMap map)
{
IGeometricNetwork geometricNetwork = GetGeometricNetwork(map.get_Layer(0));
IFeatureClass featureClass = ((IFeatureLayer)map.get_Layer(0)).FeatureClass;
IFeatureDataset featureDataset = featureClass.FeatureDataset;
IWorkspace workspace = featureDataset.Workspace;
IWorkspaceEdit workspaceEdit = workspace as IWorkspaceEdit;
workspaceEdit.StartEditing(false);
workspaceEdit.StartEditOperation();
ILayer netLayer = null;
//得到网络图层
for (int i = 0; i < map.LayerCount; i++)
{
if (map.get_Layer(i).Name == NET_NAME)
{
netLayer = map.get_Layer(i);
break;
}
}
if (netLayer != null)
{
IFeatureClass netFeatureClass = ((IFeatureLayer)netLayer).FeatureClass;
IFeatureCursor featureCursor =