Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Triply Use Case 13: Finding a 3D CRS #599

Open
wouterbeek opened this issue Nov 12, 2024 · 1 comment
Open

Triply Use Case 13: Finding a 3D CRS #599

wouterbeek opened this issue Nov 12, 2024 · 1 comment

Comments

@wouterbeek
Copy link

Triply Use Case 13: Finding a 3D CRS

Description

For 3D data, it is difficult to find a CRS that applies. There are currently no properties that authoritatively indicate whether a CRS can or cannot be used for 3D data. For example, for data in The Netherlands I use CRS [1]. When that IRI is dereferenced, there is no indication that this CRS can only be used with 2D data, so I may naively use it for 3D data as well. @FransKnibbe knows that the correct CRS for 3D data in The Netherlands is actually [2]. When that IRI is dereferenced, there is no authoritative indication that this is indeed the case (although that may be non-authoritatively deduced from the English word "height" that appears in the name field).

[1] http://www.opengis.net/def/crs/EPSG/0/28992
[2] http://www.opengis.net/def/crs/EPSG/0/7415

Actor

  • Data Expert (who may not be a Geodata Expert)

Preconditions

  • I have 3D data, but not yet in GeoSPARQL.
  • I know how to store 2D data in GeoSPARQL.
  • I have not found a CRS that works for my 3D data.

Postconditions

  • I have stored all 3D data as GeoSPARQL in my triple store, with a CRS IRI that supports 3D and is recognized by other triple stores.

Steps

  1. I have 3D data about buildings in The Netherlands.
  2. I have 2D data in GeoSPARQL for which I use CRS IRI [1], which is specific to The Netherlands.
  3. I look up whether I can use CRS IRI [1] for 3D data as well. When I do so, I can authoritatively determine that the CRS cannot be applied to 3D data (e.g. because there is a property "supportsHeight" or "supportsZ" or "supportsAltitude" that set to "false").
  4. I look for an alternative CRS IRI, and ultimately find [2]. Again, I can look up whether I can indeed use [2] for 3D data. When I do so, there is an authoritative property that shows that I can indeed use [2] for 3D data.
  5. Once I have found a CRS IRI that supports 3D in The Netherlands, I integrate all my data into one GeoSPARQL dataset. All GeoSPARQL literals in my dataset include the correct CRS IRI.
  6. When somebody else queries my dataset, they are able to interpret my CRS IRI, because they work with the same authoritative criteria to determine whether or not a CRS IRI supports 3D.
@VladimirAlexiev
Copy link
Collaborator

@wouterbeek and @FransKnibbe can you explain what in that CRS makes it 3D? Eg looking at https://epsg.io/7415 , which part of the formal definition makes it 3D?

COMPD_CS["Amersfoort / RD New + NAP height",
    PROJCS["Amersfoort / RD New",
        GEOGCS["Amersfoort",
            DATUM["Amersfoort",
                SPHEROID["Bessel 1841",6377397.155,299.1528128,
                    AUTHORITY["EPSG","7004"]],
                AUTHORITY["EPSG","6289"]],
            PRIMEM["Greenwich",0,
                AUTHORITY["EPSG","8901"]],
            UNIT["degree",0.0174532925199433,
                AUTHORITY["EPSG","9122"]],
            AUTHORITY["EPSG","4289"]],
        PROJECTION["Oblique_Stereographic"],
        PARAMETER["latitude_of_origin",52.1561605555556],
        PARAMETER["central_meridian",5.38763888888889],
        PARAMETER["scale_factor",0.9999079],
        PARAMETER["false_easting",155000],
        PARAMETER["false_northing",463000],
        UNIT["metre",1,
            AUTHORITY["EPSG","9001"]],
        AXIS["Easting",EAST],
        AXIS["Northing",NORTH],
        AUTHORITY["EPSG","28992"]],
    VERT_CS["NAP height",
        VERT_DATUM["Normaal Amsterdams Peil",2005,
            AUTHORITY["EPSG","5109"]],
        UNIT["metre",1,
            AUTHORITY["EPSG","9001"]],
        AXIS["Gravity-related height",UP],
        AUTHORITY["EPSG","5709"]],
    AUTHORITY["EPSG","7415"]]

I guess VERT_CS? If so, it should be quite easy to calculate a flag.
And I think we can reuse the existing flag geo:is3D that applies to geometries.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants