In this chapter:

SiteFrame

Glossary definition

Purpose

A SiteFrame contains the physical infrastructure model for public transport — StopPlaces, Quays, and topographic context. It defines the spatial elements that passengers interact with and that other frames reference for stop assignments.

classDiagram
    %% Styles
    classDef frame fill:#FFF8E1,stroke:#FFB300
    classDef contained fill:#E8F4FF,stroke:#1E90FF
    classDef external fill:#F6F6F6,stroke:#AAAAAA

    %% Frame
    class SiteFrame:::frame

    %% Contained elements
    class StopPlace:::contained {
        - centroid
        - quays []
    }
    class Quay:::contained {
        - centroid
    }
    class TopographicPlace:::contained
    class Centroid:::contained

    %% Containment relations
    SiteFrame "1" o-- "0..*" StopPlace : contains
    SiteFrame "1" o-- "0..*" TopographicPlace : contains
    StopPlace "1" o-- "0..*" Quay : contains
    StopPlace "1" o-- "1" Centroid : contains
    Quay "1" o-- "1" Centroid : contains

Contained Elements

  • StopPlaces – stations and stops
    • Quays - platforms where passengers can board a vehicle
  • TopographicPlaces - geographical and administrative area context for stops
  • Not currently modelled: entrances, levels, equipments, paths, accessibility properties, points of interest

Table

Sub Element Usage Card Type Description Note
  SiteFrame expected 1..1 unknown    
+ topographicPlaces expected 1..1 unknown    
++ TopographicPlace expected 1..1 unknown   Used to represent countries if outside CH, cantons and communes if in CH. Cantons are referenced from StopPlaces.
+ stopPlaces mandatory 1..1 unknown    
++ StopPlace mandatory 1..1 unknown    
+ siteFacilitySets optional 1..1 unknown   We expect the SiteFacilitySet in the ResourceFrame
++ SiteFacilitySet optional 1..1 unknown    

General NeTEx definition

Example

<?xml version="1.0" encoding="UTF-8"?>
<SiteFrame  id="ch:1:SiteFrame" version="1">
  <topographicPlaces>
    <TopographicPlace id="ch:1:TopoGraphicPlace:CH-BE" version="1">
      <!-- Used to represent countries if outside CH, cantons and communes if in CH. Cantons are referenced from StopPlaces. -->
      <Descriptor>
        <Name>Bern</Name>
      </Descriptor>
    </TopographicPlace>
  </topographicPlaces>
  <stopPlaces>
    <StopPlace id="ch:1:sloid:7000" version="1"/>
  </stopPlaces>
  <siteFacilitySets>
    <!-- We expect the SiteFacilitySet in the ResourceFrame -->
    <SiteFacilitySet id="generated" version="1"/>
  </siteFacilitySets>
</SiteFrame>

Template

Frame Relationships

SiteFrame is independent of other frames but provides the physical stop infrastructure that ServiceFrame references through PassengerStopAssignments. TimetableFrame indirectly depends on SiteFrame through the JourneyPattern stop sequence. SiteFrame is typically wrapped in a CompositeFrame within a PublicationDelivery.

StopPlace

Glossary definition

Purpose

A named physical or virtual location where passengers can board or alight from public transport, containing one or more Quays. Note that a StopPlace is a distinct concept from the representation of the stop in a timetable – the ScheduledStopPoint. The two can be connected using a PassengerStopAssignment.

Table

Sub Element Usage Card Type Description Note
  StopPlace mandatory 1..1 unknown   In some cases the id is not a sloid.
+ ValidBetween optional 1..1 unknown   This can be used to show, when the StopPlace can be used.
++ FromDate mandatory 1..1 unknown    
++ ToDate mandatory 1..1 unknown    
+ keyList mandatory 1..1 unknown   Key value pairs for DIDOK number and SLOID
++ KeyValue mandatory 1..1 unknown    
+++ Key mandatory 1..1 unknown    
+++ Value mandatory 1..1 unknown    
+ privateCodes mandatory 1..1 unknown    
++ PrivateCode mandatory 1..1 unknown   In Switzerland to be filled with the didok number and the sloid
++ @type mandatory 1..1 xsd:string Attribute type  
+ Extensions optional 1..1 unknown    
++ HafasPriority optional 1..1 unknown   Interchange priority if several alternative interchange possibilities exist. Integer allows for finer grained value than standard element Weighting.
++ HafasKMInfo optional 1..1 unknown   Special value for Hafas environments.
+ Name mandatory 1..1 unknown    
+ Centroid mandatory 1..1 unknown   Global or national location
++ Location mandatory 1..1 unknown   Note concerning coordinates - The main coordinates are given as WSG84.
+++ Longitude mandatory 1..1 unknown    
+++ Latitude mandatory 1..1 unknown    
+++ Altitude optional 1..1 unknown    
+ alternativeNames optional 1..1 unknown   Alternative names for the StopPlace. We will also use these for synonyms. From INFO+ the synonyms are used on the Stop-Place.
+ TopographicPlaceRef optional 1..1 unknown   Id to the county, community, canton or country.
+ StopPlaceType optional 1..1 unknown    
+ Weighting optional 1..1 unknown   Default relative weighting to be used for stop place. Cf. HafasPriority in Extensions.
+ quays expected 1..1 unknown   The Quays contained in the StopPlace - platforms, jetties, bays, taxi ranks, and other points of physical access to vehicles.
++ Quay expected 1..1 unknown    

General NeTEx definition

Example

<?xml version="1.0" encoding="UTF-8"?>
<StopPlace  id="ch:1:sloid:7000" version="1">
  <!-- In some cases the id is not a sloid. -->
  <ValidBetween>
    <!-- This can be used to show, when the StopPlace can be used. -->
    <FromDate>2026-01-01T00:00:00</FromDate>
    <ToDate>2026-12-31T00:00:00</ToDate>
  </ValidBetween>
  <keyList>
    <!-- Key value pairs for DIDOK number and SLOID -->
    <KeyValue>
      <Key>DIDOK</Key>
      <Value>7000</Value>
    </KeyValue>
    <KeyValue>
      <Key>SLOID</Key>
      <Value>ch:1:sloid:7000</Value>
    </KeyValue>
  </keyList>
  <privateCodes>
    <PrivateCode type="didok">7000</PrivateCode>
    <!-- In Switzerland to be filled with the didok number and the sloid -->
    <PrivateCode type="sloid">ch:1:sloid:7000</PrivateCode>
  </privateCodes>
  <Extensions>
    <HafasPriority>
      <!-- Interchange priority if several alternative interchange possibilities exist. Integer allows for finer grained value than standard element Weighting. -->
      <Value>4</Value>
    </HafasPriority>
    <HafasKMInfo>
      <!-- Special value for Hafas environments. -->
      <Value>1000</Value>
      <!-- Special value for Hafas environments. -->
    </HafasKMInfo>
  </Extensions>
  <Name>Bern</Name>
  <Centroid>
    <!-- Global or national location -->
    <Name/>
    <Location>
      <!-- Note concerning coordinates - The main coordinates are given as **WSG84**. -->
      <Longitude>7.43913088992</Longitude>
      <Latitude>46.94883228914</Latitude>
      <Altitude>540.2</Altitude>
    </Location>
  </Centroid>
  <alternativeNames>
    <!-- Alternative names for the StopPlace. We will also use these for synonyms. From INFO+ the synonyms are used on the Stop-Place. -->
    <AlternativeName id="ch:1:sloid:7000:it" version="1">
      <Name lang="it">Berna</Name>
    </AlternativeName>
  </alternativeNames>
  <TopographicPlaceRef ref="BE-bern" version="1">
    <!-- Id to the county, community, canton or country. -->
  </TopographicPlaceRef>
  <StopPlaceType>railStation</StopPlaceType>
  <Weighting>preferredInterchange</Weighting>
  <!-- Default relative weighting to be used for stop place. Cf. HafasPriority in Extensions. -->
  <quays>
    <!-- The Quays contained in the StopPlace - platforms, jetties, bays, taxi ranks, and other points of physical access to vehicles. -->
    <Quay id="ch:1:sloid:7000:5:9" version="1"/>
  </quays>
</StopPlace>

Template

Usage Notes

  • All StopPlaces in Switzerland are identifiable by both a DIDOK number and a SLOID. DIDOK number are under the responsability of the Department of Transport (BAV). It is possible that in the future the BAV will also regulate “Haltepunkte” and “Haltekanten” and, therefore, the identifiers of Quays.
  • Foreign StopPlaces may be mapped to Swiss DIDOK codes.
  • The main connection between DIDOK codes and the NeTEx export are the ScheduledStopPoints. They typically have the same Id (except for the in the identifier string) as the `StopPlace`. Exceptions are meta stations and local public transport already using assignment to “Haltekanten”. In such cases the `ScheduledStopPoint` is more refined than the DIDOK and UIC codes.
  • Meta-stations will have their own codes. In some cases these are added for operational or searching reasons.
  • id-attribute needs to be kept stable between exports.

Quay

Glossary definition

Purpose

A specific boarding or alighting position (platform, stand, bay) within a StopPlace where passengers physically meet vehicles.

Table

Quai.md

General NeTEx definition

Example

<?xml version="1.0" encoding="UTF-8"?>
<StopPlace  id="ch:1:sloid:7000" version="1">
  <!-- In some cases the id is not a sloid. -->
  <ValidBetween>
    <!-- This can be used to show, when the StopPlace can be used. -->
    <FromDate>2026-01-01T00:00:00</FromDate>
    <ToDate>2026-12-31T00:00:00</ToDate>
  </ValidBetween>
  <keyList>
    <!-- Key value pairs for DIDOK number and SLOID -->
    <KeyValue>
      <Key>DIDOK</Key>
      <Value>7000</Value>
    </KeyValue>
    <KeyValue>
      <Key>SLOID</Key>
      <Value>ch:1:sloid:7000</Value>
    </KeyValue>
  </keyList>
  <privateCodes>
    <PrivateCode type="didok">7000</PrivateCode>
    <!-- In Switzerland to be filled with the didok number and the sloid -->
    <PrivateCode type="sloid">ch:1:sloid:7000</PrivateCode>
  </privateCodes>
  <Extensions>
    <HafasPriority>
      <!-- Interchange priority if several alternative interchange possibilities exist. Integer allows for finer grained value than standard element Weighting. -->
      <Value>4</Value>
    </HafasPriority>
    <HafasKMInfo>
      <!-- Special value for Hafas environments. -->
      <Value>1000</Value>
      <!-- Special value for Hafas environments. -->
    </HafasKMInfo>
  </Extensions>
  <Name>Bern</Name>
  <Centroid>
    <!-- Global or national location -->
    <Name/>
    <Location>
      <!-- Note concerning coordinates - The main coordinates are given as **WSG84**. -->
      <Longitude>7.43913088992</Longitude>
      <Latitude>46.94883228914</Latitude>
      <Altitude>540.2</Altitude>
    </Location>
  </Centroid>
  <alternativeNames>
    <!-- Alternative names for the StopPlace. We will also use these for synonyms. From INFO+ the synonyms are used on the Stop-Place. -->
    <AlternativeName id="ch:1:sloid:7000:it" version="1">
      <Name lang="it">Berna</Name>
    </AlternativeName>
  </alternativeNames>
  <TopographicPlaceRef ref="BE-bern" version="1">
    <!-- Id to the county, community, canton or country. -->
  </TopographicPlaceRef>
  <StopPlaceType>railStation</StopPlaceType>
  <Weighting>preferredInterchange</Weighting>
  <!-- Default relative weighting to be used for stop place. Cf. HafasPriority in Extensions. -->
  <quays>
    <!-- The Quays contained in the StopPlace - platforms, jetties, bays, taxi ranks, and other points of physical access to vehicles. -->
    <Quay id="ch:1:sloid:7000:5:9" version="1"/>
  </quays>
</StopPlace>

Template

Usage Notes

  • In standard NeTEx, a Quay may serve one or more VehicleStoppingPlaces and be associated with one or more StopPointss. The Swiss profile does not currently model that.
  • A Quay may contain other sub Quays. A child Quay must be physically contained within its parent Quay. Furthermore:
    • A nested Quay is always physically contiguous with its parent and so has the same accessibility characteristics as it parents.
    • Nested Quays should not be used to mark individual positions on a platform – BoardingPosition serve this function.
    • Nested Quays and AccessSpaces must always be on the same Level as their parent (not currently modelled).
  • If the SLOID for platforms is not unique, it will be formed according to the schema: {StopPlace SLOID}_gen:{Quay SLOID}_pf:{Platform Code*}.
  • If no platform SLOID is available {StopPlace SLOID}_gen:missingSLOID_pf:{Platform Code*} will be used instead.
  • 👉 Please note: Special characters in the track identifier will be replaced with a dot («.»), for example 21/22 → 21.22.
  • id-attribute needs to be kept stable between exports.
In the table below you will find an overview of the possible cases. For more information on SLOID, see [Swiss Location Identification (SLOID) öv-info.ch](https://www.oev-info.ch/de/datenmanagement/swiss-identification-public-transport-sid4pt/swiss-location-identification-sloid “https://www.oev-info.ch/de/datenmanagement/swiss-identification-public-transport-sid4pt/swiss-location-identification-sloid”)
Case id sloid in Key/Value, PrivateCode
Unique track sloid ch:1:sloid:7000:6:32 ch:1:sloid:7000:6:32
Non-unique track sloid ch:1:sloid:7000_gen:ch:1:sloid:7000:0:349752_pf:2A-D ch:1:sloid:7000:0:349752
Non-unique SLOID with special characters “11/12” ch.1:sloid:6206_gen:ch:1:sloid:6206:0:11_pf:11.12 ch:1:sloid:6206:0:11
non platform SLOID ch:1:sloid:1102381_gen:missingSLOID_pf:1  
No Sloid (abroad) 8029701_gen_missingSLOID_pf:1  

QUAYs are mapped with the following resolution:

  • No hierarchy between the different definitions of quays is foreseen at the moment
  • All combinations between sectors of the same quay are considered as independent quays.
  • Combinations of several quays are considered as independent quays.

Further notes:

  • We will at some point include also Quays that are not used actually to have the base data, if they are needed in real-time.
  • Atlas does model the hierarchy of the quays.

TopographicPlace

Glossary definition

Purpose

A named geographic area such as a city, municipality, county, or region - used to provide spatial context for StopPlaces, for example when interactively searching for the origin or destination of a trip.

Table

Sub Element Usage Card Type Description Note
  TopographicPlace mandatory 1..1 unknown    
+ Descriptor mandatory 1..1 unknown    
++ Name mandatory 1..1 unknown    
++ ShortName expected 1..1 unknown   Abbreviation of the canton (leave empty if TopographicPlaceType is country)
+ TopographicPlaceType mandatory 1..1 unknown   Allowed values: country, county
+ ParentTopographicPlaceRef optional 1..1 unknown   Parent topographic place when it exists.

General NeTEx definition

Example

<?xml version="1.0" encoding="UTF-8"?>
<TopographicPlace  id="ch:1:TopoGraphicPlace:CH-BE" version="1">
  <Descriptor>
    <Name>Bern</Name>
    <ShortName>BE</ShortName>
    <!-- Abbreviation of the canton (leave empty if TopographicPlaceType is country) -->
  </Descriptor>
  <TopographicPlaceType>county</TopographicPlaceType>
  <!-- Allowed values: country, county -->
  <ParentTopographicPlaceRef ref="ch:1:TopoGraphicPlace:CH-BE-Bern" version="1">
    <!-- Parent topographic place when it exists. -->
  </ParentTopographicPlaceRef>
</TopographicPlace>

Template

Usage Notes

  • The TopographicPlace represent the cantons and communes in Switzerland. Each StopPlace should reference the TopographicPlace representing its canton.
  • id-attribute needs to be kept stable between exports.

Centroid

Purpose

It provides precise geographic coordinates (WGS84) of a central reference point representing a single point or an area such as a Quayor a StopPlace.

Table

Sub Element Usage Card Type Description Note
  Centroid expected 1..1 unknown   Global or national location
+ Location mandatory 1..1 unknown   Note concerning coordinates - The main coordinates are given as WSG84.
++ Longitude mandatory 1..1 unknown    
++ Latitude mandatory 1..1 unknown    
++ Altitude optional 1..1 unknown    
++ pos optional 1..1 unknown   EPSG:2056 is LV95. We use it in the export.
++ @srsName mandatory 1..1 xsd:string Attribute srsName  

General NeTEx definition

Example

<?xml version="1.0" encoding="UTF-8"?>
<Centroid >
  <!-- Global or national location -->
  <Location>
    <!-- Note concerning coordinates - The main coordinates are given as **WSG84**. -->
    <Longitude>7.43913088992</Longitude>
    <Latitude>46.94883228914</Latitude>
    <Altitude>540.2</Altitude>
    <pos xmlns:ns0="http://www.opengis.net/gml/3.2" srsName="EPSG:2056">2600037.945 1199749.812</pos>
    <!-- EPSG:2056 is LV95. We use it in the export. -->
  </Location>
</Centroid>

Template

Usage Notes

The Centroid always contains a location.

  • The main coordinates are given as WGS84.
  • Required accuracy 4+ decimal positions.
  • The Swiss coordinates are added as well, when available (for Swiss stops). The format is LV95. For imports they are not needed, however.
  • INFO+ will not use the master data from NeTEx imports, it will rely on the Atlas master data for all Swiss coordinates. INFO+ will, however, use the imported location data of foreign places without DIDOK numbers.
  • no id-attribute