Skip to content

Leg

Type ISIAPILeg · Interface
Namespace SIDRASolutions.SI.API
Assembly SIDRASolutions.SI.API.dll
COM CLSID 98300C8A-D0D4-4078-BB07-9CA446AA4D14

Declaration

[Guid("98300C8A-D0D4-4078-BB07-9CA446AA4D14")]
public interface ISIAPILeg

Members

Properties

Property Type Summary
Orientation int Leg Orientation
Name string
Approach_distance float
Exit_distance_user bool
Exit_distance float
Extra_bunching_user bool
Extra_bunching float
Area_type_factor float Area Type Factor, for Legs in Signalised Site only
Approach_control int Approach Control Type, for Legs in Sign Controlled Site only
Is_departure_headway_awsc_applied bool
LegGeometry int Leg Geometry
LastErrorMessage string
Site ISIAPISite
Leg_roundabout ISIAPILeg_roundabout
LaneApproachs ISIAPILaneApproachs
LaneExits ISIAPILaneExits
Islands ISIAPIIslands
MovementPedSlipLane_Existing ISIAPIMovement_ped
Is_uturn_before_intersection bool
Is_uturn_before_intersection_excluded_from_signal_analysis bool
Extra_bunching_nw_user bool
Extra_bunching_nw float
Approach_start_point ISIAPIMapCoordinate
Exit_start_point_user bool
Exit_start_point ISIAPIMapCoordinate
Approach_end_point ISIAPIMapCoordinate
Exit_end_point_user bool
Exit_end_point ISIAPIMapCoordinate
PedMainCrossingVolumeOption int Pedestrian Volume Data Option for Main Crossing (Full and Staged)
PedMainCrossingVolume float
PedMainCrossingPeakFlowFactor float
PedMainCrossingFlowScale float
PedMainCrossingGrowthRate float

Methods

Method Returns Summary
InsertApproachLane(int) ISIAPILaneApproach Insert an new Approach Lane to the Leg at the specified position. The Approach Lane is created automatically.
InsertExitLane(int) ISIAPILaneExit Insert an new Exit Lane to the Leg at the specified position. The Exit Lane is created automatically.
InsertIsland(int) ISIAPIIsland Insert an new Island to the Leg at the specified position. The Island is created automatically.
InsertIsland_RoundaboutSplitter(int) ISIAPIIsland Insert an new Roundabout Splitter Island to the Leg at the specified position. The Island is created automatically.
RemoveItem(int) bool Remove the item at the specified position on the Leg. The item could be an Approach Lane, Exit Lane or Island.

Properties

Orientation

Leg Orientation

int Orientation { get; }

Type int

Value

One of:

  • 0 - South
  • 1 - South East
  • 2 - East
  • 3 - North East
  • 4 - North
  • 5 - North West
  • 6 - West
  • 7 - South West
Code samples
int orientation = leg.Orientation;
long orientation;
leg->get_Orientation(&orientation);
orientation = leg.Orientation
$orientation = $leg.Orientation

Name

string Name { get; set; }

Type string

Code samples
string name = leg.Name;
leg.Name = @"Example";
CComBSTR name;
leg->get_Name(&name);
leg->put_Name(CComBSTR(L"Example"));
name = leg.Name
leg.Name = r"Example"
$name = $leg.Name
$leg.Name = "Example"

Approach_distance

float Approach_distance { get; set; }

Type float

Code samples
float approach_distance = leg.Approach_distance;
leg.Approach_distance = 0.0;
double approach_distance;
leg->get_Approach_distance(&approach_distance);
leg->put_Approach_distance(0.0);
approach_distance = leg.Approach_distance
leg.Approach_distance = 0.0
$approach_distance = $leg.Approach_distance
$leg.Approach_distance = 0.0

Exit_distance_user

bool Exit_distance_user { get; set; }

Type bool

Code samples
bool exit_distance_user = leg.Exit_distance_user;
leg.Exit_distance_user = true;
VARIANT_BOOL exit_distance_user;
leg->get_Exit_distance_user(&exit_distance_user);
leg->put_Exit_distance_user(VARIANT_TRUE);
exit_distance_user = leg.Exit_distance_user
leg.Exit_distance_user = True
$exit_distance_user = $leg.Exit_distance_user
$leg.Exit_distance_user = $true

Exit_distance

float Exit_distance { get; set; }

Type float

Code samples
float exit_distance = leg.Exit_distance;
leg.Exit_distance = 0.0;
double exit_distance;
leg->get_Exit_distance(&exit_distance);
leg->put_Exit_distance(0.0);
exit_distance = leg.Exit_distance
leg.Exit_distance = 0.0
$exit_distance = $leg.Exit_distance
$leg.Exit_distance = 0.0

Extra_bunching_user

bool Extra_bunching_user { get; set; }

Type bool

Code samples
bool extra_bunching_user = leg.Extra_bunching_user;
leg.Extra_bunching_user = true;
VARIANT_BOOL extra_bunching_user;
leg->get_Extra_bunching_user(&extra_bunching_user);
leg->put_Extra_bunching_user(VARIANT_TRUE);
extra_bunching_user = leg.Extra_bunching_user
leg.Extra_bunching_user = True
$extra_bunching_user = $leg.Extra_bunching_user
$leg.Extra_bunching_user = $true

Extra_bunching

float Extra_bunching { get; set; }

Type float

Code samples
float extra_bunching = leg.Extra_bunching;
leg.Extra_bunching = 0.0;
double extra_bunching;
leg->get_Extra_bunching(&extra_bunching);
leg->put_Extra_bunching(0.0);
extra_bunching = leg.Extra_bunching
leg.Extra_bunching = 0.0
$extra_bunching = $leg.Extra_bunching
$leg.Extra_bunching = 0.0

Area_type_factor

Area Type Factor, for Legs in Signalised Site only

float Area_type_factor { get; set; }

Type float

Code samples
float area_type_factor = leg.Area_type_factor;
leg.Area_type_factor = 0.0;
double area_type_factor;
leg->get_Area_type_factor(&area_type_factor);
leg->put_Area_type_factor(0.0);
area_type_factor = leg.Area_type_factor
leg.Area_type_factor = 0.0
$area_type_factor = $leg.Area_type_factor
$leg.Area_type_factor = 0.0

Approach_control

Approach Control Type, for Legs in Sign Controlled Site only

int Approach_control { get; set; }

Type int

Value

One of:

  • 1 - Major Road
  • 2 - Giveway
  • 3 - Stop
Code samples
int approach_control = leg.Approach_control;
leg.Approach_control = 0;
long approach_control;
leg->get_Approach_control(&approach_control);
leg->put_Approach_control(0);
approach_control = leg.Approach_control
leg.Approach_control = 0
$approach_control = $leg.Approach_control
$leg.Approach_control = 0

Is_departure_headway_awsc_applied

bool Is_departure_headway_awsc_applied { get; set; }

Type bool

Code samples
bool is_departure_headway_awsc_applied = leg.Is_departure_headway_awsc_applied;
leg.Is_departure_headway_awsc_applied = true;
VARIANT_BOOL is_departure_headway_awsc_applied;
leg->get_Is_departure_headway_awsc_applied(&is_departure_headway_awsc_applied);
leg->put_Is_departure_headway_awsc_applied(VARIANT_TRUE);
is_departure_headway_awsc_applied = leg.Is_departure_headway_awsc_applied
leg.Is_departure_headway_awsc_applied = True
$is_departure_headway_awsc_applied = $leg.Is_departure_headway_awsc_applied
$leg.Is_departure_headway_awsc_applied = $true

LegGeometry

Leg Geometry

int LegGeometry { get; set; }

Type int

Value

One of:

  • 0 - No Leg
  • 1 - Two Way
  • 2 - One-Way Approach
  • 3 - One-Way Exit

Remarks

Cannot remove a Leg by setting LegGeometry to 0. Call ISIAPILegs.RemoveLeg() method to remove a Leg.

Code samples
int legGeometry = leg.LegGeometry;
leg.LegGeometry = 0;
long legGeometry;
leg->get_LegGeometry(&legGeometry);
leg->put_LegGeometry(0);
leg_geometry = leg.LegGeometry
leg.LegGeometry = 0
$legGeometry = $leg.LegGeometry
$leg.LegGeometry = 0

LastErrorMessage

string LastErrorMessage { get; }

Type string

Code samples
string lastErrorMessage = leg.LastErrorMessage;
CComBSTR lastErrorMessage;
leg->get_LastErrorMessage(&lastErrorMessage);
last_error_message = leg.LastErrorMessage
$lastErrorMessage = $leg.LastErrorMessage

Site

ISIAPISite Site { get; }

Type ISIAPISite

Code samples
var site = leg.Site;
CComPtr<ISIAPISite> site;
leg->get_Site(&site);
site = leg.Site
$site = $leg.Site

Leg_roundabout

ISIAPILeg_roundabout Leg_roundabout { get; }

Type ISIAPILeg_roundabout

Code samples
var leg_roundabout = leg.Leg_roundabout;
CComPtr<ISIAPILeg_roundabout> leg_roundabout;
leg->get_Leg_roundabout(&leg_roundabout);
leg_roundabout = leg.Leg_roundabout
$leg_roundabout = $leg.Leg_roundabout

LaneApproachs

ISIAPILaneApproachs LaneApproachs { get; }

Type ISIAPILaneApproachs

Code samples
var laneApproachs = leg.LaneApproachs;
CComPtr<ISIAPILaneApproachs> laneApproachs;
leg->get_LaneApproachs(&laneApproachs);
lane_approachs = leg.LaneApproachs
$laneApproachs = $leg.LaneApproachs

LaneExits

ISIAPILaneExits LaneExits { get; }

Type ISIAPILaneExits

Code samples
var laneExits = leg.LaneExits;
CComPtr<ISIAPILaneExits> laneExits;
leg->get_LaneExits(&laneExits);
lane_exits = leg.LaneExits
$laneExits = $leg.LaneExits

Islands

ISIAPIIslands Islands { get; }

Type ISIAPIIslands

Code samples
var islands = leg.Islands;
CComPtr<ISIAPIIslands> islands;
leg->get_Islands(&islands);
islands = leg.Islands
$islands = $leg.Islands

MovementPedSlipLane_Existing

ISIAPIMovement_ped MovementPedSlipLane_Existing { get; }

Type ISIAPIMovement_ped

Code samples
var movementPedSlipLane_Existing = leg.MovementPedSlipLane_Existing;
CComPtr<ISIAPIMovement_ped> movementPedSlipLane_Existing;
leg->get_MovementPedSlipLane_Existing(&movementPedSlipLane_Existing);
movement_ped_slip_lane__existing = leg.MovementPedSlipLane_Existing
$movementPedSlipLane_Existing = $leg.MovementPedSlipLane_Existing

Is_uturn_before_intersection

bool Is_uturn_before_intersection { get; set; }

Type bool

Code samples
bool is_uturn_before_intersection = leg.Is_uturn_before_intersection;
leg.Is_uturn_before_intersection = true;
VARIANT_BOOL is_uturn_before_intersection;
leg->get_Is_uturn_before_intersection(&is_uturn_before_intersection);
leg->put_Is_uturn_before_intersection(VARIANT_TRUE);
is_uturn_before_intersection = leg.Is_uturn_before_intersection
leg.Is_uturn_before_intersection = True
$is_uturn_before_intersection = $leg.Is_uturn_before_intersection
$leg.Is_uturn_before_intersection = $true

Is_uturn_before_intersection_excluded_from_signal_analysis

bool Is_uturn_before_intersection_excluded_from_signal_analysis { get; set; }

Type bool

Code samples
bool is_uturn_before_intersection_excluded_from_signal_analysis = leg.Is_uturn_before_intersection_excluded_from_signal_analysis;
leg.Is_uturn_before_intersection_excluded_from_signal_analysis = true;
VARIANT_BOOL is_uturn_before_intersection_excluded_from_signal_analysis;
leg->get_Is_uturn_before_intersection_excluded_from_signal_analysis(&is_uturn_before_intersection_excluded_from_signal_analysis);
leg->put_Is_uturn_before_intersection_excluded_from_signal_analysis(VARIANT_TRUE);
is_uturn_before_intersection_excluded_from_signal_analysis = leg.Is_uturn_before_intersection_excluded_from_signal_analysis
leg.Is_uturn_before_intersection_excluded_from_signal_analysis = True
$is_uturn_before_intersection_excluded_from_signal_analysis = $leg.Is_uturn_before_intersection_excluded_from_signal_analysis
$leg.Is_uturn_before_intersection_excluded_from_signal_analysis = $true

Extra_bunching_nw_user

bool Extra_bunching_nw_user { get; set; }

Type bool

Code samples
bool extra_bunching_nw_user = leg.Extra_bunching_nw_user;
leg.Extra_bunching_nw_user = true;
VARIANT_BOOL extra_bunching_nw_user;
leg->get_Extra_bunching_nw_user(&extra_bunching_nw_user);
leg->put_Extra_bunching_nw_user(VARIANT_TRUE);
extra_bunching_nw_user = leg.Extra_bunching_nw_user
leg.Extra_bunching_nw_user = True
$extra_bunching_nw_user = $leg.Extra_bunching_nw_user
$leg.Extra_bunching_nw_user = $true

Extra_bunching_nw

float Extra_bunching_nw { get; set; }

Type float

Code samples
float extra_bunching_nw = leg.Extra_bunching_nw;
leg.Extra_bunching_nw = 0.0;
double extra_bunching_nw;
leg->get_Extra_bunching_nw(&extra_bunching_nw);
leg->put_Extra_bunching_nw(0.0);
extra_bunching_nw = leg.Extra_bunching_nw
leg.Extra_bunching_nw = 0.0
$extra_bunching_nw = $leg.Extra_bunching_nw
$leg.Extra_bunching_nw = 0.0

Approach_start_point

ISIAPIMapCoordinate Approach_start_point { get; }

Type ISIAPIMapCoordinate

Code samples
var approach_start_point = leg.Approach_start_point;
CComPtr<ISIAPIMapCoordinate> approach_start_point;
leg->get_Approach_start_point(&approach_start_point);
approach_start_point = leg.Approach_start_point
$approach_start_point = $leg.Approach_start_point

Exit_start_point_user

bool Exit_start_point_user { get; set; }

Type bool

Code samples
bool exit_start_point_user = leg.Exit_start_point_user;
leg.Exit_start_point_user = true;
VARIANT_BOOL exit_start_point_user;
leg->get_Exit_start_point_user(&exit_start_point_user);
leg->put_Exit_start_point_user(VARIANT_TRUE);
exit_start_point_user = leg.Exit_start_point_user
leg.Exit_start_point_user = True
$exit_start_point_user = $leg.Exit_start_point_user
$leg.Exit_start_point_user = $true

Exit_start_point

ISIAPIMapCoordinate Exit_start_point { get; }

Type ISIAPIMapCoordinate

Code samples
var exit_start_point = leg.Exit_start_point;
CComPtr<ISIAPIMapCoordinate> exit_start_point;
leg->get_Exit_start_point(&exit_start_point);
exit_start_point = leg.Exit_start_point
$exit_start_point = $leg.Exit_start_point

Approach_end_point

ISIAPIMapCoordinate Approach_end_point { get; }

Type ISIAPIMapCoordinate

Code samples
var approach_end_point = leg.Approach_end_point;
CComPtr<ISIAPIMapCoordinate> approach_end_point;
leg->get_Approach_end_point(&approach_end_point);
approach_end_point = leg.Approach_end_point
$approach_end_point = $leg.Approach_end_point

Exit_end_point_user

bool Exit_end_point_user { get; set; }

Type bool

Code samples
bool exit_end_point_user = leg.Exit_end_point_user;
leg.Exit_end_point_user = true;
VARIANT_BOOL exit_end_point_user;
leg->get_Exit_end_point_user(&exit_end_point_user);
leg->put_Exit_end_point_user(VARIANT_TRUE);
exit_end_point_user = leg.Exit_end_point_user
leg.Exit_end_point_user = True
$exit_end_point_user = $leg.Exit_end_point_user
$leg.Exit_end_point_user = $true

Exit_end_point

ISIAPIMapCoordinate Exit_end_point { get; }

Type ISIAPIMapCoordinate

Code samples
var exit_end_point = leg.Exit_end_point;
CComPtr<ISIAPIMapCoordinate> exit_end_point;
leg->get_Exit_end_point(&exit_end_point);
exit_end_point = leg.Exit_end_point
$exit_end_point = $leg.Exit_end_point

PedMainCrossingVolumeOption

Pedestrian Volume Data Option for Main Crossing (Full and Staged)

int PedMainCrossingVolumeOption { get; set; }

Type int

Value

One of:

  • 0 - Overall Value for Full and Staged Crossings (All Stages)
  • 1 - Separate Value for Full and Staged Crossings

The default is 0.

Remarks

When this Option is set to 0 (Overall Value), the overall pedestrian volume data (Volume, Peak Flow Factor, Flow Scale and Growth Rate) in the ISIAPILeg object are applied for the Pedestrian Full and Staged Crossing Movements. The volume data in the corresponding ISIAPIMovement_ped objects are ignored.

When this Option is set to 1 (Separate Value), the volume data in the corresponding ISIAPIMovement_ped objects are applied.

This option does not affect the volume data of Slip/Bypass Lane Crossing. The volume data in the corresponding ISIAPIMovement_ped object for the Slip/Bypass Lane Crossing are applied.

This option does not affect the Pedestrian Movement Data (e.g. Exists or not, Crossing Distance, Opposing Pedestrian Factor, Walking Speed, etc.). These data in the corresponding ISIAPIMovement_ped object are applied.

Code samples
int pedMainCrossingVolumeOption = leg.PedMainCrossingVolumeOption;
leg.PedMainCrossingVolumeOption = 0;
long pedMainCrossingVolumeOption;
leg->get_PedMainCrossingVolumeOption(&pedMainCrossingVolumeOption);
leg->put_PedMainCrossingVolumeOption(0);
ped_main_crossing_volume_option = leg.PedMainCrossingVolumeOption
leg.PedMainCrossingVolumeOption = 0
$pedMainCrossingVolumeOption = $leg.PedMainCrossingVolumeOption
$leg.PedMainCrossingVolumeOption = 0

PedMainCrossingVolume

float PedMainCrossingVolume { get; set; }

Type float

Code samples
float pedMainCrossingVolume = leg.PedMainCrossingVolume;
leg.PedMainCrossingVolume = 0.0;
double pedMainCrossingVolume;
leg->get_PedMainCrossingVolume(&pedMainCrossingVolume);
leg->put_PedMainCrossingVolume(0.0);
ped_main_crossing_volume = leg.PedMainCrossingVolume
leg.PedMainCrossingVolume = 0.0
$pedMainCrossingVolume = $leg.PedMainCrossingVolume
$leg.PedMainCrossingVolume = 0.0

PedMainCrossingPeakFlowFactor

float PedMainCrossingPeakFlowFactor { get; set; }

Type float

Code samples
float pedMainCrossingPeakFlowFactor = leg.PedMainCrossingPeakFlowFactor;
leg.PedMainCrossingPeakFlowFactor = 0.0;
double pedMainCrossingPeakFlowFactor;
leg->get_PedMainCrossingPeakFlowFactor(&pedMainCrossingPeakFlowFactor);
leg->put_PedMainCrossingPeakFlowFactor(0.0);
ped_main_crossing_peak_flow_factor = leg.PedMainCrossingPeakFlowFactor
leg.PedMainCrossingPeakFlowFactor = 0.0
$pedMainCrossingPeakFlowFactor = $leg.PedMainCrossingPeakFlowFactor
$leg.PedMainCrossingPeakFlowFactor = 0.0

PedMainCrossingFlowScale

float PedMainCrossingFlowScale { get; set; }

Type float

Code samples
float pedMainCrossingFlowScale = leg.PedMainCrossingFlowScale;
leg.PedMainCrossingFlowScale = 0.0;
double pedMainCrossingFlowScale;
leg->get_PedMainCrossingFlowScale(&pedMainCrossingFlowScale);
leg->put_PedMainCrossingFlowScale(0.0);
ped_main_crossing_flow_scale = leg.PedMainCrossingFlowScale
leg.PedMainCrossingFlowScale = 0.0
$pedMainCrossingFlowScale = $leg.PedMainCrossingFlowScale
$leg.PedMainCrossingFlowScale = 0.0

PedMainCrossingGrowthRate

float PedMainCrossingGrowthRate { get; set; }

Type float

Code samples
float pedMainCrossingGrowthRate = leg.PedMainCrossingGrowthRate;
leg.PedMainCrossingGrowthRate = 0.0;
double pedMainCrossingGrowthRate;
leg->get_PedMainCrossingGrowthRate(&pedMainCrossingGrowthRate);
leg->put_PedMainCrossingGrowthRate(0.0);
ped_main_crossing_growth_rate = leg.PedMainCrossingGrowthRate
leg.PedMainCrossingGrowthRate = 0.0
$pedMainCrossingGrowthRate = $leg.PedMainCrossingGrowthRate
$leg.PedMainCrossingGrowthRate = 0.0

Methods

InsertApproachLane(int)

Insert an new Approach Lane to the Leg at the specified position. The Approach Lane is created automatically.

ISIAPILaneApproach InsertApproachLane(int positionOnLeg)

Parameters

Name Type Description
positionOnLeg int Postion on the Leg, a one-based integer, counts Approach Lanes, Exit Lanes and Islands from left to right looking to the centre of the Intersection.

Returns ISIAPILaneApproach - The new Approach Lane

Code samples
var result = leg.InsertApproachLane(0);
CComPtr<ISIAPILaneApproach> result;
leg->InsertApproachLane(0, &result);
result = leg.InsertApproachLane(0)
$result = $leg.InsertApproachLane(0)

InsertExitLane(int)

Insert an new Exit Lane to the Leg at the specified position. The Exit Lane is created automatically.

ISIAPILaneExit InsertExitLane(int positionOnLeg)

Parameters

Name Type Description
positionOnLeg int Postion on the Leg, a one-based integer, counts Approach Lanes, Exit Lanes and Islands from left to right looking to the centre of the Intersection.

Returns ISIAPILaneExit - The new Exit Lane

Code samples
var result = leg.InsertExitLane(0);
CComPtr<ISIAPILaneExit> result;
leg->InsertExitLane(0, &result);
result = leg.InsertExitLane(0)
$result = $leg.InsertExitLane(0)

InsertIsland(int)

Insert an new Island to the Leg at the specified position. The Island is created automatically.

ISIAPIIsland InsertIsland(int positionOnLeg)

Parameters

Name Type Description
positionOnLeg int Postion on the Leg, a one-based integer, counts Approach Lanes, Exit Lanes and Islands from left to right looking to the centre of the Intersection.

Returns ISIAPIIsland - The new Island

Code samples
var result = leg.InsertIsland(0);
CComPtr<ISIAPIIsland> result;
leg->InsertIsland(0, &result);
result = leg.InsertIsland(0)
$result = $leg.InsertIsland(0)

InsertIsland_RoundaboutSplitter(int)

Insert an new Roundabout Splitter Island to the Leg at the specified position. The Island is created automatically.

ISIAPIIsland InsertIsland_RoundaboutSplitter(int positionOnLeg)

Parameters

Name Type Description
positionOnLeg int Postion on the Leg, a one-based integer, counts Approach Lanes, Exit Lanes and Islands from left to right looking to the centre of the Intersection.

Returns ISIAPIIsland - The new Roundabout Splitter Island

Code samples
var result = leg.InsertIsland_RoundaboutSplitter(0);
CComPtr<ISIAPIIsland> result;
leg->InsertIsland_RoundaboutSplitter(0, &result);
result = leg.InsertIsland_RoundaboutSplitter(0)
$result = $leg.InsertIsland_RoundaboutSplitter(0)

RemoveItem(int)

Remove the item at the specified position on the Leg. The item could be an Approach Lane, Exit Lane or Island.

bool RemoveItem(int positionOnLeg)

Parameters

Name Type Description
positionOnLeg int Postion on the Leg, a one-based integer, counts Approach Lanes, Exit Lanes and Islands from left to right looking to the centre of the Intersection.

Returns bool - true if the item is successfully removed. This method returns false if the item does not exist in this Leg.

Code samples
bool result = leg.RemoveItem(0);
VARIANT_BOOL result;
leg->RemoveItem(0, &result);
result = leg.RemoveItem(0)
$result = $leg.RemoveItem(0)