The what and the why
What is Cassini
Cassini is a software that generates highly accurate topographic maps from LiDAR (an acronym of “light detection and ranging” or “laser imaging, detection, and ranging”) is a method for determining ranges by targeting an object or a surface with a laser and measuring the time for the reflected light to return to the receiver. The shapefile format is a geospatial vector data format for geographic information system (GIS) software. It is developed and regulated by Esri as a mostly open specification for data interoperability among Esri and other GIS software products. The shapefile format can spatially describe vector features: points, lines, and polygons, representing, for example, water wells, rivers, and lakes. Each item usually has attributes that describe it, such as name or temperature. The International Specification for Orienteering Maps (ISOM) sets standardized guidelines for creating consistent and accurate orienteering maps. It defines map scales, symbols, and colors to ensure clarity and fairness in orienteering competitions.
This project is heavily inspired by Karttapullautin is an application that is designed to generate highly accurate maps out of LiDAR data input files. Built using the Rust programming language, Karttapullautin takes advantage of Rust’s performance to deliver fast results on Linux, Mac and Windows. PDAL is Point Data Abstraction Library. It is a C/C++ open source library and applications for translating and processing point cloud data. It is not limited to LiDAR data, although the focus and impetus for many of the tools in the library have their origins in LiDAR. GDAL is a translator library for raster and vector geospatial data formats that is released under an MIT style Open Source License by the Open Source Geospatial Foundation. As a library, it presents a single raster abstract data model and single vector abstract data model to the calling application for all supported formats. It also comes with a variety of useful command line utilities for data translation and processing. LiDAR (an acronym of “light detection and ranging” or “laser imaging, detection, and ranging”) is a method for determining ranges by targeting an object or a surface with a laser and measuring the time for the reflected light to return to the receiver.
Why does Cassini exist
Cassini is developped to be the main rendering engine for the Mapant.fr project. The project goal is to generate the most precise topographic map of France out of freely available LiDAR (an acronym of “light detection and ranging” or “laser imaging, detection, and ranging”) is a method for determining ranges by targeting an object or a surface with a laser and measuring the time for the reflected light to return to the receiver. The shapefile format is a geospatial vector data format for geographic information system (GIS) software. It is developed and regulated by Esri as a mostly open specification for data interoperability among Esri and other GIS software products. The shapefile format can spatially describe vector features: points, lines, and polygons, representing, for example, water wells, rivers, and lakes. Each item usually has attributes that describe it, such as name or temperature.
- Mapant.fi for Finland
- Mapant.no for Norway
- Gokartor for Sweden
- Mapant.es for Spain
- Mapant.ch for Switzerland
- Mapant.orienteering.lu for Luxembourg
All of these projects somehow used Jarkko Ryyppö’s awsome Karttapullautin original Perl program to generate the map (at the exeption of Mapant.ch that used the Ocad is a software package for mapping or creating circuits on IOF-standard maps, i.e. for orienteering. There are both free and paid versions of the software, offering improved ergonomics and better technical rendering. Karttapullautin is an application that is designed to generate highly accurate maps out of LiDAR data input files. Built using the Rust programming language, Karttapullautin takes advantage of Rust’s performance to deliver fast results on Linux, Mac and Windows. Rust is a general-purpose programming language emphasizing performance, type safety, and concurrency. It enforces memory safety, meaning that all references point to valid memory, without a garbage collector. To simultaneously enforce memory safety and prevent data races, its “borrow checker” tracks the object lifetime of all references in a program during compiling.
However, there is some reasons that pushed me to develop my own rendering engine for Mapant.fr.
The point cloud reading bottleneck
A LiDAR (an acronym of “light detection and ranging” or “laser imaging, detection, and ranging”) is a method for determining ranges by targeting an object or a surface with a laser and measuring the time for the reflected light to return to the receiver. Karttapullautin is an application that is designed to generate highly accurate maps out of LiDAR data input files. Built using the Rust programming language, Karttapullautin takes advantage of Rust’s performance to deliver fast results on Linux, Mac and Windows. C++ is a powerful, high-performance programming language widely used for system/software development, game programming, and real-time simulations. It extends the C language by adding object-oriented features, allowing developers to create complex applications with reusable code. Known for its efficiency and control over system resources, C++ is favored in industries where performance is critical. It remains a cornerstone language in computer science, offering both low-level memory manipulation and high-level abstractions. PDAL is Point Data Abstraction Library. It is a C/C++ open source library and applications for translating and processing point cloud data. It is not limited to LiDAR data, although the focus and impetus for many of the tools in the library have their origins in LiDAR. LAStools is a highly efficient software library for processing LiDAR (Light Detection and Ranging) data, widely used in geospatial analysis and remote sensing. It provides a comprehensive set of tools for tasks such as data conversion, filtering, and classification, enabling users to handle large point clouds with speed and precision.las
Rust library to do so. For some reason (that I ignore), this library performs worst than the
The edges artifacts problem
The surface area of France is 551,695 square kilometers. This means that there is 551,695 one kilometer large tiles to process to generate the Mapant.fr map. This is way too much work for one computer, so it should be distributed on several machines.
To easily distribute the computing, a worker node should be able to render one tile after another independently. But this is easier said than done because of the edges artifacts problem.
On the right border of the LiDAR (an acronym of “light detection and ranging” or “laser imaging, detection, and ranging”) is a method for determining ranges by targeting an object or a surface with a laser and measuring the time for the reflected light to return to the receiver. In cartography, a contour line (often just called a “contour”) joins points of equal elevation (height) above a given level, such as mean sea level. A contour map is a map illustrated with contour lines, for example a topographic map, which thus shows valleys and hills, and the steepness or gentleness of slopes. In cartography, a contour line (often just called a “contour”) joins points of equal elevation (height) above a given level, such as mean sea level. A contour map is a map illustrated with contour lines, for example a topographic map, which thus shows valleys and hills, and the steepness or gentleness of slopes. LiDAR (an acronym of “light detection and ranging” or “laser imaging, detection, and ranging”) is a method for determining ranges by targeting an object or a surface with a laser and measuring the time for the reflected light to return to the receiver.
To remedy this problem, a classic approach is to add a buffer to every tiles:
- You download the 8 adjacent
LiDAR tiles.LiDAR (an acronym of “light detection and ranging” or “laser imaging, detection, and ranging”) is a method for determining ranges by targeting an object or a surface with a laser and measuring the time for the reflected light to return to the receiver.
- You generate a new
LiDAR tile with a 200 meters buffer all around it.LiDAR (an acronym of “light detection and ranging” or “laser imaging, detection, and ranging”) is a method for determining ranges by targeting an object or a surface with a laser and measuring the time for the reflected light to return to the receiver.
- You generate the map for this tile (for example with
Karttapullautin ).Karttapullautin is an application that is designed to generate highly accurate maps out of LiDAR data input files. Built using the Rust programming language, Karttapullautin takes advantage of Rust’s performance to deliver fast results on Linux, Mac and Windows.
- You crop the resulting image to the original tile extent
This way the artifacts are cropped away from the resulting image. This technique has the advantage of being simple. However, it is very inefficient. The problem is that:
- All the points of the 9 tiles (the targeted tile and the 8 adjacent ones) have to be read to create the buffered tile.
- Then, all the points from the buffered tile have to be read again during the map generation.
As mentioned in the previous paragraph, reading LiDAR (an acronym of “light detection and ranging” or “laser imaging, detection, and ranging”) is a method for determining ranges by targeting an object or a surface with a laser and measuring the time for the reflected light to return to the receiver.
The Cassini approach
Cassini is designed to adress these two problems. To improve the point cloud reading speed, it simply uses the PDAL is Point Data Abstraction Library. It is a C/C++ open source library and applications for translating and processing point cloud data. It is not limited to LiDAR data, although the focus and impetus for many of the tools in the library have their origins in LiDAR. LiDAR (an acronym of “light detection and ranging” or “laser imaging, detection, and ranging”) is a method for determining ranges by targeting an object or a surface with a laser and measuring the time for the reflected light to return to the receiver.
To solve the edges artifacts problem, it uses a much more efficient approach than the one described above. First, all LiDAR (an acronym of “light detection and ranging” or “laser imaging, detection, and ranging”) is a method for determining ranges by targeting an object or a surface with a laser and measuring the time for the reflected light to return to the receiver. PDAL is Point Data Abstraction Library. It is a C/C++ open source library and applications for translating and processing point cloud data. It is not limited to LiDAR data, although the focus and impetus for many of the tools in the library have their origins in LiDAR.
- A
Digital Elevation Model , representing the terrain elevationA Digital Elevation Model (DEM) is a 3D representation of a terrain’s surface, created from elevation data collected at specific intervals. It is used in various applications like geographic information systems (GIS), modeling, and simulation to analyze and visualize topographic features.
- A set of vegetation density
rasters (one for low vegetation, and one for high vegetation)In geomatics, a raster is a grid-based data structure used to represent spatial information, where each cell or pixel holds a value corresponding to a specific geographic attribute, such as elevation, temperature, or land cover. Rasters are commonly used in remote sensing, satellite imagery, and geographic information systems (GIS) to store and analyze continuous data over a defined area. This format is ideal for modeling and processing spatial phenomena that vary smoothly across a landscape.
These In geomatics, a raster is a grid-based data structure used to represent spatial information, where each cell or pixel holds a value corresponding to a specific geographic attribute, such as elevation, temperature, or land cover. Rasters are commonly used in remote sensing, satellite imagery, and geographic information systems (GIS) to store and analyze continuous data over a defined area. This format is ideal for modeling and processing spatial phenomena that vary smoothly across a landscape.
- The tile’s extent area is clipped to one meter by one meter cells.
- A value is attributed to each of these cells depending only on the points that it contains.
- Thus the value does not depend on the neighborhood of the cell.
In a second step, Cassini generates the final map from these In geomatics, a raster is a grid-based data structure used to represent spatial information, where each cell or pixel holds a value corresponding to a specific geographic attribute, such as elevation, temperature, or land cover. Rasters are commonly used in remote sensing, satellite imagery, and geographic information systems (GIS) to store and analyze continuous data over a defined area. This format is ideal for modeling and processing spatial phenomena that vary smoothly across a landscape. A Digital Elevation Model (DEM) is a 3D representation of a terrain’s surface, created from elevation data collected at specific intervals. It is used in various applications like geographic information systems (GIS), modeling, and simulation to analyze and visualize topographic features. In cartography, a contour line (often just called a “contour”) joins points of equal elevation (height) above a given level, such as mean sea level. A contour map is a map illustrated with contour lines, for example a topographic map, which thus shows valleys and hills, and the steepness or gentleness of slopes. In geomatics, a raster is a grid-based data structure used to represent spatial information, where each cell or pixel holds a value corresponding to a specific geographic attribute, such as elevation, temperature, or land cover. Rasters are commonly used in remote sensing, satellite imagery, and geographic information systems (GIS) to store and analyze continuous data over a defined area. This format is ideal for modeling and processing spatial phenomena that vary smoothly across a landscape.
To prevent edges artifacts, a buffer is added to these In geomatics, a raster is a grid-based data structure used to represent spatial information, where each cell or pixel holds a value corresponding to a specific geographic attribute, such as elevation, temperature, or land cover. Rasters are commonly used in remote sensing, satellite imagery, and geographic information systems (GIS) to store and analyze continuous data over a defined area. This format is ideal for modeling and processing spatial phenomena that vary smoothly across a landscape. In geomatics, a raster is a grid-based data structure used to represent spatial information, where each cell or pixel holds a value corresponding to a specific geographic attribute, such as elevation, temperature, or land cover. Rasters are commonly used in remote sensing, satellite imagery, and geographic information systems (GIS) to store and analyze continuous data over a defined area. This format is ideal for modeling and processing spatial phenomena that vary smoothly across a landscape. LiDAR (an acronym of “light detection and ranging” or “laser imaging, detection, and ranging”) is a method for determining ranges by targeting an object or a surface with a laser and measuring the time for the reflected light to return to the receiver. In geomatics, a raster is a grid-based data structure used to represent spatial information, where each cell or pixel holds a value corresponding to a specific geographic attribute, such as elevation, temperature, or land cover. Rasters are commonly used in remote sensing, satellite imagery, and geographic information systems (GIS) to store and analyze continuous data over a defined area. This format is ideal for modeling and processing spatial phenomena that vary smoothly across a landscape. LiDAR (an acronym of “light detection and ranging” or “laser imaging, detection, and ranging”) is a method for determining ranges by targeting an object or a surface with a laser and measuring the time for the reflected light to return to the receiver.
With this approach, each LiDAR (an acronym of “light detection and ranging” or “laser imaging, detection, and ranging”) is a method for determining ranges by targeting an object or a surface with a laser and measuring the time for the reflected light to return to the receiver. In geomatics, a raster is a grid-based data structure used to represent spatial information, where each cell or pixel holds a value corresponding to a specific geographic attribute, such as elevation, temperature, or land cover. Rasters are commonly used in remote sensing, satellite imagery, and geographic information systems (GIS) to store and analyze continuous data over a defined area. This format is ideal for modeling and processing spatial phenomena that vary smoothly across a landscape.
- The points from the processed tile and the 8 adjacent ones are read to generate a
LiDAR tile with a buffer.LiDAR (an acronym of “light detection and ranging” or “laser imaging, detection, and ranging”) is a method for determining ranges by targeting an object or a surface with a laser and measuring the time for the reflected light to return to the receiver.
- The points of this
LiDAR tile are then read once again to generate the map.LiDAR (an acronym of “light detection and ranging” or “laser imaging, detection, and ranging”) is a method for determining ranges by targeting an object or a surface with a laser and measuring the time for the reflected light to return to the receiver.
The tradeoffs
As mentioned, Cassini uses the PDAL is Point Data Abstraction Library. It is a C/C++ open source library and applications for translating and processing point cloud data. It is not limited to LiDAR data, although the focus and impetus for many of the tools in the library have their origins in LiDAR. GDAL is a translator library for raster and vector geospatial data formats that is released under an MIT style Open Source License by the Open Source Geospatial Foundation. As a library, it presents a single raster abstract data model and single vector abstract data model to the calling application for all supported formats. It also comes with a variety of useful command line utilities for data translation and processing. LiDAR (an acronym of “light detection and ranging” or “laser imaging, detection, and ranging”) is a method for determining ranges by targeting an object or a surface with a laser and measuring the time for the reflected light to return to the receiver. In geomatics, a raster is a grid-based data structure used to represent spatial information, where each cell or pixel holds a value corresponding to a specific geographic attribute, such as elevation, temperature, or land cover. Rasters are commonly used in remote sensing, satellite imagery, and geographic information systems (GIS) to store and analyze continuous data over a defined area. This format is ideal for modeling and processing spatial phenomena that vary smoothly across a landscape. Rust is a general-purpose programming language emphasizing performance, type safety, and concurrency. It enforces memory safety, meaning that all references point to valid memory, without a garbage collector. To simultaneously enforce memory safety and prevent data races, its “borrow checker” tracks the object lifetime of all references in a program during compiling. PDAL is Point Data Abstraction Library. It is a C/C++ open source library and applications for translating and processing point cloud data. It is not limited to LiDAR data, although the focus and impetus for many of the tools in the library have their origins in LiDAR. GDAL is a translator library for raster and vector geospatial data formats that is released under an MIT style Open Source License by the Open Source Geospatial Foundation. As a library, it presents a single raster abstract data model and single vector abstract data model to the calling application for all supported formats. It also comes with a variety of useful command line utilities for data translation and processing. Karttapullautin is an application that is designed to generate highly accurate maps out of LiDAR data input files. Built using the Rust programming language, Karttapullautin takes advantage of Rust’s performance to deliver fast results on Linux, Mac and Windows.
Alternatives to Cassini
Karttapullautin
Karttapullautin is an application that is designed to generate highly accurate maps out of LiDAR data input files. Built using the Rust programming language, Karttapullautin takes advantage of Rust’s performance to deliver fast results on Linux, Mac and Windows. LiDAR (an acronym of “light detection and ranging” or “laser imaging, detection, and ranging”) is a method for determining ranges by targeting an object or a surface with a laser and measuring the time for the reflected light to return to the receiver. The shapefile format is a geospatial vector data format for geographic information system (GIS) software. It is developed and regulated by Esri as a mostly open specification for data interoperability among Esri and other GIS software products. The shapefile format can spatially describe vector features: points, lines, and polygons, representing, for example, water wells, rivers, and lakes. Each item usually has attributes that describe it, such as name or temperature. Perl is a versatile, high-level programming language known for its strengths in text processing and scripting. Often described as the “Swiss Army knife” of programming, Perl excels at handling regular expressions, file manipulation, and rapid prototyping. It is widely used in system administration, web development, and bioinformatics for its flexibility and powerful built-in features. Perl’s motto, “There’s more than one way to do it,” reflects its adaptability and the creative freedom it offers developers. Rust is a general-purpose programming language emphasizing performance, type safety, and concurrency. It enforces memory safety, meaning that all references point to valid memory, without a garbage collector. To simultaneously enforce memory safety and prevent data races, its “borrow checker” tracks the object lifetime of all references in a program during compiling. A Command-Line Interface (CLI) is a text-based interface used to interact with a computer’s operating system or software by typing commands. It provides users with precise control over system functions, allowing for automation, script execution, and advanced configurations that might not be available through graphical interfaces. CLIs are favored by power users and developers for their efficiency and the ability to perform complex tasks quickly. Despite their minimalistic appearance, they offer a powerful way to manage and manipulate systems and applications.
Terje Mathisen’s pipeline
In 2013, Terje Mathisen wrote an article about a pipeline he developed to generate maps from LiDAR (an acronym of “light detection and ranging” or “laser imaging, detection, and ranging”) is a method for determining ranges by targeting an object or a surface with a laser and measuring the time for the reflected light to return to the receiver. LAStools is a highly efficient software library for processing LiDAR (Light Detection and Ranging) data, widely used in geospatial analysis and remote sensing. It provides a comprehensive set of tools for tasks such as data conversion, filtering, and classification, enabling users to handle large point clouds with speed and precision. LiDAR (an acronym of “light detection and ranging” or “laser imaging, detection, and ranging”) is a method for determining ranges by targeting an object or a surface with a laser and measuring the time for the reflected light to return to the receiver. LAStools is a highly efficient software library for processing LiDAR (Light Detection and Ranging) data, widely used in geospatial analysis and remote sensing. It provides a comprehensive set of tools for tasks such as data conversion, filtering, and classification, enabling users to handle large point clouds with speed and precision.
OCAD
The Ocad is a software package for mapping or creating circuits on IOF-standard maps, i.e. for orienteering. There are both free and paid versions of the software, offering improved ergonomics and better technical rendering. LiDAR (an acronym of “light detection and ranging” or “laser imaging, detection, and ranging”) is a method for determining ranges by targeting an object or a surface with a laser and measuring the time for the reflected light to return to the receiver. Ocad is a software package for mapping or creating circuits on IOF-standard maps, i.e. for orienteering. There are both free and paid versions of the software, offering improved ergonomics and better technical rendering. A graphical user interface, or GUI, is a form of user interface that allows users to interact with electronic devices through graphical icons and visual indicators such as secondary notation. In many applications, GUIs are used instead of text-based UIs, which are based on typed command labels or text navigation. GUIs were introduced in reaction to the perceived steep learning curve of command-line interfaces (CLIs), which require commands to be typed on a computer keyboard. Ocad is a software package for mapping or creating circuits on IOF-standard maps, i.e. for orienteering. There are both free and paid versions of the software, offering improved ergonomics and better technical rendering.