GDAL

Материал из CIToRUS wiki
Перейти к: навигация, поиск

http://www.bostongis.com/PrinterFriendly.aspx?content_name=ogr_cheatsheet

Перевести из shp-файла в geojson с разными проекциями

 ogr2ogr -f geoJSON -s_srs EPSG:3857 -t_srs EPSG:4326 Roshinsky.geojson Roshinsky.shp

Слить слой в формате geojson из WFS

 wget http://85.143.25.22:8081/geoserver/wfs?service=wfs\&version=2.0.0\&request=GetFeature\&typeNames=cite%3Ablocks_kk\&outputFormat=application/json\&SRSName=urn:x-ogc:def:crs:EPSG:4326

Перевести из geojson в shp с кодировкой UTF-8

 ogr2ogr -f "ESRI Shapefile" -lco ENCODING=UTF-8 kv.shp kv.json

Разбить geotiff-файл на тайлы

 sudo apt install python-gdal
 gdal2tiles.py -z 1-10 -a 0,0,0 ~/hfp_wgs/hdr.tiff hpf-tiles

Сжать tiff

 gdal_translate -co "COMPRESS=LZW" a.tiff c.tiff  (DEFLATE, PACKBITS)

Поменять схему tiff'а на RGB

 gdal_translate -of GTiff -co "PHOTOMETRIC=RGB" a.tiff a_color.tiff

Информация по tiff

 tiffinfo

Векторизовать geotiff-растр в shp

 gdal_polygonize.py myraster.tif -f "ESRI Shapefile" mylayer.shp

Сделать значение 0 значением no data

 gdal_translate -of GTiff -a_nodata 0 Hansen_GFC-2015-v1.3_lossyear_50N_120E.tif Hansen_GFC-2015-v1.3_lossyear_50N_120E_0.tif

Сгенерировать нужный растр по geotiff[править]

Пример: base-njs/plugins/tiffDraw.tiff

Создать новый geotiff-файл на основе всех остальных tiff'ов с настройками, как у исходных, только изменить

  • кол-во бэндов на 3 (или 4 для альфы)
  • каждый бэнд должен быть заполнен корректными данными (пускай даже нулями)!
  • тип возвращаемой трансформации - Uint8Array. см processPixels
  • тип данных д.б. Byte (0-255)
  • заполнять бэнды последовательно

Сжать tiff (не пробовал)

Получить исходный, допустим a.tiff (этот шаг не нужен)

 gdal_translate -of GTiff -co "PHOTOMETRIC=RGB" a.tiff a_color.tiff

Разбить tiff на тайлы

 gdal2tiles.py -z 9-13 -a 0,0,0 a_color.tiff alarm

 function processPixels(buffer, callback) {
 	var result = buffer.map(function(pixel) {
 		if (pixel > 0) {
 			return 200 + pixel * 15;
 		} else {
 			return 0;
 		}
 	});
 	callback(null, new Uint8Array(result));
 }