2015-11-28 4 views
0

Попытка этого из TextMate. Результаты показаны в конце. Если я копирую результат в терминал, он работает нормально. Наверное, что-то простое. Я сократил пути с ... в этом представленииВызов gdal из Ruby

#!/usr/bin/env ruby 

require 'shellwords' 

InputDirPath = ".../OrthoTIF-3bands/" 
OutputDirPath = ".../Ortho-compressed/" 
i = 0 
Dir.foreach(InputDirPath) do |item| 
    next if item == '.' or item == '..' 
    i += 1 
    name = File.basename(item,"tif") 
    puts "\n#{i}. gdal_translate -co COMPRESS=JPEG -co PHOTOMETRIC=YCBCR #{InputDirPath.shellescape}#{item.shellescape} #{OutputDirPath.shellescape}/#{name}_Compressed.tif" 
    output =  `gdal_translate -co COMPRESS=JPEG -co PHOTOMETRIC=YCBCR #{InputDirPath.shellescape}#{item.shellescape} #{OutputDirPath.shellescape}/#{name}_Compressed.tif` 
    puts output 
end 

--> 1. gdal_translate -co COMPRESS=JPEG -co PHOTOMETRIC=YCBCR .../OrthoTIF-3bands/Bradshaw_Mts.Ortho.tif .../Ortho-compressed//Bradshaw_Mts.Ortho._Compressed.tif 
--> sh: gdal_translate: command not found 
+1

могли бы запустить его с дополнительным: 'путы \', который gdal_translate \ '- может быть, это не в вашем PATH? – stef

+0

Пожалуйста, объясните, в чем проблема. Как есть, вы не задали вопрос, просто показали код и вывод. Что вы ожидаете от кода? Пожалуйста, прочитайте «[ask]» вместе со ссылками на этой странице, чтобы получить представление о том, что нам нужно. Кроме того, в Ruby 'InputDirPath' должно быть' INPUT_DIR_PATH' , а 'OutputDirPath' должно быть' OUTPUT_DIR_PATH'. Мы используем SNAKE_CASE для констант. –

+0

Спасибо вам обоим. GDAL установлен в нестандартном (к этому относительному новичку) пути. /Library/Frameworks/GDAL.framework/Programs/gdal_translate. – Greg

ответ

2
command not found 

Очень похоже проблема путь ваш суб-оболочки. Вместо того, чтобы полагаться на способность ОС искать путь, вам необходимо предоставить явный/абсолютный путь к команде.

Если gdal_translate находится в/USR/местные/бен, а затем использовать:

/usr/local/bin/gdal_translate