NOAA-PMEL / uafnciso

The Unlicense
4 stars 4 forks source link

How to describe the vertical coordinate info in ISO for CF compliant models #8

Open rsignell-usgs opened 6 years ago

rsignell-usgs commented 6 years ago

@zdefne-usgs and I have been trying to figure out how to describe the vertical coordinate information in ISO for CF compliant models.

It seems beyond the scope of ISO to actually describe how to calculate the z positions at every time step using the formula_terms from CF, and we would rather just say that the vertical coordinate information can be determined by, say, CF-1.7 (dimensionless vertical coordinate calculation is handled in Appendix D)

So two questions:

@tedhabermann, could you please post your "Georeferenceable Grid" potential solution here so we can discuss?

tedhabermann commented 6 years ago

All,

This is a response that I sent to Rich and Zafer on this question. As I understand the problem, we are trying to provide an (arbitrary from ISO point of view) equation for calculating vertical coordinates from information in the file. The standard includes a place to describe the parameters required for this equation, as an arbitrary data structure (a characterString in the example) and a reference to something that describes what to do with the parameters. Maybe that is enough, maybe not.

Rich suggests that this is "beyond the scope of ISO". I would not give up so easily. Of course, ISO is a very generic metadata standard, and this mechanism for defining a coordinate is beyond scope for many generic metadata standards, actually every one that I can think of in Earth Science, but ISO has a standard mechanism for adding implementation specific information called the Record/Record Type and I think we could use that here. It also has a standard way to point users to more information if they need it. Seems to me this gives us tools we need. In fact, it is pretty similar to what is in the CF Appendix.

The description of the parameters is an ISO Record which can be anything. There is an example on https://geo-ide.noaa.gov/wiki/index.php?title=Record of using an ncml variable from a specific granule as a record. We could easily include a snippet of ncml that had the parameters or some representation of an equation (i.e. mathML??) in that Record.

Ted

Rich and Zafer,

You mentioned a Geo-IDE wiki page on georeferencing. If we look at the MD_Georeferenceable object, it contains a couple of things that might be useful: georeferencedParameters and parameterCitation. These two can be used to 1) describe the parameters needed for georeferencing and 2) to provide more information.

The georeferncedParameters is a Record, which means it can hold essentially anything. It could be a text description, or a structured thing (xml, csv, sensorml or ncml?) that provides values. It could be that this gives numbers that code could use… The parameterCitation is a citation to more information, i.e. the CF Conventions… or a section of the CF Conventions…

XML might look like that shown below… Note that we have an opportunity to provide dimension titles and descriptions (I think those were added in 19115-1)…

Once again, sorry for the delay… I hope this provides an interesting starting point…

Ted

3 row 120 Some title Some description column 120 Some title Some description vertical 120 Some title Some description voxel true Description of parameters goes here CF Conventions and Metadata http://cfconventions.org
rsignell-usgs commented 6 years ago
<mdb:spatialRepresentationInfo>
    <msr:MI_Georeferenceable>
        <msr:numberOfDimensions>
            <gco:Integer>3</gco:Integer>
        </msr:numberOfDimensions>
        <msr:axisDimensionProperties>
            <msr:MD_Dimension>
                <msr:dimensionName>
                    <msr:MD_DimensionNameTypeCode codeList="codeListLocation#MD_DimensionNameTypeCode" codeListValue="row">row</msr:MD_DimensionNameTypeCode>
                </msr:dimensionName>
                <msr:dimensionSize>
                    <gco:Integer>120</gco:Integer>
                </msr:dimensionSize>
                <msr:dimensionTitle>
                    <gco:CharacterString>Some title</gco:CharacterString>
                </msr:dimensionTitle>
                <msr:dimensionDescription>
                    <gco:CharacterString>Some description</gco:CharacterString>
                </msr:dimensionDescription>
            </msr:MD_Dimension>
        </msr:axisDimensionProperties>
        <msr:axisDimensionProperties>
            <msr:MD_Dimension>
                <msr:dimensionName>
                    <msr:MD_DimensionNameTypeCode codeList="" codeListValue="column">column</msr:MD_DimensionNameTypeCode>
                </msr:dimensionName>
                <msr:dimensionSize>
                    <gco:Integer>120</gco:Integer>
                </msr:dimensionSize>
                <msr:dimensionTitle>
                    <gco:CharacterString>Some title</gco:CharacterString>
                </msr:dimensionTitle>
                <msr:dimensionDescription>
                    <gco:CharacterString>Some description</gco:CharacterString>
                </msr:dimensionDescription>
            </msr:MD_Dimension>
        </msr:axisDimensionProperties>
        <msr:axisDimensionProperties>
            <msr:MD_Dimension>
                <msr:dimensionName>
                    <msr:MD_DimensionNameTypeCode codeList="" codeListValue="vertical">vertical</msr:MD_DimensionNameTypeCode>
                </msr:dimensionName>
                <msr:dimensionSize>
                    <gco:Integer>120</gco:Integer>
                </msr:dimensionSize>
                <msr:dimensionTitle>
                    <gco:CharacterString>Some title</gco:CharacterString>
                </msr:dimensionTitle>
                <msr:dimensionDescription>
                    <gco:CharacterString>Some description</gco:CharacterString>
                </msr:dimensionDescription>
            </msr:MD_Dimension>
        </msr:axisDimensionProperties>
        <msr:cellGeometry>
            <msr:MD_CellGeometryCode codeList="codeListLocation#MD_CellGeometryCode" codeListValue="voxel">voxel</msr:MD_CellGeometryCode>
        </msr:cellGeometry>
        <msr:transformationParameterAvailability>
            <gco:Boolean>true</gco:Boolean>
        </msr:transformationParameterAvailability>
        <msr:controlPointAvailability/>
        <msr:orientationParameterAvailability/>
        <msr:georeferencedParameters>
            <gco:Record xsi:type="gco:CharacterString_PropertyType">
                <gco:CharacterString>Description of parameters goes here</gco:CharacterString>
            </gco:Record>
        </msr:georeferencedParameters>
        <msr:parameterCitation>
            <cit:CI_Citation>
                <cit:title>
                    <gco:CharacterString>CF Conventions and Metadata</gco:CharacterString>
                </cit:title>
                <cit:onlineResource>
                    <cit:CI_OnlineResource>
                        <cit:linkage>
                            <gco:CharacterString>http://cfconventions.org</gco:CharacterString>
                        </cit:linkage>
                    </cit:CI_OnlineResource>
                </cit:onlineResource>
            </cit:CI_Citation>
        </msr:parameterCitation>
        <msr:geolocationInformation gco:nilReason="inapplicable"/>
    </msr:MI_Georeferenceable>
</mdb:spatialRepresentationInfo>
zdefne-usgs commented 6 years ago

@tedhabermann Just to elaborate more on this, we are basically overriding/extending the MD_Georeferenceable object because there is no other option to handle an irregular rectangular grid. However, now a similar issue occurs with the cellGeometry because there isn't a suitable entry for an irregular rectangular cell type. Closest representation is "voxel" but it is defined for a regular grid:

voxel each cell represents a volumetric measurement on a regular grid in three dimensional space

Does it make sense if we keep it as voxel and add the link to the formulation in CI_OnlineResource? Or are we doomed?

zdefne-usgs commented 6 years ago

@tedhabermann (cc @rsignell-usgs ) here is how I implemented your suggestion: https://github.com/zdefne-usgs/ocean-iso-metadata/issues/1 Does it make sense? Would it make more sense if the CellGeometry was "point" instead of "area" (voxel is not suitable for irregular grid).

Here is where you can find the entire file: https://github.com/zdefne-usgs/ocean-iso-metadata/blob/master/BBLEH_2012_ver03.xml

rsignell-usgs commented 6 years ago

@tedhabermann , let's keep this simple. Does this one line look okay?

tedhabermann commented 6 years ago

All,

I would tend to provide name and description over protocol and applicationprofile in this case:

http://cfconventions.org/Data/cf-conventions/cf-conventions-1.7/cf-conventions.html#parametric-v-coord CF Conventions Specification Specification for CF-Conventions that describes coordinate calculations. information By the way, we eliminated the somewhat awkward need to use contact information for a URL in a citation in the most recent revision of ISO. Noe there is an online resource directly in the citation – cleaner… Ted ==== Ted Habermann ======================== Director of Earth Science, The HDF Group Voice: (217) 531-4202 Email: thabermann@hdfgroup.org ==== HDF: Software That Powers Science ==== From: Rich Signell Reply-To: NOAA-PMEL/uafnciso Date: Monday, February 5, 2018 at 3:01 PM To: NOAA-PMEL/uafnciso Cc: Ted Habermann , Mention Subject: Re: [NOAA-PMEL/uafnciso] How to describe the vertical coordinate info in ISO for CF compliant models (#8) @tedhabermann , let's keep this simple. Does this one line look okay? — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or mute the thread.
rsignell-usgs commented 6 years ago

@zdefne-usgs , make sense?

we are talking about these lines here: https://github.com/zdefne-usgs/ocean-iso-metadata/blob/master/BBLEH_2012_ver03.xml#L159-L185

zdefne-usgs commented 6 years ago

@rsignell-usgs an @tedhabermann , thank you both. I assume that the rest looks okay because @tedhabermann 's only comment is to add the description and the name. This solves the vertical coordinate issue. However, on the other hand, one also wonders if it makes sense to have a similar information for the longitude and latitude because of the irregular grid. e.g. http://cfconventions.org/Data/cf-conventions/cf-conventions-1.7/cf-conventions.html#latitude-coordinate

It seems to me that ISO cannot handle this as it is i.e. MD_DimensionNameTypeCode value "vertical" works, but "row" and "column" are not suitable for irregular spacing. Any thoughts on that?

tedhabermann commented 6 years ago

All,

MD_DimensionNameTypeCode is a codelist and is therefore automatically extendable without changing the standard (like all codelists). You guys are using codelists controlled by NOAA (http://www.ngdc.noaa.gov/metadata/published/xsd/schema/resources/Codelist/gmxCodelists.xml#MD_DimensionNameTypeCode) so you just need to convince NOAA (probably Anna Milan) to add values you need. I’m not sure what the best replacements are for row and column…

Ted

==== Ted Habermann ======================== Director of Earth Science, The HDF Group Voice: (217) 531-4202 Email: thabermann@hdfgroup.orgmailto:thabermann@hdfgroup.org ==== HDF: Software That Powers Science ====

From: Zafer notifications@github.com Reply-To: NOAA-PMEL/uafnciso reply@reply.github.com Date: Tuesday, February 6, 2018 at 11:37 AM To: NOAA-PMEL/uafnciso uafnciso@noreply.github.com Cc: Ted Habermann thabermann@hdfgroup.org, Mention mention@noreply.github.com Subject: Re: [NOAA-PMEL/uafnciso] How to describe the vertical coordinate info in ISO for CF compliant models (#8)

@rsignell-usgshttps://github.com/rsignell-usgs an @tedhabermannhttps://github.com/tedhabermann , thank you both. I assume that the rest looks okay because @tedhabermannhttps://github.com/tedhabermann 's only comment is to add the description and the name. I was on the other hand wondering if it makes sense to have a similar information for the longitude and latitude because of the irregular grid. However, it seems to me that ISO cannot handle this as it is i.e. MD_DimensionNameTypeCode value "vertical" works, but "row" and "column" are not suitable... Any thoughts on that?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHubhttps://github.com/NOAA-PMEL/uafnciso/issues/8#issuecomment-363521331, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AGkaebwCuTiYTfI5yvRhIZJwDFWZh8jgks5tSJvogaJpZM4RjXhR.