示例#1
0
        public static IRouteLocator2 CreateRouteLocator(this IDataset featureClass, string routeIdFieldName, esriUnits routeMeasureUnit)
        {
            IRouteLocatorName routeLocatorName = new RouteMeasureLocatorNameClass
            {
                RouteFeatureClassName = featureClass.FullName,
                RouteIDFieldName      = routeIdFieldName,
                RouteMeasureUnit      = routeMeasureUnit
            };
            var rtLocator = (IRouteLocator2)((IName)routeLocatorName).Open();

            return(rtLocator);
        }
示例#2
0
文件: Route.cs 项目: wey12138/Wave
        /// <summary>
        ///     Gets the name of the route measure locator.
        /// </summary>
        /// <param name="source">The source.</param>
        /// <param name="routeIDFieldName">Name of the route identifier field.</param>
        /// <param name="routeMeasureUnit">The route measure unit.</param>
        /// <param name="routeIDIsUnique">if set to <c>true</c> the route identifier is unique.</param>
        /// <param name="routeWhereClause">The route where clause.</param>
        /// <returns></returns>
        private IRouteLocatorName GetRouteMeasureLocatorName(IFeatureClass source, string routeIDFieldName, esriUnits routeMeasureUnit, bool routeIDIsUnique, string routeWhereClause)
        {
            IRouteLocatorName locatorName = new RouteMeasureLocatorNameClass();

            locatorName.RouteFeatureClassName = ((IDataset)source).FullName;
            locatorName.RouteMeasureUnit      = routeMeasureUnit;
            locatorName.RouteIDFieldName      = routeIDFieldName;
            locatorName.RouteIDIsUnique       = routeIDIsUnique;
            locatorName.RouteWhereClause      = routeWhereClause ?? "";

            return(locatorName);
        }
示例#3
0
        /// <summary>
        /// get RouteLocator
        /// </summary>
        /// <param name="featureClass">object feature class</param>
        /// <param name="routeIDFieldNameValue">value of routeIDFieldName</param>
        /// <param name="routeMeasureUnit">unit of route measure</param>
        /// <returns>object IRouteLocator2</returns>
        private static IRouteLocator2 GetRouteLocator(IFeatureClass featureClass, string routeIDFieldNameValue, esriUnits routeMeasureUnit)
        {
            IDataset          dataset                 = featureClass as IDataset;
            IName             nameDataset             = dataset.FullName;
            IRouteLocatorName routeMeasureLocatorName = new RouteMeasureLocatorNameClass();

            routeMeasureLocatorName.RouteFeatureClassName = nameDataset;
            routeMeasureLocatorName.RouteIDFieldName      = routeIDFieldNameValue;
            routeMeasureLocatorName.RouteMeasureUnit      = routeMeasureUnit;
            routeMeasureLocatorName.RouteWhereClause      = string.Empty;
            nameDataset = (IName)routeMeasureLocatorName;
            return(nameDataset.Open() as IRouteLocator2);
        }
示例#4
0
        // TODO: make routeIdFieldName configurable instead of hard-coded.

        public static IRouteLocator2 GetRouteLocator(this IServerObjectHelper serverObjectHelper, long layerId, string routeIdFieldName)
        {
            var server           = (IMapServer4)serverObjectHelper.ServerObject;
            var serverDataAccess = (IMapServerDataAccess)server;
            var dataSet          = (IDataset)serverDataAccess.GetDataSource(server.DefaultMapName, Convert.ToInt32(layerId));
            var name             = dataSet.FullName;
            IRouteLocatorName routeLocatorName = new RouteMeasureLocatorNameClass
            {
                RouteFeatureClassName = name,
                RouteIDFieldName      = routeIdFieldName,
                RouteMeasureUnit      = esriUnits.esriMiles
            };

            name = (IName)routeLocatorName;
            var routeLocator = (IRouteLocator2)name.Open();

            return(routeLocator);
        }
        /// <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;
        }
        /// <summary>
        /// 动态分段,作者:刘宇
        /// </summary>
        /// <param name="_pRouteFC"></param>
        /// <param name="_pPKName"></param>
        /// <param name="_pEventTable"></param>
        /// <param name="_pFKName"></param>
        /// <param name="_pFrom"></param>
        /// <param name="_pTo"></param>
        /// <returns></returns>
        IFeatureClass EventTable2FeatureClass(IFeatureClass _pRouteFC, string _pPKName, ITable _pEventTable, string _pFKName, string _pFrom, string _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;

            IRouteEventProperties2 pRouteProp = new RouteMeasureLinePropertiesClass();

            pRouteProp.AddErrorField = true;
            pRouteProp.EventMeasureUnit = esriUnits.esriFeet;
            pRouteProp.EventRouteIDFieldName = _pFKName;

            IRouteMeasureLineProperties rMLineProp = (IRouteMeasureLineProperties)pRouteProp;

            rMLineProp.FromMeasureFieldName = _pFrom;
            rMLineProp.ToMeasureFieldName = _pTo;

            IDataset pDs = (IDataset)_pEventTable;
            IName pNTableName = pDs.FullName;
            IRouteEventSourceName pRouteEventSourceName = new RouteEventSourceNameClass();
            pRouteEventSourceName.EventTableName = pNTableName;
            pRouteEventSourceName.EventProperties = (IRouteEventProperties)pRouteProp;
            pRouteEventSourceName.RouteLocatorName = pRouteLocatorName;

            pName = (IName)pRouteEventSourceName;

            IFeatureClass pFeatureClass = (IFeatureClass)pName.Open();

            return pFeatureClass;
        }