public class TransportationAnalystSetting
extends java.lang.Object
交通网络分析环境设置类。该类用于提供交通网络分析时所需要的所有参数信息。交通网络分析环境设置类的各个参数的设置直接影响分析的结果。
在利用交通网络分析类(TransportationAnalyst 类)进行各种交通网络分析时,都要首先设置交通网络分析的环境,而交通网络分析环境的设置就是通过 TransportationAnalyst 类对象的 setAnalystSetting() 方法来完成的。
交通网络分析环境中的设置会直接影响到分析的结果,交通网络分析包括路径分析,旅行商分析,服务区分析和最近设施查找。网络数据集不同于一般线数据集的是,还包含了一个网络结点的子数据集,因此网络数据集拥有两个属性表,一个是记录弧段信息的属性表,一个是记录结点信息的属性表。在网络分析环境中,可以设置:
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()
构造一个新的交通网络分析环境设置对象。
|
TransportationAnalystSetting(TransportationAnalystSetting networkAnalystSetting)
根据给定的交通网络分析环境设置对象构造一个与其完全相同的新对象。
|
| 限定符和类型 | 方法和说明 |
|---|---|
int[] |
getBarrierEdges()
返回障碍弧段的 ID 列表。
|
int[] |
getBarrierNodes()
返回障碍结点的 ID 列表。
|
java.lang.String |
getEdgeFilter()
返回交通网络分析中弧段过滤表达式。
|
java.lang.String |
getEdgeIDField()
返回网络数据集中标志弧段 ID 的字段。
|
java.lang.String |
getEdgeNameField()
返回存储弧段名称的字段。
|
java.lang.String |
getFNodeIDField()
返回网络数据集中标志弧段起始结点 ID 的字段。
|
java.lang.String[] |
getFTSingleWayRuleValues()
返回用于表示正向单行线的字符串的数组。
|
DatasetVector |
getNetworkDataset()
返回用于分析的网络数据集。
|
java.lang.String |
getNodeIDField()
返回网络数据集中标识结点 ID 的字段。
|
java.lang.String |
getNodeNameField()
返回存储结点名称的字段的字段名。
|
java.lang.String[] |
getProhibitedWayRuleValues()
返回用于表示禁行线的字符串的数组。
|
java.lang.String |
getRuleField()
返回网络数据集中表示网络弧段的交通规则的字段。
|
java.lang.String[] |
getTFSingleWayRuleValues()
返回用于表示逆向单行线的字符串的数组。
|
java.lang.String |
getTNodeIDField()
返回网络数据集中标志弧段终止结点 ID 的字段。
|
double |
getTolerance()
返回点到弧段的距离容限。
|
DatasetVector |
getTurnDataset()
返回转向表数据集。
|
java.lang.String |
getTurnFEdgeIDField()
返回转向起始弧段 ID 的字段。
|
java.lang.String |
getTurnNodeIDField()
返回转向结点 ID 的字段。
|
java.lang.String |
getTurnTEdgeIDField()
返回转向终止弧段 ID 的字段。
|
java.lang.String[] |
getTurnWeightFields()
返回转向权值字段集合。
|
java.lang.String[] |
getTwoWayRuleValues()
返回用于表示双向通行线的字符串的数组。
|
WeightFieldInfos |
getWeightFieldInfos()
返回权值字段信息集合对象。
|
void |
setBarrierEdges(int[] value)
设置障碍弧段的 ID 列表。
|
void |
setBarrierNodes(int[] value)
设置障碍结点的 ID 列表。
|
void |
setEdgeFilter(java.lang.String value)
设置交通网络分析中弧段过滤表达式。
|
void |
setEdgeIDField(java.lang.String value)
设置网络数据集中标志弧段 ID 的字段。
|
void |
setEdgeNameField(java.lang.String value)
设置存储弧段名称的字段。
|
void |
setFNodeIDField(java.lang.String value)
设置网络数据集中标志弧段起始结点 ID 的字段。
|
void |
setFTSingleWayRuleValues(java.lang.String[] value)
设置用于表示正向单行线的字符串的数组。
|
void |
setNetworkDataset(DatasetVector value)
设置用于分析的网络数据集。
|
void |
setNodeIDField(java.lang.String value)
设置网络数据集中标识结点 ID 的字段。
|
void |
setNodeNameField(java.lang.String value)
设置存储结点名称的字段的字段名。
|
void |
setProhibitedWayRuleValues(java.lang.String[] value)
设置用于表示禁行线的字符串的数组。
|
void |
setRuleField(java.lang.String value)
设置网络数据集中表示网络弧段的交通规则的字段。
|
void |
setTFSingleWayRuleValues(java.lang.String[] value)
设置用于表示逆向单行线的字符串的数组。
|
void |
setTNodeIDField(java.lang.String value)
设置网络数据集中标志弧段终止结点 ID 的字段。
|
void |
setTolerance(double value)
设置点到弧段的距离容限。
|
void |
setTurnDataset(DatasetVector value)
设置转向表数据集。
|
void |
setTurnFEdgeIDField(java.lang.String value)
设置转向起始弧段 ID 的字段。
|
void |
setTurnNodeIDField(java.lang.String value)
设置转向结点 ID 的字段。
|
void |
setTurnTEdgeIDField(java.lang.String value)
设置转向终止弧段 ID 的字段。
|
void |
setTurnWeightFields(java.lang.String[] value)
设置转向权值字段集合。
|
void |
setTwoWayRuleValues(java.lang.String[] value)
设置用于表示双向通行线的字符串的数组。
|
void |
setWeightFieldInfos(WeightFieldInfos value)
设置权值字段信息集合对象。
|
public TransportationAnalystSetting()
public TransportationAnalystSetting(TransportationAnalystSetting networkAnalystSetting)
networkAnalystSetting - 给定的交通网络分析环境设置对象。public DatasetVector getNetworkDataset()
public void setNetworkDataset(DatasetVector value)
value - 用于分析的网络数据集。public java.lang.String getNodeIDField()
public void setNodeIDField(java.lang.String value)
value - 网络数据集中标识结点 ID 的字段。public java.lang.String getEdgeIDField()
public void setEdgeIDField(java.lang.String value)
value - 网络数据集中标志弧段 ID 的字段。public java.lang.String getFNodeIDField()
public void setFNodeIDField(java.lang.String value)
value - 网络数据集中标志弧段起始结点 ID 的字段。public java.lang.String getTNodeIDField()
public void setTNodeIDField(java.lang.String value)
value - 网络数据集中标志弧段终止结点 ID 的字段。public WeightFieldInfos getWeightFieldInfos()
WeightFieldInfos 是 WeightFieldInfo 的集合,在 WeightFieldInfo 中可以设置正向和反向权值字段,字段值代表在网络分析中的耗费。
public void setWeightFieldInfos(WeightFieldInfos value)
WeightFieldInfos 是 WeightFieldInfo 的集合,在 WeightFieldInfo 中可以设置正向和反向权值字段,字段值代表在网络分析中的耗费。
value - 权值字段信息集合对象。public double getTolerance()
setNetworkDataset 方法指定的网络数据集的单位相同。
有关点到弧段的距离容限,请参见 setTolerance 方法的介绍。
public void setTolerance(double value)
setNetworkDataset 方法指定的网络数据集的单位相同。注意,当使用坐标点模式(setPoints,即指定的分析点是坐标点而不是结点 ID),或指定了障碍坐标点(setBarrierPoints)进行分析时,需要设置合适的距离容限值,以避免选取的分析点或障碍点不能归结到网络上而导致分析结果不正确。
原则上,网络分析中可以指定网络中任意的点作为路径分析中的一个站点或障碍点,但应该在网络附近。如果这个点不在网络上(既不在弧段上也不在结点上),网络分析会根据该距离容限把该点归结到网络上。
如下图所示,桔色点代表网络结点,蓝色代表弧段,灰色点为站点,红色线段是站点到弧段 AB 的距离,如果该距离在设定的距离容限内,则把站点归结到弧段 AB 上。
设置合适的距离容限值才能保证网络分析的正常进行,距离容限值的计算方法:
value - 点到弧段的距离容限。public int[] getBarrierNodes()
同障碍边意义相同,但其所设置的障碍是网络结点。障碍点通常可作为网络中的目的地,如运货或旅行到达的终点。
public void setBarrierNodes(int[] value)
同障碍边意义相同,但其所设置的障碍是网络结点。障碍点通常可作为网络中的目的地,如运货或旅行到达的终点。
value - 障碍结点的 ID 列表。public int[] getBarrierEdges()
一条边一旦被设置为障碍,也就是说这条边在分析过程中是禁行的。障碍边可以在分析过程中动态设置,不影响效率。
public void setBarrierEdges(int[] value)
一条边一旦被设置为障碍,也就是说这条边在分析过程中是禁行的。障碍边可以在分析过程中动态设置,不影响效率。
value - 障碍弧段的 ID 列表。public DatasetVector getTurnDataset()
请参见 setTurnDataset 方法的介绍。
public void setTurnDataset(DatasetVector value)
转向表用于存储完成转弯需要的花费。关于转向表的详细介绍,请参见SuperMap iDesktop帮助文档的网络分析相关介绍。
value - 转向表数据集。public java.lang.String getTurnNodeIDField()
public void setTurnNodeIDField(java.lang.String value)
value - 转向结点 ID 的字段。public java.lang.String getTurnFEdgeIDField()
public void setTurnFEdgeIDField(java.lang.String value)
value - 转向起始弧段 ID 的字段。public java.lang.String getTurnTEdgeIDField()
public void setTurnTEdgeIDField(java.lang.String value)
value - 转向终止弧段 ID 的字段。public java.lang.String[] getTurnWeightFields()
请参见 setTurnWeightFields 方法的介绍。
public void setTurnWeightFields(java.lang.String[] value)
转弯权值即转弯耗费,是指从一个弧段经过中间结点抵达另外一个邻接弧段所需的花费。
转向权值字段是转向表中表示转弯耗费的字段。通过该属性可以指定多个转向权值字段,在分析前设置有关参数时,可以选择其中的一个字段作为分析时的转向权值信息。
关于转向表的详细介绍请参见SuperMap iDesktop帮助文档的网络分析相关介绍。
value - 转向权值字段集合。public java.lang.String getNodeNameField()
public void setNodeNameField(java.lang.String value)
value - 存储结点名称的字段的字段名。public java.lang.String getEdgeNameField()
public void setEdgeNameField(java.lang.String value)
isPathGuidesReturn 方法设置为 true,分析结果中也不会返回行驶导引。value - 存储弧段名称的字段。public java.lang.String getRuleField()
网络数据集中代表交通规则的字段,存储了该弧段对应的交通规则,如该弧段为正向单行线,或逆向单行线、禁行线、双向通行线等。该字段的值与交通规则的对应关系,是通过 setFTSingleWayRuleValues()、setTFSingleWayRuleValues()、setProhibitedWayRuleValues()、setTwoWayRuleValues() 等方法来设置的。
例如,通过 setFTSingleWayRuleValues() 方法可以设置代表正向单行线的值,并且该方法允许设置多个值同时代表正向单行线,那么当交通规则字段的值为指定的这些值时,对应的弧段都将代表正向单行线。
public void setRuleField(java.lang.String value)
网络数据集中代表交通规则的字段中的值具体对应了哪个交通规则,是可以根据需要设定,这类设定主要在 TransportationAnalystSetting 类的 setFTSingleWayRuleValues()、setTFSingleWayRuleValues()、setProhibitedWayRuleValues()、setTwoWayRuleValues() 方法中实现的,以 TransportationAnalystSetting 类的 setFTSingleWayRuleValues() 方法为例,该方法用于设置代表正向单行线的数值,setFTSingleWayRuleValues(String[]) 方法中设置的是一个字符串数组,在该方法中可以设置多个值同时代表正向单行线,那么交通规则字段中的值如果为其中的任何一个字符串的值,都将代表正向单行线。即相应的网络数据集中的网络弧段为正向单行线。其他的代表交通规则(如:逆向单行线、禁行线、双向通行线)的字段值也是在相应的 setTFSingleWayRuleValues() 、setProhibitedWayRuleValues()、setTwoWayRuleValues() 方法中设置的,原理同正向单行线的设置。
value - 网络数据集中表示网络弧段的交通规则的字段。public java.lang.String[] getFTSingleWayRuleValues()
关于正向单行线字符串数组,请参阅 setFTSingleWayRuleValues 方法。
public void setFTSingleWayRuleValues(java.lang.String[] value)
当 setRuleField 方法设置的交通规则字段的值为该方法所指定的字符串数组中任意一个时,表示对应的网络弧段为正向单行线。更多介绍请参见 setRuleField 方法。
value - 用于表示正向单行线的字符串的数组。public java.lang.String[] getTFSingleWayRuleValues()
关于逆向单行线字符串数组,请参阅 setTFSingleWayRuleValues 方法。
public void setTFSingleWayRuleValues(java.lang.String[] value)
当 setRuleField 方法设置的交通规则字段的值为该方法所指定的字符串数组中任意一个时,表示对应的网络弧段为逆向单行线。更多介绍请参见 setRuleField 方法。
value - 用于表示逆向单行线的字符串的数组。public java.lang.String[] getProhibitedWayRuleValues()
关于禁行线字符串数组,请参阅 setTFSingleWayRuleValues 方法。
public void setProhibitedWayRuleValues(java.lang.String[] value)
当 setRuleField 方法设置的交通规则字段的值为该方法所指定的字符串数组中任意一个时,对应的网络弧段即为禁行线。更多介绍请参见 setRuleField 方法。
value - 用于表示禁行线的字符串的数组。public java.lang.String[] getTwoWayRuleValues()
关于双向通行线字符串数组,请参阅 setTFSingleWayRuleValues 方法。
public void setTwoWayRuleValues(java.lang.String[] value)
当 setRuleField 方法设置的交通规则字段的值为该方法所指定的字符串数组中任意一个时,对应的网络弧段即为双向通行线。更多介绍请参见 setRuleField 方法。
value - 用于表示双向通行线的字符串的数组。public java.lang.String getEdgeFilter()
关于弧段过滤表达式的作用请参见 setEdgeFilter 方法。
public void setEdgeFilter(java.lang.String value)
网络中的弧段依据某些特性可能会被分成几种类型,当实际分析中不需要所有弧段都参与分析时,可以设置过滤表达式从而只让符合条件的弧段参与分析,并且有可能提高分析的性能。
value - 交通网络分析中弧段过滤表达式。