线性参考

/// <summary>
/// 线性参考代码,作者:刘宇
/// </summary>
/// <param name="_pRouteFC"></param>
/// <param name="_pPKName"></param>
/// <param name="_pID"></param>
/// <param name="_pFrom"></param>
/// <param name="_pTo"></param>
/// <returns></returns>

IPolyline FindRoutByMeasure(IFeatureClass _pRouteFC, string _pPKName,object _pID, double _pFrom, double _pTo)
{
IDataset pDataset = (IDataset)_pRouteFC;
IName pName = pDataset.FullName;
IRouteLocatorName pRouteLocatorName = new RouteMeasureLocatorNameClass();
pRouteLocatorName.RouteFeatureClassName = pName;
pRouteLocatorName.RouteIDFieldName = _pPKName;
pRouteLocatorName.RouteMeasureUnit = esriUnits.esriFeet;
pName = (IName)pRouteLocatorName;
IRouteLocator2 pRouteLocator = (IRouteLocator2)pName.Open();


IRouteLocation pRouteLoc = new RouteMeasureLineLocationClass();

pRouteLoc.MeasureUnit = esriUnits.esriFeet;
pRouteLoc.RouteID = _pID;
IRouteMeasureLineLocation rMLineLoc = (IRouteMeasureLineLocation)pRouteLoc;
rMLineLoc.FromMeasure = _pFrom;
rMLineLoc.ToMeasure = _pTo;

IGeometry pGeo = null;

esriLocatingError locError;
pRouteLocator.Locate(pRouteLoc , out pGeo, out locError);

return pGeo as IPolyline;


}

原文地址:https://www.cnblogs.com/zuiyirenjian/p/1967547.html