com.supermap.analyst.networkanalyst

类 TransportationAnalystSetting

  • java.lang.Object
    • com.supermap.analyst.networkanalyst.TransportationAnalystSetting


  • public class TransportationAnalystSetting
    extends java.lang.Object

    交通网络分析环境设置类。该类用于提供交通网络分析时所需要的所有参数信息。交通网络分析环境设置类的各个参数的设置直接影响分析的结果。

    在利用交通网络分析类(TransportationAnalyst 类)进行各种交通网络分析时,都要首先设置交通网络分析的环境,而交通网络分析环境的设置就是通过 TransportationAnalyst 类对象的 setAnalystSetting() 方法来完成的。

    交通网络分析环境中的设置会直接影响到分析的结果,交通网络分析包括路径分析,旅行商分析,服务区分析和最近设施查找。网络数据集不同于一般线数据集的是,还包含了一个网络结点的子数据集,因此网络数据集拥有两个属性表,一个是记录弧段信息的属性表,一个是记录结点信息的属性表。在网络分析环境中,可以设置:

    1. 进行交通网络分析的数据集(NetworkDataset);
    2. 网络中唯一标识结点的字段(NodeIDField),该字段来源于网络结点属性表;
    3. 唯一标识弧段的字段(EdgeIDField),该字段来源于弧段属性表;
    4. 记录弧段起、终结点 ID 的字段(FNodeIDField 和 TNodeIDField),该字段来源于弧段属性表,对应于网络结点属性表中的结点 ID;
    5. 记录要经过某一弧段需要多少耗费的权值字段(WeightFieldInfos),来源于弧段属性表;
    6. 结点到弧段的距离容限(Tolerance);
    7. 表示转向表的一系列属性,如转向表数据集(TurnDataset)、转向结点 ID 的字段(TurnNodeIDField),转向起始弧段 ID 的字段(TurnFEdgeIDField)、转向终止弧段 ID 的字段(TurnTEdgeIDField)以及转向权值字段(TurnWeightFields)。有关转向表的介绍请参见SuperMap iDesktop帮助文档的网络分析相关介绍。
    8. 网络中障碍边和障碍点的 ID 集合(BarrierEdges、BarrierNodes);
    9. 存储结点名称和弧段名称的字段的字段名(NodeNameField、EdgeNameField)。
    Example:
    以下代码示例通过网络数据集查找最佳路径。下面函数中操作的网络数据集为安装目录\SampleData\changchun\下的 changchun.udb 数据源中的名为 RoadNet 的网络数据集。
      public void FindPathExample(DatasetVector networkDataset)
        {
            //构建一个网络分析环境设置实例并进行相应设置
            TransportationAnalystSetting transportationAnalystSetting = new TransportationAnalystSetting();
             transportationAnalystSetting.setNetworkDataset ( dataset);
            transportationAnalystSetting.setEdgeIDField ( "SmID");
            transportationAnalystSetting.setNodeIDField ( "SmNodeID");
            transportationAnalystSetting.setFNodeIDField ("SmFNode");
            transportationAnalystSetting.setTNodeIDField ( "SmTNode");
            WeightFieldInfo weightInfo = new WeightFieldInfo();
            weightInfo.setFTWeightField ( "smLength");
            weightInfo.setTFWeightField ( "smLength");
            transportationAnalystSetting.getWeightFieldInfos().add(weightInfo);
    
            //创建交通网络分析对象并进行相应设置
            TransportationAnalyst transportationAnalyst = new TransportationAnalyst();
            transportationAnalyst.setAnalystSetting (transportationAnalystSetting);
    
            //加载网络模型
            transportationAnalyst.load();
    
            //构建交通网络分析参数对象并进行相应设置
            TransportationAnalystParameter parameter = new TransportationAnalystParameter();
            parameter.setNodes ( new int[] { 2, 50 });
            parameter.setRoutesReturn ( true);
    
            //进行网络分析,返回最佳路径
            TransportationAnalystResult result = transportationAnalyst.findPath(parameter, true);
        }
     
    • 构造器详细资料

      • TransportationAnalystSetting

        public TransportationAnalystSetting()
        构造一个新的交通网络分析环境设置对象。
      • TransportationAnalystSetting

        public TransportationAnalystSetting(TransportationAnalystSetting networkAnalystSetting)
        根据给定的交通网络分析环境设置对象构造一个与其完全相同的新对象。
        参数:
        networkAnalystSetting - 给定的交通网络分析环境设置对象。
    • 方法详细资料

      • getNetworkDataset

        public DatasetVector getNetworkDataset()
        返回用于分析的网络数据集。
        返回:
        用于分析的网络数据集。
        Default:
        默认值为 null。
      • setNetworkDataset

        public void setNetworkDataset(DatasetVector value)
        设置用于分析的网络数据集。必设。
        参数:
        value - 用于分析的网络数据集。
      • getNodeIDField

        public java.lang.String getNodeIDField()
        返回网络数据集中标识结点 ID 的字段。
        返回:
        网络数据集中标识结点 ID 的字段。
        Default:
        默认值为 "SmNodeID"。
      • setNodeIDField

        public void setNodeIDField(java.lang.String value)
        设置网络数据集中标识结点 ID 的字段。必须正确设定标识结点 ID 的字段。仅支持 16 位整型、32 位整型字段。
        参数:
        value - 网络数据集中标识结点 ID 的字段。
      • getEdgeIDField

        public java.lang.String getEdgeIDField()
        返回网络数据集中标志弧段 ID 的字段。
        返回:
        网络数据集中标识弧段 ID 的字段。
        Default:
        默认值为 "SmEdgeID"。
      • setEdgeIDField

        public void setEdgeIDField(java.lang.String value)
        设置网络数据集中标志弧段 ID 的字段。必须正确设定标识弧段 ID 的字段。仅支持 16 位整型、32 位整型字段。
        参数:
        value - 网络数据集中标志弧段 ID 的字段。
      • getFNodeIDField

        public java.lang.String getFNodeIDField()
        返回网络数据集中标志弧段起始结点 ID 的字段。
        返回:
        网络数据集中标志弧段起始结点 ID 的字段。
        Default:
        默认值为 "SmFNode"。
      • setFNodeIDField

        public void setFNodeIDField(java.lang.String value)
        设置网络数据集中标志弧段起始结点 ID 的字段。必须正确设定标识弧段起始结点 ID 的字段。仅支持 16 位整型、32 位整型字段。
        参数:
        value - 网络数据集中标志弧段起始结点 ID 的字段。
      • getTNodeIDField

        public java.lang.String getTNodeIDField()
        返回网络数据集中标志弧段终止结点 ID 的字段。
        返回:
        网络数据集中标志弧段终止结点 ID 的字段。
        Default:
        默认值为 "SmTNode"。
      • setTNodeIDField

        public void setTNodeIDField(java.lang.String value)
        设置网络数据集中标志弧段终止结点 ID 的字段。必须正确设定标识弧段终止结点 ID 的字段。仅支持 16 位整型、32 位整型字段。
        参数:
        value - 网络数据集中标志弧段终止结点 ID 的字段。
      • getWeightFieldInfos

        public WeightFieldInfos getWeightFieldInfos()
        返回权值字段信息集合对象。

        WeightFieldInfosWeightFieldInfo 的集合,在 WeightFieldInfo 中可以设置正向和反向权值字段,字段值代表在网络分析中的耗费。

        返回:
        权值字段信息集合对象。
        Default:
        默认值为包含一个元素的 WeightFieldInfos 对象。该元素的名称为“Length”,正向阻力字段和反向阻力字段都为“SmLength”。
      • setWeightFieldInfos

        public void setWeightFieldInfos(WeightFieldInfos value)
        设置权值字段信息集合对象。

        WeightFieldInfosWeightFieldInfo 的集合,在 WeightFieldInfo 中可以设置正向和反向权值字段,字段值代表在网络分析中的耗费。

        参数:
        value - 权值字段信息集合对象。
      • getTolerance

        public double getTolerance()
        返回点到弧段的距离容限。单位与 setNetworkDataset 方法指定的网络数据集的单位相同。

        有关点到弧段的距离容限,请参见 setTolerance 方法的介绍。

        返回:
        点到弧段的距离容限。
        Default:
        默认值为 0。
      • setTolerance

        public void setTolerance(double value)
        设置点到弧段的距离容限。单位与 setNetworkDataset 方法指定的网络数据集的单位相同。注意,当使用坐标点模式(setPoints,即指定的分析点是坐标点而不是结点 ID),或指定了障碍坐标点(setBarrierPoints)进行分析时,需要设置合适的距离容限值,以避免选取的分析点或障碍点不能归结到网络上而导致分析结果不正确。

        原则上,网络分析中可以指定网络中任意的点作为路径分析中的一个站点或障碍点,但应该在网络附近。如果这个点不在网络上(既不在弧段上也不在结点上),网络分析会根据该距离容限把该点归结到网络上。

        如下图所示,桔色点代表网络结点,蓝色代表弧段,灰色点为站点,红色线段是站点到弧段 AB 的距离,如果该距离在设定的距离容限内,则把站点归结到弧段 AB 上。

        设置合适的距离容限值才能保证网络分析的正常进行,距离容限值的计算方法:

        1. 计算出网络数据集中包含所有对象的最小外接矩形;
        2. 计算出该矩形对象的高度及宽度;
        3. 取两者中的较小值除以40,得出较合适的距离容限值。
        参数:
        value - 点到弧段的距离容限。
      • getBarrierNodes

        public int[] getBarrierNodes()
        返回障碍结点的 ID 列表。

        同障碍边意义相同,但其所设置的障碍是网络结点。障碍点通常可作为网络中的目的地,如运货或旅行到达的终点。

        返回:
        障碍结点的 ID 列表。
        Default:
        默认值为 null。
      • setBarrierNodes

        public void setBarrierNodes(int[] value)
        设置障碍结点的 ID 列表。可选。

        同障碍边意义相同,但其所设置的障碍是网络结点。障碍点通常可作为网络中的目的地,如运货或旅行到达的终点。

        参数:
        value - 障碍结点的 ID 列表。
      • getBarrierEdges

        public int[] getBarrierEdges()
        返回障碍弧段的 ID 列表。

        一条边一旦被设置为障碍,也就是说这条边在分析过程中是禁行的。障碍边可以在分析过程中动态设置,不影响效率。

        返回:
        障碍弧段的 ID 列表。
        Default:
        默认值为 null。
      • setBarrierEdges

        public void setBarrierEdges(int[] value)
        设置障碍弧段的 ID 列表。可选。

        一条边一旦被设置为障碍,也就是说这条边在分析过程中是禁行的。障碍边可以在分析过程中动态设置,不影响效率。

        参数:
        value - 障碍弧段的 ID 列表。
      • getTurnDataset

        public DatasetVector getTurnDataset()
        返回转向表数据集。

        请参见 setTurnDataset 方法的介绍。

        返回:
        转向表数据集。
        Default:
        默认值为 null。
      • setTurnDataset

        public void setTurnDataset(DatasetVector value)
        设置转向表数据集。可选。

        转向表用于存储完成转弯需要的花费。关于转向表的详细介绍,请参见SuperMap iDesktop帮助文档的网络分析相关介绍。

        参数:
        value - 转向表数据集。
      • getTurnNodeIDField

        public java.lang.String getTurnNodeIDField()
        返回转向结点 ID 的字段。
        返回:
        转向结点 ID 的字段。
        Default:
        默认值为一个空字符串。
      • setTurnNodeIDField

        public void setTurnNodeIDField(java.lang.String value)
        设置转向结点 ID 的字段。仅支持 16 位整型、32 位整型字段。可选。
        参数:
        value - 转向结点 ID 的字段。
      • getTurnFEdgeIDField

        public java.lang.String getTurnFEdgeIDField()
        返回转向起始弧段 ID 的字段。
        返回:
        转向起始弧段 ID 的字段。
        Default:
        默认值为一个空字符串。
      • setTurnFEdgeIDField

        public void setTurnFEdgeIDField(java.lang.String value)
        设置转向起始弧段 ID 的字段。仅支持 16 位整型、32 位整型字段。可选。
        参数:
        value - 转向起始弧段 ID 的字段。
      • getTurnTEdgeIDField

        public java.lang.String getTurnTEdgeIDField()
        返回转向终止弧段 ID 的字段。
        返回:
        转向终止弧段 ID 的字段。
        Default:
        默认值为一个空字符串。
      • setTurnTEdgeIDField

        public void setTurnTEdgeIDField(java.lang.String value)
        设置转向终止弧段 ID 的字段。仅支持 16 位整型、32 位整型字段。可选。
        参数:
        value - 转向终止弧段 ID 的字段。
      • getTurnWeightFields

        public java.lang.String[] getTurnWeightFields()
        返回转向权值字段集合。

        请参见 setTurnWeightFields 方法的介绍。

        返回:
        转向权值字段集合。
        Default:
        默认值为 null。
      • setTurnWeightFields

        public void setTurnWeightFields(java.lang.String[] value)
        设置转向权值字段集合。可选。

        转弯权值即转弯耗费,是指从一个弧段经过中间结点抵达另外一个邻接弧段所需的花费。

        转向权值字段是转向表中表示转弯耗费的字段。通过该属性可以指定多个转向权值字段,在分析前设置有关参数时,可以选择其中的一个字段作为分析时的转向权值信息。

        关于转向表的详细介绍请参见SuperMap iDesktop帮助文档的网络分析相关介绍。

        参数:
        value - 转向权值字段集合。
      • getNodeNameField

        public java.lang.String getNodeNameField()
        返回存储结点名称的字段的字段名。
        返回:
        存储结点名称的字段的字段名。
        Default:
        默认值为一个空字符串。
      • setNodeNameField

        public void setNodeNameField(java.lang.String value)
        设置存储结点名称的字段的字段名。可选。
        参数:
        value - 存储结点名称的字段的字段名。
      • getEdgeNameField

        public java.lang.String getEdgeNameField()
        返回存储弧段名称的字段。
        返回:
        存储弧段名称的字段。
        Default:
        默认值为一个空字符串。
      • setEdgeNameField

        public void setEdgeNameField(java.lang.String value)
        设置存储弧段名称的字段。可选。注意,如果不设置,即使将 isPathGuidesReturn 方法设置为 true,分析结果中也不会返回行驶导引。
        参数:
        value - 存储弧段名称的字段。
      • getRuleField

        public java.lang.String getRuleField()
        返回网络数据集中表示网络弧段的交通规则的字段。

        网络数据集中代表交通规则的字段,存储了该弧段对应的交通规则,如该弧段为正向单行线,或逆向单行线、禁行线、双向通行线等。该字段的值与交通规则的对应关系,是通过 setFTSingleWayRuleValues()setTFSingleWayRuleValues()setProhibitedWayRuleValues()setTwoWayRuleValues() 等方法来设置的。

        例如,通过 setFTSingleWayRuleValues() 方法可以设置代表正向单行线的值,并且该方法允许设置多个值同时代表正向单行线,那么当交通规则字段的值为指定的这些值时,对应的弧段都将代表正向单行线。

        返回:
        网络数据集中表示网络弧段的交通规则的字段。
        Default:
        默认值为一个空的字符串。
      • getFTSingleWayRuleValues

        public java.lang.String[] getFTSingleWayRuleValues()
        返回用于表示正向单行线的字符串的数组。

        关于正向单行线字符串数组,请参阅 setFTSingleWayRuleValues 方法。

        返回:
        用于表示正向单行线的字符串的数组。
        Default:
        默认值为空。
      • setFTSingleWayRuleValues

        public void setFTSingleWayRuleValues(java.lang.String[] value)
        设置用于表示正向单行线的字符串的数组。可选。

        setRuleField 方法设置的交通规则字段的值为该方法所指定的字符串数组中任意一个时,表示对应的网络弧段为正向单行线。更多介绍请参见 setRuleField 方法。

        参数:
        value - 用于表示正向单行线的字符串的数组。
      • getTFSingleWayRuleValues

        public java.lang.String[] getTFSingleWayRuleValues()
        返回用于表示逆向单行线的字符串的数组。

        关于逆向单行线字符串数组,请参阅 setTFSingleWayRuleValues 方法。

        返回:
        用于表示逆向单行线的字符串的数组。
        Default:
        默认值为空。
      • setTFSingleWayRuleValues

        public void setTFSingleWayRuleValues(java.lang.String[] value)
        设置用于表示逆向单行线的字符串的数组。可选。

        setRuleField 方法设置的交通规则字段的值为该方法所指定的字符串数组中任意一个时,表示对应的网络弧段为逆向单行线。更多介绍请参见 setRuleField 方法。

        参数:
        value - 用于表示逆向单行线的字符串的数组。
      • getProhibitedWayRuleValues

        public java.lang.String[] getProhibitedWayRuleValues()
        返回用于表示禁行线的字符串的数组。

        关于禁行线字符串数组,请参阅 setTFSingleWayRuleValues 方法。

        返回:
        用于表示禁行线的字符串的数组。
        Default:
        默认值为空。
      • setProhibitedWayRuleValues

        public void setProhibitedWayRuleValues(java.lang.String[] value)
        设置用于表示禁行线的字符串的数组。可选。

        setRuleField 方法设置的交通规则字段的值为该方法所指定的字符串数组中任意一个时,对应的网络弧段即为禁行线。更多介绍请参见 setRuleField 方法。

        参数:
        value - 用于表示禁行线的字符串的数组。
      • getTwoWayRuleValues

        public java.lang.String[] getTwoWayRuleValues()
        返回用于表示双向通行线的字符串的数组。

        关于双向通行线字符串数组,请参阅 setTFSingleWayRuleValues 方法。

        返回:
        用于表示双向通行线的字符串的数组。
        Default:
        默认值为空。
      • setTwoWayRuleValues

        public void setTwoWayRuleValues(java.lang.String[] value)
        设置用于表示双向通行线的字符串的数组。可选。

        setRuleField 方法设置的交通规则字段的值为该方法所指定的字符串数组中任意一个时,对应的网络弧段即为双向通行线。更多介绍请参见 setRuleField 方法。

        参数:
        value - 用于表示双向通行线的字符串的数组。
      • getEdgeFilter

        public java.lang.String getEdgeFilter()
        返回交通网络分析中弧段过滤表达式。

        关于弧段过滤表达式的作用请参见 setEdgeFilter 方法。

        返回:
        交通网络分析中弧段过滤表达式。
      • setEdgeFilter

        public void setEdgeFilter(java.lang.String value)
        设置交通网络分析中弧段过滤表达式。可选。

        网络中的弧段依据某些特性可能会被分成几种类型,当实际分析中不需要所有弧段都参与分析时,可以设置过滤表达式从而只让符合条件的弧段参与分析,并且有可能提高分析的性能。

        参数:
        value - 交通网络分析中弧段过滤表达式。