└── README.md /README.md: -------------------------------------------------------------------------------- 1 | # GDAL Cli Snippets 2 | 3 | #### Useful examples working with [GDAL](http://www.gdal.org/) 4 | 5 | ### gdaladdo 6 | 7 | Add overviews to *.tif files in batch mode 8 | ```bash 9 | for i in `find *.tif`; do gdaladdo -r average $i 2 4 8 16 32; done 10 | ``` 11 | 12 | ### ogrinfo 13 | 14 | Create spatial index (*.qix) to shapefiles in batch mode 15 | ```bash 16 | for i in `find *.shp |cut -d '.' -f 1 ` ; do echo ogrinfo -sql "CREATE SPATIAL INDEX ON $i" $i.shp; done 17 | ``` 18 | 19 | ### gdalbuildvrt 20 | 21 | Create virtual raster from a folder containing Geotiff files 22 | ```bash 23 | gdalbuildvrt file.vrt folder_name/*.tif 24 | ``` 25 | 26 | Create virtual raster from a folder containing PNG World files 27 | ```bash 28 | gdalbuildvrt file.vrt folder_name/*.png 29 | ``` 30 | 31 | ### gdal2tiles 32 | 33 | Create tiles to disk from GeoTiff file. Zoom level 6 to 18 34 | ```bash 35 | gdal2tiles.py file.tif floder_name -z 6-18 -r antialias 36 | ``` 37 | 38 | ### gdalwarp 39 | 40 | PNG to GeoTiff and reprojection UTM 31N-ETRS89 to PseudoMercator (Google) 41 | ```bash 42 | gdalwarp -s_srs EPSG:25831 -t_srs EPSG:3857 /home/geostart/file.png /home/geostart/file.tif 43 | ``` 44 | 45 | Convert a Virtual Raster (.vrt) file to another format 46 | ```bash 47 | gdalwarp -of GTiff source.vrt output.tif 48 | ``` 49 | 50 | ### gdal_grid 51 | 52 | Virtual file with ascii point data to GeoTiff 53 | ```bash 54 | gdal_grid -of GTiff -ot Float64 -l point_layer /home/geostart/file.vrt /home/geostart/file.tif 55 | ``` 56 | 57 | ### gdaldem 58 | 59 | Create a hillshade from a dem Geotiff 60 | ```bash 61 | gdaldem hillshade /home/geostart/filedem.tif /home/geostart/filehillshade.tif 62 | ``` 63 | 64 | ### gdal_polygonize 65 | 66 | convert tif raster to vector polygons Shapefile 67 | 68 | ```bash 69 | gdal_polygonize.py -8 -nomask -b 1 input.tif -f "ESRI Shapefile" output.shp 70 | ``` 71 | 72 | convert tif raster to vector polygons MBTiles 73 | 74 | ```bash 75 | gdal_polygonize.py -8 -nomask -b 1 input_4326.tif -f "MBTiles" output.mbtiles -lco NAME=nameoutput -dsco WRITE_BOUNDS=YES -dsco MAX_FEATURES=20000000 -dsco MAXZOOM=15 76 | ``` 77 | 78 | ### ogr2ogr 79 | 80 | Convert and reproject Geopackge to MbTiles (vector-tiles) GDAL>= 2.4 81 | ```bash 82 | ogr2ogr -f MVT output.mbtiles input.gpkg -s_srs EPSG:4326 -t_srs EPSG:3857 -dsco MAXZOOM=20 -dsco MINZOOM=12 -dsco FORMAT=MBTILES -dsco MAX_SIZE=1500000 -dsco NAME=output_name_dataset -dsco EXTENT=8192 -lco NAME=output_name_layer -lco MAXZOOM=20 -lco MINZOOM=12 83 | ``` 84 | 85 | 86 | Convert Shapefile to MbTiles (vector-tiles) GDAL>= 2.4 87 | ```bash 88 | ogr2ogr -f MVT output.mbtiles input.shp -s_srs EPSG:25831 -t_srs EPSG:3857 -dsco MAXZOOM=20 -dsco MINZOOM=12 -dsco FORMAT=MBTILES -dsco MAX_SIZE=1500000 -dsco NAME=output_name_dataset -lco NAME=output_name_layer -lco MAXZOOM=20 -lco MINZOOM=12 89 | ``` 90 | 91 | Convert Shapefile to GeoPackege 92 | ```bash 93 | ogr2ogr -f GPKG /home/geostart/file.gpkg /home/geostart/file.shp 94 | ``` 95 | Convert CSV with WKT geom field to GeoJSON 96 | ```bash 97 | ogr2ogr -f "GeoJson" "file.geojson" "file.csv" -sql "SELECT *, CAST(fieldname as geometry) FROM file" 98 | ``` 99 | 100 | Shapefile to GeoJSON force geometry creation 101 | ```bash 102 | ogr2ogr -f "GeoJson" "/home/geostart/file.geojson" "/home/geostart/file.shp" -nlt POLYGON 103 | ``` 104 | 105 | Shapefile to PostGIS 106 | ```bash 107 | ogr2ogr -overwrite -f "PostgreSQL" -nln public.tableName PG:"host=127.0.0.1 user=postgres password=xxxxxx dbname=postgres_dbname" 108 | /home/geostart/file.shp -lco GEOMETRY_NAME=geom -skipfailures 109 | ``` 110 | 111 | Shapefile to PostGIS promote Multipolygon 112 | ```bash 113 | ogr2ogr -nlt PROMOTE_TO_MULTI -overwrite -f "PostgreSQL" -nln public.table_name PG:"host=127.0.0.1 user=postgres password=xxxxxx dbname=postgres_dbname" /home/geostart/file.shp -lco GEOMETRY_NAME=geom -skipfailures 114 | ``` 115 | 116 | Postgis to PostGIS with SQL 117 | ```bash 118 | ogr2ogr -overwrite -f "PostgreSQL" --config PG_USE_COPY YES -nln table_name -lco GEOMETRY_NAME=geom PG:"host=127.0.0.1 user=user_postgres password=XXXXXX dbname=output_database_name" PG:"host=127.0.0.2 user=user_postgres password=XXXXXX dbname=input_database_name" -sql "SELECT * from table_name" 119 | ``` 120 | 121 | Oracle to PostGIS with reprojection 122 | ```bash 123 | ogr2ogr -s_srs EPSG:25831 -t_srs EPSG:3857 -overwrite -f "PostgreSQL" -nln public.table_name PG:"host=127.0.0.1 user=postgres password=xxxxxx dbname=postgres_dbname" OCI:"oracle_user/oracle_pass@(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)))(CONNECT_DATA = (SID =SID_ORACLE_MACHINE)))" -sql "SELECT A.SHAPE SHAPE, B.FIELD1 FIELD2,DELEGACIO,FIELD7,FIELD4,FIELD3 FROM TABLE1.FIELD4 A, TABLE1.FIELD5 B WHERE A.FIELD3=B.F31_PC AND A.TIPO='U'" -skipfailures 124 | ``` 125 | 126 | Oracle to PostGIS using SQL sentence 127 | ```bash 128 | ogr2ogr -overwrite -f "PostgreSQL" -nln public.table_name PG:"host=127.0.0.1 user=postgres password=xxxxxx dbname=postgres_dbname" OCI:"oracle_user/oracle_pass@(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)))(CONNECT_DATA = (SID =SID_ORACLE_MACHINE)))" -sql "SELECT A.SHAPE SHAPE, B.FIELD1 FIELD2,DELEGACIO,FIELD7,FIELD4,FIELD3, C.FIELD8 FROM TABLE1.FIELD4 A, TABLE1.FIELD5 B, TABLE1.FIELD6 C WHERE A.FIELD3=B.F31_PC AND A.FIELD3 = C.F31_PC AND B.FIELD7=900" -skipfailures 129 | ``` 130 | Shapefile to Oracle with reprojection 131 | ```bash 132 | ogr2ogr -s_srs EPSG:25831 -t_srs EPSG:25831 -f OCI OCI:"USER/PASSWORD@(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)))(CONNECT_DATA = (SID =SID_ORACLE_MACHINE)))" "/home/geostart/file.shp" 133 | ``` 134 | Oracle to GeoJSON 135 | ```bash 136 | ogr2ogr -append -f "GeoJSON" /home/geostart/file.geojson OCI:"USER/PASSWORD@(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)))(CONNECT_DATA = (SID =SID_ORACLE_MACHINE))):PRG.PCIVIL_PAP" -skipfailures -mapFieldType All 137 | ``` 138 | 139 | Step 1: Convert XLSX to CVS 140 | 141 | ```bash 142 | ogr2ogr -f CSV /home/geostart/file.csv /home/geostart/file.xlsx 143 | 144 | ``` 145 | Step 2: Join CSV and Shapefile to create a GeoPackage 146 | ```bash 147 | ogr2ogr -f CSV /home/geostart/file.csv /home/geostart/file.xlsx 148 | ogr2ogr -f GPKG -sql "select name_shapefile.*, joincsv.* from name_shapefile left join 'joincsv.csv'.joincsv on name_shapefile.fieldID = joincsv.fieldID" /home/geostart/file.gpkg /home/geostart/file.shp -skipFailures 149 | ``` 150 | 151 | 152 | Shapefile to Shapafile with filter value 153 | 154 | ```bash 155 | ogr2ogr -s_srs EPSG:25831 -t_srs EPSG:4326 -overwrite output.shp input.shp -where "NameField = 400" 156 | 157 | ``` 158 | 159 | 160 | ### gdal_translate 161 | 162 | MBTILES to GeoTiff 163 | ```bash 164 | gdal_translate -oo ZOOM_LEVEL=14 /home/geostart/file.mbtiles /home/geostart/file.tif 165 | ``` 166 | XYZ ASCII file to GeoTiff 167 | ```bash 168 | gdal_translate -of GTiff /home/geostart/file.xyz /home/geostart/file.tif 169 | ``` 170 | 171 | TIFF to XYZ 172 | ```bash 173 | gdal_translate -s_srs EPSG:25831 -a_srs EPSG:3857 -outsize 25% 25% -a_nodata none -co COLUMN_SEPARATOR=; -co ADD_HEADER_LINE=YES -b 1 -of XYZ /home/geostart/file.tif /home/geostart/file_dem.xyz 174 | ``` 175 | 176 | GeoTiff to MBTILES 177 | ```bash 178 | gdal_translate /home/geostart/file.tif /home/geostart/file.mbtiles -co NAME=name_file -co QUALITY=75 -co ZOOM_LEVEL_STRATEGY=UPPER -co TILE_FORMAT=JPEG -co WRITE_BOUNDS=YES -of MBTILES 179 | 180 | gdaladdo -r average /home/geostart/file.mbtiles 2 4 8 16 181 | ``` 182 | 183 | Tif to Raster MBTiles : 184 | ```bash 185 | gdal_translate /home/geostart/file.tif /home/geostart/file.mbtiles -co NAME=name_file -co ZOOM_LEVEL_STRATEGY=UPPER -co TILE_FORMAT=PNG -co RESAMPLING=NEAREST -co WRITE_BOUNDS=YES -of MBTILES 186 | 187 | gdaladdo /home/geostart/file.mbtiles 2 4 8 16 188 | ``` 189 | MBTILES to MBTILES cropping by bounding box and zoom level 190 | ```bash 191 | gdal_translate /home/geostart/file_in.mbtiles /home/geostart/file_out.mbtiles -co TILE_FORMAT=JPEG -co QUALITY=85 -of MBTILES -oo MINX=164729 -oo MINY=5167665 -oo MAXX=201866 -oo MAXY=5185641 -oo ZOOM_LEVEL=17 -co WRITE_BOUNDS=YES 192 | ``` 193 | 194 | ### gdaltransform 195 | 196 | Vertical transformation orthometric to ellipsoidal XYZ Ascii file 197 | ```bash 198 | gdaltransform -s_srs "+proj=longlat +datum=WGS84 +geoidgrids=/home/gdaldata/egm96_15.gtx +no_defs" -t_srs "+proj=longlat +datum=WGS84 +units=m +no_def" < /home/geostart/file.xyz > /home/geostart/file_elip91.xyz 199 | ``` 200 | 201 | 202 | ## Other resources 203 | 204 | 205 | https://www.bostongis.com/?content_name=ogr_cheatsheet#41 206 | 207 | https://gdal.org/tutorials/ 208 | 209 | https://geoserver.geo-solutions.it/educational/en/raster_data/processing.html 210 | 211 | https://developers.planet.com/planetschool/getting-started-with-gdal/ 212 | 213 | https://github.com/dwtkns/gdal-cheat-sheet 214 | 215 | https://github.com/USGS-Astrogeology/GDAL_scripts 216 | 217 | 218 | --------------------------------------------------------------------------------