首先来思考几个LinearReferencing
的应用场景(后面会对这些场景一一实现):
1 、对于某条公路上的一点进行Identify 操作,要求返回该点处在公路上的里程值;
2 、输入起始和终止桩号,要求将其间的路段显示在地图上;
3 、类似GoogleMap 的交通流量地图。
要将这些功能在ArcGISServer 中“落地”,首先决定采用哪种开发方式:客户端API 还是Web ADF ?两者皆可。但是稍加思考,两种方式的API 中都没有提供有关Linear Referencing 的解决办法。所以,Linear Referencing 在ArcGIS Server 中的实现原理还是得依靠ArcObjects 了。
ArcObjects 中,Linear Referencing 的功能在ESRI.ArcGIS.Location 库中,请见: http://resources.esri.com/help/9.3/ArcGISEngine/dotnet/10745641-b5e3-4600-979f-cdf9d2bbc7ce.htm#About%20linear%20referencing 。
为了实现上述功能,其中比较关键的有两个类:RouteLocator 和RouteEventSource 。RouteLocator 的IRouteLocator2 接口有Identify 和Locate 两个方法,前者可根据地理坐标识别出Route 上的位置(M 值);后者可根据M 值来定位出Route 上相应的Geometry 。如果已有EventTable ,需要对上面的每个Event 进行定位,除了重复使用IRouteLocator2.Locate 方法(或者LocateRow 方法)外,也可通过构建RouteEventSource 来实现。它是一种特殊的FeatureClass (继承自FeatureClass ),其中的每个Feature 代表了EventTable 中的一个Event ,而这个Feature 的Shape 字段内容则是根据EventTable 和Route
FeatureClass ,利用Dynamic
Segmentation 技术实时计算出来的。
关于如何获得可用的 IRouteLocator2 接口和 RouteEventSource ,文档中已经讲的很清楚;另外 ESRI.ArcGIS.Location 中还提供了实现 ArcMap 中 LinearReferencing 里所有功能的接口,有兴趣的朋友可以仔细阅读。
1 、对于某条公路上的一点进行Identify 操作,要求返回该点处在公路上的里程值;
2 、输入起始和终止桩号,要求将其间的路段显示在地图上;
3 、类似GoogleMap 的交通流量地图。
要将这些功能在ArcGISServer 中“落地”,首先决定采用哪种开发方式:客户端API 还是Web ADF ?两者皆可。但是稍加思考,两种方式的API 中都没有提供有关Linear Referencing 的解决办法。所以,Linear Referencing 在ArcGIS Server 中的实现原理还是得依靠ArcObjects 了。
ArcObjects 中,Linear Referencing 的功能在ESRI.ArcGIS.Location 库中,请见: http://resources.esri.com/help/9.3/ArcGISEngine/dotnet/10745641-b5e3-4600-979f-cdf9d2bbc7ce.htm#About%20linear%20referencing 。
为了实现上述功能,其中比较关键的有两个类:RouteLocator 和RouteEventSource 。RouteLocator 的IRouteLocator2 接口有Identify 和Locate 两个方法,前者可根据地理坐标识别出Route 上的位置(M 值);后者可根据M 值来定位出Route 上相应的Geometry 。如果已有EventTable ,需要对上面的每个Event 进行定位,除了重复使用IRouteLocator2.Locate 方法(或者LocateRow 方法)外,也可通过构建RouteEventSource 来实现。它是一种特殊的FeatureClass (继承自FeatureClass ),其中的每个Feature 代表了EventTable 中的一个Event ,而这个Feature 的Shape 字段内容则是根据EventTable 和Route
FeatureClass ,利用Dynamic
Segmentation 技术实时计算出来的。
关于如何获得可用的 IRouteLocator2 接口和 RouteEventSource ,文档中已经讲的很清楚;另外 ESRI.ArcGIS.Location 中还提供了实现 ArcMap 中 LinearReferencing 里所有功能的接口,有兴趣的朋友可以仔细阅读。