GDAL-RASTER-ZONAL-STATS(1) GDAL GDAL-RASTER-ZONAL-STATS(1)

gdal-raster-zonal-stats - محاسبه آمارهای منطقه‌ای رستر

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

Usage: gdal raster zonal-stats [OPTIONS] <INPUT> <OUTPUT>
Calculate raster zonal statistics
Positional arguments:
  -i, --input <INPUT>                                  Input raster datasets [required] [not available in pipelines]
  -o, --output <OUTPUT>                                Output vector dataset [required] [not available in pipelines]
Common Options:
  -h, --help                                           Display help message and exit
  --json-usage                                         Display usage as JSON document and exit
  --config <KEY>=<VALUE>                               Configuration option [may be repeated]
  -q, --quiet                                          Quiet mode (no progress bar or warning message) [not available in pipelines]
Options:
  -f, --of, --format, --output-format <OUTPUT-FORMAT>  Output format ("GDALG" allowed) [not available in pipelines]
  --co, --creation-option <KEY>=<VALUE>                Creation option [may be repeated] [not available in pipelines]
  --lco, --layer-creation-option <KEY>=<VALUE>         Layer creation option [may be repeated] [not available in pipelines]
  --overwrite                                          Whether overwriting existing output dataset is allowed [not available in pipelines]
  --update                                             Whether to open existing dataset in update mode [not available in pipelines]
  --overwrite-layer                                    Whether overwriting existing output layer is allowed [not available in pipelines]
  --append                                             Whether appending to existing layer is allowed [not available in pipelines]
                                                       Mutually exclusive with --upsert
  --output-layer <OUTPUT-LAYER>                        Output layer name [not available in pipelines]
  --skip-errors                                        Skip errors when writing features [not available in pipelines]
  -b, --band <BAND>                                    Input band(s) (1-based index) [may be repeated]
  --zones <ZONES>                                      Dataset containing zone definitions [required]
  --zones-band <ZONES-BAND>                            Band from which zones should be read
                                                       Mutually exclusive with --zones-layer
  --zones-layer <ZONES-LAYER>                          Layer from which zones should be read
                                                       Mutually exclusive with --zones-band
  --weights <WEIGHTS>                                  Weighting raster dataset
  --weights-band <WEIGHTS-BAND>                        Band from which weights should be read (default: 1)
  --pixels <PIXELS>                                    Method to determine which pixels are included in stat calculation.. PIXELS=default|fractional|all-touched
  --stat <STAT>                                        Statistic(s) to compute for each zone. STAT=center_x|center_y|count|coverage|frac|max|max_center_x|max_center_y|mean|median|min|minority|min_center_x|min_center_y|mode|stdev|sum|unique|values|variance|variety|weighted_mean|weighted_stdev|weighted_sum|weighted_variance|weights [may be repeated] [required]
  --include-field <INCLUDE-FIELD>                      Fields from polygon zones to include in output [may be repeated]
  --include-geom                                       Include polygon zone geometry in the output
  --strategy <STRATEGY>                                For polygon zones, whether to iterate over input features or raster chunks. STRATEGY=feature|raster (default: feature)
  --chunk-size <CHUNK-SIZE>                            Maximum size of raster chunks read into memory (default: 5%)
Advanced Options:
  --if, --input-format <INPUT-FORMAT>                  Input formats [may be repeated] [not available in pipelines]
  --oo, --open-option <KEY>=<VALUE>                    Open options [may be repeated] [not available in pipelines]
  --output-oo, --output-open-option <KEY>=<VALUE>      Output open options [may be repeated] [not available in pipelines]
  --upsert                                             Upsert features (implies 'append') [not available in pipelines]
                                                       Mutually exclusive with --append

دستور gdal raster zonal-stats آمارهای منطقه‌ای رستر (Zonal Statistics) را محاسبه می‌کند -- خلاصه‌ای از مقادیر پیکسل‌ها درون منطقه‌هایی که با عوارض چندضلعی (پلی‌گون) یا یک رستر دسته‌بندی‌شده (Categorical) مشخص شده‌اند.

[تصویر] میانگین ارتفاع محاسبه‌شده برای هر چندضلعی از یک رستر ارتفاعی..UNINDENT

می‌توان علاوه بر رستر مبدا، یک رستر وزن‌دهی نیز تعیین کرد که امکان محاسبه آمارهایی مانند میانگین شرایط آب‌وهوایی وزن‌دهی‌شده با جمعیت را فراهم می‌کند.

تمامی ورودی‌ها باید در یک سیستم مرجع مکانی (CRS) یکسان ارائه شوند. اگر رسترهای ورودی دارای تفکیک‌پذیری‌های متفاوتی باشند، با استفاده از بازنمونه‌برداری میانگین به یک تفکیک‌پذیری یکپارچه تغییر مقیاس می‌یابند. با این حال، هیچ بازتصویرسازی (Reprojection) انجام نمی‌شود.

هنگامی که منطقه‌ها با استفاده از چندضلعی‌ها تعریف می‌شوند، سه روش برای تعیین اینکه کدام پیکسل‌ها در محاسبه لحاظ شوند در دسترس است. به‌طور پیش‌فرض، هندسه‌ها با استفاده از پارامترهای پیش‌فرض رسترایز (پیکسلی) می‌شوند و پیکسل‌های موجود در رسترایز با وزن یکسان در محاسبه به کار می‌روند. با استفاده از --pixels all-touched، تمامی پیکسل‌هایی که با چندضلعی تماس دارند در محاسبه لحاظ می‌شوند، باز هم با وزن یکسان. اگر از --pixels fractional استفاده شود، کسری از هر پیکسل که توسط چندضلعی پوشش داده شده است محاسبه می‌شود و پیکسل‌ها بر اساس این کسر وزن‌دهی می‌شوند. این گزینه نیازمند این است که GDAL با نسخه 3.14 یا بالاتر از کتابخانه GEOS ساخته شده باشد.

نام توضیحات
center_x آرایه‌ای شامل مختصات x مرکز سلول برای هر سلولی که با چندضلعی تقاطع دارد. مرکز هر سلول ممکن است درون چندضلعی باشد یا نباشد.
center_y آرایه‌ای شامل مختصات y مرکز سلول برای هر سلولی که با چندضلعی تقاطع دارد. مرکز هر سلول ممکن است درون چندضلعی باشد یا نباشد.
count مجموع تمامی کسرهای پوشش سلول‌ها.
coverage آرایه‌ای شامل کسر پوشش هر سلولی که با چندضلعی تقاطع دارد.
frac کسری از سلول‌های پوشش‌داده‌شده که توسط هر مقدار متمایز رستر اشغال شده‌اند، همان‌طور که توسط unique ارائه می‌شود.
max بیشترین مقدار سلول‌هایی که با چندضلعی تقاطع دارند، بدون در نظر گرفتن کسرهای پوشش یا مقادیر رستر وزن‌دهی.
max_center_x مختصات x مرکز سلول برای سلول حاوی بیشترین مقدار که با چندضلعی تقاطع دارد. مرکز این سلول ممکن است درون چندضلعی باشد یا نباشد.
max_center_y مختصات y مرکز سلول برای سلول حاوی بیشترین مقدار که با چندضلعی تقاطع دارد. مرکز این سلول ممکن است درون چندضلعی باشد یا نباشد.
mean مقدار میانگین سلول‌هایی که با چندضلعی تقاطع دارند، وزن‌دهی‌شده بر اساس درصد پوشش هر سلول.
min کمترین مقدار سلول‌هایی که با چندضلعی تقاطع دارند، بدون در نظر گرفتن کسرهای پوشش یا مقادیر رستر وزن‌دهی.
min_center_x مختصات x مرکز سلول برای سلول حاوی کمترین مقدار که با چندضلعی تقاطع دارد. مرکز این سلول ممکن است درون چندضلعی باشد یا نباشد.
min_center_y مختصات y مرکز سلول برای سلول حاوی کمترین مقدار که با چندضلعی تقاطع دارد. مرکز این سلول ممکن است درون چندضلعی باشد یا نباشد.
minority مقدار رستری که کمترین تعداد سلول را اشغال کرده است، با در نظر گرفتن کسرهای پوشش سلول اما بدون لحاظ مقادیر رستر وزن‌دهی.
mode مقدار رستری که بیشترین تعداد سلول را اشغال کرده است (مد/نما)، با در نظر گرفتن کسرهای پوشش سلول اما بدون لحاظ مقادیر رستر وزن‌دهی.
stdev انحراف معیار جامعه برای مقادیر سلول‌هایی که با چندضلعی تقاطع دارند، با در نظر گرفتن کسر پوشش.
sum مجموع مقادیر سلول‌های رستر که با چندضلعی تقاطع دارند، که در آن هر مقدار رستر بر اساس کسر پوشش خود وزن‌دهی می‌شود.
unique آرایه‌ای از مقادیر یکتای رستر برای سلول‌هایی که با چندضلعی تقاطع دارند.
values آرایه‌ای از مقادیر رستر برای هر سلولی که با چندضلعی تقاطع دارد.
variance واریانس جامعه برای مقادیر سلول‌هایی که با چندضلعی تقاطع دارند، با در نظر گرفتن کسر پوشش.
variety تعداد مقادیر متمایز رستر در سلول‌هایی که به‌طور کامل یا جزئی توسط چندضلعی پوشش داده شده‌اند.
weighted_frac کسری از سلول‌های پوشش‌داده‌شده که توسط هر مقدار متمایز رستر اشغال شده‌اند، وزن‌دهی‌شده با مقدار رستر وزن‌دهی دوم. ترتیب با مقادیر بازگردانده‌شده توسط unique مطابقت دارد.
weighted_mean مقدار میانگین سلول‌هایی که با چندضلعی تقاطع دارند، وزن‌دهی‌شده با حاصل‌ضرب کسر پوشش و رستر وزن‌دهی.
weighted_stdev نسخه وزن‌دهی‌شده stdev.
weighted_variance نسخه وزن‌دهی‌شده variance
weights آرایه‌ای از مقادیر وزن برای هر سلولی که با چندضلعی تقاطع دارد.

این الگوریتم می‌تواند بخشی از یک gdal pipeline باشد.

باند(های) ورودی برای پردازش.
حداکثر اندازه تکه‌های (Chunk) رستر را برای خواندن در حافظه مشخص می‌کند. می‌تواند به‌صورت مقدار حافظه (500 MB، 2 GB و غیره) یا به‌صورت درصدی از حافظه رم در دسترس (مثلاً 10%) بیان شود.
یک یا چند فیلد از منطقه‌ها را برای کپی شدن در خروجی مشخص می‌کند. فقط هنگام استفاده از منطقه‌های برداری در دسترس است. از نسخه GDAL 3.13، می‌توان از مقادیر ویژه "ALL" و "NONE" استفاده کرد.
هندسه منطقه را در عارضه خروجی می‌گنجاند. فقط هنگام استفاده از منطقه‌های برداری در دسترس است.

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

روش تعیین اینکه کدام پیکسل‌ها باید در محاسبه لحاظ شوند: default، all-touched یا fractional.
یک یا چند مورد از آمارهای پشتیبانی‌شده را برای محاسبه در هر منطقه مشخص می‌کند.
راهبرد پردازش (raster یا feature) را هنگام استفاده از منطقه‌های برداری مشخص می‌کند. در راهبرد پیش‌فرض (--strategy feature)، GDAL روی عوارض موجود در مجموعه‌داده منطقه پیمایش می‌کند، پیکسل‌های متناظر را از رستر می‌خواند و آمارهای آن عارضه را می‌نویسد. این کار مانع از نیاز به بارگذاری کل مجموعه‌داده عارضه به‌طور هم‌زمان در حافظه می‌شود، اما اگر عوارض چندضلعی بزرگ باشند یا از نظر مکانی مرتب نباشند، ممکن است باعث خواندن چندباره پیکسل‌های یکسان شود. اگر از --strategy raster استفاده شود، GDAL روی تکه‌های مجموعه‌داده رستر پیمایش می‌کند، منطقه‌های چندضلعی متناظر را می‌یابد و آمار آن عوارض را به‌روزرسانی می‌کند. (اندازه تکه‌های رستر را می‌توان با استفاده از --chunk-size کنترل کرد.) این تضمین می‌کند که پیکسل‌های رستر فقط یک بار خوانده شوند، اما ممکن است باعث پردازش چندباره عوارض یکسان شود.
مسیر اختیاری به مجموعه‌داده‌ای که برای وزن‌دهی استفاده می‌شود.
باند رستری را که وزن‌ها می‌توانند از آن خوانده شوند مشخص می‌کند.
مسیر به مجموعه‌داده‌ای که منطقه‌ها را تعریف می‌کند. اگر مجموعه‌داده دارای بیش از ۱ باند رستر یا لایه عارضه باشد، باید --zones-band یا --zones-layer مشخص شود.
باند رستری را که منطقه‌ها می‌توانند از آن خوانده شوند مشخص می‌کند.
لایه عارضه‌ای را که منطقه‌ها می‌توانند از آن خوانده شوند مشخص می‌کند.

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

می‌تواند تکرار شود.

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

توجه داشته باشید که گزینه‌های ایجاد مجموعه‌داده با گزینه‌های ایجاد لایه متفاوت هستند.

نام قالب/درایور برای تلاش جهت باز کردن فایل(های) ورودی. معمولاً نیازی به تعیین آن نیست، اما زمانی که تشخیص خودکار درایور در انتخاب درایور مناسب ناموفق باشد، می‌توان از آن برای چشم‌پوشی از تشخیص خودکار استفاده کرد. این گزینه می‌تواند چندین بار برای تعیین چندین درایور کاندید تکرار شود. توجه داشته باشید که این گزینه درایورها را مجبور به باز کردن مجموعه‌داده نمی‌کند؛ به‌ویژه برخی درایورها نیازمندی‌هایی برای پسوند فایل دارند.

می‌تواند تکرار شود.

بسیاری از قالب‌ها یک یا چند گزینه اختیاری ایجاد لایه دارند که می‌توان از آن‌ها برای کنترل ویژگی‌های مربوط به لایه ایجادشده استفاده کرد. برای مثال، درایور GeoPackage از گزینه‌های ایجاد لایه برای کنترل شناسه عارضه یا نام ستون هندسه، تنظیم شناسه یا توضیحات و غیره پشتیبانی می‌کند.

می‌تواند تکرار شود.

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

توجه داشته باشید که گزینه‌های ایجاد لایه با گزینه‌های ایجاد مجموعه‌داده متفاوت هستند.

گزینه باز کردن مجموعه‌داده (مختص هر قالب).

می‌تواند تکرار شود.

تعیین اینکه کدام قالب برداری خروجی استفاده شود. مقادیر مجاز را می‌توان با دستور زیر به دست آورد: gdal --formats | grep vector | grep rw | sort
نام لایه‌ای را مشخص می‌کند که عوارض در آن نوشته خواهند شد. در صورت عدم تعیین، نام‌های لایه خروجی همانند نام‌های لایه ورودی خواهند بود.
در نسخه 3.12 اضافه شد.

گزینه باز کردن مجموعه‌داده برای مجموعه‌داده خروجی (مختص قالب).

می‌تواند تکرار شود.

به برنامه اجازه می‌دهد تا روی فایل یا مجموعه‌داده مقصد موجود بازنویسی کند. در غیر این صورت، به‌طور پیش‌فرض اگر فایل یا مجموعه‌داده مقصد از قبل وجود داشته باشد، gdal با خطا مواجه می‌شود.
--overwrite-layer
تعیین اینکه آیا بازنویسی روی لایه برداری خروجی موجود مجاز است یا خیر.
در نسخه 3.12 اضافه شد.

تعیین اینکه آیا باید از خطاهای نوشتن عارضه(ها) چشم‌پوشی شود یا خیر. توجه داشته باشید که این گزینه اندازه واحد تراکنش را به یک عارضه در هر بار تنظیم می‌کند، که ممکن است هنگام درج در پایگاه‌های داده باعث کاهش شدید سرعت شود.

تعیین اینکه آیا یک مجموعه‌داده خروجی موجود در حالت به‌روزرسانی باز شود یا خیر.
در نسخه 3.12 اضافه شد.

گونه‌ای از --append که در آن عملیات OGRLayer::UpsertFeature() برای درج یا به‌روزرسانی عوارض به‌جای الحاق با OGRLayer::CreateFeature() استفاده می‌شود.

این قابلیت در حال حاضر تنها در چند درایور پیاده‌سازی شده است: GPKG -- GeoPackage vector، Elasticsearch: Geographically Encoded Objects for Elasticsearch و MongoDBv3 (درایورهایی که upsert را پیاده‌سازی کرده‌اند، قابلیت GDAL_DCAP_UPSERT را ارائه می‌دهند).

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

برای درایور GPKG، همچنین امکان درج/به‌روزرسانی عوارضی که FID آن‌ها تنظیم نشده یا فاقد اهمیت است (گزینه --unset-fid در gdal vector edit می‌تواند برای نادیده گرفتن FID از عارضه منبع استفاده شود) وجود دارد، مشروط بر اینکه یک ستون یکتا (UNIQUE) که کلید اصلی عدد صحیح نیست وجود داشته باشد.

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

استفاده از یک خط لوله تو در تو برای مجموعه‌داده منطقه:

  gdal pipeline read dem.tif ! \
      zonal-stats \
        --zones [ read points.geojson ! buffer 200 ] \
        --stat mean ! \
      write \
        --output-format CSV \
        --output /vsistdout/
یا استفاده از مجموعه‌داده برداری منطقه به‌عنوان مجموعه‌داده منتقل‌شده با لوله با نام جایگزین ``_PIPE_``:
gdal pipeline read points.geojson ! \
    buffer 200 ! \
    zonal-stats \
      --input dem.tif
      --zones _PIPE_ \
      --stat mean ! \
    write \
      --output-format CSV \
      --output /vsistdout/

gdal pipeline read dem.tif !
    zonal-stats \
      --zones watersheds.shp \
      --stat max_center_x \
      --stat max_center_y ! \
    make-point \
      --x max_center_x \
      --y max_center_y \
      --output-crs EPSG:4326 ! \
    write out.geojson

Dan Baston <dbaston@gmail.com>

1998-2026

August 18, 2026