[PROJ] Proj transformation for arbitrary (quaternion/Euler) spatial rotation
Even Rouault
even.rouault at spatialys.com
Wed Nov 9 07:39:33 PST 2022
Daven,
finding the right parameters is always a bit tricky. For example, for
meteorological data, there are at least 2 different conventions to
express angles.
See PROJ_WKT2_NAME_METHOD_POLE_ROTATION_GRIB_CONVENTION and
PROJ_WKT2_NAME_METHOD_POLE_ROTATION_NETCDF_CF_CONVENTION at
https://github.com/OSGeo/PROJ/blob/ae3180303d974653b126bc65dcfdad3cecb5a313/src/iso19111/operation/conversion.cpp#L3783
where there's a mapping from south pole / north pole conventions to
+proj=ob_tran. Setting lon_0 is often necessary.
Even
Le 09/11/2022 à 13:00, DAVEN P QUINN via PROJ a écrit :
> Hello all,
>
> I’m a geologist who is working with paleogeographic reconstructions
> (see example here
> <https://davenquinn.com/viz/corelle-demo-pbdb/?time=295>). These
> require composite reproductions where different parts of a feature
> dataset (continents) are rotated with different axis-angle
> transformations. I’ve had good luck doing these rotations with
> quaternion math in the browser/Python environments, but I am now
> trying to use Proj transformations in order to apply rotations
> directly within PostGIS queries.
>
> This linked image
> <https://pbs.twimg.com/media/Fgpx4UGXEAQmPOt?format=jpg&name=4096x4096>
> shows the desired result, a plate reconstruction to 250 Ma with a
> different rotation applied to each plate. This was produced by
> applying the desired quaternions through pl/pgsql math. Moving this
> math to Proj internals would result in a ~50-100x speedup.
>
> The tool that seems most fitting is the `ob_trans` family of
> projections, but I have been unable to define a rotation that can
> handle my preferred representation (a pole defined in Lon-lat
> coordinates and an associated angle of rotation around it). From my
> reading of the docs, I believe the `o_lon_c`, `o_lat_c` and `o_alpha`
> parameters should do this, but I cannot get them to work reliably. In
> fact, I can’t even reliably define a ’no-op’ transformation that
> leaves coordinates unchanged. Perhaps I have the angular coordinate
> system wrong, or the rotation is being done in Cartesian space even
> though `proj=lonlat` is used.
>
> Is it possible to define an arbitrary spherical spatial rotation in
> Proj transformations? Maybe I need to use pipelines instead? I’d
> appreciate any guidance! More details below the fold...
>
> Regards,
>
> *Daven P. Quinn*
> Research scientist II · /U of Wisconsin Madison/
> PhD · structural geology · /Caltech/ ‘18
> https://davenquinn.com
> +1 704 920 8487
>
> -------------
>
> Here is an example of the pl/pgsql I am currently using to assemble a
> projection (I have gone through many iterations testing different
> offsets and the different ways to specify the transformation):
> ```
> RETURN '+proj=ob_tran +o_proj=longlat +o_alpha=' || pi()/2+angle || 'r
> +o_lon_c=' || pi()/2+lon || 'r +o_lat_c=' || lat || 'r' proj
> ```
> where (lat, lon, angle) defines a rotation pole.
>
> This results in some geometries (with a fortuitous set of poles, I
> guess) attaining ballpark-correct transformations while other features
> are shifted far outside of their origin tiles.
>
> _______________________________________________
> PROJ mailing list
> PROJ at lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/proj
--
http://www.spatialys.com
My software is free, but my time generally not.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/proj/attachments/20221109/e029b128/attachment.htm>
More information about the PROJ
mailing list