Comments (4)
- PROJ also has the
gridshift
[h+v] operator. In reverse, I intend to implement specializations to hgridshift/vgridshift as well.grid
could change togrids
once multigrid support is available.omerc
implements the options described in EPSG Geodetic guidance note 7-2, so it covers everything needed to handle transformations and systems represented in the EPSG registry. I would happily accept a pull request making it more PROJ compatible, but I do not intend to do any further work onomerc
myself.
adapt
should be supplemented with theaxisswap
andunitconvert
operators.adapt
is an experiment showing how these operations can be described in declarative, rather than imperative terms. It was not intended as a replacement for the two PROJ operators, but as a supplement - I just happen to not have had any need for those two myself yet, so I have not gotten around to implement them.
So in brief, the pipeline structure is a means for stringing together existing operators, not a way of mediating between two different parametrisations of partially overlapping functionality (that would be a recipe for disaster 😊)
from geodesy.
The pathological case you've now implemented is the one example I could think of after reading your e-mail
Don't worry - I have plenty of others (cf the test code) 😊
from geodesy.
@Rennzie: I had forgotten how cursed the PROJ pipeline
case really is (which is odd, since I introduced and implemented it in PROJ, some 5 years ago).
I think I have most cases correct now, but still missing the pathological case of inverted pipelines:
# Inversion of a pipeline converting UTM zone 32 to UTM zone 33,
# hence obtaining a pipeline converting UTM zone 33 to UTM zone 32,
pipeline inv step proj=utm inv zone=32 step proj=utm zone=33
where
- The global
inv
should be inserted into the second step, but removed from the first, due toinv inv
- The steps should be collected in reverse order for output
from geodesy.
@busstoptaktik thank you for implementing this.
It will be very helpful in geodesy-wasm. The pathological case you've now implemented is the one example I could think of after reading your e-mail (I'll be able to reply to the rest tomorrow).
I had a couple of other questions:
-
Should the parser handle differences in operator keys? For example the
gridshift
operator has the keygrid
but PROJ has the keyshgridshift
&vgridshift
as documented in Rumination-002? A brief scan suggestsomerc
is the other operator that has differences. -
In the same vein, should the parser handle
adapt
. For example how would it handle a PROJ pipeline such as the below?
+proj=pipeline
+step +proj=axisswap +order=2,1
+step +proj=unitconvert +xy_in=deg +xy_out=rad
+step +proj=webmerc +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +ellps=WGS84
I've not read the adapt
code in depth but as I understand it so far it would handle both the unitconvert
and axisswap
steps of the above pipeline?
Should these be handled by the parser or should the callers be responsible for making these changes?
from geodesy.
Related Issues (20)
- Remove file I/O from the Minimal-context provider HOT 1
- Support oblique mercator HOT 6
- Consider alternative parameter names for the Helmert operator
- Additional `kp` functionality and flags
- Move the `proj` operator to examples
- Better documentation of the context providers HOT 4
- Better documentation of `kp`
- Documentation for the `deformation` operator
- Alternative interpolation algorithms
- Support Jacobian/Factors in kp
- Bug: tmerc operation returning incorrect results HOT 4
- Should RG accept ellipse params as well as an ellps=<name>? HOT 2
- Implementing Swiss Oblique Mercator HOT 2
- Support @null and @optional grid inputs
- Constructing `OpHandle` for EPSG:4326 results in error HOT 7
- Support Geodetic TIFF grids HOT 22
- Support some physical geodesy and generic geophysical operations
- LAEA projection does not preserve latitude on inverse transformation
- Consider adding a feature for logging HOT 5
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 geodesy.