Geometry Referential, a package to convert coordinates, formats and altitudes.
2021-09-30, 10:30–11:00, Humahuaca

As the FOSS community grows, the number of packages we can use when creating modern web apps also grows. This is true also for spatial related packages, however this richness comes with its own difficulties: the way coordinate systems are managed is not necessarily consistent among software packages. When creating complex spatial web-based apps, we may encounter difficulties dealing with coordinates while using different packages. Developers may become aware of this problem when converting coordinates between reference systems.

For some time, developers at Sterblue faced several coordinate transformation issues while creating its comprehensive web platform. Sterblue platform is a central platform for infrastructure inspections that uses many different packages and technologies. The main programming languages are Javascript and Typescript.

Initially PROJ4JS was the preferred package to handle coordinate transformations but problems started to arise when performing format and coordinate transformations using different altitude systems. The problems became worse with the need of using local and geospatial coordinate systems.

Local coordinate systems describe a local coordinate space and are mainly used on computer graphics, for example when modelling a wind turbine 3d model. Local coordinates are not geospatial systems but their coordinates can be transformed into geospatial coordinates, for example while transforming points from a wind turbine 3d model into a geospatial coordinate system, e.g., WGS84.

To overcome this, we developed a tool that can handle multiple format and coordinate transformations as well as local coordinate system support. We named this package Geometry Referential and we provide it as FOSS.

This package was created to provide a universal way of converting coordinates between systems, formats and altitude all in the same package using one standard way. To convert coordinates between geospatial coordinate systems, it uses PROJ4JS internally, the aim is not to replace PROJ4JS but instead to extend its functionality with format; altitude and local systems conversion, all at once.

This presentation will describe what Geometry Referential is and how it can be used.

Many FOSS packages or libraries deal with spatial data and coordinates. Each package has its preferable format of imputing coordinates. For example, Cesium support CesiumCartographic or CesiumCartesian2/3/4; Three.js support ThreeVector2/3/4 whereas OpenLayers support coordinates in an array form; and these are only a few examples.
As these packages become the building blocks of web apps, communication between them may not be as straightforward and is often error prone. In addition to coordinate transformation tools, developers may also need internal mechanisms for converting coordinates between the different formats supported by those different packages. On top of that we may encounter other problems when dealing with 3D coordinates, this is, to the conversion of altitudes between referential for example ellipsoid, geoid or terrain.

The Geometry Referential package supports geospatial coordinate transformations handled internally by PROJ4JS. Also, it supports local coordinates and its transformation into a geospatial system in a simple and straightforward way. More information on local coordinates could be found here

As this package is available as a FOSS project, the aim of this presentation is to share it with the community and call those who may benefit and may be interested in contributing to it. We will also provide practical examples of how to use this tool in web development.

Authors and Affiliations

Luis Calisto




Software/Project development


2 - Basic. General basic knowledge is required.

Language of the Presentation


A FOSS enthusiast for more than 15 years. Passionate for all geo technologies such as QGIS, OpenLayers, OGC standards, GDAL and a fan of PostGIS. Recently an enthusiast of GraphQL with PostGIS and Graphile.