CS2CS(1) PROJ CS2CS(1)

cs2cs - تبدیل و بازپروجکشن دستگاه‌های مختصات جغرافیایی و نقشه‌نگاری

cs2cs [-eEfIlrstvwW [args]]
[[--area <name_or_code>] | [--bbox <west_long,south_lat,east_long,north_lat>]]
[--authority <name>] [--3d]
[--accuracy <accuracy>] [--only-best[=yes|=no]] [--no-ballpark]
[--s_epoch {epoch}] [--t_epoch {epoch}]
([+opt[=arg] ...] [+to +opt[=arg] ...] | {source_crs} {target_crs})
file ...

جایی که {source_crs} یا {target_crs} یکی از موارد پذیرفته‌شده توسط proj_create() <#c.proj_create> است، به شرطی که بیانگر یک سامانه مختصات مرجع (CRS) باشد:

  • یک رشته پروژکشن (proj-string)،
  • یک رشته WKT،
  • یک کد شیء (مانند "EPSG:4326"، "urn:ogc:def:crs:EPSG::4326"، "urn:ogc:def:coordinateOperation:EPSG::1671")،
  • یک نام شیء؛ برای مثال "WGS 84"، "WGS 84 / UTM zone 31N". در این حالت از آنجا که یکتا بودن تضمین نمی‌شود، روش‌های اکتشافی (heuristics) برای تعیین مناسب‌ترین تطابق اعمال می‌شوند.
  • یک نام CRS و مبدا مختصات زمانی (epoch)، که با '@' جدا شده‌اند؛ مانند "<ITRF2014@2025.0>" (اضافه‌شده در نگارش 9.2).
  • یک OGC URN ترکیبی از مراجع برای سامانه‌های مختصات مرجع مرکب (compound CRS) (مانند "<urn:ogc:def:crs,crs:EPSG::2393,crs:EPSG::5717>" یا نحو اختصاری سفارشی "EPSG:2393+5717")،
  • یک OGC URN ترکیبی از مراجع برای CRSهای تصویری یا مشتق‌شده برای مثال برای CRS سه‌بعدی تصویری "UTM zone 31N / WGS 84 (3D)": "<urn:ogc:def:crs,crs:EPSG::4979,cs:PROJ::ENh,coordinateOperation:EPSG::16031>" (اضافه‌شده در نگارش 6.2).
  • یک OGC URN ترکیبی از مراجع برای عملیات‌های متوالی (concatenated operations) (مانند "<urn:ogc:def:coordinateOperation,coordinateOperation:EPSG::3895,coordinateOperation:EPSG::1618>").
  • یک رشته PROJJSON؛ اسکیما در https://proj.org/schemas/v0.4/projjson.schema.json در دسترس است (اضافه‌شده در نگارش 6.2).
  • یک CRS مرکب ساخته‌شده از دو نام شیء که با " + " از هم جدا شده‌اند؛ مانند "WGS 84 + EGM96 height" (اضافه‌شده در نگارش 7.1).

اضافه‌شده در نگارش 6.0.0.

نکته:

پیش از نسخه 7.0.1، هنگام افزودن نام فایل لازم بود عبارت +to میان {source_crs} و {target_crs} قرار گیرد.

دستور cs2cs تبدیل میان سامانه مختصات مرجع (CRS) نقشه‌نگاری مبدا و مقصد را روی مجموعه‌ای از نقاط ورودی انجام می‌دهد. تبدیل سامانه مختصات مرجع می‌تواند شامل تبدیل میان مختصات تصویری و جغرافیایی و همچنین اعمال تغییر مبنا (datum shift) باشد.

پارامترهای کنترلی زیر می‌توانند به هر ترتیبی ظاهر شوند:

انجام تبدیل معکوس؛ یعنی از CRS مقصد به CRS مبدا.
که در آن a نویسه‌ای را مشخص می‌کند که به‌عنوان اولین نویسه برای نشان دادن خط کنترلی به کار می‌رود تا بدون پردازش عبور داده شود. این گزینه فقط برای ورودی‌های ASCII کاربرد دارد (مقدار پیش‌فرض # است).
اضافه‌شده در نگارش 5.2.0.

تعداد ارقام اعشار را برای گرد کردن در خروجی مشخص می‌کند.

که در آن string یک رشته دلخواه است که در صورت تشخیص خطا هنگام تبدیل داده‌ها در خروجی چاپ می‌شود. مقدار پیش‌فرض یک رشته سه نویسه‌ای است: *\t*.
باعث می‌شود مختصات ورودی پیش از چاپ مقادیر تبدیل‌شده، در خط خروجی کپی شوند.
فهرست شناسه‌های تصویری را که می‌توان با +proj انتخاب کرد، نمایش می‌دهد. دستور cs2cs -l=id توضیحات کامل‌تری از شناسه تصویر id ارائه می‌دهد؛ مانند cs2cs -l=merc.
فهرست تمام شناسه‌های تصویری که می‌توان با پارامتر +proj استفاده کرد. معادل با cs2cs -l.
توضیحات مبسوط تمام تصویرهایی که می‌توان با پارامتر +proj استفاده کرد.
فهرست تمام بیضوی‌هایی که می‌توان با پارامتر +ellps انتخاب کرد.
فهرست نصف‌النهارهای مبدأ پیش‌فرض که می‌توان با پارامتر +pm انتخاب کرد. توجه داشته باشید که این فهرست دیگر به‌روزرسانی نمی‌شود و ممکن است برخی مقادیر با سایر منابع مغایرت داشته باشند.
فهرست تمام واحدهای فاصله که می‌توان با پارامتر +units انتخاب کرد.
این گزینه ترتیب دو ورودی مورد انتظار اول را از آنچه توسط CRS مشخص شده به ترتیب معکوس تغییر می‌دهد. مختصات سوم (معمولاً ارتفاع) در جایگاه سوم باقی می‌ماند.
این گزینه ترتیب دو خروجی مورد انتظار اول را از آنچه توسط CRS مشخص شده به ترتیب معکوس تغییر می‌دهد. مختصات سوم (معمولاً ارتفاع) در جایگاه سوم باقی می‌ماند.
که در آن format یک رشته قالب‌بندی printf برای کنترل شکل مقادیر خروجی است. در تبدیلات معکوس، در صورت استفاده از این گزینه، خروجی برحسب درجه خواهد بود. اگر قالبی برای تبدیل معکوس مشخص شود، داده‌های خروجی برحسب درجه اعشاری خواهند بود. قالب پیش‌فرض برای تبدیل مستقیم "%.2f" و برای تبدیل معکوس DMS (درجه، دقیقه، ثانیه) است.
که در آن n تعداد ارقام اعشار بااهمیت برای خروجی ثانیه است (در صورت مشخص نشدن این گزینه، -w3 در نظر گرفته می‌شود).
که در آن n تعداد ارقام اعشار بااهمیت برای خروجی ثانیه است. هنگامی که -W استفاده می‌شود، فیلدها با صفرهای ابتدایی دارای عرض ثابت خواهند بود. محدوده معتبر: -W0 تا -W8.
باعث می‌شود فهرستی از پارامترهای کنترلی نقشه‌نگاری آزموده‌شده و استفاده‌شده توسط برنامه پیش از داده‌های ورودی چاپ شود.
اضافه‌شده در نگارش 8.0.0.

محدوده جغرافیایی مورد نظر را برای محدود کردن نتایج هنگام جستجوی عملیات‌های مختصات میان دو CRS مشخص می‌کند. محدوده مورد نظر را می‌توان با نام (مانند "Denmark - onshore") یا به‌صورت AUTHORITY:CODE (مانند EPSG:3237) مشخص کرد.

این گزینه با --bbox مانعة‌الجمع است.

اضافه‌شده در نگارش 8.0.0.

محدوده جغرافیایی مورد نظر را برای محدود کردن نتایج هنگام جستجوی عملیات‌های مختصات میان دو CRS مشخص می‌کند. محدوده به صورت یک کادر محصورکننده (bounding box) با مختصات جغرافیایی، برحسب درجه در یک CRS جغرافیایی نامشخص تعیین می‌شود. west_long و east_long باید در بازه [-180,180] و south_lat و north_lat در بازه [-90,90] باشند. مقدار west_long معمولاً کمتر از east_long است، مگر در حالتی که محدوده مورد نظر از نصف‌النهار ۱۸۰ درجه (antimeridian) عبور کند.

اضافه‌شده در نگارش 9.2.0.

برنامه cs2cs را ملزم می‌کند که فقط از بهترین تبدیل شناخته‌شده توسط PROJ استفاده کند. در صورتی که گرید مورد نیاز برای بهترین تبدیل وجود نداشته باشد، cs2cs یک خطا بازمی‌گرداند.

منظور از «بهترین تبدیل»، دقیق‌ترین تبدیل موجود در میان تمام تبدیلات مرتبط برای نقطه مورد نظر است، در صورتی که تمام شبکه‌ها (گریدها)ی شناخته‌شده مورد نیاز برای انجام چنین تبدیلی در دسترس باشند (به‌صورت محلی یا از طریق شبکه).

توجه داشته باشید که مقدار پیش‌فرض این گزینه را می‌توان با متغیر محیطی PROJ_ONLY_BEST_DEFAULT یا با تنظیم only_best_default در فایل proj.ini <#proj-ini> نیز تعیین کرد (در صورت مشخص شدن --only-best، مقدار پیش‌فرض بازنویسی می‌شود).

اضافه‌شده در نگارش 8.0.0.

هرگونه عملیات مختصات را که یک تبدیل تقریبی (Ballpark transformation <#term-Ballpark-transformation>) باشد یا شامل آن گردد، غیرمجاز می‌کند.

اضافه‌شده در نگارش 8.0.0.

حداقل دقت مورد نظر را برای عملیات‌های مختصات کاندید تعیین می‌کند.

اضافه‌شده در نگارش 8.0.0.

این گزینه می‌تواند برای محدود کردن مرجع صادرکننده (authority) عملیات‌های مختصات جستجوشده در پایگاه‌داده به کار رود. در صورت مشخص نشدن، عملیات‌های مختصات از هر مرجعی جستجو خواهند شد، با محدودیت‌های تعیین‌شده در جدول پایگاه‌داده authority_to_authority_preference مرتبط با مرجع خود CRSهای مبدا/مقصد. اگر مرجع روی any تنظیم شود، عملیات‌های مختصات از هر مرجعی جستجو می‌شوند. اگر مرجع یک رشته غیرخالی متفاوت از any باشد، عملیات‌های مختصات فقط در فضای‌نام آن مرجع جستجو خواهند شد (مانند EPSG).

این گزینه با --bbox مانعة‌الجمع است.

--3d
اضافه‌شده در نگارش 9.1.

سامانه(های) CRS دوبعدی را به نسخه سه‌بعدی ارتقا می‌دهد، جایی که محور عمودی ارتفاع بیضوی برحسب متر با استفاده از بیضویِ CRS مبنای ژئودتیک است. بسته به نگارش‌های PROJ و ماهیت دقیق CRSهای درگیر، به‌ویژه پیش از PROJ 9.1، ترکیب CRSهای دوبعدی و سه‌بعدی ممکن بود به تبدیلات ۲بعدی یا ۳بعدی منجر شود. از PROJ 9.1 به بعد، برای وقوع احتمالی تبدیل عمودی، هر دو CRS باید ۳بعدی باشند.

اضافه‌شده در نگارش 9.4.

مبدأ زمانی (Epoch) مختصات در CRS مبدا، برحسب سال اعشاری. تنها برای CRSهای پویا (dynamic CRS) کاربرد دارد.

اضافه‌شده در نگارش 9.4.

مبدأ زمانی (Epoch) مختصات در CRS مقصد، برحسب سال اعشاری. تنها برای CRSهای پویا (dynamic CRS) کاربرد دارد.

آرگومان‌های خط فرمان +opt با پارامترهای نقشه‌نگاری مرتبط هستند.

برنامه cs2cs دو تعریف سامانه مختصات مرجع (CRS) را دریافت می‌کند. این تعاریف می‌توانند در قالب‌های گوناگونی مانند کدهای EPSG، رشته‌های WKT یا توضیحات سنتی CRS در PROJ.4 ارائه شوند.

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

هنگام استفاده از تعریف WKT یا AUTHORITY:CODE، ترتیب محورهای CRS اعمال خواهد شد. بنابراین برای مثال اگر از EPSG:4326 استفاده شود، اولین مقدار مورد انتظار (یا برگشتی) عرض جغرافیایی خواهد بود.

در سطح داخلی، cs2cs از تابع proj_create_crs_to_crs() <#c.proj_create_crs_to_crs> برای محاسبه عملیات مختصات مناسب استفاده می‌کند، بنابراین جزئیات پیاده‌سازی این تابع مستقیماً بر نتایج بازگردانده‌شده توسط برنامه تأثیر می‌گذارد.

پارامتر محیطی PROJ_DATA <#envvar-PROJ_DATA> دایرکتوری فایل‌های منابع (پایگاه‌داده، گرید‌های تغییر مبنا و غیره) را تعیین می‌کند.

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

داده‌های جغرافیایی ورودی (طول و عرض جغرافیایی) باید در قالب DMS (درجه، دقیقه، ثانیه) یا درجه اعشاری باشند و داده‌های کارتزین ورودی باید در واحدهای سازگار با محور اصلی بیضوی یا واحدهای شعاع کره باشند. مختصات جغرافیایی خروجی معمولاً در قالب DMS خواهند بود (از -f %.12f برای درجه اعشاری با ۱۲ رقم اعشار استفاده کنید)، در حالی که مختصات تصویری (کارتزین) در واحدهای خطی (متر، فوت) خواهند بود.

اضافه‌شده در نگارش 7.0.0.

اگر متغیر محیطی PROJ_NETWORK <#envvar-PROJ_NETWORK> روی ON تنظیم شده باشد، برنامه cs2cs در صورت عدم دسترسی محلی به شبکه‌ها (گریدها)، تلاش می‌کند از گریدهای راه دور ذخیره‌شده روی فضای CDN (شبکه توزیع محتوا) استفاده کند.

جزئیات بیشتر در بخش قابلیت‌های شبکه <#network> در دسترس است.

تبدیل از عرض/طول جغرافیایی WGS 84 (به همین ترتیب) به منطقه ۳۱ شمالی UTM با WGS 84

cs2cs EPSG:4326 EPSG:32631 <<EOF
45N 2E
EOF

خروجی می‌دهد:

421184.70   4983436.77 0.00

تبدیل از عرض/طول جغرافیایی WGS 84 (به همین ترتیب) همراه با ارتفاع EGM96 به منطقه ۳۱ شمالی UTM با WGS 84 همراه با ارتفاع بیضوی WGS84

echo 45 2 0 | cs2cs "WGS 84 + EGM96 height" "WGS 84 / UTM zone 31N" --3d

خروجی می‌دهد:

421184.70   4983436.77 50.69

نکته:

برای به دست آوردن این مقادیر دقیق، باید گرید EGM96 را به‌صورت محلی نصب داشته باشید یا از قابلیت‌های شبکه که در بالا ذکر شد استفاده کنید.

اسکریپت زیر:

cs2cs +proj=latlong +datum=NAD83 +to +proj=utm +zone=10 +datum=NAD27 -r <<EOF
45°15'33.1" 111.5W
45d15.551666667N -111d30
+45.25919444444 111d30'000w
EOF

مختصات جغرافیایی ورودی NAD83 را به مختصات NAD27 در تصویر UTM با انتخاب منطقه ۱۰ تبدیل می‌کند. مقادیر جغرافیایی این مثال هم‌ارز هستند و به‌عنوان نمونه‌هایی از انواع ورودی‌های DMS آورده شده‌اند. داده‌های خروجی x-y به‌صورت سه خط زیر ظاهر خواهند شد:

1402285.93  5076292.58 0.00

برای دریافت دقیق این مقادیر، باید تمام گریدهای جاری (در این مورد گرید NADCON5 به نام us_noaa_nadcon5_nad27_nad83_1986_conus.tif) را به‌صورت محلی نصب داشته باشید یا از قابلیت‌های شبکه که پیش‌تر ذکر شد استفاده کنید.

برای اطمینان از دستیابی به نتیجه بهینه، می‌توانید گزینه --only-best را اضافه کنید. با فرض این که گرید ذکرشده در بالا در دسترس نباشد:

echo -111.5 45.25919444444 | cs2cs --only-best +proj=latlong +datum=NAD83 +to +proj=utm +zone=10 +datum=NAD27

این خروجی را بازمی‌گرداند:

Attempt to use coordinate operation axis order change (2D) + Inverse of NAD27 to NAD83 (7) + axis order change (2D) + UTM zone 10N failed. Grid us_noaa_nadcon5_nad27_nad83_1986_conus.tif is not available. Consult https://proj.org/resource_files.html for guidance.
*   * inf

در غیر این صورت، اگر گرید را در دسترس نداشته باشید و --only-best را نیز مشخص نکنید:

echo -111.5 45.25919444444 | cs2cs --only-best +proj=latlong +datum=NAD83 +to +proj=utm +zone=10 +datum=NAD27

این خروجی را بازمی‌گرداند:

1402224.57  5076275.42 0.00

که نتیجه‌ای است حاصل از یکسان فرض شدن مبناهای NAD27 و NAD83، که تقریبی در حد چند ده متر است.

proj(1), cct(1), geod(1), gie(1), projinfo(1), projsync(1)

فهرستی از اشکالات شناخته‌شده را می‌توان در https://github.com/OSGeo/PROJ/issues یافت که گزارش‌های جدید اشکالات نیز از طریق آن قابل ارسال است.

https://proj.org

Frank Warmerdam

1983-2026, PROJ contributors

10 avril 2026 9.8