Comments (1)
Here's an idea: we could use the NetCDF format for this, very much like we do to store PISM's configuration parameters.
PISM's source code would contain a pism_epsg.cdl
file like this:
netcdf pism_epsg {
variables:
int epsg_3413 ;
epsg_3413:latitude_of_projection_origin = 90. ;
epsg_3413:scale_factor_at_projection_origin = 1. ;
epsg_3413:straight_vertical_longitude_from_pole = -45. ;
epsg_3413:standard_parallel = 70. ;
epsg_3413:false_northing = 0. ;
epsg_3413:grid_mapping_name = "polar_stereographic" ;
epsg_3413:false_easting = 0. ;
int epsg_3031 ;
epsg_3031:latitude_of_projection_origin = -90. ;
epsg_3031:scale_factor_at_projection_origin = 1. ;
epsg_3031:straight_vertical_longitude_from_pole = 0. ;
epsg_3031:standard_parallel = -71. ;
epsg_3031:false_northing = 0. ;
epsg_3031:grid_mapping_name = "polar_stereographic" ;
epsg_3031:false_easting = 0. ;
int epsg_3057 ;
epsg_3057:grid_mapping_name = "lambert_conformal_conic" ;
epsg_3057:longitude_of_central_meridian = -19. ;
epsg_3057:false_easting = 500000. ;
epsg_3057:false_northing = 500000. ;
epsg_3057:latitude_of_projection_origin = 65. ;
epsg_3057:standard_parallel = 64.25, 65.75 ;
epsg_3057:long_name = "CRS definition" ;
epsg_3057:longitude_of_prime_meridian = 0. ;
epsg_3057:semi_major_axis = 6378137. ;
epsg_3057:inverse_flattening = 298.257222101 ;
int epsg_5936 ;
epsg_5936:latitude_of_projection_origin = 90. ;
epsg_5936:scale_factor_at_projection_origin = 1. ;
epsg_5936:straight_vertical_longitude_from_pole = -150. ;
epsg_5936:standard_parallel = 90. ;
epsg_5936:false_northing = 2000000. ;
epsg_5936:grid_mapping_name = "polar_stereographic" ;
epsg_5936:false_easting = 2000000. ;
int epsg_26710 ;
epsg_26710:longitude_of_central_meridian = -123. ;
epsg_26710:false_easting = 500000. ;
epsg_26710:false_northing = 0. ;
epsg_26710:grid_mapping_name = "transverse_mercator" ;
epsg_26710:inverse_flattening = 294.978698213898 ;
epsg_26710:latitude_of_projection_origin = 0. ;
epsg_26710:scale_factor_at_central_meridian = 0.9996 ;
epsg_26710:semi_major_axis = 6378206.4 ;
epsg_26710:unit = "metre" ;
}
that would be converted into a .nc
file by the build system. During initialization PISM would read this file and iterate over all the variables to extract the map from EPSG codes to CF variable attributes. Then this map can be used to fill PISM's output files with appropriate CF-conformant metadata based on the EPSG code found in the input file.
Users would be able to create custom pism_epsg.nc
file by editing the .cdl
file and running ncgen
. They would then be able to tell PISM to use this file by setting a command-line option.
Note that this is not needed to be able to generate lon
and lat
fields and their _bounds
: we just need the EPSG code for that.
from pism.
Related Issues (20)
- SSAFD KSP (linear solver) failed HOT 2
- Conservative regridding (averaging) for 2D fields HOT 1
- Building user manual with Sphinx >= 5.0 fails with 'language = None'
- Black-hole calving HOT 15
- Unable to read from a compressed NetCDF file with permuted dimensions HOT 1
- Update citation recommendations: explain how to cite PISM's versions archived by Zenodo HOT 9
- Bed deformation models need to use the load averaged over the duration of a time step HOT 3
- Antarctic example has a reprojection error HOT 1
- Error building pism 2.1 since switch to pkg-conf HOT 4
- no difference between ncap scripts in doc/sphinx/manual/practical-usage/conservation HOT 2
- Use of "0001-1-1" as reference year instead of "1-1-1" for compatibility with Xarray HOT 1
- PISM's continous integration setup should include tests that use PETSc --with-64bit-indices HOT 1
- Is PISM able to do global simulation? HOT 3
- Add "tendency_of_ice_mass_due_to_grounding_line_flux"
- PETSc 3.21 compatibility
- Improve instructions describing how to cite PISM
- Fix PISM installation instructions for macOS
- Consider using `kelvin` instead if `Kelvin` for units HOT 4
- Goldsby (2006) rheology
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from pism.