OGR2OGR(1) GDAL OGR2OGR(1)

ogr2ogr - تبدیل داده‌های عوارض ساده بین قالب‌های فایل

Usage: ogr2ogr [--help] [--long-usage] [--help-general]
               [-of <output_format>] [-dsco <NAME>=<VALUE>]...
               [-lco <NAME>=<VALUE>]...
               [[-append]|[-upsert]|[-overwrite]]
               [-update] [-sql <statement>|@<filename>] [-dialect <dialect>]
               [-spat <xmin> <ymin> <xmax> <ymax>]
               [-where <restricted_where>|@<filename>] [-select <field_list>]
               [-nln <name>] [-nlt <type>]... [-s_srs <srs_def>]
               [[-a_srs <srs_def>]|[-t_srs <srs_def>]]
               <dst_dataset_name> <src_dataset_name> [<layer_name>]...
Field related options:
               [-addfields] [-relaxedFieldNameMatch]
               [-fieldTypeToString All|<type1>[,<type2>]...]
               [-mapFieldType <srctype>|All=<dsttype>[,<srctype2>=<dsttype2>]...]
               [-fieldmap <field_1>[,<field_2>]...] [-splitlistfields]
               [-maxsubfields <n>] [-emptyStrAsNull] [-forceNullable]
               [-unsetFieldWidth] [-unsetDefault] [-resolveDomains]
               [-dateTimeTo UTC|UTC(+|-)<HH>|UTC(+|-)<HH>:<MM>] [-noNativeData]
Advanced geometry and SRS related options:
               [-dim layer_dim|2|XY|3|XYZ|XYM|XYZM] [-s_coord_epoch <epoch>]
               [-a_coord_epoch <epoch>] [-t_coord_epoch <epoch>]
               [-ct <pipeline_def>] [-ct_opt <NAME>=<VALUE>]...
               [-spat_srs <srs_def>] [-geomfield <name>]
               [-segmentize <max_dist>] [-simplify <tolerance>] [-makevalid]
               [-skipinvalid] [-wrapdateline] [-datelineoffset <val_in_degree>]
               [-clipsrc [<xmin> <ymin> <xmax> <ymax>]|<WKT>|<datasource>|spat_extent]
               [-clipsrcsql <sql_statement>] [-clipsrclayer <layername>]
               [-clipsrcwhere <expression>]
               [-clipdst [<xmin> <ymin> <xmax> <ymax>]|<WKT>|<datasource>]
               [-clipdstsql <sql_statement>] [-clipdstlayer <layername>]
               [-clipdstwhere <expression>] [-explodecollections]
               [-zfield <name>]
               [-gcp <ungeoref_x> <ungeoref_y> <georef_x> <georef_y> [<elevation>]]...
               [-tps] [-order 1|2|3] [-xyRes <val>[ m|mm|deg]]
               [-zRes <val>[ m|mm]] [-mRes <val>] [-unsetCoordPrecision]
Other options:
               [--quiet] [-progress] [-if <format>]... [-oo <NAME>=<VALUE>]...
               [-doo <NAME>=<VALUE>]...
               [-fid <FID>] [-preserve_fid] [-unsetFid]
               [[-skipfailures]|[-gt <n>|unlimited]]
               [-limit <nb_features>] [-ds_transaction] [-mo <NAME>=<VALUE>]...
               [-nomd]

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

نکته:

معادل در واسط خط فرمان جدید "gdal":
  • gdal vector clip برای زیرمجموعه‌گیری مکانی
  • gdal vector convert برای تبدیل قالب
  • gdal vector explode-collections برای تفکیک هندسه‌های از نوع مجموعه (collection)
  • gdal vector make-valid برای اصلاح اعتبار هندسه
  • gdal vector reproject برای بازتصویرسازی
  • gdal vector segmentize برای قطعه‌قطعه کردن هندسه‌ها
  • gdal vector select برای انتخاب زیرمجموعه‌ای از فیلدها
  • gdal vector set-field-type برای تغییر نوع یک فیلد توصیفی
  • gdal vector set-geom-type برای تغییر نوع یک فیلد هندسه
  • gdal vector simplify برای ساده‌سازی هندسه‌ها
  • gdal vector sql برای اجرای پرس‌وجوی SQL
نمایش این پیام راهنما و خروج
--help-general
نمایش یک پیام کوتاه درباره نحوه استفاده از گزینه‌های عمومی خط فرمان GDAL و خروج.
فرونشاندن پیام‌های پیشرفت و سایر خروجی‌های غیرخطا.
نام قالب/درایور مورد تلاش برای باز کردن فایل(های) ورودی. به‌طور کلی مشخص کردن آن الزامی نیست، اما می‌توان از آن برای نادیده گرفتن تشخیص خودکار درایور، در زمان‌هایی که در انتخاب درایور مناسب ناموفق است، استفاده کرد. این گزینه می‌تواند چندین بار تکرار شود تا چند درایور نامزد مشخص گردند. توجه داشته باشید که این گزینه، آن درایورها را وادار به باز کردن مجموعه داده نمی‌کند. به‌ویژه، برخی درایورها نیازمندی‌هایی برای پسوند فایل دارند.

افزوده‌شده در نسخه 3.2.

نام قالب فایل خروجی، مانند ESRI Shapefile، MapInfo File، PostgreSQL. در صورت عدم تعیین، قالب از روی پسوند حدس زده می‌شود.
الحاق به لایه موجود به جای ایجاد یک لایه جدید. این گزینه همچنین -update را فعال می‌کند.
افزوده‌شده در نسخه 3.6.

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

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

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

برای درایور GPKG، همچنین امکان upsert عوارضی که FID آن‌ها تنظیم نشده یا غیرمعنادار است وجود دارد (می‌توان از -unsetFid برای نادیده گرفتن FID از عارضه مبدأ استفاده کرد)، در صورتی که یک ستون UNIQUE وجود داشته باشد که کلید اصلی عددی صحیح نباشد.

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

از نسخه GDAL 3.9 به بعد، نام فیلدهایی که شامل فاصله، کاما یا نقل‌قول دوتایی هستند باید در میان نویسه نقل‌قول دوتایی در ابتدا و انتها قرار گیرند و نویسه‌های نقل‌قول دوتایی درون نام فیلد باید با بک‌اسلش گریز داده شوند (escaped).

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

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

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

فیلدهای هندسه نیز می‌توانند در این فهرست مشخص شوند.

در صورتی که -select مشخص نشود، تمام فیلدها انتخاب می‌شوند. مشخص کردن یک رشته خالی می‌تواند برای غیرفعال کردن انتخاب تمام فیلدهای توصیفی و فقط حفظ هندسه‌ها استفاده شود.

توجه داشته باشید که این تنظیم نمی‌تواند همراه با -append استفاده شود. برای کنترل انتخاب فیلدها هنگام الحاق به یک لایه، از -fieldmap یا -sql استفاده کنید.

-progress نمایش میزان پیشرفت در ترمینال. تنها در صورتی کار می‌کند که لایه‌های ورودی دارای قابلیت "شمارش سریع عوارض" باشند.
دستور SQL برای اجرا. جدول/لایه حاصل در خروجی ذخیره خواهد شد. نحو @filename می‌تواند برای مشخص کردن اینکه محتوا درون فایل اشاره‌شده قرار دارد استفاده شود. (نمی‌تواند همراه با -spat_srs استفاده شود.)
گویش SQL. در برخی موارد با ارسال مقدار گویش OGRSQL می‌توان به‌جای SQL بومی یک RDBMS، از گویش OGR SQL (بهینه‌سازی‌نشده) استفاده کرد. گویش SQL SQLite dialect را می‌توان با مقادیر گویش SQLITE و INDIRECT_SQLITE انتخاب کرد، و این قابلیت با هر منبع داده‌ای قابل استفاده است. (-dialect همراه با -where نادیده گرفته می‌شود. به‌جای آن از -sql استفاده کنید.)
پرس‌وجوی توصیفی (مانند WHERE در SQL). نحوه نگارش @filename می‌تواند برای مشخص کردن اینکه محتوا درون فایل مورد نظر قرار دارد استفاده شود. (-dialect همراه با -where نادیده گرفته می‌شود. به‌جای آن از -sql استفاده کنید.)
ادامه عملیات پس از بروز خطا، با نادیده گرفتن عارضه ناموفق. توجه داشته باشید که این گزینه مقدار -gt را به ۱ تغییر می‌دهد، که ممکن است هنگام درج در پایگاه‌های داده باعث افت شدید سرعت شود.
محدوده مکانی پرس‌وجو، بر حسب SRS لایه(های) مبدأ (یا نمونه مشخص‌شده با -spat_srs). تنها عوارضی که هندسه آنها با این محدوده تقاطع داشته باشد انتخاب خواهند شد. هندسه‌ها برش نخواهند خورد مگر اینکه -clipsrc مشخص شده باشد.
بازنویسی SRS فیلتر مکانی. (نمی‌تواند همراه با -sql استفاده شود.)
نام فیلد هندسه‌ای که فیلتر مکانی بر روی آن اعمال می‌شود.
گزینه ساخت مجموعه داده (مختص قالب)
گزینه ساخت لایه (مختص قالب)
اختصاص نام جایگزین به لایه جدید
تعریف نوع هندسه برای لایه ایجادشده. یکی از انواع هندسه‌های غیرخطی NONE، GEOMETRY، POINT، LINESTRING، POLYGON، GEOMETRYCOLLECTION، MULTIPOINT، MULTIPOLYGON، MULTILINESTRING، CIRCULARSTRING، COMPOUNDCURVE، CURVEPOLYGON، MULTICURVE و MULTISURFACE. افزودن Z، M، یا ZM به نام نوع برای مشخص کردن مختصات دارای ارتفاع، مقیاس اندازه‌گیری، یا ارتفاع و اندازه‌گیری به کار می‌رود. PROMOTE_TO_MULTI می‌تواند برای ارتقای خودکار لایه‌هایی که ترکیبی از polygon یا multipolygon هستند به multipolygon، و لایه‌هایی که ترکیبی از linestring یا multilinestring هستند به multilinestring استفاده شود. این قابلیت هنگام تبدیل shapefile به PostGIS و سایر درایورهای مقصدی که بررسی‌های سخت‌گیرانه‌ای برای نوع هندسه دارند می‌تواند مفید باشد. CONVERT_TO_LINEAR می‌تواند برای تبدیل انواع هندسه غیرخطی به انواع هندسه خطی از طریق تقریب زدن آنها استفاده شود، و CONVERT_TO_CURVE برای ارتقای یک نوع غیرخطی به نوع منحنی تعمیم‌یافته آن (POLYGON به CURVEPOLYGON، MULTIPOLYGON به MULTISURFACE، LINESTRING به COMPOUNDCURVE، MULTILINESTRING به MULTICURVE). از نسخه 2.1 به بعد نوع می‌تواند به صورت اندازه‌گیری‌شده (measured) تعریف شود ("25D" همچنان به عنوان نام مستعار برای "Z" تکی باقی می‌ماند). برخی از تبدیل‌های اجباری ممکن است به هندسه‌های نامعتبر منجر شوند؛ برای مثال هنگام تبدیل اجباری multipolygonهای چندبخشی با -nlt POLYGON، چندضلعی حاصل قوانین Simple Features را نقض خواهد کرد.

از GDAL 3.0.5 به بعد، -nlt CONVERT_TO_LINEAR و -nlt PROMOTE_TO_MULTI می‌توانند به‌طور هم‌زمان استفاده شوند.

اجبار بعد مختصات به val (مقادیر معتبر عبارتند از XY، XYZ، XYM و XYZM - برای سازگاری با نسخه‌های پیشین، 2 نام مستعاری برای XY و 3 نام مستعاری برای XYZ است). این گزینه هم بر نوع هندسه لایه و هم بر هندسه‌های عوارض اثر می‌گذارد. مقدار می‌تواند بر روی layer_dim تنظیم شود تا به هندسه‌های عوارض دستور دهد به بعد مختصات اعلام‌شده توسط لایه ارتقا یابند.
انتساب یک SRS به خروجی، بدون بازتصویر کردن (برای بازتصویر کردن از -t_srs استفاده کنید)

سامانه‌های مرجع مختصاتی که می‌توانند ارسال شوند شامل هر موردی است که توسط فراخوانی OGRSpatialReference::SetFromUserInput() پشتیبانی می‌شود؛ از جمله سامانه‌های مرجع مختصات تصویرشده، جغرافیایی یا مرکب EPSG (مانند EPSG:4296)، یک تعریف متنی CRS از نوع WKT، تعاریف PROJ.4، یا نام یک فایل .prj حاوی تعریف WKT CRS.

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

انتساب یک مبدأ زمانی مختصات (epoch)، مرتبط با SRS خروجی. زمانی که SRS خروجی یک CRS پویا باشد کاربرد دارد. تنها در صورتی در نظر گرفته می‌شود که -a_srs استفاده شده باشد.

بازتصویر/تبدیل به این SRS در خروجی، و اختصاص آن به عنوان SRS خروجی.

برای انجام بازتصویر باید یک SRS مبدأ در دسترس باشد. SRS مبدأ به‌طور پیش‌فرض همان مورد موجود در لایه مبدأ خواهد بود، مگر آنکه توسط کاربر با -s_srs بازنویسی شده باشد.

سامانه‌های مرجع مختصاتی که می‌توانند ارسال شوند شامل هر موردی است که توسط فراخوانی OGRSpatialReference::SetFromUserInput() پشتیبانی می‌شود؛ از جمله سامانه‌های مرجع مختصات تصویرشده، جغرافیایی یا مرکب EPSG (مانند EPSG:4296)، یک تعریف متنی CRS از نوع WKT، تعاریف PROJ.4، یا نام یک فایل .prj حاوی تعریف WKT CRS.

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

انتساب یک مبدأ زمانی مختصات (epoch)، مرتبط با SRS خروجی. زمانی که SRS خروجی یک CRS پویا باشد کاربرد دارد. تنها در صورتی در نظر گرفته می‌شود که -t_srs استفاده شده باشد. همچنین این گزینه با -a_coord_epoch ناسازگار (مانعة الجمع) است.

پیش از PROJ 9.4، گزینه‌های -s_coord_epoch و -t_coord_epoch به دلیل عدم پشتیبانی از تبدیلات بین دو CRS پویا، مانعة الجمع بودند.

بازنویسی SRS مبدأ. اگر مشخص نشود، از SRS موجود در لایه ورودی استفاده خواهد شد. این گزینه تنها در صورتی مؤثر است که همراه با -t_srs برای بازتصویر کردن استفاده شود.

سامانه‌های مرجع مختصاتی که می‌توانند ارسال شوند شامل هر موردی است که توسط فراخوانی OGRSpatialReference::SetFromUserInput() پشتیبانی می‌شود؛ از جمله سامانه‌های مرجع مختصات تصویرشده، جغرافیایی یا مرکب EPSG (مانند EPSG:4296)، یک تعریف متنی CRS از نوع WKT، تعاریف PROJ.4، یا نام یک فایل .prj حاوی تعریف WKT CRS.

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

تنظیم/بازنویسی تفکیک‌پذیری (resolution) مختصات X/Y هندسه. اگر فقط یک مقدار عددی مشخص شود، فرض می‌شود که بر حسب واحدهای SRS هدف بیان شده است. پسوندهای m، mm یا deg را می‌توان مشخص کرد تا نشان دهد مقدار باید بر حسب متر، میلی‌متر یا درجه تفسیر شود.

هنگام مشخص کردن این گزینه، متد OGRGeometry::SetPrecision() بر روی هندسه‌ها (به‌جز منحنی‌ها) پیش از ارسال به درایور خروجی اجرا می‌شود تا از ایجاد هندسه‌های نامعتبر به دلیل کاهش بالقوه دقت جلوگیری شود (مگر اینکه گزینه پیکربندی OGR_APPLY_GEOM_SET_PRECISION بر روی NO تنظیم شده باشد).

اگر نه این گزینه و نه -unsetCoordPrecision مشخص نشده باشند، تفکیک‌پذیری مختصات لایه مبدأ (در صورت موجود بودن) استفاده می‌شود.

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

تنظیم/بازنویسی تفکیک‌پذیری مختصات Z هندسه. اگر فقط یک مقدار عددی مشخص شود، فرض می‌شود که بر حسب واحدهای SRS هدف بیان شده است. پسوندهای m یا mm می‌توانند برای مشخص کردن اینکه مقدار باید بر حسب متر یا میلی‌متر تفسیر شود به کار روند. اگر نه این گزینه و نه -unsetCoordPrecision مشخص نشده باشند، تفکیک‌پذیری مختصات لایه مبدأ (در صورت موجود بودن) استفاده می‌شود.

-mRes <val> در نسخه 3.9 اضافه شد.

تفکیک‌پذیری مختصات M هندسه را تنظیم/بازنویسی می‌کند. اگر نه این گزینه و نه -unsetCoordPrecision مشخص نشده باشند، تفکیک‌پذیری مختصات لایه مبدأ (در صورت وجود) استفاده می‌شود.

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

از تنظیم تفکیک‌پذیری مختصات هندسه بر روی لایه(های) مقصد جلوگیری می‌کند.

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

یک مبدأ زمانی مختصات (epoch)، مرتبط با SRS مبدأ اختصاص می‌دهد. زمانی که SRS مبدأ یک CRS پویا باشد کاربرد دارد. تنها در صورتی لحاظ می‌شود که -s_srs استفاده شده باشد.

پیش از PROJ 9.4، به دلیل عدم پشتیبانی از تبدیل بین دو CRS پویا، -s_coord_epoch و -t_coord_epoch مانعة‌الجمع بودند (هم‌زمان قابل استفاده نبودند).

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

یک رشته PROJ (عملیات تک‌مرحله‌ای یا رشته چندمرحله‌ای که با +proj=pipeline شروع می‌شود)، یک رشته WKT2 که یک CoordinateOperation را توصیف می‌کند، یا یک URN به‌صورت urn:ogc:def:coordinateOperation:EPSG::XXXX که تبدیل پیش‌فرض از CRS مبدأ به مقصد را لغو و بازنویسی می‌کند.

این گزینه باید ترتیب محورهای CRS مبدأ و مقصد را در نظر بگیرد؛ یعنی معمولاً در صورتی که CRS مبدأ دارای ترتیب محور northing/easting باشد، شامل یک step proj=axisswap order=2,1 در ابتدای خط لوله (pipeline)، و/یا اگر CRS مقصد دارای ترتیب محور northing/easting باشد، در انتهای خط لوله باشد.

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

گزینه‌ای را برای عملیات مختصات تعیین می‌کند که بر نحوه انتخاب عملیات‌های مختصات توسط PROJ در زمانی که -ct تنظیم نشده است، تأثیر می‌گذارد.

گزینه‌های زیر در دسترس هستند:

  • ONLY_BEST``=``YES/NO. به‌طور پیش‌فرض (حداقل در سری PROJ 9.x)، اگر منابع مورد نیاز برای استفاده از آن‌ها (معمولاً شبکه‌ها یا گریدها) مفقود باشند، PROJ ممکن است از عملیات‌های مختصاتی استفاده کند که «بهترین» نیستند. در این حالت به سراغ سایر عملیات‌های مختصاتی با دقت کمتر می‌رود (fallback می‌کند)؛ برای نمونه با استفاده از تبدیل‌های Helmert، یا در صورت نبود چنین عملیات‌هایی، به سراغ مواردی با دقت بالقوه بسیار تقریبی، با استفاده از تبدیل‌های «تقریبی» (ballpark) می‌رود (ببینید: https://proj.org/glossary.html). هنگام فراخوانی این متد با YES، برنامه PROJ تنها «بهترین» عملیات را در نظر می‌گیرد و اگر قابل استفاده نباشند، (در زمان Transform()) با خطا متوقف می‌شود. این متد می‌تواند همراه با ALLOW_BALLPARK``=``NO استفاده شود تا تنها به بهترین عملیات‌هایی که دارای دقت مشخص هستند اجازه داده شود. توجه داشته باشید که این متد بر روی نسخه‌های PROJ قبل از 9.2 بی‌تأثیر است. مقدار پیش‌فرض این گزینه را می‌توان با متغیر محیطی PROJ_ONLY_BEST_DEFAULT یا با تنظیمات only_best_default در proj.ini نیز تعیین کرد. تنظیم ONLY_BEST=YES/NO این مقدار پیش‌فرض را لغو و جایگزین می‌کند.
  • ALLOW_BALLPARK``=``YES/NO. مشخص می‌کند که آیا عملیات‌های مختصاتی تقریبی (ballpark) مجاز هستند یا خیر. مقدار پیش‌فرض YES است.
  • WARN_ABOUT_DIFFERENT_COORD_OP``=``YES/NO. می‌تواند روی NO تنظیم شود تا از هشدار GDAL در زمانی که از عملیات‌های مختصاتی متفاوتی برای تبدیل هندسه‌های گوناگون مجموعه داده (یا بخشی از همان هندسه) استفاده می‌شود، جلوگیری گردد. مقدار پیش‌فرض YES است.
به جای اینکه به درایور خروجی اجازه داده شود شناسه جدیدی به‌طور خودکار اختصاص دهد، از FID عوارض مبدأ استفاده می‌کند (برای قالب‌هایی که به FID نیاز دارند). اگر در حالت الحاق (append mode) نباشد، در صورتی که درایور خروجی دارای گزینه ساخت لایه FID باشد، این رفتار پیش‌فرض است؛ که در این صورت نام ستون FID مبدأ استفاده خواهد شد و برای حفظ شناسه‌های عارضه (FID) مبدأ تلاش می‌شود. این رفتار را می‌توان با تنظیم -unsetFid غیرفعال کرد. این گزینه با -explodecollections سازگار نیست.
در صورت مشخص شدن، تنها عارضه با شناسه عارضه (feature id) مشخص‌شده پردازش خواهد شد. مستقل از پرس‌وجوهای مکانی یا توصیفی عمل می‌کند. نکته: اگر می‌خواهید چندین عارضه را بر اساس شناسه عارضه آن‌ها انتخاب کنید، می‌توانید از این ویژگی استفاده کنید که 'fid' یک فیلد ویژه است که توسط OGR SQL شناخته می‌شود. بنابراین، -where "fid in (1,3,5)" عوارض 1، 3 و 5 را انتخاب می‌کند.
محدود کردن تعداد عوارض در هر لایه.
گزینه باز کردن مجموعه داده (مختص هر قالب).

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

مقدار این گزینه یک رشته JSON یا مسیری به یک فایل JSON است که با تعریف طرح‌واره گزینه باز کردن OGR_SCHEMA مطابقت دارد.

گزینه باز کردن مجموعه داده مقصد (مختص هر قالب)، تنها در حالت -update معتبر است.
گروه‌بندی n عارضه در هر تراکنش (پیش‌فرض 100 000). برای عملکرد بهتر هنگام نوشتن در درایورهای پایگاه داده (DBMS) که از تراکنش پشتیبانی می‌کنند، مقدار را افزایش دهید. n می‌تواند روی unlimited تنظیم شود تا داده‌ها در یک تراکنش واحد بارگذاری شوند.
اجبار به استفاده از تراکنش در سطح مجموعه داده (برای درایورهایی که از چنین سازوکاری پشتیبانی می‌کنند)، به‌ویژه برای درایورهایی مانند FileGDB که فقط از تراکنش سطح مجموعه داده در حالت شبیه‌سازی (emulation) پشتیبانی می‌کنند.
برش (clip) هندسه‌ها (پیش از بازپرافکنی احتمالی) بر اساس یکی از موارد زیر:
  • جعبه محصورکننده (bounding box) مشخص‌شده (بیان‌شده در SRS مبدأ)
  • یک هندسه WKT (از نوع POLYGON یا MULTIPOLYGON بیان‌شده در SRS مبدأ)
  • یک یا چند هندسه انتخاب‌شده از یک منبع داده
  • محدوده مکانی گزینه -spat در صورت استفاده از کلمه کلیدی spat_extent.

هنگام تعیین یک منبع داده، معمولاً می‌خواهید از -clipsrc در ترکیب با گزینه‌های -clipsrclayer، -clipsrcwhere یا -clipsrcsql استفاده کنید.

انتخاب هندسه‌های مورد نظر از منبع داده برش مبدأ با استفاده از یک پرس‌وجوی SQL.
انتخاب لایه نام‌برده از منبع داده برش مبدأ.
محدود کردن هندسه‌های مورد نظر از لایه برش مبدأ بر اساس یک پرس‌وجوی توصیفی.
برش (clip) هندسه‌ها (پس از بازپرافکنی احتمالی) بر اساس یکی از موارد زیر:
  • جعبه محصورکننده (bounding box) مشخص‌شده (بیان‌شده در SRS مقصد)
  • یک هندسه WKT (از نوع POLYGON یا MULTIPOLYGON بیان‌شده در SRS مقصد)
  • یک یا چند هندسه انتخاب‌شده از یک منبع داده

هنگام تعیین یک منبع داده، معمولاً می‌خواهید از -clipdst در ترکیب با گزینه‌های -clipdstlayer، -clipdstwhere یا -clipdstsql استفاده کنید.

انتخاب هندسه‌های مورد نظر از منبع داده برش مقصد با استفاده از یک پرس‌وجوی SQL.
انتخاب لایه نام‌برده از منبع داده برش مقصد.
-clipdstwhere <expression> محدود کردن هندسه‌های مورد نظر از لایه برش مقصد بر اساس یک پرس‌وجوی ویژگی.
تقسیم هندسه‌هایی که از نصف‌النهار خط روزگردان عبور می‌کنند (طول جغرافیایی = ۱۸۰± درجه)
فاصله از خط روزگردان بر حسب درجه (پیش‌فرض طول جغرافیایی = ۱۰± درجه، هندسه‌های در محدوده ۱۷۰ درجه تا ۱۷۰- درجه تقسیم خواهند شد)
تلورانس فاصله برای ساده‌سازی. نکته: الگوریتم مورد استفاده توپولوژی را به ازای هر عارضه، به‌ویژه برای هندسه‌های چندضلعی، حفظ می‌کند اما نه برای یک لایه کامل.

مقدار مشخص‌شده این گزینه، تلورانسی است که برای ادغام نقاط متوالی در هندسه خروجی با استفاده از متد OGRGeometry::SimplifyPreserveTopology() استفاده می‌شود. واحد فاصله بر حسب واحدهای زمین‌مرجع‌شده مجموعه داده برداری مبدأ است. این گزینه پیش از بازتصویر ناشی از -t_srs اعمال می‌شود.

مقدار مشخص‌شده این گزینه، حداکثر فاصله بین دو نقطه متوالی از هندسه خروجی پیش از اضافه شدن نقاط میانی است. واحد فاصله، واحدهای زمین‌مرجع‌شده لایه مبدأ است. این گزینه پیش از بازتصویر ناشی از -t_srs اعمال می‌شود.
اجرای عملیات OGRGeometry::MakeValid()، و به دنبال آن OGRGeometryFactory::removeLowerDimensionSubGeoms()، روی هندسه‌ها تا اطمینان حاصل شود که طبق قواعد مشخصات Simple Features معتبر هستند.

افزوده شده در نسخه 3.1: (نیازمند GEOS)

اجرای عملیات OGRGeometry::IsValid() روی هندسه‌ها برای بررسی معتبر بودن آن‌ها طبق قواعد مشخصات Simple Features. اگر معتبر نباشند، از عارضه صرف‌نظر می‌شود. این بررسی پس از تمام عملیات‌های دیگر روی هندسه انجام می‌شود.

افزوده شده در نسخه 3.10: (نیازمند GEOS)

تبدیل هر فیلد از نوع مشخص‌شده به فیلدی از نوع رشته (string) در لایه مقصد. انواع معتبر عبارتند از: Integer، Integer64، Real، String، Date، Time، DateTime، Binary، IntegerList، Integer64List، RealList، StringList. مقدار ویژه All می‌تواند برای تبدیل همه فیلدها به رشته استفاده شود. این یک روش جایگزین برای استفاده از عملگر CAST در OGR SQL است، که می‌تواند از نوشتن یک پرس‌وجوی طولانی SQL جلوگیری کند. توجه داشته باشید که این گزینه بر انواع فیلد استفاده‌شده توسط راه‌انداز مبدأ تأثیری ندارد و تنها یک تبدیل پسینی است. همچنین توجه داشته باشید که این گزینه بر فیلدهایی که حضور و نوع آن‌ها در راه‌انداز خروجی به‌صورت ثابت کدنویسی شده است (مانند KML و GPX) بی‌اثر است. برای روشی جایگزین جهت دستکاری انواع فیلدها در مراحل اولیه هنگام خواندن از مجموعه داده ورودی، -oo OGR_SCHEMA را ببینید (تنها برای مجموعه محدودی از فرمت‌ها در دسترس است).
تبدیل هر فیلد از نوع مشخص‌شده به نوع دیگر. انواع معتبر عبارتند از: Integer، Integer64، Real، String، Date، Time، DateTime، Binary، IntegerList، Integer64List، RealList، StringList. انواع همچنین می‌توانند شامل نوع فرعی در پرانتز باشند، مانند Integer(Boolean)، Real(Float32) و ... مقدار ویژه All می‌تواند برای تبدیل همه فیلدها به نوعی دیگر استفاده شود. این یک روش جایگزین برای استفاده از عملگر CAST در OGR SQL است، که می‌تواند از نوشتن یک پرس‌وجوی طولانی SQL جلوگیری کند. این گزینه تعمیمی از -fieldTypeToString است. توجه داشته باشید که این گزینه بر انواع فیلد استفاده‌شده توسط راه‌انداز مبدأ تأثیری ندارد و تنها یک تبدیل پسینی است. همچنین توجه داشته باشید که این گزینه بر فیلدهایی که حضور و نوع آن‌ها در راه‌انداز خروجی به‌صورت ثابت کدنویسی شده است (مانند KML و GPX) بی‌اثر است. برای روشی جایگزین جهت دستکاری انواع فیلدها در مراحل اولیه هنگام خواندن از مجموعه داده ورودی، -oo OGR_SCHEMA را ببینید (تنها برای مجموعه محدودی از فرمت‌ها در دسترس است).
افزوده شده در نسخه 3.7.

مقادیر تاریخ-زمان (date time) را از منطقه زمانی مشخص‌شده در مقدار مبدأ به منطقه زمانی هدف بیان‌شده با -dateTimeTo تبدیل می‌کند. تاریخ-زمان‌هایی که منطقه زمانی آن‌ها نامشخص یا localtime باشد تغییر داده نمی‌شوند.

مقدار HH باید در محدوده [0,14] و MM=00، 15، 30 یا 45 باشد.

تنظیم عرض و دقت فیلد روی 0.
تقسیم فیلدهای نوع StringList، RealList یا IntegerList به هر تعداد فیلد لازم از نوع String، Real یا Integer.
ترکیب با -splitlistfields برای محدود کردن تعداد زیرفیلدهای ایجادشده به ازای هر فیلد تقسیم‌شده.
تولید یک عارضه به ازای هر هندسه در هر نوع مجموعه هندسه در فایل مبدأ، که پس از هر گزینه -sql اعمال می‌شود. این گزینه با -preserve_fid سازگار نیست اما در صورت نیاز می‌توان از -sql "SELECT fid AS original_fid, * FROM ..." برای ذخیره FID اصلی استفاده کرد.
استفاده از فیلد مشخص‌شده برای پر کردن مختصات Z هندسه‌ها.
استفاده از نقطه کنترل زمینی (GCP) مشخص‌شده برای محاسبه تبدیل مختصات. روش تبدیل را می‌توان با مشخص کردن گزینه‌های -order یا -tps انتخاب کرد. توجه داشته باشید که برخلاف ابزارهای رستر مانند gdal_edit یا gdal_translate، نقاط GCP به مجموعه داده خروجی اضافه نمی‌شوند. این گزینه می‌تواند چندین بار مشخص شود تا مجموعه‌ای از GCPها ارائه گردد (دست‌کم ۲ GCP نیاز است).
درجه چندجمله‌ای مورد استفاده برای واپیچش (warping) (۱ تا ۳). پیش‌فرض انتخاب درجه چندجمله‌ای بر پایه تعداد GCPها است.
اجبار به استفاده از تبدیل‌کننده اسپلاین صفحه نازک (thin plate spline) بر اساس GCPهای موجود.
فهرست نمایه‌های فیلدها را برای کپی شدن از مبدأ به مقصد مشخص می‌کند. مقدار n-ام مشخص‌شده در فهرست، نمایه فیلدی در تعریف لایه هدف است که فیلد n-ام لایه مبدأ باید در آن کپی شود. شمارش نمایه‌ها از صفر آغاز می‌شود. برای صرف‌نظر از یک فیلد، مقدار -1 را مشخص کنید. باید دقیقاً به تعداد فیلدهای لایه مبدأ مقدار در فهرست وجود داشته باشد. می‌توان از تنظیم 'identity' استفاده کرد تا مشخص شود فیلدها باید با همان ترتیب انتقال یابند. این تنظیم باید همراه با گزینه -append استفاده شود.
این نسخه تخصصی از -append است. بر خلاف -append، گزینه -addfields اثر اضافه کردن فیلدهای جدید یافت‌شده در لایه‌های مبدأ به لایه‌های هدف موجود را دارد. این گزینه هنگام ادغام فایل‌هایی با ساختارهای غیردقیقاً یکسان مفید است. این ممکن است برای فرمت‌های خروجی که از افزودن فیلدها به لایه‌های غیرخالی موجود پشتیبانی نمی‌کنند، کار نکند. توجه داشته باشید که اگر قصد استفاده از -addfields را دارید، ممکن است لازم باشد آن را با -forceNullable ترکیب کنید، از جمله برای درون‌ریزی اولیه.
انجام انطباق نام فیلد بین مبدأ و لایه هدف موجود به روشی انعطاف‌پذیرتر، در صورتی که راه‌انداز هدف پیاده‌سازی برای آن داشته باشد.
در صورت وجود محدودیت‌های عدم‌پذیرش تهی (not-nullable) در لایه مبدأ، عدم انتشار آن‌ها به لایه هدف.
در صورت وجود مقادیر پیش‌فرض فیلد در لایه مبدأ، عدم انتشار آن‌ها به لایه هدف.
می‌تواند برای جلوگیری از استفاده مجدد نام ستون FID مبدأ و شناسه‌های عوارض مبدأ در لایه هدف مشخص شود. این گزینه برای مثال می‌تواند هنگام انتخاب عوارض مبدأ با یک عبارت ORDER BY مفید باشد.
-emptyStrAsNull افزوده‌شده در نسخه 3.3.

در نظر گرفتن مقادیر رشته‌ای خالی به‌عنوان null.

افزوده‌شده در نسخه 3.3.

هنگامی که این گزینه مشخص شود، هر فیلد انتخاب‌شده‌ای که به یک دامنه فیلد کدگذاری‌شده (coded field domain) متصل باشد، با یک فیلد اضافی ({dstfield}_resolved) همراه خواهد شد که حاوی شرح مقدار کدگذاری‌شده است.

برای غیرفعال کردن کپی فراداده (metadata) از مجموعه‌داده و لایه‌های مبدأ به مجموعه‌داده و لایه‌های مقصد، در صورتی که توسط درایور خروجی پشتیبانی شود.
ارسال یک کلید و مقدار فراداده برای تنظیم روی مجموعه‌داده خروجی، در صورتی که توسط درایور خروجی پشتیبانی شود.
برای غیرفعال کردن کپی داده‌های بومی (native data)، یعنی جزئیات قالب مبدأ که توسط انتزاع OGR دریافت نمی‌شوند، اما در تبدیل به همان قالب توسط برخی درایورها (مانند GeoJSON) حفظ می‌شوند.
<dst_dataset_name>
نام مجموعه‌داده خروجی.
<src_dataset_name>
نام مجموعه‌داده مبدأ.
<layer_name>
یک یا چند نام لایه مبدأ برای کپی به مجموعه‌داده خروجی. اگر نام لایه‌ای مشخص نشود، تمام لایه‌های مبدأ کپی خواهند شد.

هنگام نوشتن در یک پایگاه‌داده تراکنشی (DBMS مانند SQLite/PostgreSQL، MySQL و غیره)، افزایش تعداد دستورهای INSERT اجراشده بین دستورهای BEGIN TRANSACTION و COMMIT TRANSACTION ممکن است سودمند باشد. این تعداد با گزینه -gt مشخص می‌شود. برای نمونه، در SQLite، تعیین صریح -gt 65536 کارایی بهینه‌ای را هنگام پر کردن جدولی شامل صدها هزار یا میلیون‌ها ردیف تضمین می‌کند. با این حال، توجه داشته باشید که -skipfailures مقدار -gt را نادیده گرفته و اندازه تراکنش‌ها را روی ۱ تنظیم می‌کند.

برای PostgreSQL، گزینه پیکربندی PG_USE_COPY می‌تواند برای افزایش چشمگیر کارایی درج روی YES تنظیم شود. به صفحه مستندات درایور PG مراجعه کنید.

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

از نسخه GDAL 3.8 به بعد، ogr2ogr برای بهبود کارایی، در برخی قالب‌های مبدأ (به‌ویژه GeoPackage یا FlatGeoBuf) و برای پایه‌ای‌ترین انواع عملیات، به‌طور داخلی از یک API مبتنی بر آرایه‌های Arrow استفاده می‌کند (ر.ک. RFC 86: Column-oriented read API for vector layers). این تغییر اساسی در منطق داخلی ogr2ogr برای تثبیت کامل، به چندین اصلاحیه در طول انتشار نسخه‌های رفع باگ GDAL 3.8.x نیاز داشت، و معتقدیم بیشتر مشکلات در GDAL 3.9 برطرف شده‌اند. اگر با خطاهایی برخورد کردید که در نسخه‌های قبلی GDAL دیده نشده بود، می‌توانید --config OGR2OGR_USE_ARROW_API NO را در خط فرمان ogr2ogr مشخص کنید تا الگوریتم کلاسیک با رویکرد تکرار شونده مبتنی بر عارضه (feature-based) انتخاب شود. اگر با GDAL >= 3.9 همچنان به این پرچم نیاز دارید، لطفاً گزارشی در سامانه پیگیری باگ‌های GDAL ثبت کنید.

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

این ابزار همچنین از طریق زبان C با GDALVectorTranslate() قابل فراخوانی است.

ogr2ogr -append -f PostgreSQL PG:dbname=warmerda abc.tab

کادر محصورکننده به‌صورت <xmin> <ymin> <xmax> <ymax> مشخص می‌شود:
ogr2ogr -spat -13.931 34.886 46.23 74.12 output.gpkg natural_earth_vector.gpkg

ogr2ogr -where "\"POP_EST\" < 1000000" \
  output.gpkg natural_earth_vector.gpkg ne_10m_admin_0_countries

مثال‌های بیشتر در صفحات مربوط به هر قالب ارائه شده‌اند..SH "مثال‌های پیشرفته (ADVANCED EXAMPLES)"

ogr2ogr -wrapdateline -t_srs EPSG:4326 -clipdst -5 40 15 55 france_4326.shp europe_laea.shp

به‌طور پیش‌فرض این درایور در هنگام ایجاد لایه، هندسه‌ها را حفظ نمی‌کند. یک گزینهٔ صریح برای ساخت لایه مورد نیاز است:

ogr2ogr -lco GEOMETRY=AS_XYZ TrackWaypoint.csv TrackWaypoint.kml

بسته به اینکه لایه ورودی دارای یک ستون هندسهٔ نام‌گذاری‌شده باشد یا خیر، حالت‌های مختلفی وجود دارد. ابتدا با ogrinfo بررسی کنید که آیا ستون هندسه‌ای گزارش شده است یا خیر.

$ ogrinfo -so CadNSDI.gdb.zip PLSSPoint | grep 'Geometry Column'
Geometry Column = SHAPE

در وضعیتی که قالب ورودی یک FileGeodatabase باشد، این ستون SHAPE نامیده می‌شود و بنابراین می‌توان مستقیماً در یک دستور SELECT به آن ارجاع داد.

ogr2ogr -sql "SELECT SHAPE FROM PLSSPoint" \
  -lco GEOMETRY=AS_XY -f CSV /vsistdout/ CadNSDI.gdb.zip

برای یک shapefile با ستون هندسهٔ بدون نام، هنگام استفاده از گویش پیش‌فرض OGR SQL، می‌توان از _ogr_geometry_ به عنوان یک نام ویژه برای مشخص کردن ستون هندسهٔ ضمنی استفاده کرد. این نام با یک زیرخط آغاز می‌شود و نحو SQL ایجاب می‌کند که بین دو گیومه قرار گیرد. علاوه بر این، مفسر خط فرمان ممکن است نیاز داشته باشد که گیومه‌ها گریز داده شوند (escaped) و دستور نهایی SELECT می‌تواند به این شکل باشد:

ogr2ogr -sql "SELECT \"_ogr_geometry_\" FROM PLSSPoint" \
  -lco GEOMETRY=AS_XY -f CSV /vsistdout/ CadNSDI.shp

در صورت استفاده از گویش SQL SQLite، هنگامی که ستون هندسهٔ مبدأ نامی ندارد، نام ویژهٔ هندسه geometry خواهد بود.

ogr2ogr -sql "SELECT geometry FROM PLSSPoint" -dialect SQLite \
  -lco GEOMETRY=AS_XY -f CSV /vsistdout/ CadNSDI.shp

Frank Warmerdam <warmerdam@pobox.com>, Silke Reimer <silke@intevation.de>

1998-2026

August 18, 2026