GDAL_CALC(1) GDAL GDAL_CALC(1)

gdal_calc - ماشین‌حساب رستری خط فرمان با نحو numpy.

gdal_calc [--help] [--help-general]
             --calc=expression --outfile=<out_filename> [-A <filename>]
             [--A_band=<n>] [-B...-Z <filename>] [<other_options>]

ماشین‌حساب رستری خط فرمان با نحو numpy. از هرگونه محاسبات حسابی پایه‌ای که توسط آرایه‌های numpy پشتیبانی می‌شود مانند +، -، * و / به همراه عملگرهای منطقی مانند > استفاده کنید. توجه داشته باشید که تمام فایل‌ها باید ابعاد یکسانی داشته باشند (مگر اینکه از گزینهٔ --extent استفاده شود)، اما هیچ‌گونه بررسی سیستم تصویر انجام نمی‌شود (مگر اینکه از گزینهٔ --projectionCheck استفاده شود).

نکته:

gdal_calc یک ابزار Python است و تنها در صورتی در دسترس است که بایندینگ‌های GDAL Python در دسترس باشند.

راهنمایی:

معادل در واسط خط فرمان جدید "gdal":

دستور gdal raster calc را ببینید.

نمایش این پیام راهنما و خروج
--help-general
یک پیام کاربرد کوتاه برای گزینه‌های عمومی خط فرمان GDAL نمایش می‌دهد و خارج می‌شود.
محاسبه با نحو numpy با استفاده از +، -، /، * یا هر یک از توابع آرایه numpy (مانند log10()). می‌توان چندین گزینهٔ --calc را برای تولید یک فایل چندبانده مشخص کرد (GDAL >= 3.2). Example 10 را ببینید.
فایل رستری ورودی GDAL؛ می‌توانید از هر حرفی (a-z, A-Z) استفاده کنید. (حروف کوچک از GDAL 3.3 پشتیبانی می‌شوند)

یک حرف می‌تواند تکرار شود، یا چندین مقدار (جداشده با فاصله) ارائه شود (GDAL >= 3.3). نتیجه این کار ایجاد یک آرایهٔ سه‌بعدی numpy خواهد بود. از GDAL 3.5 به بعد، کاراکترهای عام (با استفاده از ?, *) برای تمام پوسته‌ها/پلتفرم‌ها پشتیبانی می‌شوند. در چنین حالتی، فرمول محاسباتی باید از این ورودی به عنوان یک آرایهٔ سه‌بعدی استفاده کند و باید یک آرایهٔ دوبعدی برگرداند (Example 3 را ببینید). اگر محاسبه یک آرایهٔ دوبعدی برنگرداند، یک خطا تولید خواهد شد.

شماره باند رستر برای فایل A (پیش‌فرض 1).
فایل خروجی برای تولید یا پر کردن.
مقدار NoDataValue خروجی (پیش‌فرض: مقدار مشخصهٔ نوع داده). برای مشخص کردن تنظیم نکردن NoDataValue از --NoDataValue=none استفاده کنید (GDAL >= 3.3)

نکته:

در استفاده از API پایتون: مقدار None نشان‌دهندهٔ مقدار پیش‌فرض مختص به نوع داده خواهد بود. مقدار 'none' نشان‌دهندهٔ عدم تنظیم NoDataValue خواهد بود.
در نسخهٔ 3.3 اضافه شد.

مقدار NoDataValue باندهای ورودی را نادیده می‌گیرد. به‌طور پیش‌فرض، مقدار NoDataValue باندهای ورودی در محاسبه شرکت داده نمی‌شوند. با تنظیم این گزینه - هیچ رفتار خاصی روی NoDataValue ورودی انجام نخواهد شد و آن‌ها مانند هر مقدار دیگری در محاسبه شرکت خواهند کرد. خروجی دارای NoDataValue تنظیم‌شده نخواهد بود، مگر اینکه صراحتاً با تنظیم --NoDataValue=<value> یک مقدار مشخص را تعیین کرده باشید.

نوع دادهٔ خروجی، باید یکی از [Byte, Int8, UInt16, Int16, UInt32, Int32, UInt64, Int64, Float64, Float32, CInt16, CInt32, CFloat64, CFloat32] باشد.

نکته:

صرف‌نظر از نوع دادهٔ تعیین‌شده با استفاده از --type، هنگام انجام عملیات حسابی میانی با استفاده از عملوندهای دارای نوع دادهٔ یکسان، نتیجهٔ عملیات نوع دادهٔ اصلی را حفظ خواهد کرد. این امر ممکن است منجر به نتایج غیرمنتظره در خروجی نهایی شود.

نکته:

انواع دادهٔ UInt64، Int64، CInt16، CInt32، CFloat32 و CFloat64 در GDAL 3.5.3 اضافه شده‌اند. Int8 در GDAL 3.7 اضافه شده است.
قالب GDAL برای فایل خروجی.
امکان مشخص کردن نام فایل یک جدول رنگ (یا یک شیء ColorTable) (با تفسیر نمایهٔ پالت) را برای استفاده در رستر خروجی فراهم می‌کند. قالب‌های پشتیبانی‌شده: txt (یعنی مانند gdaldem، اما نام‌های رنگ پشتیبانی نمی‌شوند)، qlr، qml (یعنی صادرشده از QGIS).
در نسخهٔ 3.3 اضافه شد.

این گزینه نحوهٔ مدیریت رسترهایی با محدوده‌های متفاوت را تعیین می‌کند. این گزینه با گزینهٔ projwin که برای ارائهٔ یک محدودهٔ سفارشی استفاده می‌شود، ناسازگار و مانعة‌الجمع است.

برای تمام گزینه‌های زیر، اندازهٔ پیکسل (تفکیک‌پذیری) و SRS (سامانهٔ مرجع مکانی) تمام رسترهای ورودی باید یکسان باشد.

ignore (پیش‌فرض) - فقط ابعاد رسترها مقایسه می‌شوند. اگر ابعاد مطابقت نداشته باشند، عملیات ناموفق خواهد بود.

fail - ابعاد و محدوده (مرزهای) رسترها باید مطابقت داشته باشند، در غیر این صورت عملیات با شکست مواجه می‌شود.

union - محدوده (مرزهای) خروجی، کوچک‌ترین مستطیلی خواهد بود که تمام محدوده‌های ورودی را در بر می‌گیرد.

intersect - محدوده (مرزهای) خروجی، بزرگ‌ترین مستطیلی خواهد بود که در تمام محدوده‌های ورودی گنجانده شده است.

--projwin <ulx> <uly> <lrx> <lry> در نسخه 3.3 اضافه شد.

این گزینه یک محدوده (extent) سفارشی برای خروجی مشخص می‌کند؛ استفاده هم‌زمان از آن با گزینه extent مجاز نیست.

در نسخه 3.3 اضافه شد.

به‌طور پیش‌فرض، هیچ بررسی روی سیستم تصویر انجام نخواهد شد. با فعال کردن این گزینه، در صورتی که سیستم تصویر برای تمامی باندها یکسان نباشد، عملیات ناموفق خواهد بود.

یک گزینه ساخت (creation option) را به درایور قالب خروجی ارسال می‌کند. می‌توان چندین گزینه را مشخص کرد. برای گزینه‌های ساخت مجاز مربوط به هر قالب، مستندات اختصاصی آن قالب را بررسی کنید.
مشابه با creation-option است.
اعمال عبارت بر روی تمام باندهای یک رستر مشخص. زمانی که از --allBands استفاده می‌شود، --calc تنها یک‌بار می‌تواند مشخص شود. به Example 11 و Example 12 نگاه کنید.
بازنویسی فایل خروجی در صورتی که از قبل موجود باشد. بازنویسی در اینجا باید به معنای حذف و ساخت مجدد فایل از ابتدا در نظر گرفته شود. توجه داشته باشید که اگر این گزینه مشخص نشده باشد و فایل خروجی از قبل موجود باشد، به‌صورت درجا (in place) به‌روزرسانی خواهد شد.
چاپ اطلاعات اشکال‌زدایی (debugging).
عدم نمایش پیام‌های پیشرفت.

برنامه در صورت موفقیت کد وضعیت 0، و در صورت بروز خطا مقداری غیر صفر برمی‌گرداند (خطاهای غیر مسدودکننده که به صورت هشدار ارسال می‌شوند، به عنوان یک اجرای موفقیت‌آمیز در نظر گرفته می‌شوند).

در نسخه 3.3 اضافه شد.

گزینه‌های زیر با استفاده از رابط پایتون gdal_calc در دسترس هستند. این گزینه‌ها از طریق خط فرمان در دسترس نیستند.

یک دیکشنری از توابع سفارشی یا نام‌های دیگر جهت استفاده در عبارت محاسباتی Calc.
در صورت فعال بودن، مجموعه‌داده خروجی از تابع بازگردانده شده و بسته نخواهد شد.
امکان مشخص کردن یک شیء ColorTable (با تفسیر Palette Index) را جهت استفاده در رستر خروجی فراهم می‌کند.

gdal_calc -A input1.tif -B input2.tif --outfile=result.tif --calc="(A+B)/2"

احتیاط:

اگر هر دو ورودی A و B دارای نوع داده عدد صحیح باشند، تقسیم صحیح انجام خواهد شد. برای جلوگیری از این کار، می‌توانید پیش از عملیات تقسیم، یکی از عملوندها را به نوع ممیز شناور تبدیل کنید.
gdal_calc -A input.tif -B input2.tif --outfile=result.tif --calc="(A.astype(numpy.float64) + B) / 2"

gdal_calc -A input1.tif -B input2.tif -C input3.tif --outfile=result.tif --calc="A+B+C"

gdal_calc -A input1.tif -A input2.tif -A input3.tif --outfile=result.tif --calc="numpy.sum(A,axis=0)".

gdal_calc -A input1.tif -B input2.tif -C input3.tif --outfile=result.tif --calc="(A+B+C)/3"

gdal_calc -A input1.tif input2.tif input3.tif --outfile=result.tif --calc="numpy.average(a,axis=0)".

gdal_calc -A input1.tif -B input2.tif -C input3.tif --outfile=result.tif --calc="numpy.max((A,B,C),axis=0)"

gdal_calc -A input1.tif input2.tif input3.tif --outfile=result.tif --calc="numpy.max(A,axis=0)"
gdal_calc -A input.tif --outfile=result.tif --calc="A*(A>0)" --NoDataValue=0

gdal_calc -A input.tif --outfile=result.tif --calc="A*logical_and(A>100,A<150)"

gdal_calc -A input.tif --A_band=1 -B input.tif --B_band=2 \
  --outfile=result.tif --calc="(A+B)/2" --calc="B*logical_and(A>100,A<150)"

gdal_calc -A 3band.tif -B 1band.tif --outfile result.tif --calc "A+B" --allBands A

نتیجه دارای سه باند خواهد بود، به‌طوری که هر باند شامل مقادیر 1band.tif افزوده‌شده به باند متناظر در 3band.tif است.

gdal_calc -A 3band_a.tif -B 3band_b.tif --outfile result.tif --calc "A+B" --allBands A --allBands B

نتیجه دارای سه باند خواهد بود، به‌طوری که هر باند شامل مقادیر باند متناظر از 3band_a.tif افزوده‌شده به باند متناظر از 3band_b.tif است.

Chris Yesson <chris dot yesson at ioz dot ac dot uk>, Etienne Tourigny <etourigny dot dev at gmail dot com>

1998-2026

August 18, 2026