This page contains documentation on how Samtrafiken exports data from its stops register in the NeTEx format according to the Nordic NeTEx Profile. It also shows how this stops register data is mapped from Noptis (DOI/DII) data (see https://www.noptis.com/), which is the format that many PTA:s use to deliver their data to Samtrafiken.
Aside from the mapping between different formats for the import and the export of this data, this dataset contains a mapping in itself, between local stops (which are reported in to Samtrafiken through Noptis, NeTEx etc) and national stops, which groups local stops from different operators together when these local stops describe the same national stop. This stops data export has the same structure as Samtrafikens regional NeTEx exports, which are documented in more detail here: Samtrafiken NeTEx export .
Example: Mapping stops together
Company A delivers “Stockholm Central”. Company B delivers “Stockholms Central”. These two local stops are deemed to be the same stop (based on both automatic rules and/or manual adjustments) and grouped into 1 national stop “Stockholm Centralstation”.
This national stop still contains references to the local stops which are included.
Since NeTEx-imports use the same terminology as this export, documentation regarding how terminologies of different datasets are mapped focusses on Noptis ↔︎ NeTEx. If you are not interested in mappings, but need documentation regarding the output format, please read the Trafiklab documentation https://www.trafiklab.se/api/trafiklab-apis/stops-data/ .
This data has been enriched
This is data which has been enriched by Samtrafiken. Data from multiple datasources have been combined to obtain a complete dataset for the entire country. While Samtrafikens goal is to conserve the source data as much as possible, some fields may be changed manually to ensure correctness, especially when multiple stops of a single “owner” are combined.
See the comments below to see which fields are generated by Samtrafiken, which come straight from the source data, and which fields may have been modified.
If you need unmodified local data, please see our regular NeTEx regional exports (https://www.trafiklab.se/api/trafiklab-apis/netex-regional/ ,Samtrafiken NeTEx export ).
Owners and data providers
Throughout the entire stop dataset, there are two important key-values: owner
and data-from
. Samtrafikens stops register is based on the principle that the PTA who operates in a province is responsible for all stops in that province. This is the owner, indicated by its THM number, which ranges from 1 to 25. These numbers coincide with the province numbers defined by SCB: https://www.scb.se/hitta-statistik/regional-statistik-och-kartor/regionala-indelningar/lan-och-kommuner/lan-och-kommuner-i-kodnummerordning/. Typically, the owner provides data for its stops, and data-from
matches owner
.
However, in some cases a stop is reported by another PTA before the owner has defined this stop in their province. In these cases, this can be seen in the data-from
field, where the THM number of the providing PTA is stored. This is not limited to the numeric range from 1 to 25, as even private operators can be the first to provide a stop place. As soon as the owner starts delivering data for this stop, the owner will take over as data provider. The data-from
key-value will then start matching owner
key value. In the case described here when a stop is reported by another PTA than the owner, the new stop gets a key-value preliminary
which is set to true. When the the data has been verified as correct the preliminary
key-value will disappear.
Multimodal Stop places
In NeTEx, Quays (Noptis StopPoints) do not have any way to define the stop type / transport type. Instead, this is defined on StopPlace level, and identical for all quays. This works well for stop places with only one type of transport, for example a bus stop along the road.
Certain StopPlace objects however, such as train stations with connected bus stations (e.g. “resecentrum”), have multiple modes of transportation. In the NeTEx format, these multimodal stop place are represented by a parent StopPlace, which does not have any quays, and child StopPlace objects, one per transport mode. This way, all the quays belong to a StopPlace with the correct transport mode, while still being grouped together into 1 parent stop StopPlace.
An example for a single-modal stop, Jönköping Kungsgatan, and a multimodal stop, Knivsta station, is shown in the diagram below, as well as in the code example below
XML example
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <PublicationDelivery xmlns="http://www.netex.org.uk/netex" version="1.11:NO-NeTEx-networktimetable:1.3"> <!-- Used NeTEx profile and version. --> <PublicationTimestamp>2023-06-29T07:57:33</PublicationTimestamp> <!-- Timestamp of export. --> <ParticipantRef>SAM</ParticipantRef> <!-- Participantref is always Samtrafiken. --> <dataObjects> <SiteFrame version="20230629075733" id="SE:050:SiteFrame:1"> <!-- Siteframe version matches export date/time. --> <ValidBetween> <FromDate>2005-01-01T00:00:00</FromDate> <!-- Always set to 2005-01-01. --> </ValidBetween> <codespaces> <Codespace id="SE:050"> <!-- id is same as Xmlns. --> <Xmlns>SE:050</Xmlns> <!-- Always 50, Samtrafikens number, since this is an export of data processed by Samtrafiken. --> <XmlnsUrl>http://www.samtrafiken.se/ns/sweden</XmlnsUrl> <!-- sweden, for aggregated data. --> </Codespace> </codespaces> <FrameDefaults> <DefaultLocale> <TimeZone>Europe/Stockholm</TimeZone> <DefaultLanguage>se</DefaultLanguage> </DefaultLocale> <DefaultLocationSystem>4326</DefaultLocationSystem> <!-- All coordinates are published as WGS84, independent of the format in which they are reported in. --> </FrameDefaults> <!-- At the time of writing, only stopPlaces are exported through the stops dataset. For data such as TopographicPlace (Noptis Zones), GroupOfStopPlaces (Noptis Sites), etc, see the regional NeTEx exports. --> <stopPlaces> <StopPlace version="20200615" id="SE:050:StopPlace:18042"> <!-- Noptis.StopArea --> <ValidBetween> <FromDate>2020-06-15T00:00:00</FromDate> <!-- StopArea.ExistsFromDate for the StopArea delivered by the owner. 2000-01-01 for StopPlaces not delivered by the owner. --> <!-- ToDate is only set for national StopPlaces which have been deleted. It shows the date of deletion in this case. --> </ValidBetween> <keyList> <KeyValue> <Key>owner</Key> <Value>6</Value> <!-- The national THM number of the datasource which "owns" this stop. Always a regional transport authority (RKM). 50 (Samtrafiken) for stops outside of Sweden. --> </KeyValue> <KeyValue> <Key>data-from</Key> <Value>6</Value> <!-- The national THM number of the datasource which delivers data for this stop. Differs only from owner in case someone delivers a stop which is not delivered by the regional transport authority (RKM) in that province. --> </KeyValue> <KeyValue> <Key>rikshallplats</Key> <Value>740023267</Value> <!-- The Rikshållplatsnumber for this stop, added by Samtrafiken. --> </KeyValue> <KeyValue> <Key>stip.StopArea.DefaultInterchangeDurationSeconds</Key> <Value>0</Value> <!-- The default exchange time in seconds, Noptis StopArea.DefaultInterchangeDurationSeconds, according to the authority who provides the data (data-from). --> </KeyValue> <KeyValue> <Key>local-name</Key> <!-- StopArea.Name for each of the local stop areas mapped to this national stop, in the form of ThmNumber:Noptis.StopArea.Gid:Noptis.StopArea.Name. --> <Value>6:9021006001317000:Kungsgatan|14:9021014075317000:Kungsgatan</Value> </KeyValue> <KeyValue> <Key>local-gid</Key> <!-- StopArea.Gid for each of the local stop areas mapped to this national stop, in the form of ThmNumber:Noptis.StopArea.Gid. --> <Value>6:9021006001317000|14:9021014075317000</Value> </KeyValue> <KeyValue> <Key>local-number</Key> <!-- StopArea.Number for each of the local stop areas mapped to this national stop, in the form of ThmNumber:Noptis.StopArea.Number. --> <Value>6:1317|14:75317</Value> </KeyValue> <KeyValue> <Key>sellable</Key> <Value>false</Value> <!-- This value will be true if the stop is sellable through samtrafiken systems, and false if not --> </KeyValue> </keyList> <Name>Kungsgatan</Name> <!-- StopArea.Name for the THM which delivers data (see data-from). May be adjusted by Samtrafiken. --> <ShortName>Kungsgatan</ShortName> <!-- StopArea.ShortName for the THM which delivers data (see data-from). --> <PrivateCode>18042</PrivateCode> <!-- The national stop id, determined by Samtrafiken. --> <Centroid> <!-- StopArea.CentroidEastingCoordinate and StopArea.CentroidNorthingCoordinate for the THM which delivers data (see data-from). --> <Location> <Longitude>14.154820</Longitude> <Latitude>57.779054</Latitude> </Location> </Centroid> <alternativeNames> <AlternativeName> <Name>Kungsgatan</Name> <!-- Same as NeTEx.StopPlace.Name defined earlier in this stopplace object, required by the NeTEx standard. --> <Abbreviation>KUN</Abbreviation> <!-- StopArea.Abbreviation for the THM which delivers data (see data-from). --> </AlternativeName> </alternativeNames> <TransportMode>bus</TransportMode> <tariffZones> <TariffZoneRef ref="SE:050:TariffZone:6-9081006200000981"/> <!-- Reference to TariffZone, see below. Noptis.Zone Type=TARIFFZO, in the form "SE:050:TariffZone:" followed by ThmNumber-Noptis.Zone.Gid --> <TariffZoneRef ref="SE:050:TariffZone:14-9081014201002981"/> <TariffZoneRef ref="SE:050:TariffZone:14-9081014208075317"/> </tariffZones> <StopPlaceType>onstreetBus</StopPlaceType> <Weighting>interchangeAllowed</Weighting> <quays> <Quay version="20200615" id="SE:050:Quay:34207"> <keyList> <KeyValue> <Key>stip.StopPoint.ExistsFromDate</Key> <Value>2020-06-15</Value> </KeyValue> <KeyValue> <Key>stip.StopPoint.ExistsUpToDate</Key> <Value>null</Value> </KeyValue> <KeyValue> <Key>local-journeypatternpoint-gid</Key> <Value>6:9025006000131701|14:9025014007531701</Value> </KeyValue> <KeyValue> <Key>local-stoppoint-gid</Key> <Value>6:9022006001317001|14:9022014075317001</Value> </KeyValue> <KeyValue> <Key>local-designation</Key> <Value>6:A|14:A</Value> </KeyValue> </keyList> <Name>Kungsgatan</Name> <ShortName>Kungsgatan</ShortName> <PrivateCode>1</PrivateCode> <Centroid> <Location> <Longitude>14.155801</Longitude> <Latitude>57.778923</Latitude> </Location> </Centroid> <PublicCode>A</PublicCode> <!-- Usually StopPoint.Designation for the StopPoint delivered by the THM defined in StopPlace.data-from, may be adjusted by Samtrafiken. --> </Quay> <Quay version="20200615" id="SE:050:Quay:34208"> <keyList> <!-- ... --> </keyList> <Name>Kungsgatan</Name> <ShortName>Kungsgatan</ShortName> <PrivateCode>2</PrivateCode> <Centroid> <Location> <Longitude>14.153855</Longitude> <Latitude>57.779194</Latitude> </Location> </Centroid> <PublicCode>B</PublicCode> </Quay> </quays> </StopPlace> <StopPlace version="20221210" id="SE:050:StopPlace:559"> <!-- Noptis.StopArea. --> <ValidBetween> <FromDate>2022-12-10T00:00:00</FromDate> <!-- StopArea.ExistsFromDate for the StopArea delivered by the owner. 2000-01-01 for StopPlaces not delivered by the owner. --> <!-- ToDate is only set for national StopPlaces which have been deleted. It shows the date of deletion in this case. --> </ValidBetween> <keyList> <KeyValue> <Key>owner</Key> <Value>3</Value> <!-- The national THM number of the datasource which "owns" this stop. Always a regional transport authority (RKM). 50 (Samtrafiken) for stops outside of Sweden. --> </KeyValue> <KeyValue> <Key>data-from</Key> <Value>3</Value> <!-- The national THM number of the datasource which delivers data for this stop. Differs only from owner in case someone delivers a stop which is not delivered by the regional transport authority (RKM) in that province. --> </KeyValue> <KeyValue> <Key>rikshallplats</Key> <Value>740000559</Value> <!-- The Rikshållplatsnumber for this stop, added by Samtrafiken. --> </KeyValue> <KeyValue> <Key>trafikverket-name</Key> <Value>Knivsta</Value> <!-- The name for this stop according to Trafikverket, only included in case of train stations. Added by Samtrafiken. --> </KeyValue> <KeyValue> <Key>trafikverket-signatures</Key> <Value>KN</Value> <!-- The Signatures for this stop according to Trafikverket, only included in case of train stations. One or more separated by a pipe character |. Added by Samtrafiken. --> </KeyValue> <KeyValue> <Key>stip.StopArea.DefaultInterchangeDurationSeconds</Key> <Value>240</Value> <!-- The default exchange time in seconds, Noptis StopArea.DefaultInterchangeDurationSeconds, according to the authority who provides the data (data-from). --> </KeyValue> <KeyValue> <Key>local-name</Key> <!-- StopArea.Name for each of the local stop areas mapped to this national stop, in the form of ThmNumber:Noptis.StopArea.Gid:Noptis.StopArea.Name. --> <Value>3:9021003780050000:Knivsta station (Knivsta)|1:9021001005006000:Knivsta|1:9021001068633000:Knivsta station|74:9021074005590000:Knivsta|100:9021074000559000:Knivsta station|159:9021001000559000:Knivsta </Value> </KeyValue> <KeyValue> <Key>local-gid</Key> <!-- StopArea.Gid for each of the local stop areas mapped to this national stop, in the form of ThmNumber:Noptis.StopArea.Gid. --> <Value>3:9021003780050000|1:9021001005006000|1:9021001068633000|74:9021074005590000|100:9021074000559000|159:9021001000559000 </Value> </KeyValue> <KeyValue> <Key>local-number</Key><!-- StopArea.Number for each of the local stop areas mapped to this national stop, in the form of ThmNumber:Noptis.StopArea.Number. --> <Value>3:780050|1:5006|1:68633|74:5590|100:559|159:559</Value> </KeyValue> <KeyValue> <Key>sellable</Key> <Value>true|false</Value> <!-- This value will be true if the stop is sellable through samtrafiken systems, and false if not --> </KeyValue> </keyList> <Name>Knivsta station (Knivsta)</Name> <!-- StopArea.Name for the THM which delivers data (see data-from). May be adjusted by Samtrafiken. --> <ShortName>Knivsta station</ShortName><!-- StopArea.ShortName for the THM which delivers data (see data-from). --> <PrivateCode>559</PrivateCode> <!-- The national stop id, determined by Samtrafiken. --> <Centroid> <!-- StopArea.CentroidEastingCoordinate and StopArea.CentroidNorthingCoordinate for the THM which delivers data (see data-from). --> <Location> <Longitude>17.787276</Longitude> <Latitude>59.726035</Latitude> </Location> </Centroid> <alternativeNames> <AlternativeName> <Name>Knivsta station (Knivsta)</Name> <!-- Same as NeTEx.StopPlace.Name defined earlier in this stopplace object, required by the NeTEx standard. --> <Abbreviation>Kni</Abbreviation> <!-- StopArea.Abbreviation for the THM which delivers data (see data-from). --> </AlternativeName> </alternativeNames> <TransportMode>rail</TransportMode> <!-- StopPlace.TypeCode for the THM which delivers data. For multimodal stop places, this is the primary transport mode. For mapping see https://samtrafiken.atlassian.net/wiki/spaces/SamtrafikenOpenData/pages/989233182/Samtrafiken+NeTEx+export#General-Noptis-to-Netex-mappings. --> <StopPlaceType>railStation</StopPlaceType> <!-- StopPlace.TypeCode for the THM which delivers data. For multimodal stop places, this is the primary transport mode. For mapping see https://samtrafiken.atlassian.net/wiki/spaces/SamtrafikenOpenData/pages/989233182/Samtrafiken+NeTEx+export#General-Noptis-to-Netex-mappings. --> <Weighting>preferredInterchange</Weighting> <!-- StopPlace.InterchangePriority for the THM which delivers data, for mapping see https://samtrafiken.atlassian.net/wiki/spaces/SamtrafikenOpenData/pages/989233182/Samtrafiken+NeTEx+export#General-Noptis-to-Netex-mappings. --> <!-- This is a multimodal stop, and therefore it does not have any quays. If this were a simple stop with quays for one mode of transport only, the quays would have been defined here. --> <!-- In this case, there are other stopplaces (1 per StopPlaceType) which contain the actual quays. --> </StopPlace> <StopPlace version="20221210" id="SE:050:StopPlace:559_1"> <!-- The underscore indicates this is child stop 1 of multimodal stop 559. --> <ValidBetween> <FromDate>2022-12-10T00:00:00</FromDate> </ValidBetween> <keyList> <!-- These key-values match the key-values of the parent stop. --> <!-- ... --> </keyList> <Name>Knivsta station (Knivsta)</Name> <ShortName>Knivsta station</ShortName> <PrivateCode>559</PrivateCode> <Centroid> <Location> <Longitude>17.787276</Longitude> <Latitude>59.726035</Latitude> </Location> </Centroid> <alternativeNames> <AlternativeName> <Name>Knivsta station (Knivsta)</Name> <Abbreviation>Kni</Abbreviation> </AlternativeName> </alternativeNames> <ParentSiteRef ref="SE:050:StopPlace:559"/> <!-- Reference to the parent stop. --> <TransportMode>bus</TransportMode> <!-- StopPlace.TypeCode for this child stop. Only quays of this type will be included in this StopPlace. --> <StopPlaceType>onstreetBus</StopPlaceType> <!-- See the parent stop for more information regarding these fields. --> <Weighting>preferredInterchange</Weighting> <quays> <Quay version="20210307" id="SE:050:Quay:4205"> <!-- A national quay, by samtrafiken (050) with id 4205 generated by Samtrafiken. --> <keyList> <KeyValue> <Key>stip.StopPoint.ExistsFromDate</Key> <Value>2021-03-07</Value> <!-- stopPoint.ExistsFromDate for the StopPoint delivered by the THM defined in StopPlace.data-from. --> </KeyValue> <KeyValue> <Key>stip.StopPoint.ExistsUpToDate</Key> <Value>null</Value> <!-- stopPoint.ExistsUpToDate for the StopPoint delivered by the THM defined in StopPlace.data-from. --> </KeyValue> <KeyValue> <Key>local-journeypatternpoint-gid</Key> <Value>3:9025003078005001|1:9025001000068635</Value> <!-- JourneyPatternPoint.Gid for each JourneyPatternPoint which was mapped to this Quay, as THM number : Gid, separated by |. --> </KeyValue> <KeyValue> <Key>local-stoppoint-gid</Key> <Value>3:9022003780050001|1:9022001068633002</Value> <!-- StopPoint.Gid for each StopPoint which was mapped to this Quay, as THM number : Gid, separated by |. --> </KeyValue> <KeyValue> <Key>local-designation</Key> <Value>3:A|1:B</Value> <!-- StopPoint.Designation for each StopPoint which was mapped to this Quay, as THM number : Designation, separated by |. --> </KeyValue> </keyList> <Name>Knivsta station</Name> <!-- StopPoint.Name for the StopPoint delivered by the THM defined in StopPlace.data-from . --> <ShortName>Knivsta station</ShortName> <!-- StopPoint.ShortName for the StopPoint delivered by the THM defined in StopPlace.data-from . --> <PrivateCode>1</PrivateCode> <!-- Local number, defined by Samtrafiken. --> <Centroid> <Location> <Longitude>17.786599</Longitude> <!-- Usually StopPoint.EastingCoordinate for the StopPoint delivered by the THM defined in StopPlace.data-from, may be adjusted by Samtrafiken. --> <Latitude>59.727518</Latitude> <!-- Usually StopPoint.NorthingCoordinate for the StopPoint delivered by the THM defined in StopPlace.data-from, may be adjusted by Samtrafiken. --> </Location> </Centroid> <PublicCode>A</PublicCode> <!-- Usually StopPoint.Designation for the StopPoint delivered by the THM defined in StopPlace.data-from, may be adjusted by Samtrafiken. --> </Quay> <Quay version="20210307" id="SE:050:Quay:4206"> <keyList> <KeyValue> <Key>stip.StopPoint.ExistsFromDate</Key> <Value>2021-03-07</Value> </KeyValue> <KeyValue> <Key>stip.StopPoint.ExistsUpToDate</Key> <Value>null</Value> </KeyValue> <KeyValue> <Key>local-journeypatternpoint-gid</Key> <Value>3:9025003078005002|1:9025001000068634</Value> </KeyValue> <KeyValue> <Key>local-stoppoint-gid</Key> <Value>3:9022003780050002|1:9022001068633001</Value> </KeyValue> <KeyValue> <Key>local-designation</Key> <Value>3:B|1:A</Value> </KeyValue> </keyList> <Name>Knivsta station</Name> <ShortName>Knivsta station</ShortName> <PrivateCode>2</PrivateCode> <Centroid> <Location> <Longitude>17.786305</Longitude> <Latitude>59.727047</Latitude> </Location> </Centroid> <PublicCode>B</PublicCode> </Quay> <Quay version="20210307" id="SE:050:Quay:4207"> <!-- ... --> </Quay> <Quay version="20210307" id="SE:050:Quay:4210"> <!-- ... --> </Quay> </quays> </StopPlace> <StopPlace version="20221210" id="SE:050:StopPlace:559_2"> <!-- A second child stop in this multimodal stop place. --> <ValidBetween> <FromDate>2022-12-10T00:00:00</FromDate> </ValidBetween> <keyList> <!-- ... --> </keyList> <Name>Knivsta station (Knivsta)</Name> <ShortName>Knivsta station</ShortName> <PrivateCode>559</PrivateCode> <Centroid> <Location> <Longitude>17.787276</Longitude> <Latitude>59.726035</Latitude> </Location> </Centroid> <alternativeNames> <AlternativeName> <Name>Knivsta station (Knivsta)</Name> <Abbreviation>Kni</Abbreviation> </AlternativeName> </alternativeNames> <ParentSiteRef ref="SE:050:StopPlace:559"/> <TransportMode>rail</TransportMode> <!-- The previous child stop contained bus quays, this one contains train quays. --> <StopPlaceType>railStation</StopPlaceType> <Weighting>preferredInterchange</Weighting> <quays> <Quay version="20210307" id="SE:050:Quay:4208"> <keyList> <KeyValue> <Key>stip.StopPoint.ExistsFromDate</Key> <Value>2021-03-07</Value> </KeyValue> <KeyValue> <Key>stip.StopPoint.ExistsUpToDate</Key> <Value>null</Value> </KeyValue> <KeyValue> <Key>local-journeypatternpoint-gid</Key> <Value>3:9025003078005005|1:9025001000005009|74:9025074005590020</Value> </KeyValue> <KeyValue> <Key>local-stoppoint-gid</Key> <Value>3:9022003780050005|1:9022001005006002|74:9022074005590020</Value> </KeyValue> <KeyValue> <Key>local-designation</Key> <Value>3:2|1:2|74:2</Value> </KeyValue> </keyList> <Name>Knivsta station</Name> <ShortName>Knivsta station</ShortName> <PrivateCode>4</PrivateCode> <Centroid> <Location> <Longitude>17.787219</Longitude> <Latitude>59.725067</Latitude> </Location> </Centroid> <PublicCode>2</PublicCode> </Quay> <Quay version="20210307" id="SE:050:Quay:4209"> <!-- ... --> </Quay> <Quay version="20220101" id="SE:050:Quay:135729"> <!-- ... --> </quays> </StopPlace> </stopPlaces> <tariffZones> <TariffZone version="20200615" id="SE:050:TariffZone:6-9081006200000981"> <!-- Noptis.Zone Type=TARIFFZO, in the form "SE:050:TariffZone:" followed by ThmNumber-Noptis.Zone.Gid --> <ValidBetween> <FromDate>2020-06-15T00:00:00</FromDate> <!-- Noptis.ExistsFromDate --> </ValidBetween> <Name>Jönköping</Name> <!-- Noptis.Zone.Name --> <ShortName/> <!-- Noptis.Zone.ShortName--> <PrivateCode>6:981</PrivateCode> <!-- THM:Noptis.Zone.Number--> </TariffZone> </tariffZones> </SiteFrame> </dataObjects> </PublicationDelivery>