| GDAL-PIPELINE(1) | GDAL | GDAL-PIPELINE(1) |
نام (NAME)
gdal-pipeline - پردازش یک مجموعه داده با اعمال چندین مرحله
در نسخه 3.12 افزوده شد.
توضیحات (DESCRIPTION)
دستور gdal pipeline یک خط لوله (pipeline) را اجرا میکند؛ یک مجموعه داده ورودی رستر یا برداری را دریافت کرده، مراحل را اجرا میکند و در نهایت یک مجموعه داده رستر یا برداری مینویسد.
بیشتر مراحل، بلوکهای رستر یا عوارض (features) را بر حسب تقاضا (on-demand) ارزیابی میکنند، مگر آنکه در مستندات آنها خلاف این قید شده باشد، بدون اینکه مجموعه داده حاصل از عملیات هر مرحله "مادیسازی" (materialize) شود. گاهی اوقات ممکن است برای اهداف کارایی، مادیسازی یک مجموعه داده واسط بر روی دیسک با استفاده از gdal raster materialize یا gdal vector materialize مطلوب باشد.
خلاصه دستور (SYNOPSIS)
کاربرد: gdal pipeline [OPTIONS] <PIPELINE> پردازش یک مجموعه داده با اعمال چندین مرحله. Positional arguments: Common Options: -h, --help نمایش پیام راهنما و خروج --json-usage نمایش نحوه استفاده به صورت سند JSON و خروج --config <KEY>=<VALUE> گزینه پیکربندی [میتواند تکرار شود] -q, --quiet حالت بیصدا (بدون نوار پیشرفت یا پیام هشدار) [در خط لولهها در دسترس نیست] Advanced Options: --<user-provided-option>=<value> آرگومان ارائهشده توسط کاربر <PIPELINE> به این صورت است: read|calc|concat|create|mosaic|stack [READ-OPTIONS] ( ! <STEP-NAME> [STEP-OPTIONS] )* ! write!info!tile [WRITE-OPTIONS]
یک خط لوله، چندین مرحله را که با نویسه ! (علامت تعجب) از یکدیگر جدا شدهاند، به هم زنجیر میکند. قرار دادن یک ! بین gdal pipeline و مرحله نخست، اختیاری است. مرحله اول باید read، calc، concat، mosaic یا stack باشد، و مرحله پایانی باید info، tile یا write باشد. هر مرحله آرگومانهای موضعی یا غیرموضعی ویژه خود را دارد. بهجز read، calc، concat، mosaic، stack، info، tile، partition و write، سایر مراحل را میتوان بالقوه چندین بار در یک خط لوله به کار برد.
مثال ۱: محاسبه ردپا (footprint) یک رستر و اعمال یک بافر (buffer) بر روی ردپا
$ gdal pipeline ! read in.tif ! footprint ! buffer 20 ! write out.gpkg --overwrite
مراحل (STEPS)
برای مراحلی که نوع داده ورودی و خروجی آنها هر دو raster است، به gdal raster pipeline مراجعه کنید. برای مراحلی که نوع داده ورودی و خروجی آنها هر دو vector است، به gdal vector pipeline مراجعه کنید.
جدول زیر مراحلی را فهرست میکند که دادهها را بین رستر و بردار تبدیل میکنند.
| مرحله | جهت |
| contour | رستر به بردار |
| footprint | رستر به بردار |
| pixel-info | رستر به بردار |
| polygonize | رستر به بردار |
| grid | بردار به رستر |
| rasterize | بردار به رستر |
| tee | بردار به رستر |
| contour | |
| 0.0 | |
| 3.5 | |
| * contour [OPTIONS] | |
| ------------------- | |
| ایجاد خطوط تراز برداری از یک مدل رقومی ارتفاع (DEM). | |
| گزینهها: | |
| --output-layer <OUTPUT-LAYER> نام لایه خروجی | |
| -b, --band <BAND> باند ورودی (نمایه مبتنی بر ۱) (پیشفرض: 1) | |
| --elevation-name <ELEVATION-NAME> نام فیلد ارتفاع | |
| --min-name <MIN-NAME> نام فیلد حداقل ارتفاع | |
| --max-name <MAX-NAME> نام فیلد حداکثر ارتفاع | |
| --3d اجبار به ایجاد بردارهای سهبعدی به جای دوبعدی | |
| --input-nodata <INPUT-NODATA> مقدار پیکسل ورودی جهت در نظر گرفتن به عنوان 'nodata' | |
| --interval <INTERVAL> فاصله ارتفاعی بین خطوط تراز | |
| مانعهالجمع با --levels، --exp-base | |
| --levels <LEVELS> فهرست ترازهای کانتور [تکرارپذیر] | |
| مانعهالجمع با --interval، --exp-base | |
| -e, --exp-base <EXP-BASE> پایه برای تولید نمایی ترازهای کانتور | |
| مانعهالجمع با --interval، --levels | |
| --off, --offset <OFFSET> آفست جهت اعمال بر ترازهای کانتور | |
| -p, --polygonize ایجاد چندضلعیها به جای خطوط | |
| --group-transactions <GROUP-TRANSACTIONS> گروهبندی n عارضه در هر تراکنش (پیشفرض: 100 000) | |
| 168u | |
| 168u | |
| جزئیات گزینهها را میتوانید در gdal raster contour بیابید. | |
| footprint | |
| 0.0 | |
| 3.5 | |
| * footprint [OPTIONS] | |
| --------------------- | |
| محاسبه ردپای (footprint) یک مجموعهداده رستر. | |
| گزینهها: | |
| --output-layer <OUTPUT-LAYER> نام لایه خروجی (پیشفرض: footprint) | |
| -b, --band <BAND> باند(های) ورودی (نمایه مبتنی بر ۱) [تکرارپذیر] | |
| --combine-bands <COMBINE-BANDS> تعیین نحوه ترکیب باندهای ماسکِ باندهای انتخابشده پیش از برداریسازی جهت تولید یک باند ماسک منفرد.. COMBINE-BANDS=union|intersection (پیشفرض: union) | |
| --overview <OVERVIEW> کدام سطح بازبینی (overview) از فایل مبدأ باید استفاده شود | |
| مانعهالجمع با --input-nodata | |
| --input-nodata <INPUT-NODATA> تنظیم مقادیر nodata برای باندهای ورودی. [۱.. مقدار] | |
| مانعهالجمع با --overview | |
| --coordinate-system <COORDINATE-SYSTEM> دستگاه مختصات هدف. COORDINATE-SYSTEM=georeferenced|pixel | |
| --output-crs <OUTPUT-CRS> سامانه مرجع مختصات (CRS) خروجی | |
| --split-multipolygons تفکیک چندضلعیهای چندگانه (multipolygons) به چند عارضه که هر کدام دارای یک چندضلعی منفرد باشند | |
| --convex-hull محاسبه پوش محدب (convex hull) برای ردپا | |
| --densify-distance <DENSIFY-DISTANCE> حداکثر فاصله میان ۲ نقطه متوالی از هندسه خروجی. | |
| --simplify-tolerance <SIMPLIFY-TOLERANCE> میزان تلورانس مورد استفاده برای ادغام نقاط متوالی در هندسه خروجی. | |
| --min-ring-area <MIN-RING-AREA> حداقل مقدار برای مساحت یک حلقه (ring) | |
| --max-points <MAX-POINTS> حداکثر تعداد نقاط هر هندسه خروجی (پیشفرض: 100) | |
| --location-field <LOCATION-FIELD> نام فیلدی که مسیر مجموعهداده ورودی در آن ذخیره میشود. (پیشفرض: location) | |
| مانعهالجمع با --no-location-field | |
| --no-location-field غیرفعالسازی ایجاد فیلد حاوی مسیر مجموعهداده ورودی | |
| مانعهالجمع با --location-field | |
| --absolute-path تعیین اینکه آیا مسیر مجموعهداده ورودی باید به صورت مسیر مطلق ذخیره شود یا خیر | |
| 168u | |
| 168u | |
| جزئیات گزینهها را میتوانید در gdal raster footprint بیابید. | |
| grid | |
| 0.0 | |
| 3.5 | |
| * grid <COMMAND> [OPTIONS] | |
| -------------------------- | |
| که در آن <COMMAND> یکی از موارد زیر است: | |
| - average: ایجاد یک شبکه منظم از نقاط پراکنده با استفاده از درونیابی میانگین متحرک. | |
| - average-distance: ایجاد یک شبکه منظم از نقاط پراکنده با استفاده از میانگین فاصله بین گره شبکه (مرکز بیضی جستجو) و تمام نقاط داده در بیضی جستجو. | |
| - average-distance-points: ایجاد یک شبکه منظم از نقاط پراکنده با استفاده از میانگین فاصله بین نقاط داده در بیضی جستجو. | |
| - count: ایجاد یک شبکه منظم از نقاط پراکنده با استفاده از تعداد نقاط در بیضی جستجو. | |
| - invdist: ایجاد یک شبکه منظم از نقاط پراکنده با استفاده از درونیابی عکس فاصله وزندار (IDW). | |
| - invdistnn: ایجاد یک شبکه منظم از نقاط پراکنده با استفاده از درونیابی عکس فاصله وزندار نزدیکترین همسایه. | |
| - linear: ایجاد یک شبکه منظم از نقاط پراکنده با استفاده از درونیابی خطی/مرکز ثقلی (barycentric). | |
| - maximum: ایجاد یک شبکه منظم از نقاط پراکنده با استفاده از بیشترین مقدار در بیضی جستجو. | |
| - minimum: ایجاد یک شبکه منظم از نقاط پراکنده با استفاده از کمترین مقدار در بیضی جستجو. | |
| - nearest: ایجاد یک شبکه منظم از نقاط پراکنده با استفاده از درونیابی نزدیکترین همسایه. | |
| - range: ایجاد یک شبکه منظم از نقاط پراکنده با استفاده از اختلاف بین مقادیر کمینه و بیشینه در بیضی جستجو. | |
| 168u | |
| 168u | |
| جزئیات گزینهها را میتوانید در gdal vector grid بیابید. | |
| pixel-info | |
| 0.0 | |
| 3.5 | |
| * pixel-info [OPTIONS] <INPUT> [<POSITION-DATASET>] | |
| --------------------------------------------------- | |
| بازگرداندن اطلاعات مربوط به یک پیکسل از مجموعهداده رستر. | |
| آرگومانهای موضعی: | |
| -i, --dataset, --input <INPUT> مجموعهدادههای رستر ورودی [الزامی] | |
| --position-dataset <POSITION-DATASET> مجموعهداده برداری حاوی مختصات | |
| مانعهالجمع با --position | |
| گزینهها: | |
| -l, --layer, --input-layer <INPUT-LAYER> نام لایه ورودی | |
| -b, --band <BAND> باند(های) ورودی (نمایه مبتنی بر ۱) [تکرارپذیر] | |
| --overview <OVERVIEW> کدام سطح بازبینی (overview) از فایل مبدأ باید استفاده شود | |
| -p, --pos, --position <column,line> or <X,Y> موقعیت پیکسل [تکرارپذیر] | |
| مانعهالجمع با --position-dataset | |
| --position-crs <POSITION-CRS> سامانه مرجع مختصات (CRS) موقعیت (در صورت عدم تعیین 'position-dataset' پیشفرض 'pixel' است) | |
| -r, --resampling <RESAMPLING> الگوریتم بازنمونهبرداری برای درونیابی. RESAMPLING=nearest|bilinear|cubic|cubicspline (پیشفرض: nearest) | |
| --promote-pixel-value-to-z تعیین اینکه مقدار پیکسل به عنوان مؤلفه Z در هندسه GeoJSON تنظیم شود یا خیر | |
| --include-field <INCLUDE-FIELD> فیلدهایی از مجموعهداده مختصات جهت درج در خروجی (مقادیر ویژه: ALL و NONE) (پیشفرض: ALL) [تکرارپذیر] | |
| 168u | |
| 168u | |
| جزئیات گزینهها را میتوانید در gdal raster pixel-info بیابید..SS polygonize | |
| 0.0 | |
| 3.5 | |
| * polygonize [OPTIONS] | |
| ---------------------- | |
| ایجاد یک مجموعهداده عارضه چندضلعی از یک باند رستر. | |
| گزینهها: | |
| --output-layer <OUTPUT-LAYER> نام لایه خروجی | |
| -b, --band <BAND> باند ورودی (نمایه مبتنی بر ۱) (پیشفرض: 1) | |
| --attribute-name <ATTRIBUTE-NAME> نام فیلد دارای مقدار پیکسل (پیشفرض: DN) | |
| -c, --connect-diagonal-pixels در نظر گرفتن پیکسلهای مورب به عنوان متصل | |
| 168u | |
| 168u | |
| جزئیات مربوط به گزینهها در gdal raster polygonize یافت میشود. | |
| rasterize | |
| 0.0 | |
| 3.5 | |
| * rasterize [OPTIONS] | |
| --------------------- | |
| هندسههای برداری را روی یک رستر حک (burn) میکند. | |
| گزینهها: | |
| -b, --band <BAND> باند(هایی) که مقادیر در آنها حک میشود (نمایه مبتنی بر ۱) [قابل تکرار] | |
| --invert معکوس کردن رسترسازی | |
| --all-touched فعالسازی گزینه رسترسازی ALL_TOUCHED | |
| --burn <BURN> مقدار حک (burn) [قابل تکرار] | |
| -a, --attribute-name <ATTRIBUTE-NAME> نام مشخصه | |
| --3d مشخص میکند که مقدار حک باید از مقادیر Z عارضه استخراج شود | |
| -l, --input-layer <INPUT-LAYER> نام لایه ورودی | |
| ناسازگار با --sql | |
| --where <WHERE> بند where در SQL | |
| --sql <SQL> عبارت select در SQL | |
| ناسازگار با --input-layer | |
| --dialect <DIALECT> گویش SQL | |
| --nodata <NODATA> اختصاص یک مقدار nodata مشخص به باندهای خروجی | |
| --init <INIT> مقداردهی اولیه باندهای خروجی با مقدار مشخصشده [قابل تکرار] | |
| --crs <CRS> بازنویسی سیستم تصویر برای فایل خروجی | |
| --transformer-option <NAME>=<VALUE> تنظیم یک گزینه transformer مناسب برای ارسال به GDALCreateGenImgProjTransformer2 [قابل تکرار] | |
| --extent <xmin>,<ymin>,<xmax>,<ymax> تنظیم محدوده زمینمرجع هدف [۴ مقدار] | |
| --resolution <xres>,<yres> تنظیم تفکیکپذیری هدف [۲ مقدار] | |
| ناسازگار با --size | |
| --tap, --target-aligned-pixels (پیکسلهای همتراز هدف) همتراز کردن مختصات محدوده فایل خروجی با مقادیر تفکیکپذیری | |
| وابسته به --resolution | |
| --size <xsize>,<ysize> تنظیم اندازه هدف بر حسب پیکسل و خطوط [۲ مقدار] | |
| ناسازگار با --resolution | |
| --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 | |
| --optimization <OPTIMIZATION> اجبار الگوریتم مورد استفاده (نتایج یکسان هستند). OPTIMIZATION=AUTO|RASTER|VECTOR (پیشفرض: AUTO) | |
| 168u | |
| 168u | |
| جزئیات مربوط به گزینهها در gdal vector rasterize یافت میشود. | |
| tee | |
| 0.0 | |
| 3.5 | |
| * tee [OPTIONS] [<PIPELINE>...] | |
| ------------------------------- | |
| هدایت ورودی به جریان خروجی و خطلولههای تو در توی جانبی. | |
| آرگومانهای موقعیتی: | |
| --tee-pipeline <PIPELINE> خطلوله تو در تو [۱.. مقدار] | |
| 168u | |
| 168u | |
| جزئیات مربوط به گزینهها در Output nested pipeline یافت میشود. | |
| "خروجی GDALG (مجموعهداده در لحظه / جاری) (GDALG OUTPUT (ON-THE-FLY / STREAMED DATASET))" | |
| یک خطلوله را میتوان با استفاده از قالب خروجی GDALG به صورت یک فایل JSON سریالسازی کرد. | |
| سپس فایل حاصل میتواند با استفاده از درایور GDALG: GDAL Streamed Algorithm یا GDALG: GDAL Streamed Algorithm به عنوان یک مجموعهداده باز شده و خطلوله مشخصشده را به صورت در لحظه (on-the-fly) یا جاری (streamed) اعمال کند. | |
| عضو command_line در فایل JSON قاعدتاً باید کل خط فرمان بدون مرحله پایانی write باشد، و این همان چیزی است که توسط دستور | |
| gdal pipeline ! .... ! write out.gdalg.json | |
| تولید میشود. | |
| 0.0 | |
| 3.5 | |
| { | |
| "type": "gdal_streamed_alg", | |
| "command_line": "gdal pipeline ! read in.tif ! footprint ! buffer 20" | |
| } | |
| 168u | |
| 168u | |
| مرحله نهایی write میتواند اضافه شود، اما در این صورت باید صراحتاً قالب خروجی stream و یک نام صوری برای مجموعهداده خروجی را مشخص کند. | |
| 0.0 | |
| 3.5 | |
| { | |
| "type": "gdal_streamed_alg", | |
| "command_line": "gdal pipeline ! read in.tif ! footprint ! buffer 20 ! write --output-format=streamed streamed_dataset" | |
| } | |
| 168u | |
| 168u | |
| "جایگزینیها (SUBSTITUTIONS)" | |
| همچنین میتوان با استفاده از gdal pipeline از خطلولهای که از پیش در یک فایل .gdalg.json سریالسازی شده است استفاده کرد و مراحل موجود آن را سفارشی نمود؛ بهطور معمول تغییر نام فایل ورودی، مشخص کردن نام فایل خروجی، یا افزودن/ویرایش آرگومانهای مراحل. | |
| نحو (syntax) دستور به این صورت است: | |
| 0.0 | |
| 3.5 | |
| gdal pipeline <filename.gdalg.json> --<step-name>.<arg-name>=value | |
| 168u | |
| 168u | |
| هنگام مشخص کردن یک آرگومان موجود برای یک مرحله از خطلوله، مقدار موجود در خطلوله با مقدار مشخصشده در خط فرمان gdal pipeline بازنویسی میشود. | |
| فرض کنید فایلی به نام raster_reproject.gdalg.json با محتوای زیر داریم: | |
| 0.0 | |
| 3.5 | |
| { | |
| "type": "gdal_streamed_alg", | |
| "command_line": "gdal pipeline ! read in.tif ! reproject --output-crs=EPSG:4326 ! edit --metadata=CHANGES=reprojected" | |
| } | |
| 168u | |
| 168u | |
| میتوان آن را با خط فرمان زیر اجرا کرد، که آرگومان input از مرحله read را بازنویسی میکند و به طور ضمنی یک مرحله پایانی write با یک آرگومان output میافزاید. | |
| 0.0 | |
| 3.5 | |
| $ gdal pipeline raster_reproject.gdalg.json --read.input=other_input.tif --write.output=out.tif | |
| 168u | |
| 168u | |
| در صورت عدم وجود ابهام، حذف نام مرحله و صرفاً مشخص کردن نام آرگومان نیز ممکن است (اگر ابهامی وجود داشته باشد، gdal pipeline خطا صادر خواهد کرد، بنابراین انجام این کار ایمن است): | |
| 0.0 | |
| 3.5 | |
| $ gdal pipeline raster_reproject.gdalg.json --input=other_input.tif --output=out.tif --co COMPRESS=LZW --overwrite | |
| 168u | |
| 168u | |
| هنگامی که یک مرحله چندین بار در خطلوله تکرار میشود، باید به صورت <step-name>[<idx>] مشخص شود، که در آن <idx> یک نمایه مبتنی بر صفر است. | |
| برای مثال، با در نظر گرفتن: | |
| 0.0 | |
| 3.5 | |
| { | |
| "type": "gdal_streamed_alg", | |
| "command_line": "gdal pipeline ! read in.tif ! edit --metadata=before=value ! reproject --output-crs=EPSG:4326 ! edit --metadata=CHANGES=reprojected" | |
| } | |
| 168u | |
| 168u | |
| خط فرمان زیر میتواند به کار رود: | |
| 0.0 | |
| 3.5 | |
| $ gdal pipeline raster_reproject.gdalg.json --edit[0].metadata=before=modified --output=out.tif | |
| 168u | |
| 168u | |
| اجرای خطلولهها و جایگزینی آرگومانها در Python نیز با دستور زیر امکانپذیر است: | |
| 0.0 | |
| 3.5 | |
| gdal.Run("pipeline", pipeline="raster_reproject.gdalg.json", output="out.tif", arguments={"edit[0].metadata": "before=modified"}) | |
| 168u | |
| "نام جاینگهدار مجموعه داده _PIPE_ (PLACEHOLDER DATASET NAME _PIPE_)" | |
| در نسخه 3.13 اضافه شد. | |
| بهطور پیشفرض، در یک مرحله از خط لوله (pipeline) که چند آرگومانِ مجموعه داده ورودی میپذیرد، نخستین آرگومان مکانی، input، بهطور ضمنی روی مجموعه داده خروجی مرحله پیشین تنظیم میشود. در برخی موارد، ممکن است مطلوب باشد که مجموعه داده خروجی از مرحله پیشین، در عوض به یکی دیگر از آرگومانهای مجموعه داده ورودی هدایت (pipe) شود. | |
| این کار را میتوان با استفاده از نام جاینگهدار مجموعه داده _PIPE_ (کلمه PIPE همراه با نویسه زیرخط در ابتدا و انتهای آن) به عنوان مقدار آرگومانِ مجموعه داده جایگزین، در حالی که آرگومان مکانی مجموعه داده ورودی صراحتاً مشخص شده است، انجام داد. | |
| "مثال ۲: خلاصهسازی میانگین ارتفاع در فاصله ۲۰۰ متری از نقاط مورد نظر" | |
| 0.0 | |
| 3.5 | |
| gdal pipeline read points.geojson ! buffer 200 ! \ | |
| zonal-stats \ | |
| --input dem.tif | |
| --zones _PIPE_ \ | |
| --stat mean ! \ | |
| write \ | |
| --output-format CSV \ | |
| --output /vsistdout/ | |
| 168u | |
| 168u | |
| همچنین همانطور که در زیر شرح داده شده است، دستیابی به همین نتیجه با استفاده از یک خط لوله تو در توی ورودی امکانپذیر است. | |
| "خط لوله تو در تو (NESTED PIPELINE)" | |
| امکان ایجاد "خطهای لوله تو در تو" (خطوط لوله درون خطوط لوله دیگر) وجود دارد. | |
| یک خط لوله تو در تو با براکتهای مربع ([ و ]) که با نویسه فاصله (space) احاطه شدهاند، محدود و مشخص میشود. | |
| ۲ نوع خط لوله تو در تو وجود دارد: | |
| 0.0 | |
| • 2 | |
| خطوط لوله تو در توی ورودی (input nested pipelines): جایی که مجموعه داده نتیجه خط لوله تو در تو، به عنوان مجموعه داده ورودی برای یک آرگومان از خط لوله اصلی استفاده میشود. | |
| • 2 | |
| خطوط لوله تو در توی خروجی (output nested pipelines): جایی که خروجی یک مرحله از خط لوله اصلی، به عنوان ورودی خط لوله تو در تو در مرحله بعدی استفاده میشود. خطوط لوله تو در توی خروجی فقط با مرحله tee قابل استفاده هستند. | |
| 168u | |
| "خط لوله تو در توی ورودی" | |
| هر جا که یک مجموعه داده ورودی به عنوان مجموعه داده کمکی انتظار میرود، میتوان آن را به عنوان نتیجه یک خط لوله تو در تو مشخص کرد. محتوای یک خط لوله تو در توی ورودی با خط لوله بیرونی یکسان است، با این تفاوت که نباید با یک مرحله تولیدکننده خروجی مانند info، tile یا write به پایان برسد. | |
| "مثال ۳: ترکیب خروجی نقشه برجستهنما و بازنمایی ارتفاعسنجی روی یک DEM برای ایجاد یک نقشه برجستهنمای رنگی" | |
| 0.0 | |
| 3.5 | |
| $ gdal pipeline read n43.tif ! \ | |
| color-map --color-map color_file.txt ! \ | |
| blend --operator=hsv-value --overlay \ | |
| [ read n43.tif ! hillshade -z 30 ] ! \ | |
| write out.tif --overwrite | |
| 168u | |
| 168u | |
| در مثال بالا، مقدار آرگومان overlay در مرحله blend برابر با خروجی خط لوله تو در توی read n43.tif ! hillshade -z 30 تنظیم شده است. | |
| [تصویر] | |
| "خط لوله تو در توی خروجی" | |
| مرحله tee در یک خط لوله، مجموعه داده ورودی را به عنوان خروجی خود به جلو هدایت میکند و علاوه بر این یک یا چند خط لوله تو در تو را اجرا میکند که این مجموعه داده ورودی را به عنوان ورودی دریافت کرده و پردازشهای دیگری انجام میدهند تا در نهایت خروجی آن پردازش را بنویسند. نخستین مرحله یک خط لوله تو در توی خروجی tee نباید read، calc، concat، mosaic یا stack باشد، و آخرین مرحله آن باید write یا tile باشد. عملگر tee میتواند در میانه یک خط لوله یا به عنوان آخرین مرحله آن استفاده شود. | |
| مثال زیر نمونهای را نشان میدهد که در آن عملگر tee دو خط لوله تو در توی خروجی را اجرا میکند. | |
| "مثال ۴: تفکیک محتوای یک لایه "cities" بر اساس این که جمعیت آن کمتر یا بیشتر از ۱ میلیون نفر است" | |
| 0.0 | |
| 3.5 | |
| $ gdal pipeline read cities.gpkg ! \ | |
| tee [ filter --where "pop < 1e6" ! write small_cities.gpkg ] \ | |
| [ filter --where "pop >= 1e6" ! write big_cities.gpkg ] | |
| 168u | |
| 168u | |
| مثال زیر یک کاربرد پیچیدهتر را نشان میدهد که شامل دو مورد استفاده از tee است و یکی از آنها یک خط لوله تو در توی خروجی درون یک خط لوله تو در توی ورودی است. | |
| "مثال ۵: ترکیب خروجی نقشه برجستهنما و بازنمایی ارتفاعسنجی روی یک DEM برای ایجاد یک نقشه برجستهنمای رنگی، و نوشتن مجموعه داده میانی hillshade و رنگآمیزیشده" | |
| 0.0 | |
| 3.5 | |
| $ gdal pipeline read n43.tif ! \ | |
| color-map --color-map color_file.txt ! \ | |
| tee [ write colored.tif --overwrite ] ! \ | |
| blend --operator=hsv-value --overlay \ | |
| [ read n43.tif ! hillshade -z 30 ! tee [ write hillshade.tif --overwrite ] ] ! \ | |
| write colored-hillshade.tif --overwrite | |
| 168u | |
| 168u | |
| [تصویر] | |
| "وضعیت خروج (RETURN STATUS CODE)" | |
| برنامه در صورت موفقیت کد وضعیت 0 و در صورت بروز خطا مقداری غیر صفر بازمیگرداند (خطاهای غیرمسدودکننده که به عنوان هشدار صادر میشوند، اجرای موفق در نظر گرفته میشوند)..SH "مثالها (EXAMPLES)" | |
| مثال ۶: محاسبه ردپای یک رستر و اعمال حائل (buffer) بر روی ردپا | |
| 0.0 | |
| 3.5 | |
| $ gdal pipeline ! read in.tif ! footprint ! buffer 20 ! write out.gpkg --overwrite | |
| 168u | |
| 168u | |
| مثال ۷: رستریکردن و تغییر سیستم تصویر | |
| 0.0 | |
| 3.5 | |
| $ gdal pipeline ! read in.gpkg ! rasterize --size 1000,1000 ! reproject --output-crs EPSG:4326 ! write out.tif --overwrite | |
| 168u | |
| 168u | |
| مثال ۸: استفاده از یک خطلوله موجود که رستریکردن و تغییر سیستم تصویر را انجام میدهد، با تغییر فایل ورودی و CRS هدف، و تعیین فایل خروجی | |
| 0.0 | |
| 3.5 | |
| $ gdal pipeline raster_reproject.gdalg.json --input=my.gpkg --output=out.tif --output-crs=EPSG:32631 | |
| 168u | |
| 168u | |
| مثال ۹: اعمال حائل روی مجموعهداده خطی برای ساخت یک مجموعهداده چندضلعی جدید | |
| این مثال از مجموعهدادهٔ lines.gpkg استفاده میکند که شامل یک لایهٔ تکی به نام lines، | |
| یک فیلد هندسه به نام geom و یک مشخصهٔ عدد صحیح با نام width است. مقدار | |
| این مشخصه بهعنوان فاصلهٔ حائل (buffer) برای هر عارضه استفاده میشود. | |
| 0.0 | |
| 3.5 | |
| gdal vector pipeline \ | |
| ! read lines.gpkg \ | |
| ! sql "SELECT fid, ST_Buffer(geom, width) AS geom FROM lines" \ | |
| ! set-geom-type --geometry-type Polygon \ | |
| ! write buffered-lines.gpkg --output-layer=BufferedLines --overwrite --overwrite-layer | |
| 168u | |
| 168u | |
| نکته: | |
| 0.0 | |
| 3.5 | |
| هنگام ساخت هندسههای مشتقشده با استفاده از SQL، از بهکارگیری SELECT * خودداری کنید. | |
| گنجاندن فیلد هندسهٔ اصلی منجر به ایجاد چندین ستون هندسه در خروجی خواهد شد. | |
| در عوض، مشخصههای مورد نیاز را بهطور صریح فهرست کنید و یک ستون هندسهٔ واحد برگردانید. | |
| 168u | |
| 168u | |
| "نویسندگان (AUTHORS)" | |
| Even Rouault <even.rouault@spatialys.com> | |
| "کپیرایت و تکثیر (COPYRIGHT)" | |
| 1998-2026 |
| August 18, 2026 |