opengeospatial / ogc-geosparql

Public Repository for the OGC GeoSPARQL Standards Working Group
77 stars 20 forks source link

Triply Use Case 4: Align an engineering CRS to a geospatial CRS #586

Open wouterbeek opened 1 week ago

wouterbeek commented 1 week ago

Triply Use Case 4: Align an engineering CRS to a geospatial CRS

Description

3D BIM data typically uses an internal "engineering CRS". This may either be one CRS for the whole building, or multiple CRS-es per building component. The BIM data typically starts at coordinate (0,0,0) in the engineering CRS.

In GeoSPARQL, my data uses a "geospatial CRS". This may be a global CRS for any place on Earth, or a national CRS for any place in a country.

I know that I should be able to integrate data that follows the "engineering CRS" into the data that follows the "geospatial CRS", but I do not know how to do that. In GeoSPARQL 1.1, I have geof:transform() which I have used in the part to convert between two "geospatial CRSes", but I do not know how to apply that function to data with an "engineering CRS" that starts at (0,0,0).

Actor

Preconditions

Postconditions

Steps

  1. I have a 3D BIM object that I convert to 3D GeoSPARQL, but this causes the building to appear at spot (0,0), e.g. somewhere in the ocean or in a different country.
  2. I have 2D data in GeoSPARQL that uses CRS IRI http://www.opengis.net/def/crs/EPSG/0/28992, which is specific to The Netherlands.
  3. I can use geof:transform() or something similar to translate (1) into something that fits into (2).
  4. When somebody queries my data, they can see the 3D GeoSPARQL object in the correct spot.
FransKnibbe commented 1 week ago

geo:transform needs to know the IRIs of both source and target CRS. For engineering CRSs (local CRSs), typically no CRS IRI will be available. And with no CRS IRI, a 3D geometry can not be encoded as a geosparql:Geometry. At Triply, we had the challenge of georeferencing 3D geometry from BIM, for example as a glTF file. The coordinates use a cartesian engineering CRS, with a local origin. In order to be able to georeference such a 3D geometry, the following data are needed:

  1. A translation (a vector from the origin of the local CRS to a point on the geographical CRS, could be encoded as an sf:Point)
  2. A rotation angle, indicating a clockwise or anticlockwise rotation around the origin
  3. A scale factor for the length units (e.g. from millimetre to metre)

Could it be in scope for GeoSPARQL to provide these properties? I have had a hard time finding suitable semantics for rotation elsewhere, so I think that would nicely fill a gap in the semantic web.

This probably also touches on CRS semantics in GeoSPARQL. Can a geo:Geometry with a (temporarily) unspecified CRS exist? Or should there be another subclass of geo:SpatialObject for that?

situx commented 1 week ago

I might be wrong, but I think these transformations could be part of coordinate operations that you find in CRS terminology or they could be adopted from there. I would need to check that and maybe it comes up in the CRS ontology work