Exploring NDS.Live Data: From Sample Analysis to KML Export
The NDS Association and Industry Standards
The NDS Association has been a pivotal force in the automotive industry, establishing robust standards for map data management and distribution that cater to the unique requirements of navigation, autonomous driving, and vehicle safety. Formed as a collaborative effort between automakers, suppliers, and other technology leaders, the NDS Association created the NDS Classic standard, which became widely adopted as the industry’s go-to format for in-car navigation data. NDS Classic enabled high-quality map rendering and functionality that laid the foundation for intelligent navigation systems across various OEMs.
With the rapid advancements in connected and autonomous vehicle technology, the demand for more dynamic, versatile, and real-time data formats grew. To address these needs, NDS evolved into NDS.Live, a modular and flexible format that supports real-time updates and multi-layered data views, accommodating diverse automotive use cases. Unlike NDS Classic, which is optimized for static data, NDS.Live introduces layered data structures and spatial containers, allowing map features to be continually updated and enabling complex, high-resolution data streams essential for applications like ADAS (Advanced Driver Assistance Systems) and automated driving.
Today, NDS.Live is widely accepted across the automotive sector and continues to gain traction as the backbone of next-generation automotive systems, delivering real-time and reliable map data essential for safety and user experience. The format is fully optimized for modularity and compatibility with cloud-based and on-board processing, making it an industry standard that is reshaping digital navigation and vehicle autonomy.
Zserio Framework for Data Structuring
NDS.Live data is structured and stored using the Zserio framework, an efficient serialization technology that enables compact and organized data management across multiple platforms. Zserio allows data definition in a custom language, generating source code for easy data handling in Java, Python, and C++, as well as documentation formats like XML and HTML. This multi-language support simplifies the integration of NDS.Live data into diverse applications, supporting robust data interactions and comprehensive documentation.
NDS.Live Package Builder complements Zserio, facilitating module bundling with versioning for deployment. With it, users can generate compatible packages in raw Zserio IDL, Python, Java, C++, and interactive HTML documentation, all accessible via the NDS.Live Package Builder. It verifies version compatibility among selected modules, supporting single and multi-version modes to help users build data structures for various Zserio schema versions.
Accessibility of NDS.Live
The NDS.Live Specification takes accessibility to a new level by offering open access not only to NDS Association members but to anyone who registers for a free account on the NDS.Live website. This inclusive approach allows more developers, researchers, and engineers to work with NDS.Live standards, enabling broader innovation and collaboration across the industry.
Beyond comprehensive documentation, NDS.Live provides tools and sample maps to illustrate real-world implementations and help developers understand the flexibility of the format. For instance, the HERE Evaluation Service offers a selection of real-world NDS.Live tiles centered around Munich, featuring attributes like functional road class, travel direction, and speed limits, all crucial for understanding road topology and operational parameters in NDS.Live.
In addition to Munich tiles, NDS.Live Islands offer unique environments to demonstrate specific data handling aspects:
These examples provide essential tools for developers and map creators to understand the NDS.Live ecosystem’s intricate details, from lane connectivity and markings to attribute management across tiles, enhancing the ability to build robust, high-precision navigation and ADAS systems.
MapViewer
The MapViewer tool, developed in collaboration with the NDS Association, serves as a powerful resource for viewing, analyzing, and interacting with NDS.Live data. MapViewer provides extensive visualization capabilities that make it suitable for various use cases, from simple data inspection to more complex spatial analyses.
MapViewer is accessible via Docker, with both amd64 and arm64 image support, making it straightforward to set up on various systems. It includes options for custom configurations through mapviewer.yaml files, allowing users to define data sources, connection settings, and caching preferences.
MapViewer also includes comparison tools, automated data access, and search functionalities that enhance workflows, helping users find specific map features and compare different data layers effectively.
领英推荐
Using the NDS.Live Package Builder for Java Code Generation and KML Generation
In some scenarios, analyzing and visualizing map data requires additional tools to effectively handle data transformation and output. This section provides a step-by-step guide to using the NDS.Live Package Builder to generate Java code, build a project, transform data, and save it in KML format for further analysis and visualization.
Step 1: Generating Java Code with NDS.Live Package Builder
Step 2: Setting Up the Java Project
Step 3: Implement Data Transformation Logic
Step 4: Exporting Data to KML for Visualization
private static void generateKMLFolder(Document doc, String folderName, Iterable<Line3D> lines, String styleUrl) {
logger.info("Generating KML folder: " + folderName);
Folder folder = doc.createAndAddFolder().withName(folderName).withOpen(true);
for (Line3D line : lines) {
Placemark placemark = folder.createAndAddPlacemark();
placemark.setStyleUrl("#" + styleUrl);
LineString lineStr = placemark.createAndSetLineString()
.withAltitudeMode(AltitudeMode.RELATIVE_TO_GROUND)
.withExtrude(false)
.withTessellate(true);
for (Position3D pos : line.getPositions()) {
NdsCoordinate ndsCoord = new NdsCoordinate(pos.getLongitude(), pos.getLatitude(), pos.getElevation());
WGS84Coordinate wgsCoord = ndsCoord.toWGS84Coordinate();
lineStr.addToCoordinates(wgsCoord.lon(), wgsCoord.lat(), wgsCoord.elevation() / 100.0);
}
}
logger.info("Folder " + folderName + " generated.");
}Project Sample for Island 1 Export
A complete project sample that exports Island 1 data to KML can be found in the repository: Island to KML Export.
Code and Project Structure
The project includes several utility classes and the main application logic, which demonstrates how to access NDS.Live data, process it, and output it as KML.
Project Structure:
This structured approach provides a comprehensive workflow for generating, transforming, and visualizing NDS.Live data, facilitating effective analysis with the support of Java code generation and KML integration.
Conclusion
NDS.Live has become significantly more accessible for technical specialists compared to its predecessor, NDS Classic. By providing open access to its specifications, tools, and sample datasets, the NDS Association has empowered developers, researchers, and engineers to actively engage with and innovate on top of NDS standards. This transformation has not only lowered the barrier to entry for using advanced mapping data but has also fostered a more collaborative environment for the exploration of new, real-time automotive applications.
The project outlined here serves as a foundation for transforming NDS.Live data into KML format, which is particularly useful for subsequent visualization and analysis in GIS tools. The project enables intermediate data processing, such as filtering or analysis, which is crucial for handling complex cases where data must be refined before final output.
Future enhancements could include support for additional NDS.Live modules, expanded attribute filtering.