| GDAL-RASTER-CALC(1) | GDAL | GDAL-RASTER-CALC(1) |
نام (NAME)
gdal-raster-calc - انجام محاسبات پیکسلبهپیکسل روی یک رستر
اضافهشده در نسخه 3.11.
خلاصه دستور (SYNOPSIS)
Usage: gdal raster calc [OPTIONS] <INPUTS>... <OUTPUT>
انجام جبر رستری
Positional arguments:
-i, --input <INPUTS> مجموعهدادههای رستری ورودی [۱.. مقدار] [الزامی] [در خطلولهها در دسترس نیست]
-o, --output <OUTPUT> مجموعهداده رستری خروجی [الزامی] [در خطلولهها در دسترس نیست]
Common Options:
-h, --help نمایش پیام راهنما و خروج
--json-usage نمایش نحوه استفاده به صورت سند JSON و خروج
--config <KEY>=<VALUE> گزینه پیکربندی [میتواند تکرار شود]
-q, --quiet حالت بیصدا (بدون نوار پیشرفت یا پیام هشدار) [در خطلولهها در دسترس نیست]
Options:
-f, --of, --format, --output-format <OUTPUT-FORMAT> قالب خروجی ("GDALG" مجاز است) [در خطلولهها در دسترس نیست]
--co, --creation-option <KEY>=<VALUE> گزینه ساخت [میتواند تکرار شود] [در خطلولهها در دسترس نیست]
--overwrite تعیین مجاز بودن بازنویسی مجموعهداده خروجی موجود [در خطلولهها در دسترس نیست]
ناسازگار با --append
--append الحاق به عنوان زیرمجموعهداده به خروجی موجود [در خطلولهها در دسترس نیست]
ناسازگار با --overwrite
--ot, --datatype, --output-data-type <OUTPUT-DATA-TYPE> نوع داده خروجی. OUTPUT-DATA-TYPE=UInt8|Int8|UInt16|Int16|UInt32|Int32|UInt64|Int64|CInt16|CInt32|Float16|Float32|Float64|CFloat32|CFloat64
--no-check-crs عدم بررسی سازگاری و یکنواختی سیستمهای مختصات مرجع ورودی
--no-check-extent عدم بررسی سازگاری گسترههای مکانی ورودی
--propagate-nodata تنظیم پیکسلها به مقدار NoData خروجی در صورت NoData بودن هر یک از پیکسلهای ورودی
--calc <CALC> عبارت(ها) برای ارزیابی [۱.. مقدار] [الزامی]
--dialect <DIALECT> گویش عبارت. DIALECT=muparser|builtin (پیشفرض: muparser)
--flatten ایجاد یک رستر خروجی تکبانده برای هر عبارت، حتی اگر مجموعهدادههای ورودی چندبانده باشند
--nodata <NODATA> اختصاص مقدار nodata مشخصشده به باندهای خروجی ('none'، مقدار عددی، 'nan'، 'inf'، '-inf')
Advanced Options:
--if, --input-format <INPUT-FORMAT> قالبهای ورودی [میتواند تکرار شود] [در خطلولهها در دسترس نیست]
--oo, --open-option <KEY>=<VALUE> گزینههای باز کردن [میتواند تکرار شود] [در خطلولهها در دسترس نیست]
توضیحات (DESCRIPTION)
دستور gdal raster calc محاسبات پیکسلبهپیکسل را روی یک یا چند مجموعهداده ورودی GDAL انجام میدهد. محاسبات میتوانند به صورت مشتاقانه (eager) انجام شده و نتایج در یک قالب رستری متداول نوشته شوند، یا به صورت باتأخیر (lazy) به عنوان مجموعهای از باندهای مشتقشده در یک VRT (Virtual Dataset) نوشته شوند.
فهرست مجموعهدادههای ورودی GDAL میتواند در انتهای خط فرمان مشخص شود یا برای فهرستهای بسیار طولانی، درون یک فایل متنی (هر ورودی در یک خط) قرار گیرد. اگر بیش از یک مجموعهداده ورودی استفاده شود، باید پیشوندی از یک نام داشته باشد که در محاسبات با آن ارجاع داده خواهد شد؛ برای نمونه A=my_data.tif. (اگر یک مجموعهداده تکی استفاده شود، در فرمولها با متغیر X به آن ارجاع داده میشود.)
از GDAL 3.12 به بعد، همچنین میتوان با تنظیم --dialect بر روی builtin، از یک تابع پیکسلی C++ در VRT (مانند sum، mean، min، max) استفاده کرد.
ورودیها باید دارای سیستم مرجع مکانی یکسان باشند و گستره مکانی یکسانی را پوشش دهند، اما الزامی نیست که تفکیکپذیری مکانی یکسانی داشته باشند. بررسی گستره مکانی را میتوان با --no-check-extent غیرفعال کرد که در این صورت ابعاد ورودیها باید یکسان باشد. بررسی سیستم مرجع مکانی را نیز میتوان با --no-check-crs غیرفعال کرد.
از GDAL 3.12، این الگوریتم میتواند بخشی از یک gdal pipeline یا gdal raster pipeline باشد.
خروجی GDALG (مجموعهداده درلحظه / جریانی) (GDALG OUTPUT (ON-THE-FLY / STREAMED DATASET))
این برنامه از سریالسازی خط فرمان به عنوان یک فایل JSON با استفاده از قالب خروجی GDALG پشتیبانی میکند. فایل حاصل را میتوان سپس با استفاده از درایور GDALG: GDAL Streamed Algorithm به عنوان یک مجموعهداده رستری باز کرد، و خطلوله مشخصشده را به صورت درلحظه (on-the-fly) یا جریانی اعمال نمود.
گزینههای ویژه برنامه (PROGRAM-SPECIFIC OPTIONS)
- --calc
- عبارتی که
باید با
استفاده از
کتابخانه
تحلیلگر
ریاضی muparser
ارزیابی
شود. عبارت
ممکن است به
باندهای
تکی هر
ورودی
ارجاع دهد
(مثلاً X[1] + 3)
یا ممکن است
روی تمام
باندهای یک
ورودی
اعمال شود (X +
3).
دو روش برای اعمال یک عبارت روی چندین باند وجود دارد. در روش پیشفرض، عبارت روی هر باند به صورت جداگانه اعمال میشود که نتیجه آن یک باند خروجی به ازای هر باند ورودی است. برای مثال، با یک ورودی سهبانده X، عبارت --calc "X+3" به --calc "X[1]+3" --calc "X[2]+3" --calc "X[3]+3" بسط داده میشود. اگر عبارت شامل ارجاع به تمام باندهای چندین ورودی باشد، آن ورودیها یا باید تعداد باندهای یکسانی داشته باشند، یا یک تکباند باشند. برای مثال، اگر ورودیهای A و B هر کدام سه باند داشته باشند، و ورودی C یک تکباند داشته باشد، در این صورت آرگومان --calc "A + B + C" معادل است با --calc "A[1] + B[1] + C[1]" --calc "A[2] + B[2] + C[1]" --calc "A[3] + B[3] + C[1]". به طور مشابه، --calc "sum(A,B,C)" به صورت زیر بسط مییابد: --calc "sum(A[1], B[1], C[1]" --calc "sum(A[2], B[2], C[1])" --calc "sum(A[3], B[3], C[1])".
در روش دوم، که با --flatten فعال میشود، توابع تجمیعی (sum، avg، min و max) فراخوانیشده روی چندین باند، به صورت تجمیعی روی همه باندها اعمال خواهند شد. در این حالت، sum(A) به sum(A[1], A[2], A[3]) و sum(A,C) به sum(A[1], A[2], A[3], C[1]) بسط مییابد. اگر عبارت _تنها_ از توابع تجمیعی تشکیل شده باشد، صرفنظر از تعداد باندهای ورودی، یک باند خروجی تکی تولید خواهد شد. با این حال، اگر عبارت حاوی یک ارجاع غیرتجمیعی به تمام باندهای یک ورودی باشد، آنگاه همچنان به ازای هر باند ورودی، یک باند خروجی تولید خواهد شد. یک نمونه ساده، عبارت A / sum(A) است که یک رستر N-بانده تولید میکند که در آن هر باند خروجی، سهم باند ورودی از مجموع کل را شامل میشود.
میتوان چندین محاسبه را مشخص کرد؛ باند(های) خروجی به ازای هر عبارت و به ترتیبی که ارائه شدهاند، تولید خواهند شد.
رسترهای ورودی پیش از انجام محاسبات به اعداد ممیز شناور ۶۴ بیتی تبدیل خواهند شد.
از GDAL 3.12 به بعد، همچنین میتوان با تعیین --dialect بر روی builtin، از یک تابع پیکسلی C++ در VRT (مانند sum، mean، min، max) استفاده کرد. آرگومانهای توابع در داخل پرانتز ارسال میشوند، مانند sum(k=1)، min(propagateNoData=true) یا interpolate_linear(t0=1,dt=1,t=10)..SS "متغیرهای توکار (Built-in variables)"
متغیرهای توکار زیر در عبارتها در دسترس هستند:
- _CENTER_X_: مختصات X مرکز پیکسل، بیانشده در CRS مجموعهداده
- _CENTER_Y_: مختصات Y مرکز پیکسل، بیانشده در CRS مجموعهداده
- NODATA: مقدار خروجی NoData، در صورت وجود.
این متغیرها برای محاسباتی که به موقعیت مکانی وابسته هستند مفیدند، مانند تصحیحات مبتنی بر عرض جغرافیایی، تقریب زاویه تابش خورشید، یا ماسکهای منطقهای.
برای مشاهده یک نمونه کاربرد، Example 7 را ببینید.
نکته: برای کار با مقادیر طول/عرض جغرافیایی، مجموعهداده ورودی باید در یک سامانه مرجع مختصات جغرافیایی (برای نمونه EPSG:4326) باشد.
- --dialect muparser|builtin
- در نسخه 3.12
اضافه شد.
موتور عبارتی را که برای تفسیر مقدار --calc استفاده میشود مشخص میکند. پیشفرض muparser است.
- --flatten
- در نسخه 3.12
اضافه شد.
تولید یک رستر خروجی تکباند به ازای هر عبارت، حتی اگر مجموعهدادههای ورودی چندبانده باشند.
برای گویش پیشفرض muparser، استفاده از نام یک رستر ورودی (برای نمونه A) معادل با A[1],A[2],...,A[n] است. چنین ساختاری با توابع min، max، sum و avg در muparser کار میکند.
برای نمونه، اگر دو رستر A و B را با ۳ باند برای هر کدام در نظر بگیریم، آنگاه --flatten --calc "avg(A)-avg(B)" معادل خواهد بود با --calc "avg(A[1],A[2],A[3])-avg(B[1],B[2],B[3])"
و دستور --flatten --dialect=builtin --calc mean یک تکباند را با میانگین تمام ۴ باند ورودی محاسبه خواهد کرد.
- -i [<name>=]<input>
- یک مجموعهداده ورودی را برای پردازش انتخاب میکند. اگر بیش از یک مجموعهداده ورودی مشخص شود، پیش از هر مجموعهداده باید نامی قرار گیرد که در --calc به آن ارجاع داده خواهد شد.
- --no-check-extent
- بررسی نمیکند که رسترهای ورودی وسعت مکانی یکسانی دارند یا خیر. در عوض لازم است رسترهای ورودی ابعاد یکسانی داشته باشند. زمینمرجع (geotransform) اولین ورودی به خروجی اختصاص داده خواهد شد.
- --no-check-crs
- سامانههای مرجع مکانی ورودیها را از نظر سازگاری بررسی نمیکند. فرض خواهد شد که همه ورودیها دارای سامانه مرجع مکانی ورودی اول هستند و همین سامانه مرجع مکانی برای خروجی استفاده خواهد شد.
- --nodata
- در نسخه 3.12
اضافه شد.
مقدار NoData را برای مجموعهداده خروجی تنظیم میکند. میتواند برابر "none" قرار گیرد تا مقدار NoData تعریفنشده باقی بماند. اگر --nodata مشخص نشود، gdal raster calc از مقدار NoData اولین مجموعهداده مبدأ که دارای آن باشد استفاده خواهد کرد.
- --propagate-nodata
- در نسخه 3.12
اضافه شد.
در صورت تنظیم، وجود مقدار NoData در هر مجموعهداده ورودیِ استفادهشده در عبارت، باعث میشود که مقدار خروجی NoData گردد.
گزینههای استاندارد (STANDARD OPTIONS)
- --append
- رستر ورودی را به عنوان یک زیرمجموعهداده (subdataset) جدید به یک فایل خروجیِ موجود اضافه (الحاق) میکند. تنها با درایورهایی کار میکند که از افزودن زیرمجموعهدادهها پشتیبانی میکنند، مانند GTiff -- GeoTIFF File Format و GPKG -- GeoPackage raster. این گزینه همچنین مجموعهداده خروجی را در صورتی که از قبل وجود نداشته باشد ایجاد میکند.
- --co, --creation-option <NAME>=<VALUE>
- بسیاری از
قالبها یک
یا چند
گزینه ساخت
(creation option) اختیاری
دارند که
میتوان از
آنها برای
کنترل
جزئیات
فایل
ایجادشده
استفاده
کرد. برای
نمونه،
درایور GeoTIFF از
گزینههای
ساختی برای
کنترل
فشردهسازی
و اینکه
آیا فایل
باید
کاشیبندیشده
(tiled) باشد
پشتیبانی
میکند.
میتواند تکرار شود.
گزینههای ساخت موجود بسته به درایور قالب متغیر هستند، و برخی قالبهای ساده اصلاً هیچ گزینه ساختی ندارند. فهرستی از گزینههای پشتیبانیشده برای یک قالب را میتوان با گزینه خط فرمان --formats مشاهده کرد، اما مستندات مربوط به قالب، منبع قطعی اطلاعات درباره گزینههای ساخت درایور است. برای گزینههای ساخت مجاز هر قالب، مستندات اختصاصی قالب در Raster drivers را ببینید.
- --if, --input-format <format>
- نام
قالب/درایوری
که برای باز
کردن
فایل(های)
ورودی
امتحان
میشود.
معمولاً
نیازی به
مشخص کردن
آن نیست،
اما در
مواردی که
تشخیص
خودکار
درایور در
انتخاب
درایور
مناسب
ناموفق
باشد،
میتواند
برای
صرفنظر از
تشخیص
خودکار
استفاده
شود. این
گزینه
میتواند
چندین بار
برای تعیین
چندین
درایور
نامزد
تکرار شود.
توجه داشته
باشید که
این کار
درایورها
را مجبور به
باز کردن
مجموعهداده
نمیکند. به
ویژه، برخی
درایورها
الزاماتی
روی پسوند
فایل دارند.
میتواند تکرار شود.
- --oo, --open-option <NAME>=<VALUE>
- گزینه باز
کردن
مجموعهداده
(مخصوص
قالب).
میتواند تکرار شود.
- -f, --of, --format, --output-format <OUTPUT-FORMAT>
- قالب رستر خروجی برای استفاده را مشخص میکند. مقادیر مجاز را میتوان با این دستور به دست آورد: gdal --formats | grep raster | grep rw | sort
- --ot, --datatype, --output-data-type <OUTPUT-DATA-TYPE>
- نوع داده خروجی از میان Byte، Int8، UInt16، Int16، UInt32، Int32، UInt64، Int64، CInt16، CInt32، Float32، Float64، CFloat32، CFloat64.
- --overwrite
- به برنامه
اجازه
میدهد
فایل یا
مجموعهداده
هدفِ موجود
را
بازنویسی
(overwrite) کند. در
غیر این
صورت، به
طور
پیشفرض
اگر فایل یا
مجموعهداده
هدف از قبل
وجود داشته
باشد، gdal با
خطا متوقف
میشود.
برنامه در صورت موفقیت کد وضعیت 0 و در صورت بروز خطا کدی غیر از صفر را برمیگرداند (خطاهای غیرمسدودکننده که بهصورت هشدار صادر میشوند، اجرای موفقیتآمیز در نظر گرفته میشوند).
مثالها (EXAMPLES)
مثال ۱: مجموع سه فایل بهازای هر باند
gdal raster calc -i "A=file1.tif" -i "B=file2.tif" -i "C=file3.tif" --calc "A+B+C" -o out.tif
مثال ۲: میانگین تمام باندهای هر مجموعه داده بهازای هر مجموعه داده
gdal raster calc -i "A=file1.tif" -i "B=file2.tif" -i "C=file3.tif" --flatten --calc "avg(A)" --calc "avg(B)" --calc "avg(C)" -o out.tif
مثال ۳: بیشینه سه فایل بهازای هر باند
gdal raster calc -i "A=file1.tif" -i "B=file2.tif" -i "C=file3.tif" --calc "max(A,B,C)" -o out.tif
مثال ۴: تنظیم مقادیر صفر و کمتر از آن روی NaN
gdal raster calc -i "A=input.tif" -o result.tif --calc="A > 0 ? A : NaN"
مثال ۵: محاسبه میانگین (بهصورت یک تکباند) تمام باندهای دو مجموعه داده ورودی
gdal raster calc -i A=input1.tif -i B=input2.tif -o result.tif --flatten --calc=mean --dialect=builtin
مثال ۶: تولید یک لایه جهت شیب (aspect) ماسکشده در زاویه شیب بیش از ۲ درجه، با استفاده از خطلولههای تودرتو (از GDAL 3.12.1 به بعد)
gdal raster calc -i "SLOPE=[ read dem.tif ! slope ]" -i "ASPECT=[ read dem.tif ! aspect ]" -o result.tif --calc "(SLOPE >= 2) ? ASPECT : -9999" --nodata -9999
مثال ۷: محاسبه مبتنی بر عرض جغرافیایی با استفاده از _CENTER_Y_
gdal raster calc -i A=input.tif \
--calc="sin(_CENTER_Y_ * 0.0174533)" \
-o output.tif
نویسندگان (AUTHORS)
Dan Baston <dbaston@gmail.com>
کپیرایت و تکثیر (COPYRIGHT)
1998-2026
| August 18, 2026 |