Skip to content

Informações da Rede da API Aimsun Next

Notas

Estas funções estão disponíveis quando AAPIInit() é chamada e a qualquer momento depois. Elas não estão disponíveis na função de alto nível AAPILoad().

Ler o nome de um objeto

Em C++ e Python

Explicação

Ler o nome de um objeto, versão UNICODE.

Formato
const unsigned short * ANGConnGetObjectName( int idObject ); // Versão Unicode.
const char * ANGConnGetObjectNameA( int idObject ); // Versão Ascii.
Parâmetros
  • idObject: O identificador do objeto
Saída
  • ≠ NULL: Nome do objeto.
  • = NULL: Erro.

O uso recomendado nas APIs Python é:

anyNonAsciiChar = boolp()
AKIConvertToAsciiString(ANGConnGetObjectName(idObject), True, anyNonAsciiChar))

Ler o Caminho da Rede

Em C++ e Python

Explicação

Ler o caminho completo da rede. O resultado deve ser excluído com delete().

Formato
const unsigned short * AKIInfNetGetNetworkPath();
Parâmetros:

Nenhum.

Saída
  • ≠ NULL: Caminho da Rede.
  • = NULL: Erro.

O uso recomendado nas APIs Python é:

anyNonAsciiChar = boolp()
AKIConvertToAsciiString(AKIInfNetGetNetworkPath(), True, anyNonAsciiChar))

Ler o Caminho da Rede Ascii

Em C++ e Python

Explicação

Ler o caminho completo da rede em ascii.

Formato
const char * AKIInfNetGetNetworkPathA();
Parâmetros

Nenhum.

Saída
  • ≠ NULL: Caminho da Rede.
  • = NULL: Erro.

Ler o Nome da Rede

Em C++ e Python

Explicação

Ler o nome do arquivo da rede (sem extensão). O resultado deve ser excluído com delete().

Formato
const unsigned short * AKIInfNetGetNetworkName();
Parâmetros

Nenhum.

Saída
  • ≠ NULL: Caminho da Rede.
  • = NULL: Erro.

O uso recomendado nas APIs Python é:

anyNonAsciiChar = boolp()
AKIConvertToAsciiString(AKIInfNetGetNetworkName(), True, anyNonAsciiChar))
Explicação

Ler o nome do arquivo da rede (sem extensão) em ascii. Função obsoleta. Mantida por razões de compatibilidade.

Ler o Nome da Rede em Ascii

Em Python

Formato
const char * AKIInfNetGetNetworkNameA();
Parâmetros

Nenhum.

Saída
  • ≠ NULL: Nome do arquivo da Rede.
  • = NULL: Erro.

Ler o Nome da Demanda de Tráfego

Em C++ e Python

Explicação

Ler o nome da demanda de tráfego carregada. O resultado deve ser excluído com delete().

Formato
const unsigned short * AKIInfNetGetTrafficDemandName ();
Parâmetros

Nenhum.

Saída
  • ≠ NULL: Nome da demanda de tráfego.
  • = NULL: Erro.

O uso recomendado nas APIs Python é:

anyNonAsciiChar = boolp()
AKIConvertToAsciiString(AKIInfNetGetTrafficDemandName(), True, anyNonAsciiChar))

Ler o Nome da Demanda de Tráfego em Ascii

Em Python

Explicação

Ler o nome da demanda de tráfego carregada em ascii. Função obsoleta. Mantida por razões de compatibilidade.

Formato
const char * AKIInfNetGetTrafficDemandNameA();
Parâmetros

Nenhum.

Saída
  • ≠ NULL: Nome da demanda de tráfego.
  • = NULL: Erro.

Ler o Tipo de Demanda de Tráfego

Em C++ e Python

Explicação

Ler o tipo da Demanda de Tráfego.

Formato
int AKIInfNetGetTrafficDemandType ();
Parâmetros

Nenhum.

Saída
  • 1 demanda de tráfego usando matrizes OD
  • 2 usando estados de tráfego.
  • < 0: Erro.

Ler as Unidades de uma Rede

Em C++ e Python

Explicação

Ler as unidades de uma Rede.

Formato
int AKIInfNetGetUnits ()
Parâmetros

Nenhum.

Saída
  • 1 Unidades Métricas,
  • 0 Unidades Inglesas.
  • < 0: Erro.

Ler as Coordenadas do Mundo da Rede

Em C++ e Python

Explicação

Ler as coordenadas do mundo de uma Rede. Isso fornece o ponto inferior esquerdo e o ponto superior direito da caixa delimitadora.

Formato
int AKIInfNetGetWorldCoordinates (double *min_x, double *min_y, double *max_x, double *max_y)
Parâmetros

Os parâmetros alterados para retornar a caixa delimitadora são:

  • min_x,
  • min_y,
  • max_x, *
  • max_y
Saída
  • = 0: correto.
  • < 0: Erro.

Ler o Número de Seções

Em C++ e Python

Explicação

Ler o número de seções presentes na rede viária.

Formato
int AKIInfNetNbSectionsANG();
Parâmetros

Nenhum.

Saída
  • > 0: Número de seções na rede viária.
  • < 0: Erro.

Ler o Identificador de uma Seção

Em C++ e Python

Explicação

Ler o identificador da seção elem-th presente na rede viária.

Formato
int AKIInfNetGetSectionANGId( int elem );
Parâmetros
  • elem: O número da seção e deve estar na faixa 0 ≤ elem < Número de Seções - 1.
Saída
  • > 0: Identificador da seção.
  • ≤ 0: Erro.

Ler as Informações da Seção

Em C++ e Python

Explicação

Ler as informações de uma seção.

Formato
A2KSectionInf AKIInfNetGetSectionANGInf(int aid)
Parâmetros
  • aid: O identificador da seção.
Saída
struct A2KSectionInf{
    int report;
    int id;
    int angId;
    int nbCentralLanes;
    int nbSideLanes;
    double speedLimit;
    double reservedLanesVisibilityDistance;
    double capacity;
    double distance_OnRamp;
    double distance_OnRampMerge;
    double cooperation_OnRamp;
    double length;
    int nbSegments;
    double * slopePercentages;
    double userDefinedCost;
    int reactionTimeVariation;
    double reactionTimeAtTrafficLightVariation;
    double reactionTimeAtStopVariation;
    bool imprudentLaneChanging;
    int nbTurnings;
};

onde:

  • int report: 0, OK, caso contrário é um código de erro.
  • int id: Identificador da seção.
  • int angId: Identificador da seção.
  • int nbCentralLanes: Número de faixas centrais.
  • int nbSideLanes: Número de faixas laterais.
  • double speedLimit: Limite de velocidade da seção (Km/h ou mph).
  • double reservedLanesVisibilityDistance: Distância de visibilidade das faixas reservadas da seção (metros ou pés).
  • double capacity: Capacidade da seção (veículos/h).
  • double distance_OnRamp: Distância da On Ramp da seção (seg).
  • double distance_OnRampMerge: Distância de Mescla da Faixa Lateral: (m ou ft).
  • double cooperation_OnRamp: Percentual de cooperação para mudança de faixa.
  • double length: Comprimento da seção (metros ou pés).
  • int nbSegments: Número de segmentos da seção.
  • double * slopePercentages: Array de porcentagens de segmentos. Existem nbSegments valores.
  • double userDefinedCost: Custo definido pelo usuário da seção.
  • int reactionTimeVariation: Variação do tempo de reação da seção.
  • double reactionTimeAtTrafficLightVariation: Variação do tempo de reação em semáforos.
  • double reactionTimeAtStopVariation: Variação do tempo de reação em paradas.
  • bool imprudentLaneChanging: Verdadeiro se a seção tem comportamento de mudança de faixa imprudente ativado.
  • int nbTurnings: Número de viradas que têm esta seção como origem .

Inclinação por segmento em uma Seção

Em C++ e Python

Explicação

Obter um array da inclinação em porcentagem por segmento em uma Seção.

Formato
double AKIInfNetGetSectionSlopeBySegment(int aSectionId, int aSegmentPos);
Parâmetros
  • aSectionId: O identificador da seção.
  • aSegmentPos: A posição do segmento (0 a N).
Saída
  • > 0: Identificador da seção correspondente.
  • ≤ 0: Erro.

Ler o Identificador da Seção de Destino de todas as viradas de uma seção

Em C++ e Python

Explicação

Ler o identificador da seção elem-th do movimento de virada.

Formato
int AKIInfNetGetIdSectionANGDestinationofTurning(int aid, int elem);
Parâmetros
  • aid: O identificador da seção.
  • elem: O número da virada na faixa 0 ≤ elem < Número de Viradas - 1.
Saída
  • > 0: Identificador da seção correspondente.
  • ≤ 0: Erro.

Ler os números das faixas de uma Virada de uma Seção

Em C++ e Python

Explicação

Ler o número da faixa de uma virada de uma seção (número da faixa igual a 1 significa a faixa mais à direita).

Existem quatro funções:

  • AKIInfNetGetOriginFromLaneofTurning: Obtém a primeira faixa da seção de origem da virada.
  • AKIInfNetGetOriginToLaneofTurning: Obtém a última faixa da seção de origem da virada.
  • AKIInfNetGetDestinationFromLaneofTurning: Obtém a primeira faixa da seção de destino da virada.
  • AKIInfNetGetDestinationToLaneofTurning: Obtém a última faixa da seção de destino da virada.
Formato
int AKIInfNetGetDestinationFromLaneofTurning(int sectId, int elem);
int AKIInfNetGetDestinationToLaneofTurning(int sectId, int elem);
int AKIInfNetGetOriginFromLaneofTurning(int sectId, int elem);
int AKIInfNetGetOriginToLaneofTurning(int sectId, int elem);
Parâmetros
  • aid: O identificador da seção.
  • elem: O número de virada e deve estar na faixa 0 ≤ elem < Número de Viradas - 1.
Saída
  • > 0: Número da faixa correspondente (de 1 a N, onde a faixa 1 é a faixa mais à direita).
  • ≤ 0: Erro.

Ler os números das faixas dadas as Seções de Origem e Destino

Em C++ e Python

Explicação

Ler o número da faixa de uma virada (número da faixa igual a 1 significa a faixa mais à direita).
Existem quatro funções:

  • AKIInfNetGetTurningOriginFromLane: Obtém a primeira faixa da seção de origem da virada.
  • AKIInfNetGetTurningOriginToLane: Obtém a última faixa da seção de origem da virada.
  • AKIInfNetGetTurningDestinationFromLane: Obtém a primeira faixa da seção de destino da virada.
  • AKIInfNetGetTurningDestinationToLane: Obtém a última faixa da seção de destino da virada.
Formato
int AKIInfNetGetTurningDestinationFromLane( int originSection, int destinationSection )
int AKIInfNetGetTurningDestinationToLane( int originSection, int destinationSection )
int AKIInfNetGetTurningOriginFromLane( int originSection, int destinationSection )
int AKIInfNetGetTurningOriginToLane( int originSection, int destinationSection )
Parâmetros
  • originSection: Identificador da seção de origem.
  • destinationSection: Identificador da seção de destino.
Saída
  • > 0: Número da faixa correspondente (de 1 a N, onde a faixa 1 é a faixa mais à direita).
  • ≤ 0: Erro.

Modificar os Parâmetros Comportamentais de uma Seção

Em C++ e Python

Explicação

Modificar os parâmetros comportamentais de uma seção que serão usados ao aplicar os modelos e nas cálculos de escolha de rotas.

Formato
int AKIInfNetSetSectionBehaviouralParam(int aid, A2KSectionBehaviourParam behaviourParam, bool allsegments);
Parâmetros
  • aid: Identificador da seção.
  • allsegments: Verdadeiro se a alteração é expandida para todos os segmentos da seção.
  • behaviourParam: Novos parâmetros a serem atribuídos com a seguinte estrutura:

    struct A2KSectionBehaviourParam{
        double speedLimit;
        double reservedLanesVisibilityDistance;
        double capacity;
        double distance_OnRamp;
        double distance_OnRampMerge;
        double cooperation_OnRamp;
        double userDefinedCost;
        int reactionTimeVariation;
        double reactionTimeAtTrafficLightVariation;
        double reactionTimeAtStopVariation;
        bool imprudentLaneChanging;
    };
    

    onde:

    • double speedLimit: Limite de velocidade da seção (km/h ou mph).
    • double reservedLanesVisibilityDistance: Distância de visibilidade das faixas reservadas da seção (metros ou pés).
    • double capacity: Capacidade da seção (veículos/h).
    • double distance_OnRamp: Distância da On Ramp da seção (seg).
    • double distance_OnRampMerge: Distância de Mescla da Faixa Lateral: (m ou ft)
    • double cooperation_OnRamp: Percentual de cooperação para mudança de faixa.
    • double userDefinedCost: Custo definido pelo usuário da seção.
    • int reactionTimeVariation: Variação do tempo de reação da seção.
    • double reactionTimeAtTrafficLightVariation: Variação do tempo de reação em semáforos.
    • double reactionTimeAtStopVariation: Variação do tempo de reação em paradas.
    • bool imprudentLaneChanging: Verdadeiro se a seção tem comportamento de mudança de faixa imprudente ativado.
Saída
  • = 0: Sem Erro
  • < 0: Erro
Exemplo de código em Python:

O seguinte código modifica a variação do tempo de reação da seção com ID=106 para um valor de 1. Ele primeiro lê os parâmetros atuais antes de modificar um deles.

report = intp()
behParams = AKIInfNetGetSectionBehaviouralParam(106, report)

if report.value() == 0:
    behParams.reactionTimeVariation = 1
    AKIInfNetSetSectionBehaviouralParam(106, behParams, True)
    AKIPrintString("OK")
else :
    AKIPrintString("Not OK")

Ler os Parâmetros Comportamentais de uma Seção

Em C++ e Python

Explicação

Ler os parâmetros comportamentais de uma seção que serão usados ao aplicar os modelos e nos cálculos de escolha de rotas.

Formato
A2KSectionBehaviourParam AKIInfNetGetSectionBehaviouralParam(int aid, int *report);
Parâmetros
  • aid: identificador da seção.
Saída
  • report = 0: Sem Erro. Os parâmetros comportamentais atuais da seção são retornados pela função.
  • report < 0: Erro.
Exemplo de código em Python

O seguinte código lê os parâmetros comportamentais da seção com ID=106 e imprime a variação do tempo de reação.

report = intp()
behParams = AKIInfNetGetSectionBehaviouralParam(106, report)

if report.value() == 0:
    string = str(behParams.reactionTimeVariation)
    AKIPrintString(string)

Modificar os Parâmetros Comportamentais de uma Virada

Em C++ e Python

Explicação

Modificar os parâmetros comportamentais de uma virada que serão usados ao aplicar os modelos e nos cálculos de escolha de rotas.

Formato
int AKIInfNetSetTurnBehaviouralParam(int aid, A2KTurnBehaviourParam behaviourParam);
Parâmetros
  • aid: Identificador da virada.
  • behaviourParam: Parâmetros de comportamento para a virada.

A estrutura A2KTurnBehaviourParam é:

A2KTurnBehaviourParam{
double speedLimit;
bool yellowBoxBehaviour;
double distanceZone1;
double distanceZone2;
double waitingTimeBeforeLosingTurn;
double safetyMarginFront;
double safetyMarginBack;
double minimumGap;
double maximumGap;
double minGiveWayTimeFactor;
double maxGiveWayTimeFactor;
double visibilityDistanceMainStream;

Os parâmetros são explicados em detalhes na Seção de Edição de Viradas e na Seção do Modelo de Aceitação de Espaço e na Seção do Modelo de Escolha de Faixa.

  • Velocidades de virada
  • speedLimit: Limite de velocidade da virada em unidades métricas ou imperiais determinadas pelas preferências definidas no documento Aimsun
  • yellowBoxBehaviour: Comportamento da caixa amarela ligado/desligado.

  • Seleção de Faixa

  • distanceZone1: distância de previsão para o modelo de mudança de faixa.
  • distanceZone2: distância crítica de previsão para o modelo de mudança de faixa.

  • Aceitação de Espaço

  • waitingTimeBeforeLosingTurn:
  • safetyMarginFront:
  • safetyMarginBack:
  • minimumGap:
  • maximumGap:
  • minGiveWayTimeFactor:
  • maxGiveWayTimeFactor:
  • visibilityDistance: Distância de avaliação na seção de aproximação
  • visibilityDistanceMainStream: Distância de avaliação nas seções em conflito.
Saída
  • = 0: Sem Erro.
  • < 0: Erro.

Ler os Parâmetros Comportamentais de uma Virada

Em C++ e Python

Explicação

Ler os parâmetros comportamentais de uma virada que serão usados na escolha de faixas e aceitação de espaço.

Formato
A2KTurnBehaviourParam AKIInfNetGetTurnBehaviouralParam( int idturn, int* report );
Parâmetros
  • idturn: O identificador da virada.
Saída
  • report = 0: Sem Erro. E os parâmetros atuais do comportamento da virada são retornados pela função.
  • report < 0: Erro.

Modificar a Capacidade de uma Seção

Em C++ e Python

Explicação

Modificar a capacidade de uma seção que será usada ao aplicar os modelos e nos cálculos de escolha de rotas.

Formato
int AKISetSectionCapacity(int aid, double capacity);
Parâmetros
  • aid: Identificador da seção.
  • capacity: Nova capacidade (veículos/h) atribuída à seção.
Saída
  • = 0: Sem Erro.
  • < 0: Erro.

Ler a Capacidade de uma Seção

Em C++ e Python

Explicação

Ler a capacidade definida para uma seção.

Formato
double AKIGetSectionCapacity(int aid);
Parâmetros
  • aid: Identificador da seção.
Saída
  • > 0: Capacidade da seção especificada.
  • < 0: Erro.

Modificar o Custo Definido pelo Usuário de uma Seção

Em C++ e Python

Explicação

Modificar o custo definido pelo usuário de uma seção usada ao aplicar os modelos e nos cálculos de escolha de rotas.

Formato
int AKISetSectionUserDefinedCost(int aid, double userdefinedcost);
Parâmetros
  • aid: Identificador da seção.
  • userdefinedcost: Novo custo definido pelo usuário da seção.
Saída
  • = 0: Sem Erro.
  • < 0: Erro.

Ler o Custo Definido pelo Usuário de uma Seção

Em C++ e Python

Explicação

Ler o custo definido pelo usuário para uma seção.

Formato
double AKIGetSectionUserDefinedCost(int aid);
Parâmetros
  • aid: Identificador da seção.
Saída
  • > 0: Custo definido pelo usuário da seção especificada.
  • < 0: Erro.

Modificar o Segundo Custo Definido pelo Usuário de uma Seção

Em C++ e Python

Explicação

Modificar o segundo custo definido pelo usuário de uma seção que será usado ao aplicar os modelos e nos cálculos de escolha de rotas.

Formato
int AKISetSectionUserDefinedCost2(int aid, double userdefinedcost);
Parâmetros
  • aid: Identificador da seção.
  • userdefinedcost: Novo segundo custo definido pelo usuário da seção.
Saída
  • = 0: Sem Erro.
  • < 0: Erro.

Ler o Segundo Custo Definido pelo Usuário de uma Seção

Em C++ e Python

Explicação

Ler o segundo custo definido pelo usuário definido para uma seção.

Formato
double AKIGetSectionUserDefinedCost2(int aid);
Parâmetros
  • aid: Identificador da seção.
Saída
  • > 0: Segundo custo definido pelo usuário da seção especificada.
  • < 0: Erro.

Modificar o Terceiro Custo Definido pelo Usuário de uma Seção

Em C++ e Python

Explicação

Modificar o terceiro custo definido pelo usuário de uma seção que será usado ao aplicar os modelos e nos cálculos de escolha de rotas.

Formato
int AKISetSectionUserDefinedCost3(int aid, double userdefinedcost);
Parâmetros
  • aid: Identificador da seção.
  • userdefinedcost: Novo terceiro custo definido pelo usuário da seção.
Saída
  • = 0: Sem Erro
  • < 0: Erro

Ler o Terceiro Custo Definido pelo Usuário de uma Seção

Em C++ e Python:

Explicação

Ler o terceiro custo definido pelo usuário definido para uma seção.

Formato
double AKIGetSectionUserDefinedCost3(int aid);
Parâmetros
  • aid: Identificador da seção.
Saída
  • > 0: Terceiro custo definido pelo usuário da seção especificada.
  • < 0: Erro.

Ler o Número de Interseções

Em C++ e Python

Explicação

Ler o número de interseções presentes na rede viária. Esta função é equivalente a ECIGetNumberJunctions(), mas não precisa de um plano de controle carregado.

Formato
int AKIInfNetNbJunctions ();
Parâmetros

Nenhum.

Saída
  • > 0: Número correto de interseções na rede viária.
  • < 0: Erro.

Ler o Identificador de uma Interseção

Em C++ e Python

Explicação

Ler o identificador da interseção elem-th presente na rede viária. Esta função é equivalente a ECIGetJunctionId(), mas não precisa de um plano de controle carregado..

Formato
int AKIInfNetGetJunctionId (int elem)
Parâmetros
  • elem: O número da interseção e deve estar na faixa 0 ≤ elem < Número de Interseções - 1.
Saída
  • > 0: Identificador da interseção correspondente.
  • ≤ 0: Erro.

Ler o Número de Centróides

Em C++ e Python

Explicação

Ler o número de centróides presentes na rede viária.

Formato
int AKIInfNetNbCentroids();
Parâmetros

Nenhum.

Saída
  • ≥ 0: Número de centróides na rede viária.
  • < 0: Erro.

Ler o Identificador de um Centroide

Em C++ e Python

Explicação

Ler o identificador do centróide elem-th presente na rede viária.

Formato
int AKIInfNetGetCentroidId(int elem)
Parâmetros
  • elem: O número do centróide e deve estar na faixa 0 ≤ elem < Número de Centròides - 1.
Saída
  • > 0: Identificador correspondente do centróide.
  • ≤ 0: Erro.

Ler as Informações do Centroide

Em C++ e Python

Explicação

Ler as informações de um centróide.

Formato
A2KCentroidInf AKIInfNetGetCentroidInf(int aid)
Parâmetros
  • Aid: Identificador do centróide.
Saída
struct A2KCentroidInf{
    int report;
    int id;
    bool AsDestConsider_percentage;
    bool AsOrigConsider_percentage;
    bool IsOrigin;
    bool IsDestination;
    int NumConnecTo;
    int NumConnecFrom;
};

onde:

  • report: 0, OK, caso contrário código de erro.
  • id: Identificador do centróide.
  • AsDestConsider_percentage: O centróide considera as porcentagens de conexões de destino quando atua como destino.
  • AsOrigConsider_percentage: O centróide considera as porcentagens de conexões de origem quando atua como origem.
  • IsOrigin: Verdadeiro se o centróide atua como uma origem.
  • IsDestination: Verdadeiro se o centróide atua como um destino.
  • NumConnecTo: Número de conexões Para o centróide.
  • NumConnecFrom: Número de conexões De o centróide.

Ler os Identificadores de Objetos de todas as conexões com um Centróide (função obsoleta)

Em C++ e Python

Explicação

Ler o identificador do objeto para a seção elem-th conectada "a" ao centróide dado presente na rede viária.

Formato
int AKIInfNetGetIdObjectofOriginCentroidConnector(int aid, int elem)
Parâmetros
  • aid: Identificador do centróide.
  • elem: O número da conexão "para" e deve estar na faixa 0 ≤ elem < Número de conexões "para" - 1.
Saída
  • > 0: Identificador correspondente da seção ou nó.
  • ≤ 0: Erro.

Ler os Identificadores de Seção de todas as conexões com um Centróide

Em C++ e Python

Explicação

Ler o identificador do objeto para a seção elem-th conectada "a" ao centróide dado presente na rede viária.

Formato
int AKIInfNetGetIdObjectANGofOriginCentroidConnector(int aid, int elem)
Parâmetros
  • aid: Identificador do centróide.
  • elem: O número da conexão "para" e deve estar na faixa 0 ≤ elem < Número de conexões "para" - 1.
Saída
  • > 0: Identificador correspondente da seção ou nó
  • ≤ 0: Erro

Ler os Identificadores de Seção de todas as conexões de um Centróide (função obsoleta)

Em C++ e Python

Explicação

Ler o identificador do objeto para a seção elem-th conectada "de" ao centróide dado presente na rede viária.

Formato
int AKIInfNetGetIdSectionofDestinationCentroidConnector(int aid, int elem)
Parâmetros
  • aid: Identificador do centróide.
  • elem: O número da conexão "de" e deve estar na faixa 0 ≤ elem < Número de conexões "de" - 1.
Saída
  • > 0: Identificador correspondente da seção ou nó.
  • ≤ 0: Erro.