Map Object Model (MOM) to HERE Map Content (HMC) Converter

Overview

This pipeline template creates topological segments and nodes from GeoJSON LineStrings and stores them as a topology-geometry layer in a HERE Map Content catalog. The input can be in standard GeoJSON or MapCreator-compatible MOM format. A series of checks and processing steps of the input geometry are performed. These include detection and removal of duplicated and quasi-zero-length geometries, consolidation of LineStrings into topological segments, detection of intersecting LineStrings introduced in the editing process and corresponding splitting to comply with the topological segment convention. Segment status information is propagated and stored in a custom “segment-status” layer in JSON format for use in map updates. The functionality of this version of the pipeline is restricted to doubly-digitized maps.

Structure

Legend:

This pipeline template operates as a Batch pipeline that reads data from Map Object Model MOM versioned input layers and publishes data to a topology-geometry versioned layer of a catalog using HERE Map Content (HMC) schema:

Schema
topology-geometry hrn:here:schema:::com.here.schema.rib:topology-geometry_v2

Prerequisites

• If you are planning to use an existing catalog/layer, please make sure that your output catalog is shared with the same GROUP that will be used to deploy this pipeline template.
• Confirm that your local credentials (~/.here/credentials.properties) are added to the same group.
• Confirm that the same credentials have access to the input catalog.
Input Data/Schema
• The user is expected to provide a Map Object Model (MOM)-based layer (zoom level 12) with a roadtopology layer. The content type of the MOM input catalog is expected to be GeoJSON
Layer Name Layer Type Partition Type Schema
roadtopology (configurable) Versioned HEREtile GeoJSON

Execution

In order to deploy and run this pipeline template, you will need the Wizard Deployer. The Wizard executes interactively, asking questions about the application, and expects the user to provide needed answers. Assuming you followed the Wizard's documentation instructions and set up the needed parameters beforehand, follow these steps:

1. Execute the script as ./wizard.sh
2. Follow the prompts and provide the needed answers

You can use an existing output layer or let the Wizard script create a new catalog/layer for you. If using an existing catalog, make sure it is shared with GROUP_ID which will be used for this deployment.

PLEASE NOTE: During deployment with Wizard script you will be asked to provide a bounding box of the area you wish to process by supplying four coordinates. You will also be asked to describe the size of the area by picking one of the presented options. Pick the one that best defines the size of your area (approximately). The answer to this question helps to define the number of workers(cores) required for processing and will affect the processing time.

Verification

Select the Pipelines tab in the Platform Portal. Verify that your pipeline was deployed and is running. Note the version of your output catalog. Once your pipeline has finished running, check the log for any exceptions or errors. Verify that data was written to your output catalog. The output catalog version should have been incremented. In the Platform Portal, select the topology-geometry layer in the catalog, select the Inspect tab, enter one of your input partition id's in the search box, select the partition in the map, and see that data is decoded and shown in the right-hand side of the user interface.

Scalability and Processing Time

For a given area, the following processing times have been observed for this pipeline. When using the Wizard Deployer, the following question is asked:

• Which size best describes the area you wish to process?

With one of four answers to choose from:

• Less than or around 100 sq km
• Less than or around 1,000 sq km (a City, large/dense metropolitan)
• Less than or around 350,000 sq km (a Country, similar to Germany)
• Less than or around 10,000,000 sq km (a large region, similar to the U.S. or Western Europe)

Based on your answer, supervisor and worker units, the number of workers, and spark.default.parallelism are allocated programmatically.

Area Processing Time
Less than or around 100 sq km ~2 minutes
Less than or around 1,000 sq km (a City, large/dense metropolitan) ~5 minutes
Less than or around 350,000 sq km (a Country, similar to Germany) ~13 minutes
Less than or around 10,000,000 sq km (a large region, similar to the U.S. or Western Europe) not timed