Import/Catalogue/Chargy Import Luxembourg

From OpenStreetMap Wiki
Jump to: navigation, search


Chargy Import Luxembourg is an import of charging stations available to the public in Luxembourg. The import is currently at phase 3.

Goals

As of 14 March 2018, there are 24 amenity=charging_station POIs in Luxembourg. The dataset provided by Chargy currently has about 206 charging stations (08 November 2018), and is expected to grow to 800 by 2020.

Schedule

Phase 1 - Planning

Goal: Get community approval, write documentation and tools, prepare data.

Timeframe: Early to mid-March 2018

Status: Done

Phase 2 - Import

Goal: First import of data, verification of all existing amenity=charging_station in Luxembourg.

Timeframe: mid-March 2018

Status: Done, https://www.openstreetmap.org/changeset/57226075 for the initial import.

Phase 3 - Maintenance

Goal: Update data.

Timeframe: TBD

Import Data

Background

The data source can be found on the Luxembourgish Data Platform.

Data source site: https://data.public.lu/fr/datasets/bornes-de-chargement-publiques-pour-voitures-electriques/
Data license: https://creativecommons.org/publicdomain/zero/1.0/
Type of license (if applicable): CC0 1.0 Universal (CC0 1.0)
ODbL Compliance verified: yes

Import Type

The import will be a recurring import, validation before uploading will always be done manually (c.f. Conflation).

Data will be imported using JOSM.

Data Preparation

Data Description

It is important to understand the difference between charging stations and charging points. A charging station can be compared to a fuel station, while a charging point can be compared to a fuel pump. The provided dataset contains coordinates for charging stations, not charging points. Furthermore, only the charging points have unique Ids, however those do not match the Id found on the back of the physical machine. Charging stations don’t have ids in the dataset, only name, coordinates and address.

Tagging Plans

Here is a sample entry from the dataset:

<Placemark>
    <name>PLACEHOLDER_NAME</name>
    <visibility>1</visibility>
    <address>PLACEHOLDER_ADDRESS</address>
    <description>&lt;span&gt;&lt;b&gt;2&lt;/b&gt; connectors with 22kW and Type 2 connector&lt;span&gt;&lt;br/&gt;&lt;span&gt;&lt;b&gt;2&lt;/b&gt; available connectors&lt;span&gt;&lt;br/&gt;&lt;span&gt;&lt;b&gt;0&lt;/b&gt; occupied connectors&lt;span&gt;&lt;br/&gt;</description>
    <styleUrl>#AVAILABLE</styleUrl>
    <ExtendedData>
        <Data name="CPnum">
            <displayName>Number of chargingpoints</displayName>
            <value>2</value>
        </Data>
        <Data name="chargingdevice">
            <displayName>Charging device</displayName>
            <value>{"id":PLACEHOLDER_ID,"name":"CP5007","numberOfConnectors":2,"connectors":[{"id":51566,"name":"CP5007 - 1","maxchspeed":22.0,"connector":1,"description":"AVAILABLE"},{"id":51603,"name":"CP5007 - 2","maxchspeed":22.0,"connector":2,"description":"AVAILABLE"}]}</value>
        </Data>
    </ExtendedData>
    <Point>
        <altitudeMode>clampToGround</altitudeMode>
        <coordinates>PLACEHOLDER_COORDINATE_1,PLACEHOLDER_COORDINATE_2</coordinates>
    </Point>
</Placemark>

Here is the mapping to OSM tags:

OSM Key OSM Value Description
amenity charging_station
authentication:membership_card yes
brand Chargy
capacity 2 Count of available sockets on this location.
car yes
devices 1 Count of physical stations on this location.
name PLACEHOLDER_NAME
opening_hours 24/7
operator Chargy
phone PLACEHOLDER_PHONE
socket:type2 2 Parsed from the description-content, even though this value is standard for all Chargy stations.
socket:type2:output 22kW Parsed from the description-content, even though this value is standard for all Chargy stations.

Changeset Tags

Data Transformation

To transform the source data into a more appropriate format, we use ChargingStations2GeoJson, a Python 3 script written specifically for this purpose. Even though some values are standardized across all charging stations, the script still checks the data and makes sure it contains the appropriate texts. Logging allows us to find "weird" entries, and if something looks odd, we skip it (and log it, for manual verification). We purposefully chose a very defensive approach, as to not import broken data.

Data Transformation Results

{
   "type":"FeatureCollection",
   "features":[
      {
         "type":"Feature",
         "properties":{
            "authentication:membership_card":"yes",
            "operator":"Chargy",
            "socket:type2":2,
            "opening_hours":"24/7",
            "socket:type2:output":"22kW",
            "capacity":2,
            "devices":1,
            "name":"PLACEHOLDER_NAME",
            "brand":"Chargy",
            "phone":"PLACEHOLDER_PHONE",
            "amenity":"charging_station",
            "car":"yes"
         },
         "geometry":{
            "type":"Point",
            "coordinates":[
               PLACEHOLDER_COORDINATE_1,
               PLACEHOLDER_COORDINATE_2
            ]
         }
      }
   ]
}

Data Merge Workflow

Team Approach

Currently this import is being organized by User icon 2.svgdmlu (on osm), with the support of #osm-fr and talk-lu.

References

The Page amenity=charging_station will be used as a reference.

Link to talk-lu announcement: https://lists.openstreetmap.org/pipermail/talk-lu/2018-March/000189.html

Link to imports announcement: https://lists.openstreetmap.org/pipermail/imports/2018-March/005434.html

Workflow

  • Download the dataset
  • Run the conversion script making sure to read the logging output for additional information
  • Process the data using OSM Conflator (The next steps could be simplified by using cf_audit)
  • Load the resulting changes file into Geojson.io for a graphical visualisation of changes
  • Load the resulting OSM file into JOSM, making sure to have installed the GeoJSON plugins
  • Manually validate each POI
  • Set the appropriate changeset tags, then upload data using a dedicated account
  • If something goes wrong, the whole changeset will be reverted in JOSM.

Conflation

Conflation is handled by OSM Conflator. The conflation profile is also available on the ChargingStations2GeoJson repository. The resulting changes are manually validated in JOSM.

As the dataset regroups multiple charging points as one charging station, in theory it could be possible that someone has "separated" one of our POI into multiple POI with more specific information, that's why it's important to look at the existing data.

QA

Why did you remove ref:chargy=*?

First of all, the value is not used in the conflation process. Additionally, the ref:chargy=* for a charging station is calculated by concatenating the individual charging point ids. As new charging points are added or removed, this ID will be modified and does therefore not identify an individual charging station.