[gdal-dev] +proj=wintri +over option works weel in gdalwarp but not in ogr2ogr
Even Rouault
even.rouault at spatialys.com
Sun Apr 30 06:42:45 PDT 2023
Joaquim,
I've looked at that. Experimentally, it doesn't seem that the current
maths for wintri in +over mode give reasonable results for longitudes >
360deg in absolute value (and I'm not sure if there would be a natural
extension possible. Far beyond my knowledge of the underlying maths).
gdalwarp does a little better by default because it couples the forward
and inverse transformer to check the domain of validity and
experimentally must find this limitation and will thus give up for
source pixels whose longitude > 360 deg. For ogr2ogr / vector this is
more complicated as reprojection of a single geometry (here cl540.gpkg
is a single polygon with longitudes in [-540,540] range). is a "all
points succeed to reproject => OK" / "one single point fails to
reproject => KO" type of situation, at least in the logic followed by
OGRGeometry::transform() logic.
So while the following patch to PROJ is probably technically correct, it
wouldn't help in practice
diff --git a/src/projections/aitoff.cpp b/src/projections/aitoff.cpp
index 9d060999f..cce319157 100644
--- a/src/projections/aitoff.cpp
+++ b/src/projections/aitoff.cpp
@@ -59,6 +59,11 @@ static PJ_XY aitoff_s_forward(PJ_LP lp, PJ *P) { /*
Spheroidal, forward */
struct pj_opaque *Q = static_cast<struct pj_opaque *>(P->opaque);
double c, d;
+ if( fabs(lp.lam) > 2 * M_PI ) {
+ proj_errno_set(
+ P, PROJ_ERR_COORD_TRANSFM_OUTSIDE_PROJECTION_DOMAIN);
+ return xy;
+ }
c = 0.5 * lp.lam;
d = acos(cos(lp.phi) * cos(c));
if (d != 0.0) { /* basic Aitoff */
The only solution I can offer is that you must explictly clip your
source geometry to the validity range of wintri with -clipsrc -360 -90
360 90.
Even
Le 30/04/2023 à 03:11, Joaquim Manuel Freire Luís via gdal-dev a écrit :
>
> Even, this is a kind of continuation of the subject that I brought up
> in https://github.com/OSGeo/gdal/issues/7644
>
> The file size limitation of attachments doesn’t help to make this case
> easily reproducible, but the story is, I can make that rectangular map
> using gdalwarp and ogr2ogr that use the +over option and +proj=vandg
>
> (see
> https://forum.generic-mapping-tools.org/t/best-projection-for-rectangular-world-map/3715/82?u=joaquim)
>
> But when I try the same with +proj=wintry the gdalwarp op works well
> but the ogr2ogr doesn’t.
>
> (see
> https://forum.generic-mapping-tools.org/t/best-projection-for-rectangular-world-map/3715/85?u=joaquim)
>
> You can more less reproduce this case using this file
>
> http://fct-gmt.ualg.pt/tmp/cl540.gpkg
>
> ogr2ogr -t_srs "+proj=wintri +over" cl540_wintri.gpkg cl540.gpkg
>
> Why would that be in this case?
>
> Joaquim
>
>
> _______________________________________________
> gdal-dev mailing list
> gdal-dev at lists.osgeo.org
> https://lists.osgeo.org/mailman/listinfo/gdal-dev
--
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/gdal-dev/attachments/20230430/5942fff7/attachment.htm>
More information about the gdal-dev
mailing list