Skip to content

Isochrone plugin implementation #11437

@dsuren1

Description

@dsuren1

Introduction

The goal of this tool is to enable users to compute and visualize isochrones and isodistances using both proprietary and open-source APIs. The solution is intended to provide a user-friendly interface, configuration options, and compatibility with MapStore’s existing geospatial tools.

Technical Solution

The plugin will be implemented as a MapStore Core plugin, and a list of child core plugins and extensions implementations for the different APIs.

  • Generic host: This component provides the generic functionality and will host the client component that implements the specific APis.
  • GrapHopper: This component implements the GraphHopper Isochrones API.

The plugin implements shared functionality and abstractions that specific components, like the one for GrapHopper, implement and extend. In the future additional components (services APIs) can be added to the plugin.

Specific configurations for child components will be available through the dedicated configuration section or the plugin configuration inside map viewers.

Where requested / available, a configuration key will be provided to add an API Key for service authentication.

Isochrone/Isodistance Core plugin

This plugin implementation serves as the main container and provides core shared functionalities, including:

  • An input field to retrieve a point location, either by searching or selecting a point on the map
  • An input field for selecting time or distance values
  • Business logic to support the integration of isochrone / isodistance provider components
  • Tools to initiate the isochrone / isodistance request workflow
  • Management of generated runs, with the following available actions:
  • Edit: Modify run parameters and generate a new result upon saving
  • Delete: Remove the selected run from the list of saved runs
  • Save as Layer: Convert the current run into a MapStore vector layer embedded in the map configuration
  • Export: Export the selected run as a GeoJSON file
  • Visibility: Toggle the visibility of the generated isochrone layer on the map
  • Opacity: Adjust the opacity of the generated isochrone layer on the map

Note

  • Runs are temporarily saved in the panel. After refreshing or changing the page runs will be reset. Only a run converted to layer will be persisted >inside the map
  • Some theming aspects proposed for the panel in the mockup could be different in the final delivery to follow the overall MapStore theme

GraphHopper Provider

This component is an isochrone / isodistance provider that implements the GraphHopper Isochrone API, which is an open-source implementation offering free and commercial cloud services, as well as the option to set up an on-premise instance.
The provider functions as a child component of the main Isochrone plugin and includes the following elements:

  • A React component capable of registering the API. This component reads and utilizes selected parameters from the main Isochrone plugin and returns a vector layer object compatible with MapStore for each Isochrone / isodistance request
  • Selection of transportation mode and restrictions, according to the features implemented by the GraphHopper Routing Profiles
  • Configurable API Key

Acceptance Criteria

  • Administrators can configure the Isochrones plugin for a MapViewer
  • The selectable plugin will show the generic "Isochrones and Isodistances" label, and will automatically select the GraphHopper plugin being the only implementation currently available. In the future, when multiple services will be available, the user will select the specific sub-plugin
  • Final users will be able to activate the tool and perform the expected functionas

MockUps

The following figures represent preliminary mockups of the main components. These mockups illustrate how available API options are exposed through the plugin interface. They are intended to serve as visual guides and reference configurations that can be adapted and extended during the implementation phase.
Furthermore, most of the options and parameters shown in the mockups will be configurable via the plugin configuration. This ensures flexibility and allows future customization or integration of alternative data providers, without requiring changes to the core plugin logic.

  • Fig.1: Mockup of the generic Isochrone Component

Fig.1
Image

Metadata

Metadata

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions