Skip to content

EPIP (EU) Netex profile support #3640

@sjthiessen

Description

@sjthiessen

We're trying to deploy an OTP instance with germany-wide OSM and NeTEx data (EU-Profile) and are having some issues.

Expected behavior

The NeTEx import should finish without NullPointerException and produce a routable graph.

Observed behavior

A Major and several minor compatibility issues which all caused NullPointerExceptions during the import. This raised some questions on how to tackle these issues in the best way with regard to the given dataset and the EU-profile specification.

Note: Whenever I speak of the EU-Profile (EPIP) specification, I refer to the latest draft (2019-06) I found on the internet, since I don’t yet have access to the final document.

StopAssignments without QuayRef:

In our Dataset, the PassengerStopAssignment elements are lacking QuayRef and only provide StopPlaceRef. This seems to comply with the EU-Profile, since QuayRef are not required by the Profile. On the other hand, those Quays are modeled in the StopPlace elements, but never referenced. I think this is an issue with the dataset and hope that the data supplier is able to fix it. But I can imagine that we still might have lines without QuayRef due to less detailed data.

Since the Netex-Import seems to rely heavily on QuayRef being set, would it be feasible to support datasets without those?

RepresentedByGroupRef

Inside the RouteMapper.java, the method findOrCreateAuthority expects the RepresentedByGroupRef field to be set, which our dataset doesn’t provide. I can’t find it in the EU-Profile either, but an AuthorityRef is always set so I assume its safe to use this.
Is this correct?

GroupOfStopPlaces without Name and Centroid

OTP expects the Name and Centroid fields to be set for the GroupOfStationsMapper to work, but the EU-Profile doesn’t list them as part of GroupOfStopPlaces at all.

How relevant are these for OTPs functionality?

Minor Issues

I think these are not as relevant and just caused by poor modeling of certain lines but wanted to list them nevertheless.

  • ServiceCalendarFrame without dayType
  • TimeTableFrame without vehicleJourney

Version of OTP used (exact commit hash or JAR name)

90e8f89
plus some minor changes to locate further NullPointerExceptions I made here:
HBTGmbH@c6e1011

Data sets in use (links to GTFS and OSM PBF files)

NeTEx-Dataset
Note: The ZIP-File seems to be encoded in ISO-8859-1, so I had to specify the encoding in ZipFileDataSource.java

Command line used to start OTP

Intellij Run Configuration with following CLI arguments:
--loadStreet --save ....\otp2-data\src\main\resources

Router config and graph build config JSON

build-config:

{
  "dataImportReport": true,
  "extraEdgesStopPlatformLink": true,
  "stationTransfers": true,
  "netex": {
    "groupFilePattern": "(.*)\\/.*\\.xml"
  }
}

Steps to reproduce the problem

Run NeTEx import with the dataset linked above

Metadata

Metadata

Assignees

No one assigned

    Labels

    +NeTExThis issue is related to the Netex model/import.

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions