The openspoor package is intended to allow easy transformation between different geographical and topological systems commonly used in Dutch Railway

Overview

Openspoor

alt text

The openspoor package is intended to allow easy transformation between different geographical and topological systems commonly used in Dutch Railway. Its goal is to be publicly available and function as an open source package.

Currently the openspoor package allows the following transformations:

Type of input:

  • Point data

These transformations can be performed between the following systems:

Geographical systems:

  • WGS84 coordinate system (commonly known as GPS coordinates)
  • EPSG:28992 coordinate system (commonly known in the Netherlands as Rijksdriehoek)

Topological systems:

  • Geocode and geocode kilometrering
  • Spoortak and spoortak kilometrering (unavailable on switches)

Getting Started

Installation

Installation using anaconda

  • Clone the "openspoor" repository
    • pip install openspoor
  • create an environment:
    • conda create -n openspoorenv python==3.6.12
  • activate the environment:
    • conda activate openspoorenv
  • If you are installing on Windows OS with Anaconda, first install rtree and geopandas through anaconda with the commands:
    • conda install rtree==0.8.3 -y
    • conda install geopandas==0.6.1 -y
  • In the root directory of the repository, execute the command:
    • pip install -r requirements.txt
  • In the root directory of the repository, execute the command:
    • pip install .
  • In the root directory of the repository, execute the command:
    • python -m pytest
  • If all the test succeed, the openspoor package is ready to use and you are on the right "track"!

Demonstration notebook

In the future a notebook will be added that demonstrates the use of the openspoor package. For now one can take the code in the acceptance tests as example of how to use the package.

Dependencies

The transformations available in the openspoor package rely completely on data and API's made available at https://mapservices.prorail.nl/. Be aware of this dependency and specifically of the following possible issues:

  • The use of API's on mapservices.prorail.nl is changed
  • The output data of the mapservices API's is changed (with added, removed or missing columns for instance)

Furthermore mapservices.prorail.nl only provides current information about the topological systems used in Dutch Railways. As the topological systems tend to change with time, due to changing infrastructure and naming conventions, the current topological system is not necessarily sufficient to provide transformations on historical data. In the future we hope to add historical topological systems as part of the functionality of this package in such a way that it is available publicly.

Structure

The structure of the openspoor package is largely split in two categories.

MapservicesData

The MapservicesData classes use mapservices.prorail.nl API's to retrieve the necessary data to perform transformations. The essentially function as an interface with the topological systems used by ProRail.

  • PUICMapservices provides general data about railway tracks (spoor) and switches (wissel and kruisingbenen). This contains information regarding Geocode, geocodekilometrering, but also Spoortak identificatie.
  • SpoortakMapservices provides information about railway tracks concerning Spoortak identificatie and lokale kilometrering.

Transformers

The various transformers use the geopandas dataframes obtained by MapservicesData objects to add additional geographical or topological systems to a given geopandas input dataframe. The current transformers only function for geopandas dataframes containing Point data. The available transformers are:

  • TransformerCoordinatesToSpoor: transforms WGS84 or EPSG:28992 coordinates to spoortak and lokale kilomtrering as well as geocode and geocode kilometrering.
  • TransformerGeocodeToCoordinates: transforms geocode and geocode kilometrering to WGS84 or EPSG:28992 coordinates.
  • TransformerSpoorToCoordinates: transforms spoortak and lokale kilometrering to WGS84 or EPSG:28992 coordinates.

Release History

  • 0.1.0
    • The first proper release
    • ADD: transform point data between geographical systems.
  • 0.0.1
    • Work in progress

Contributing

The openspoor package stimulates every other person the contribute to the package. To do so:

  • Fork it
  • Create your feature branch (git checkout -b feature/fooBar)
  • Commit your changes (git commit -am 'Add some fooBar')
  • Push to the branch (git push origin feature/fooBar)
  • Create a new Pull Request with 3 obligated reviewers from the developement team.

You could also contribute by thinking of possible new features. The current backlog is:

  • Make the package available for the "spoor" industry.
InferPy: Deep Probabilistic Modeling with Tensorflow Made Easy

InferPy: Deep Probabilistic Modeling Made Easy InferPy is a high-level API for probabilistic modeling written in Python and capable of running on top

PGM-Lab 141 Oct 13, 2022
Pytorch port of Google Research's LEAF Audio paper

leaf-audio-pytorch Pytorch port of Google Research's LEAF Audio paper published at ICLR 2021. This port is not completely finished, but the Leaf() fro

Dennis Fedorishin 80 Oct 31, 2022
Scripts and outputs related to the paper Prediction of Adverse Biological Effects of Chemicals Using Knowledge Graph Embeddings.

Knowledge Graph Embeddings and Chemical Effect Prediction, 2020. Scripts and outputs related to the paper Prediction of Adverse Biological Effects of

Knowledge Graphs at the Norwegian Institute for Water Research 1 Nov 01, 2021
Job Assignment System by Real-time Emotion Detection

Emotion-Detection Job Assignment System by Real-time Emotion Detection Emotion is the essential role of facial expression and it could provide a lot o

1 Feb 08, 2022
For encoding a text longer than 512 tokens, for example 800. Set max_pos to 800 during both preprocessing and training.

LongScientificFormer For encoding a text longer than 512 tokens, for example 800. Set max_pos to 800 during both preprocessing and training. Some code

Athar Sefid 6 Nov 02, 2022
Example repository for custom C++/CUDA operators for TorchScript

Custom TorchScript Operators Example This repository contains examples for writing, compiling and using custom TorchScript operators. See here for the

106 Dec 14, 2022
A curated list of awesome neural radiance fields papers

Awesome Neural Radiance Fields A curated list of awesome neural radiance fields papers, inspired by awesome-computer-vision. How to submit a pull requ

Yen-Chen Lin 3.9k Dec 27, 2022
Tensorflow implementation of Fully Convolutional Networks for Semantic Segmentation

FCN.tensorflow Tensorflow implementation of Fully Convolutional Networks for Semantic Segmentation (FCNs). The implementation is largely based on the

Sarath Shekkizhar 1.3k Dec 25, 2022
This is a repository for a Semantic Segmentation inference API using the Gluoncv CV toolkit

BMW Semantic Segmentation GPU/CPU Inference API This is a repository for a Semantic Segmentation inference API using the Gluoncv CV toolkit. The train

BMW TechOffice MUNICH 56 Nov 24, 2022
Weighing Counts: Sequential Crowd Counting by Reinforcement Learning

LibraNet This repository includes the official implementation of LibraNet for crowd counting, presented in our paper: Weighing Counts: Sequential Crow

Hao Lu 18 Nov 05, 2022
Machine learning and Deep learning models, deploy on telegram (the best social media)

Semi Intelligent BOT The project involves : Classifying fake news Classifying objects such as aeroplane, automobile, bird, cat, deer, dog, frog, horse

MohammadReza Norouzi 5 Mar 06, 2022
From Canonical Correlation Analysis to Self-supervised Graph Neural Networks

Code for CCA-SSG model proposed in the NeurIPS 2021 paper From Canonical Correlation Analysis to Self-supervised Graph Neural Networks.

Hengrui Zhang 44 Nov 27, 2022
Implement slightly different caffe-segnet in tensorflow

Tensorflow-SegNet Implement slightly different (see below for detail) SegNet in tensorflow, successfully trained segnet-basic in CamVid dataset. Due t

Tseng Kuan Lun 364 Oct 27, 2022
NaturalCC is a sequence modeling toolkit that allows researchers and developers to train custom models

NaturalCC NaturalCC is a sequence modeling toolkit that allows researchers and developers to train custom models for many software engineering tasks,

159 Dec 28, 2022
Framework for estimating the structures and parameters of Bayesian networks (DAGs) at per-sample resolution

Sample-specific Bayesian Networks A framework for estimating the structures and parameters of Bayesian networks (DAGs) at per-sample or per-patient re

Caleb Ellington 1 Sep 23, 2022
Code for reproducing key results in the paper "InfoGAN: Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets"

Status: Archive (code is provided as-is, no updates expected) InfoGAN Code for reproducing key results in the paper InfoGAN: Interpretable Representat

OpenAI 1k Dec 19, 2022
ECAENet (TensorFlow and Keras)

ECAENet: EfficientNet with Efficient Channel Attention for Plant Species Recognition (SCI:Q3) (Journal of Intelligent & Fuzzy Systems)

4 Dec 22, 2022
Politecnico of Turin Thesis: "Implementation and Evaluation of an Educational Chatbot based on NLP Techniques"

THESIS_CAIRONE_FIORENTINO Politecnico of Turin Thesis: "Implementation and Evaluation of an Educational Chatbot based on NLP Techniques" GENERATE TOKE

cairone_fiorentino97 1 Dec 10, 2021
We will release the code of "ConTNet: Why not use convolution and transformer at the same time?" in this repo

ConTNet Introduction ConTNet (Convlution-Tranformer Network) is proposed mainly in response to the following two issues: (1) ConvNets lack a large rec

93 Nov 08, 2022
Static Features Classifier - A static features classifier for Point-Could clusters using an Attention-RNN model

Static Features Classifier This is a static features classifier for Point-Could

ABDALKARIM MOHTASIB 1 Jan 25, 2022