GDAL-VECTOR-SELECT(1) GDAL GDAL-VECTOR-SELECT(1)

gdal-vector-select - انتخاب زیرمجموعه‌ای از فیلدها از یک مجموعه‌داده برداری

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

Usage: gdal vector select [OPTIONS] <INPUT> <OUTPUT> <FIELDS>
Select a subset of fields from a vector dataset.
Positional arguments:
  -i, --input <INPUT>                                  Input vector datasets [required] [not available in pipelines]
  -o, --output <OUTPUT>                                Output vector dataset [required] [not available in pipelines]
  --fields <FIELDS>                                    Fields to select (or exclude if --exclude) [may be repeated] [required]
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:
  -l, --layer, --input-layer <INPUT-LAYER>             Input layer name(s) [may be repeated] [not available in pipelines]
  -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
  --skip-errors                                        Skip errors when writing features [not available in pipelines]
  --active-layer <ACTIVE-LAYER>                        Set active layer (if not specified, all)
  --exclude                                            Exclude specified fields
                                                       Mutually exclusive with --ignore-missing-fields
  --ignore-missing-fields                              Ignore missing fields
                                                       Mutually exclusive with --exclude
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 vector select می‌تواند برای انتخاب زیرمجموعه‌ای از فیلدها استفاده شود.

همچنین select می‌تواند به عنوان مرحله‌ای از gdal vector pipeline به کار رود.

این برنامه از سریال‌سازی خط فرمان به صورت یک فایل JSON با استفاده از قالب خروجی GDALG پشتیبانی می‌کند. فایل حاصل را می‌توان سپس به عنوان یک مجموعه‌داده برداری با استفاده از درایور GDALG: GDAL Streamed Algorithm باز کرد و خط لوله مشخص‌شده را به صورت برخط (on-the-fly) / جریانی (streamed) اعمال نمود.

رفتار الگوریتم را به گونه‌ای تغییر می‌دهد که همه فیلدها انتخاب شوند، به جز مواردی که با --fields مشخص شده‌اند.
فهرستی از فیلدهای لایه ورودی که با ویرگول از هم جدا شده‌اند برای کپی شدن در لایه جدید (یا مستثنی شدن در صورتی که --exclude تعیین شده باشد).

نام‌های فیلدی که دارای فاصله، ویرگول یا علامت گیومه (double-quote) هستند باید با گیومه دوتایی در ابتدا و انتها احاطه شوند، و نویسه‌های گیومه در نام یک فیلد باید با بک‌اسلش اسکیپ شوند.

بسته به پوسته مورد استفاده، ممکن است نقل‌قول‌های بیشتری لازم باشد. برای نمونه، جهت انتخاب regular_field، a_field_with space, and comma و a field with " double quote در یک پوسته یونیکس:

--fields "regular_field,\"a_field_with space, and comma\",\"a field with \\\" double quote\""

هر فیلد حتی اگر چندین بار در فهرست ذکر شده باشد، تنها یک بار انتخاب می‌شود.

فیلدهای هندسه نیز می‌توانند در این فهرست مشخص شوند. اگر لایه مبدأ هیچ نام صریحی برای فیلد هندسه نداشته باشد، باید از _ogr_geometry_ برای انتخاب فیلد هندسه منحصربه‌فرد استفاده شود.

تعیین نام فیلد مبدئی که وجود ندارد، منجر به بروز خطا می‌شود.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

این ویژگی در حال حاضر تنها در چند درایور پیاده‌سازی شده است: 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 vector select in.shp out.gpkg "EAS_ID,_ogr_geometry_" --overwrite

$ gdal vector select in.shp out.gpkg --exclude "name,surname,address" --overwrite

Even Rouault <even.rouault@spatialys.com>

1998-2026

August 18, 2026