ArcGIS 网络数据集 地铁与街道(3)

2020-04-14 05:21

NAClass是一个要素类,它存储了类似于站点(stops)、障碍(barriers)、突发事故(incidents)、路径(routes)、cfpaths的要素。NAClass的工作空间就是NAContext,NAClass并没有一个固定的存储数据源,因此也被称作“缓存要素类(in-memory)”(临时生成,记录其详细的属性数据,通过NAClassFieldMap对象来获得相应的属性字段)。但是如果需要的话,它也可以保存在磁盘上。可以通过以下两种方式访问NAClass:

INALayer::LayerByNAClassName(“Stops”)::FeatureClass或 INAContext::NAClasses::ItemByName(“Stops”).

NAClass提供NALocationObjects和NALocationFeatures,INALocationObject接口可以明确NAClass在网络中的位置。

NAClassDefinition定义了对于扩展有帮助的类的附加信息。当solver创建NAContext和NAClasses时,NAClassDefinition被初始化。可通过INAClass:: ClassDefinition来访问。它有可以决定solver要求的最大/最小行数的方法,它也可以每个字段是否可以输入、输出、不可见、不可编辑等。

除非我们自定义solver(可以定制吗?可以选择不同的算法?),否则不用修改NAClassDefinition属性除了CandidateFieldNames。

(2)Locating and Loading

此子系统表达了用来加载NAClass(如站点、障碍等)的对象,它的本质是取出要素,通过检查要素在网络数据集中的side和position来确定要素在网络中的位置,并且通过这种新信息在NAClass中创建新要素。

完成

locating

的对象包括

NALocator、NALocatorFeatureAgent、

NALocatorLocationFieldsAgent,将要素导入一个NAClass的对象包括一个NALocator(NAClassLoader、NAClassFieldMap)。

如果你有自己的locating要素的方法,那就意味着你能够在NAClass里插入行,就不需要使用这个子系统里的对象。

NALocation对象确定要素在网络上的位置: SourceID是要素类在网络数据集上的SourceID SourceOID是定位要素的ObjectID Side是左边或右边

SourcePosition确定了网络位置离source feature的距离。

默认的NALocator是当solver创建NAContext时,由NAContext创建的,可以通过设置INAContextEdit接口的NALocator属性来改变默认的locator。

NALocator由很多locator agents(代理),NALocator的任务是反复浏览agents并且决定那个agent返回的是最佳位置。大多数情况下,agents是NALocatorFeatureAgents。

如果数据源的要素类中已经有了定位的字段,并且你希望使用这些替代在网络中生成的位置,则可以使用NALocatorLocationFieldsAgent对象。

NAClassLoader和NAClassFieldMap对象可以一起使用,并通过NALoactor来将INALocationObjects从输入要素类加载到NAClass中。

3、Solvers

Solver用来描述一个对象并且执行真正的网络分析,在9.1版本里有以下四个solvers:

NARouteSolver:在多个站点之间寻找最佳路径;

NAClosestFacilitySolver:寻找事故点和设施间的最佳路径; NAServiceAreaSolver:服务区域(我理解)

NAODCostMatrixSolver:在起点和终点之间寻找最小的花费

Solver有很多特殊的属性,例如cutoff、impedance attribute(路程或时间)等,配置这些属性以便决定分析如何执行。

在将来的版本中,ESRI将发现其他附加的solvers。我们也可以写自己的solver,但是那是一项耗值(non-trivial)的工作。

Solver的工作就是判断分析工作需要的东西(如需要什么类型的网络位置,需要输入什么属性信息等),solver需要创建NAContext和NALayer,并且如果它们的属性发生变化,也需要solver来更新 。通常的模式就是创建一个新的分析时候需要调用INASolver::CreateLayer。

另外,创建一个保存执行结果(INAResult)的对象也是solver的工作。

INASolver::CreateContext,

INADataset::Bind,

and

then

4、Traversal(Z形攀登) Results

ESRI的四个solvers均输出一个ANTraversalResult对象,它记录了分析的结果。最基本的情况Traversal result可以看作记录了所有的连接信息的下面三个要素类。

Edges:包含在分析中用到的每个边(edge Traversed),有明确FromJunction和ToJunction的字段;

Junctions:包含每个junction和输入网络位置(input network location traversed);

Turns:包含每个转弯(turn Traversed)。

这三个要素所返回特殊的要素类,除了执行普通的Feature接口外,也可以执行INATraversalResultElement接口。

INAResult接口有得到输出属性和输出context的方法。

在NATraversalResult里有一个间接的标准,由于这个标准,我们必须使用INATraversalResult接口中的方法去查找不同数据源(traversal result和相应的geodatabase或者NAClass source)形成的地图。

INATraversalResultQuery用来从一个traversal result element traverse到另一traversal result element。可以通过SearchConnected方法查找与某个TraversalResultElement连接的NATraversalResultElement,或者,既然它们都是feature class,我们可以得到某一类型(例如edges)的所有traversal result的feature class,并且仅仅打开一个search cursor。

NATraversalResult并不存储在NAContext里,如果有需要可以将其存储在外部的数据结构里面。

5、Directions

Directions被模拟为在NAContext中的NAAgent,它们通过读取NATraversalResults去

构建drivetime directions。


ArcGIS 网络数据集 地铁与街道(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:编辑学复习纲要(含多选和审稿、校对题)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: