gdal raster/vector reproject: enhance completion for --dst-crs to take into extent of input dataset
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
coverage: 71.056% (-0.007%) from 71.063% when pulling c0909dec89b3ec2641a8245a95f606482107cf53 on rouault:smart_dst_crs_autocomplete into c340e3766e42ef6cdd7345de0de3c3ad7d6632b1 on OSGeo:master.
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 ?)
(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)