gdal icon indicating copy to clipboard operation
gdal copied to clipboard

gdal raster/vector reproject: enhance completion for --dst-crs to take into extent of input dataset

Open rouault opened this issue 6 months ago • 2 comments

Add GDALDataset::GetExtent() and GetExtentWGS84LongLat(), corresponding C API and bind to SWIG

$ gdal raster reproject byte.tif --dst-crs=EPSG:<TAB><TAB>
Display all 199 possibilities? (y or n)
10177 -- IGS20                                                                  4329 -- WGS 84 (3D)
10178 -- IGS20                                                                  4411 -- NAD27 / BLM 11N (ftUS)
10345 -- Hughes 1980                                                            4431 -- NAD83 / BLM 11N (ftUS)
10346 -- NSIDC Authalic Sphere                                                  4740 -- PZ-90
10598 -- WGS 84 / GLANCE North America                                          4760 -- WGS 66
10605 -- WGS 84 (G2296)                                                         4891 -- WGS 66
10606 -- WGS 84 (G2296)                                                         4923 -- PZ-90
10780 -- ITRF2020-u2023                                                         4979 -- WGS 84
10781 -- ITRF2020-u2023                                                         4985 -- WGS 72
10784 -- IGb20                                                                  4987 -- WGS 72BE
10785 -- IGb20                                                                  5069 -- NAD27 / Conus Albers
2229 -- NAD83 / California zone 5 (ftUS)                                        5070 -- NAD83 / Conus Albers
2230 -- NAD83 / California zone 6 (ftUS)                                        5071 -- NAD83(HARN) / Conus Albers
26711 -- NAD27 / UTM zone 11N                                                   5072 -- NAD83(NSRS2007) / Conus Albers
26745 -- NAD27 / California zone V                                              5498 -- NAD83 + NAVD88 height
26746 -- NAD27 / California zone VI                                             5499 -- NAD83(HARN) + NAVD88 height
26747 -- NAD27 / California zone VII                                            5500 -- NAD83(NSRS2007) + NAVD88 height
26799 -- NAD27 / California zone VII                                            6340 -- NAD83(2011) / UTM zone 11N
26911 -- NAD83 / UTM zone 11N                                                   6349 -- NAD83(2011) + NAVD88 height
26945 -- NAD83 / California zone 5                                              6350 -- NAD83(2011) / Conus Albers
26946 -- NAD83 / California zone 6                                              6414 -- NAD83(2011) / California Albers
27705 -- WGS 84 / Equi7 North America                                           6423 -- NAD83(2011) / California zone 5
2770 -- NAD83(HARN) / California zone 5                                         6424 -- NAD83(2011) / California zone 5 (ftUS)
2771 -- NAD83(HARN) / California zone 6                                         6425 -- NAD83(2011) / California zone 6
2874 -- NAD83(HARN) / California zone 5 (ftUS)                                  6426 -- NAD83(2011) / California zone 6 (ftUS)
2875 -- NAD83(HARN) / California zone 6 (ftUS)                                  6871 -- WGS 84 / Pseudo-Mercator +  EGM2008 geoid height
[...snip...]

Also takes into account celestial body name:

$ gdal raster reproject byte.tif --dst-crs=IAU:<TAB><TAB>
39900 -- Earth (2015) - Sphere / Ocentric                                 39950 -- Earth (2015) - Sphere / Ocentric / Robinson, clon = 0
39901 -- Earth (2015) / Ographic                                          39951 -- Earth (2015) / Ographic / Robinson, clon = 0
39902 -- Earth (2015) / Ocentric                                          39955 -- Earth (2015) - Sphere / Ocentric / Robinson, clon = 180
39910 -- Earth (2015) - Sphere / Ocentric / Equirectangular, clon = 0     39956 -- Earth (2015) / Ographic / Robinson, clon = 180
39911 -- Earth (2015) / Ographic / Equirectangular, clon = 0              39960 -- Earth (2015) - Sphere / Ocentric / Transverse Mercator
39915 -- Earth (2015) - Sphere / Ocentric / Equirectangular, clon = 180   39961 -- Earth (2015) / Ographic / Transverse Mercator
39916 -- Earth (2015) / Ographic / Equirectangular, clon = 180            39965 -- Earth (2015) - Sphere / Ocentric / Orthographic, clon = 0
39920 -- Earth (2015) - Sphere / Ocentric / Sinusoidal, clon = 0          39966 -- Earth (2015) / Ographic / Orthographic, clon = 0
39921 -- Earth (2015) / Ographic / Sinusoidal, clon = 0                   39970 -- Earth (2015) - Sphere / Ocentric / Orthographic, clon = 180
39925 -- Earth (2015) - Sphere / Ocentric / Sinusoidal, clon = 180        39971 -- Earth (2015) / Ographic / Orthographic, clon = 180
39926 -- Earth (2015) / Ographic / Sinusoidal, clon = 180                 39975 -- Earth (2015) - Sphere / Ocentric / Lambert Conic Conformal
39930 -- Earth (2015) - Sphere / Ocentric / North Polar                   39976 -- Earth (2015) / Ographic / Lambert Conic Conformal
39931 -- Earth (2015) / Ographic / North Polar                            39980 -- Earth (2015) - Sphere / Ocentric / Lambert Azimuthal Equal Area
39935 -- Earth (2015) - Sphere / Ocentric / South Polar                   39981 -- Earth (2015) / Ographic / Lambert Azimuthal Equal Area
39936 -- Earth (2015) / Ographic / South Polar                            39985 -- Earth (2015) - Sphere / Ocentric / Albers Equal Area
39940 -- Earth (2015) - Sphere / Ocentric / Mollweide, clon = 0           39986 -- Earth (2015) / Ographic / Albers Equal Area
39941 -- Earth (2015) / Ographic / Mollweide, clon = 0                    39990 -- Earth (2015) - Sphere / Ocentric / Mercator
39945 -- Earth (2015) - Sphere / Ocentric / Mollweide, clon = 180         39991 -- Earth (2015) / Ographic / Mercator
39946 -- Earth (2015) / Ographic / Mollweide, clon = 180                  

rouault avatar Jun 15 '25 18:06 rouault

Coverage Status

coverage: 71.056% (-0.007%) from 71.063% when pulling c0909dec89b3ec2641a8245a95f606482107cf53 on rouault:smart_dst_crs_autocomplete into c340e3766e42ef6cdd7345de0de3c3ad7d6632b1 on OSGeo:master.

coveralls avatar Jun 15 '25 22:06 coveralls

a potential enhancement tweak, group the output by "family" so there's some kind of indication of what those codes represent (for when the name is uninformative) (and put the UTM, then global, ones last ?)

mdsumner avatar Jun 16 '25 21:06 mdsumner

(and put the UTM, then global, ones last ?)

I'v added a commit for that later part. Now "gdal raster reproject byte.tif --dst-crs=<TAB><TAB>" returns CRS with smallest area of use first:

26799 -- NAD27 / California zone VII                             32600 -- WGS 84 / UTM grid system (northern hemisphere)          7911 -- ITRF2008 (geographic 3D)
2230 -- NAD83 / California zone 6 (ftUS)                         3408 -- NSIDC EASE-Grid North                                    7912 -- ITRF2014 (geographic 3D)
26746 -- NAD27 / California zone VI                              6931 -- WGS 84 / NSIDC EASE-Grid 2.0 North                       8857 -- WGS 84 / Equal Earth Greenwich
26946 -- NAD83 / California zone 6                               3395 -- WGS 84 / World Mercator                                  8888 -- WGS 84 (Transit) (geographic 2D)
2771 -- NAD83(HARN) / California zone 6                          3857 -- WGS 84 / Pseudo-Mercator                                 7816 -- WGS 84 (Transit) (geographic 3D)
2875 -- NAD83(HARN) / California zone 6 (ftUS)                   3410 -- NSIDC EASE-Grid Global                                   8988 -- ITRF88 (geographic 2D)
3499 -- NAD83(NSRS2007) / California zone 6                      6933 -- WGS 84 / NSIDC EASE-Grid 2.0 Global                      8989 -- ITRF89 (geographic 2D)
3500 -- NAD83(NSRS2007) / California zone 6 (ftUS)               10178 -- IGS20 (geographic 2D)                                   8990 -- ITRF90 (geographic 2D)
6425 -- NAD83(2011) / California zone 6                          10177 -- IGS20 (geographic 3D)                                   8991 -- ITRF91 (geographic 2D)
6426 -- NAD83(2011) / California zone 6 (ftUS)                   10345 -- Hughes 1980 (geographic 2D)                             8992 -- ITRF92 (geographic 2D)
8719 -- NAD83 / California zone 6 (ftUS) + NAVD88 height (ftUS)  10346 -- NSIDC Authalic Sphere (geographic 2D)                   8993 -- ITRF93 (geographic 2D)
2229 -- NAD83 / California zone 5 (ftUS)                         10606 -- WGS 84 (G2296) (geographic 2D)                          8994 -- ITRF94 (geographic 2D)
26945 -- NAD83 / California zone 5                               10605 -- WGS 84 (G2296) (geographic 3D)                          8995 -- ITRF96 (geographic 2D)
2770 -- NAD83(HARN) / California zone 5                          10781 -- ITRF2020-u2023 (geographic 2D)                          8996 -- ITRF97 (geographic 2D)
2874 -- NAD83(HARN) / California zone 5 (ftUS)                   10780 -- ITRF2020-u2023 (geographic 3D)                          8997 -- ITRF2000 (geographic 2D)
3497 -- NAD83(NSRS2007) / California zone 5                      10785 -- IGb20 (geographic 2D)                                   8998 -- ITRF2005 (geographic 2D)
3498 -- NAD83(NSRS2007) / California zone 5 (ftUS)               10784 -- IGb20 (geographic 3D)                                   8999 -- ITRF2008 (geographic 2D)
6423 -- NAD83(2011) / California zone 5                          4087 -- WGS 84 / World Equidistant Cylindrical                   9000 -- ITRF2014 (geographic 2D)
6424 -- NAD83(2011) / California zone 5 (ftUS)                   4276 -- NSWC 9Z-2 (geographic 2D)                                9003 -- IGS97 (geographic 2D)
8718 -- NAD83 / California zone 5 (ftUS) + NAVD88 height (ftUS)  4322 -- WGS 72 (geographic 2D)                                   9002 -- IGS97 (geographic 3D)
26745 -- NAD27 / California zone V                               4324 -- WGS 72BE (geographic 2D)                                 9006 -- IGS00 (geographic 2D)
3309 -- NAD27 / California Albers                                4326 -- WGS 84 (geographic 2D)                                   9005 -- IGS00 (geographic 3D)
3310 -- NAD83 / California Albers                                4740 -- PZ-90 (geographic 2D)                                    9009 -- IGb00 (geographic 2D)
3311 -- NAD83(HARN) / California Albers                          4760 -- WGS 66 (geographic 2D)                                   9008 -- IGb00 (geographic 3D)
3488 -- NAD83(NSRS2007) / California Albers                      4891 -- WGS 66 (geographic 3D)                                   9012 -- IGS05 (geographic 2D)
6414 -- NAD83(2011) / California Albers                          4923 -- PZ-90 (geographic 3D)                                    9011 -- IGS05 (geographic 3D)
3741 -- NAD83(HARN) / UTM zone 11N                               4979 -- WGS 84 (geographic 3D)                                   9014 -- IGS08 (geographic 2D)
3718 -- NAD83(NSRS2007) / UTM zone 11N                           4985 -- WGS 72 (geographic 3D)                                   9013 -- IGS08 (geographic 3D)
4411 -- NAD27 / BLM 11N (ftUS)                                   4987 -- WGS 72BE (geographic 3D)                                 9017 -- IGb08 (geographic 2D)
4431 -- NAD83 / BLM 11N (ftUS)                                   6893 -- WGS 84 / World Mercator + EGM2008 height                 9016 -- IGb08 (geographic 3D)
6340 -- NAD83(2011) / UTM zone 11N                               7657 -- WGS 84 (G730) (geographic 3D)                            9019 -- IGS14 (geographic 2D)
5069 -- NAD27 / Conus Albers                                     7659 -- WGS 84 (G873) (geographic 3D)                            9018 -- IGS14 (geographic 3D)
5070 -- NAD83 / Conus Albers                                     7661 -- WGS 84 (G1150) (geographic 3D)                           9053 -- WGS 84 (G730) (geographic 2D)
5071 -- NAD83(HARN) / Conus Albers                               7663 -- WGS 84 (G1674) (geographic 3D)                           9054 -- WGS 84 (G873) (geographic 2D)
5072 -- NAD83(NSRS2007) / Conus Albers                           7665 -- WGS 84 (G1762) (geographic 3D)                           9055 -- WGS 84 (G1150) (geographic 2D)
5499 -- NAD83(HARN) + NAVD88 height                              7678 -- PZ-90.02 (geographic 3D)                                 9056 -- WGS 84 (G1674) (geographic 2D)
5500 -- NAD83(NSRS2007) + NAVD88 height                          7680 -- PZ-90.11 (geographic 3D)                                 9057 -- WGS 84 (G1762) (geographic 2D)
6350 -- NAD83(2011) / Conus Albers                               7900 -- ITRF88 (geographic 3D)                                   9380 -- IGb14 (geographic 2D)
7406 -- NAD27 + NGVD29 height (ftUS)                             7901 -- ITRF89 (geographic 3D)                                   9379 -- IGb14 (geographic 3D)
26711 -- NAD27 / UTM zone 11N                                    7902 -- ITRF90 (geographic 3D)                                   9474 -- PZ-90.02 (geographic 2D)
26911 -- NAD83 / UTM zone 11N                                    7903 -- ITRF91 (geographic 3D)                                   9475 -- PZ-90.11 (geographic 2D)
5498 -- NAD83 + NAVD88 height                                    7904 -- ITRF92 (geographic 3D)                                   9518 -- WGS 84 + EGM2008 height
6349 -- NAD83(2011) + NAVD88 height                              7905 -- ITRF93 (geographic 3D)                                   9705 -- WGS 84 + MSL height
32211 -- WGS 72 / UTM zone 11N                                   7906 -- ITRF94 (geographic 3D)                                   9707 -- WGS 84 + EGM96 height
32411 -- WGS 72BE / UTM zone 11N                                 7907 -- ITRF96 (geographic 3D)                                   9755 -- WGS 84 (G2139) (geographic 2D)
32611 -- WGS 84 / UTM zone 11N                                   7908 -- ITRF97 (geographic 3D)                                   9754 -- WGS 84 (G2139) (geographic 3D)
10598 -- WGS 84 / GLANCE North America                           7909 -- ITRF2000 (geographic 3D)                                 9990 -- ITRF2020 (geographic 2D)
27705 -- WGS 84 / Equi7 North America                            7910 -- ITRF2005 (geographic 3D)                                 9989 -- ITRF2020 (geographic 3D)

rouault avatar Jun 17 '25 14:06 rouault