هر عارضه در GIS دو بخش دارد: شکل آن روی نقشه و اطلاعاتی که دربارهاش در جدول ذخیره شده است. بدون اطلاعات درست، نقشهی زیبا هم به درد تحلیل نمیخورد. ویرایش اطلاعات توصیفی در ArcGIS Pro یعنی وارد کردن، اصلاح و محاسبهی مقادیر فیلدها، از تغییر نام یک خیابان تا محاسبهی مساحت هزاران قطعه با یک کلیک. در این آموزش ArcGIS Pro همهی روشها را از سادهترین تا قدرتمندترین مرور میکنیم: پنجرهی Attributes، ویرایش گروهی، ویرایش مستقیم در جدول، ابزار Calculate Field با Python و Arcade و ابزار Calculate Geometry Attributes.
📚 مسیر یادگیری: این مطلب فصل ۶ از مجموعهی ۱۴ فصلی «کتابخوانی عملی ArcGIS Pro» در گیسلند است؛ فهرست کامل فصلها را در صفحهی دوره جامع آموزش آرکجیایاس پرو ببینید. این مجموعه بخشی از آموزش آرک جی آی اس پرو از صفر تا پیشرفته است. فایلهای تمرینی را از داده های آرک جی آی اس پرو بردارید و تمرینهای بیشتر را در تمرین های آرک جی آی اس پرو ببینید.
قاعدهی کلی ساده است: برای یک یا چند عارضه از پنجرهی Attributes، برای مرور و اصلاح سریع از جدول و برای صدها و هزاران رکورد از ابزارهای محاسبه استفاده کنید. این فصل ادامهی منطقی ایجاد عارضه جدید در ArcGIS Pro است، چون پس از ساخت عوارض نوبت تکمیل اطلاعات آنهاست.
🧭 فهرست مطالب این آموزش
- 🧭 انتخاب روش مناسب ویرایش اطلاعات توصیفی
- 📋 ویرایش تکعارضه با پنجرهی Attributes
- 👥 ویرایش گروهی چند عارضه با یک ویرایش
- 🧾 ویرایش مستقیم در جدول توصیفی
- 🔁 انتقال مقادیر از یک عارضه به عارضهی دیگر
- 🧮 محاسبهی گروهی با ابزار Calculate Field
- 📏 محاسبهی مساحت، طول و مختصات با Calculate Geometry Attributes
- 🧰 ترفندهای کاربردی Calculate Field برای دادههای فارسی
- 📤 ویرایش در اکسل و بازگرداندن به ArcGIS Pro
- 🛡️ نقش Domain و Subtype در ویرایش اطلاعات توصیفی
- 📅 کار با فیلدهای تاریخ و تاریخ شمسی
- ↩️ ویرایش امن: جلسهی ویرایش، Undo و Save
- 🧪 تمرین عملی: تکمیل جدول قطعات یک محله
- 🏙️ سناریوی واقعی: بهروزرسانی گروهی وضعیت لولههای آب پس از بازرسی
- 🐞 خطاهای رایج ویرایش اطلاعات توصیفی و راهحل
- ❓ پرسشهای متداول
- 🏁 جمعبندی
🧭 انتخاب روش مناسب ویرایش اطلاعات توصیفی

⚠️ هشدار
پیش از ویرایش گروهی یا اجرای Calculate Field روی کل جدول، از داده نسخهی پشتیبان بگیرید. Calculate Field اگر خارج از جلسهی ویرایش اجرا شود، قابل Undo نیست و مقدارهای قبلی بلافاصله بازنویسی میشوند.
📋 ویرایش تکعارضه با پنجرهی Attributes
پنجرهی Attributes یک فرم مرتب برای دیدن و ویرایش مقادیر عوارض انتخابشده است. بخش بالای آن فهرست درختی عوارض انتخابشده (بر اساس لایه) و بخش پایین فیلدها و مقادیر را نشان میدهد.
- ۱در زبانهی Edit و گروه Selection روی Attributes کلیک کنید تا پنجره باز شود.
- ۲با ابزار Select روی یک عارضه کلیک کنید. نام لایه و شناسهی عارضه در بخش بالا و فیلدها در بخش پایین ظاهر میشوند.
- ۳روی مقدار فیلد مورد نظر کلیک کنید و مقدار جدید را تایپ کنید. برای فیلدهای دارای Domain فهرست کشویی و برای فیلدهای تاریخ تقویم باز میشود.
- ۴اگر گزینهی Auto Apply در پایین پنجره فعال است، تغییر بلافاصله اعمال میشود؛ در غیر این صورت روی Apply کلیک کنید.
- ۵برای رفتن به عارضهی بعدی، در فهرست بالا روی آن کلیک کنید یا عارضهی دیگری را روی نقشه انتخاب کنید.
- ۶پس از پایان، از زبانهی Edit روی Save کلیک کنید.
💡 نکته
در زبانهی Geometry همین پنجره، مختصات گرههای عارضه را به شکل جدول میبینید. اگر بین زبانههای Attributes و Geometry جابهجا شوید، هم اطلاعات توصیفی و هم شکل عارضه را از یک جا کنترل کردهاید.
⚙️ تنظیمات مفید پنجرهی Attributes
- از منوی پنجره (آیکون سهخط) گزینهی Show Field Names یا Show Field Aliases را برای نمایش نام فنی یا نام خوانا انتخاب کنید.
- با Hide Null Fields فیلدهای خالی را پنهان کنید تا روی فیلدهای مهم تمرکز کنید.
- فیلدهای فقطخواندنی مثل
OBJECTID،Shape_LengthوShape_Areaبا رنگ کمرنگتر نمایش داده میشوند و قابل ویرایش نیستند. - اگر لایه Relationship Class دارد، رکوردهای مرتبط زیر عارضه در فهرست درختی دیده میشوند و از همینجا قابل ویرایش و افزودناند.
🐞 خطای رایج و راهحل
اگر مقدار فیلد را تغییر دادید ولی پس از کلیک روی عارضهی دیگر به حالت قبل برگشت، احتمالاً Auto Apply خاموش است و Apply را نزدهاید. همچنین اگر مقدار خارج از محدودهی Domain یا با نوع دادهی نامعتبر باشد (مثلاً متن در فیلد عددی)، ذخیره نمیشود و پیام خطا در پایین پنجره ظاهر میشود.
✅ نکات کلیدی این بخش
- پنجرهی Attributes از زبانهی Edit باز میشود
- Auto Apply یا دکمهی Apply را فراموش نکنید
- فیلدهای Domain فهرست کشویی دارند
- زبانهی Geometry مختصات گرهها را نشان میدهد
👥 ویرایش گروهی چند عارضه با یک ویرایش
فرض کنید ۴۰ قطعه در یک بلوک باید کاربری «تجاری» بگیرند یا وضعیت ۲۰ لوله به «تعویضشده» تغییر کند. لازم نیست تکتک آنها را ویرایش کنید؛ پنجرهی Attributes امکان ویرایش همزمان همهی عوارض انتخابشده را دارد.
- ۱همهی عوارض مورد نظر را انتخاب کنید؛ با ابزار Select و کشیدن کادر، با
Shiftیا با Select By Attributes. - ۲در پنجرهی Attributes، در فهرست درختی روی نام لایه (نه روی یک عارضهی خاص) کلیک کنید. عنوان پنجره تعداد عوارض را نشان میدهد، مثلاً «Parcels (40)».
- ۳فیلدهایی که مقدار یکسان دارند، مقدار را نشان میدهند و فیلدهایی که مقادیر متفاوت دارند، خالی یا با عبارت «<Multiple values>» دیده میشوند.
- ۴مقدار جدید را در فیلد مورد نظر وارد کنید.
- ۵روی Apply کلیک کنید. مقدار برای همهی ۴۰ عارضه اعمال میشود.
- ۶با باز کردن جدول و Show selected records نتیجه را بررسی کنید و ویرایشها را Save کنید.

⚠️ هشدار
اگر عوارضی از چند لایه انتخاب شده باشند، ویرایش روی نام یک لایه فقط عوارض همان لایه را تغییر میدهد. اما اگر روی یک عارضهی تکی کلیک کنید، فقط همان یکی تغییر میکند. پیش از Apply حتماً به عنوان بالای فیلدها نگاه کنید تا مطمئن شوید چند عارضه هدف هستند.
💡 نکته
برای ویرایش گروهی لایههایی که عوارض روی هم دارند، ابتدا با List By Selection در Contents لایههای دیگر را غیرقابل انتخاب کنید تا انتخاب فقط شامل لایهی هدف شود.
✅ نکات کلیدی این بخش
- با کلیک روی نام لایه همهی عوارض انتخابشده ویرایش میشوند
- Multiple values یعنی مقادیر فعلی متفاوتاند
- پیش از Apply تعداد هدف را بررسی کنید
🧾 ویرایش مستقیم در جدول توصیفی
جدول توصیفی (Attribute Table) نمای کلی همهی رکوردهاست و برای مرور، مرتبسازی، یافتن خطاها و اصلاح سریع ایدئال است.
- ۱روی لایه در Contents راستکلیک کنید و Attribute Table را بزنید (یا
Ctrl + Tبا لایهی انتخابشده). - ۲روی سلول مورد نظر دوبار کلیک کنید تا قابل ویرایش شود. مقدار جدید را تایپ و Enter بزنید.
- ۳برای جابهجایی بین سلولها از
Tab(سلول بعدی) و جهتنماها استفاده کنید. - ۴برای کپی یک مقدار در چند سلول، سلول مبدأ را کپی کنید (
Ctrl + C)، چند سلول همستون را انتخاب کنید وCtrl + Vبزنید. - ۵برای یافتن رکورد خاص، از کادر Find (آیکون ذرهبین یا
Ctrl + F) استفاده کنید؛ گزینهی Replace هم برای جایگزینی متن در یک ستون وجود دارد. - ۶برای مرتبسازی، روی عنوان ستون دوبار کلیک کنید یا راستکلیک و Sort Ascending/Descending را بزنید.
🔎 ترفندهای یافتن خطا در جدول
- با مرتبسازی صعودی یک ستون، مقادیر خالی (Null) و مقادیر عجیب (مثلاً عدد منفی برای مساحت) در بالای جدول دیده میشوند.
- از Summarize (راستکلیک روی ستون) برای دیدن مقادیر یکتای یک فیلد استفاده کنید؛ اشتباههای تایپی مثل «مسکونی» و «مسکونى» (با ی عربی) بهسرعت آشکار میشوند.
- با Select By Attributes و شرطی مثل
Landuse IS NULLهمهی رکوردهای ناقص را انتخاب و سپس با ویرایش گروهی اصلاح کنید. - دکمهی Switch در پایین جدول انتخاب را معکوس میکند؛ برای یافتن رکوردهایی که شرطی را ندارند کاربردی است.
📌 یادداشت
اگر ستونی را در جدول نمیبینید، ممکن است در Fields View مخفی شده باشد. از منوی جدول Fields View را باز کنید و تیک Visible فیلد را بزنید. ساخت فیلد جدید هم از همین نما با New امکانپذیر است.
🧱 نوع فیلد پیش از ورود داده
پیش از هر ویرایش، مطمئن شوید نوع فیلد با دادهای که قرار است در آن بنشیند سازگار است. فیلدهای Short و Long فقط عدد صحیح میپذیرند، Float و Double عدد اعشاری، Text متن با طول مشخص و Date تاریخ. اگر طول فیلد متنی ۲۰ کاراکتر باشد، نامهای طولانیتر بریده میشوند. نوع فیلد پس از ساخت قابل تغییر نیست؛ باید فیلد جدیدی با نوع درست بسازید، مقدار را با Calculate Field منتقل کنید و فیلد قدیمی را حذف کنید. انتخاب درست نوع فیلد در ابتدای پروژه، ساعتها اصلاح بعدی را حذف میکند.
✅ نکات کلیدی این بخش
- جدول برای مرور و اصلاح سریع است
- کپی و پیست چندسلولی در یک ستون کار میکند
- Find و Replace برای اصلاح متن
- Summarize و مرتبسازی خطاهای پنهان را آشکار میکنند
🔁 انتقال مقادیر از یک عارضه به عارضهی دیگر
وقتی دو لایه اطلاعات مشابه دارند، مثلاً لایهی قدیمی قطعات با اطلاعات کامل مالکیت و لایهی جدید با هندسهی دقیقتر ولی فیلدهای خالی، تایپ دوبارهی اطلاعات منطقی نیست. ابزار Transfer Attributes در پنجرهی Modify Features مقادیر فیلدها را از یک عارضهی مبدأ به عارضهی مقصد منتقل میکند.
- ۱در پنجرهی Modify Features ابزار Transfer Attributes را جستوجو و باز کنید.
- ۲در بخش Field Mapping، لایهی مبدأ و مقصد را تعیین کنید و فیلدهای متناظر را به هم نسبت دهید؛ مثلاً
Ownerدر مبدأ بهOwner_Nameدر مقصد. - ۳روی نقشه ابتدا عارضهی مبدأ و سپس عارضه یا عوارض مقصد را کلیک کنید.
- ۴مقادیر بلافاصله منتقل میشوند. نتیجه را در پنجرهی Attributes بررسی کنید.
برای انتقال خودکار مقادیر در مقیاس کل لایه بر اساس موقعیت، از ابزار Spatial Join و سپس Join Field استفاده کنید که روش آن در فصل سوم: اتصال جدول در ArcGIS Pro آمده است. Transfer Attributes برای موارد موردی و Spatial Join برای کل لایه؛ این تقسیمبندی ساده، انتخاب ابزار را آسان میکند.
💡 نکته
در Field Mapping ابزار Transfer Attributes میتوانید نگاشت را ذخیره کنید تا در جلسههای بعد دوباره تعریفش نکنید. اگر نام فیلدها در دو لایه یکسان است، گزینهی نگاشت خودکار بر اساس نام، کار را چند ثانیهای میکند.
🧮 محاسبهی گروهی با ابزار Calculate Field
Calculate Field قدرتمندترین ابزار ویرایش اطلاعات توصیفی در ArcGIS Pro است. این ابزار برای همهی رکوردهای لایه، یا فقط رکوردهای انتخابشده، مقدار یک فیلد را بر اساس یک عبارت محاسبه میکند. عبارت میتواند یک مقدار ثابت، ترکیبی از فیلدهای دیگر، یک تابع ریاضی یا یک تابع کامل Python یا Arcade باشد.
🛠️ مراحل اجرای Calculate Field
- ۱اگر فقط بخشی از رکوردها باید محاسبه شوند، ابتدا آنها را انتخاب کنید. Calculate Field همیشه به انتخاب احترام میگذارد؛ اگر چیزی انتخاب نشده باشد، روی همهی رکوردها اجرا میشود.
- ۲جدول توصیفی را باز کنید، روی عنوان ستون مقصد راستکلیک کنید و Calculate Field را بزنید؛ یا ابزار را از پنجرهی Geoprocessing جستوجو کنید.
- ۳در Input Table لایه و در Field Name فیلد مقصد را بررسی کنید. اگر نام فیلد جدیدی بنویسید، ابزار آن فیلد را میسازد و در Field Type نوعش را میپرسد.
- ۴Expression Type را روی Python 3، Arcade یا SQL بگذارید.
- ۵در کادر عبارت، با دوبار کلیک روی نام فیلدها در فهرست Fields و توابع در فهرست Helpers، عبارت را بسازید.
- ۶در صورت نیاز، در Code Block یک تابع تعریف کنید و آن را در کادر عبارت فراخوانی کنید.
- ۷روی دکمهی Verify (تیک سبز) کلیک کنید تا درستی عبارت بررسی شود.
- ۸در صورت نیاز، در Enforce Domains تعیین کنید مقادیر خارج از Domain رد شوند.
- ۹Run یا OK را بزنید و نتیجه را در جدول بررسی کنید.

🐍 نمونه عبارتهای Python
در Python، نام فیلدها بین دو علامت تعجب نوشته میشوند؛ مثل !Area_m2!. چند نمونهی پرکاربرد:
برای منطق شرطی، مثلاً طبقهبندی قطعات بر اساس مساحت، از Code Block استفاده کنید:
# Expression:
classify(!Shape_Area!)
# Code Block:
def classify(area):
if area is None:
return None
if area < 200:
return "Small"
elif area < 1000:
return "Medium"
else:
return "Large"
💡 نکته
در Code Block همیشه حالت None (مقدار Null) را مدیریت کنید. اگر یک رکورد مقدار خالی داشته باشد و تابع شما بخواهد روی آن عملیات ریاضی انجام دهد، کل ابزار با خطا متوقف میشود.
🔷 نمونه عبارتهای Arcade
Arcade زبان عبارت مشترک Esri در ArcGIS Pro، ArcGIS Online و برنامههای میدانی است. مزیت آن این است که همان عبارت در برچسب، Pop-up، نمادشناسی و Attribute Rule هم کار میکند. نام فیلدها با $feature.FieldName یا $feature["FieldName"] نوشته میشوند.
// Area in hectares, rounded
Round($feature.Shape_Area / 10000, 2)
// Conditional classification
var a = $feature.Shape_Area;
if (IsEmpty(a)) { return null; }
return When(a < 200, "Small", a < 1000, "Medium", "Large");
// Current date for an inspection field
Now()
🗃️ عبارت SQL
در ژئودیتابیسهای سازمانی و برخی سرویسها، گزینهی SQL در Expression Type فعال است و محاسبه مستقیم در پایگاه داده انجام میشود که روی میلیونها رکورد بسیار سریعتر است. محدودیت آن این است که فقط توابع SQL همان پایگاه داده را میپذیرد.
🐞 خطای رایج و راهحل
اگر Calculate Field با خطای «Invalid field» یا «Name error» متوقف شد، نام فیلد را اشتباه نوشتهاید یا از Alias بهجای نام اصلی استفاده کردهاید. همیشه نام فیلد را با دوبار کلیک از فهرست Fields وارد کنید. خطای «TypeError» معمولاً یعنی مقدار Null یا ناسازگاری نوع، مثل جمع متن با عدد.
✅ نکات کلیدی این بخش
- Calculate Field روی انتخاب یا کل جدول اجرا میشود
- در Python فیلدها !Name! و در Arcade $feature.Name
- Code Block برای منطق شرطی
- Null را همیشه مدیریت کنید
- خارج از جلسهی ویرایش قابل Undo نیست
📏 محاسبهی مساحت، طول و مختصات با Calculate Geometry Attributes
فیلدهای Shape_Area و Shape_Length در ژئودیتابیس خودکار بهروز میشوند، اما با واحد سیستم مختصات داده و قابل تغییر نیستند. اگر مساحت را به هکتار، طول را به کیلومتر یا مختصات مرکز هر قطعه را لازم دارید، از ابزار Calculate Geometry Attributes استفاده کنید.
- ۱اگر فیلدهای مقصد وجود ندارند، ابتدا آنها را بسازید؛ مثلاً
Area_haاز نوع Double وCent_XوCent_Yاز نوع Double. - ۲در جدول توصیفی روی عنوان ستون مقصد راستکلیک کنید و Calculate Geometry را بزنید؛ یا ابزار Calculate Geometry Attributes را از پنجرهی Geoprocessing باز کنید.
- ۳در Input Features لایه را انتخاب کنید.
- ۴در بخش Geometry Attributes، برای هر ردیف یک Field (فیلد مقصد) و یک Property (ویژگی هندسی) انتخاب کنید؛ مثلاً
Area_haبا Area وCent_Xبا Central point x-coordinate. - ۵Area Unit را روی Hectares و در صورت محاسبهی طول، Length Unit را روی واحد دلخواه بگذارید.
- ۶در Coordinate System سیستم مختصاتی را تعیین کنید که محاسبه بر اساس آن انجام شود؛ برای مختصات جغرافیایی مرکز، یک سیستم GCS مثل WGS 1984 و برای مساحت دقیق، سیستم تصویرشدهی مناسب منطقه.
- ۷در صورت نیاز Coordinate Format را برای مختصات (مثلاً درجهی اعشاری یا DMS) تعیین کنید و Run را بزنید.
⚠️ هشدار
اگر داده در سیستم جغرافیایی (درجه) باشد و مساحت مسطح بخواهید، نتیجه بیمعنی است. یا از Area (geodesic) استفاده کنید یا در پارامتر Coordinate System یک سیستم تصویرشدهی متری مانند UTM منطقهی خود را بدهید. مفهوم سیستمهای مختصات را در فصل هفتم: سیستم مختصات در ArcGIS Pro میبینید.
📌 یادداشت
مقادیر Calculate Geometry ثابتاند: اگر بعداً شکل عارضه را ویرایش کنید، فیلد Area_ha خودکار بهروز نمیشود. برای فیلدهایی که باید همیشه هماهنگ بمانند، از Attribute Rule محاسباتی استفاده کنید که در فصل نهم آموزش داده میشود.
✅ نکات کلیدی این بخش
- برای واحد دلخواه از Calculate Geometry Attributes استفاده کنید
- سیستم مختصات محاسبه را آگاهانه انتخاب کنید
- geodesic برای محدودههای بزرگ دقیقتر است
- مقادیر محاسبهشده با ویرایش بعدی خودکار بهروز نمیشوند
🧰 ترفندهای کاربردی Calculate Field برای دادههای فارسی
دادههایی که در ایران تولید میشوند چند مشکل تکراری دارند: حروف «ي» و «ك» عربی بهجای «ی» و «ک» فارسی، اعداد فارسی در فیلدهای کد، فاصلههای اضافه و نیمفاصلههای ناهمگون. این مشکلات Join، کوئری و Domain را خراب میکنند. چند تابع سادهی Code Block همه را یکجا حل میکنند.
🔤 یکسانسازی حروف عربی و فارسی
# Expression:
fix_fa(!Name!)
# Code Block:
def fix_fa(s):
if s is None:
return None
s = s.replace("\u064a", "\u06cc").replace("\u0643", "\u06a9")
return " ".join(s.split())
این تابع «ي» عربی را به «ی» فارسی و «ك» عربی را به «ک» فارسی تبدیل میکند و فاصلههای تکراری را حذف میکند. آن را روی همهی فیلدهای متنی که در Join یا کوئری استفاده میشوند اجرا کنید.
🔢 تبدیل اعداد فارسی به انگلیسی و ساخت کد عددی
# Expression:
fa_digits(!Code_Text!)
# Code Block:
def fa_digits(s):
if s is None:
return None
table = str.maketrans("۰۱۲۳۴۵۶۷۸۹٠١٢٣٤٥٦٧٨٩", "01234567890123456789")
return s.translate(table).strip()
اگر فیلد مقصد عددی است، عبارت را به int(fa_digits(!Code_Text!)) تغییر دهید. پس از این تبدیل، Join با جدولهایی که کد انگلیسی دارند بدون مشکل کار میکند.
#️⃣ شمارهگذاری ترتیبی رکوردها
برای ساخت شمارهی ترتیبی دلخواه (مثلاً کد پلاک از ۱۰۰۱ به بعد)، از یک متغیر سراسری در Code Block استفاده کنید. ابتدا جدول را بر اساس فیلد مورد نظر مرتب کنید تا ترتیب معنیدار باشد؛ البته Calculate Field رکوردها را به ترتیب OBJECTID پیمایش میکند، پس برای ترتیب مکانی ابتدا داده را با ابزار Sort مرتب و خروجی بگیرید.
# Expression:
seq()
# Code Block:
n = 1000
def seq():
global n
n += 1
return n
✅ نکات کلیدی این بخش
- حروف عربی و فارسی را پیش از Join یکسان کنید
- اعداد فارسی را با translate به انگلیسی تبدیل کنید
- شمارهگذاری ترتیبی با متغیر global
- ترتیب پیمایش بر اساس OBJECTID است
📤 ویرایش در اکسل و بازگرداندن به ArcGIS Pro
گاهی همکاری که با GIS آشنا نیست باید اطلاعات را تکمیل کند. راه امن این است که جدول را خروجی بگیرید، در اکسل تکمیل شود و سپس با کلید مشترک برگردد؛ هرگز خود فایلهای ژئودیتابیس یا dbf شیپفایل را با اکسل باز و ذخیره نکنید.
- ۱با ابزار Table To Excel جدول لایه را به فایل
.xlsxخروجی بگیرید. فیلدOBJECTIDیا یک کلید یکتای دائمی را در خروجی نگه دارید. - ۲فایل را به همکار بدهید و از او بخواهید فقط ستونهای مشخص را پر کند و ردیفها را حذف یا جابهجا نکند.
- ۳فایل تکمیلشده را با Excel To Table به ژئودیتابیس پروژه وارد کنید.
- ۴با ابزار Join Field ستونهای تکمیلشده را بر اساس کلید یکتا به لایه منتقل کنید؛ یا ابتدا Add Join بزنید و سپس با Calculate Field مقدار ستون جدول اتصال را در فیلد اصلی کپی کنید.
- ۵چند رکورد را تصادفی با فایل اکسل مقایسه کنید تا از درستی انتقال مطمئن شوید.
📌 یادداشت
اگر کلید یکتا ندارید، پیش از خروجی یک فیلد UID بسازید و با Calculate Field مقدار !OBJECTID! را در آن کپی کنید. OBJECTID ممکن است پس از برخی عملیات مثل Export تغییر کند، اما فیلد UID شما ثابت میماند. ابزارهای تبدیل داده را در فصل یازدهم کاملتر میبینید.
🛡️ نقش Domain و Subtype در ویرایش اطلاعات توصیفی
خطای تایپی بزرگترین دشمن دادهی توصیفی است. وقتی یک نفر «مسکونی»، دیگری «مسکونى» و سومی «Residential» مینویسد، هر سه برای ArcGIS Pro سه مقدار جدا هستند و نقشهی کاربری یا گزارش آماری خراب میشود. ژئودیتابیس دو ابزار پیشگیرانه دارد:
- Coded Value Domain: فهرست مقادیر مجاز یک فیلد، مثلاً ۱ = مسکونی، ۲ = تجاری. در پنجرهی Attributes و جدول، فیلد به فهرست کشویی تبدیل میشود و کاربر فقط از آن انتخاب میکند.
- Range Domain: محدودهی مجاز عددی، مثلاً قطر لوله بین ۵۰ تا ۱۲۰۰ میلیمتر.
- Subtype: دستهبندی عوارض یک کلاس با مقادیر پیشفرض و Domainهای متفاوت برای هر دسته.
ساخت Domain و Subtype موضوع فصل هشتم: ساخت ژئودیتابیس در ArcGIS Pro است. اینجا فقط بدانید که اگر Domain تعریف شده باشد، Calculate Field با گزینهی Enforce Domains مقادیر غیرمجاز را رد میکند و ابزار Validate در زبانهی Edit (برای قوانین) عوارض دارای مقدار نامعتبر را پیدا میکند.
💡 نکته
اگر جدولی قدیمی با مقادیر متنی نامنظم دارید، پیش از تعریف Domain مقادیر را یکدست کنید: با Summarize مقادیر یکتا را ببینید، برای هر شکل اشتباه یک Select By Attributes بزنید و با ویرایش گروهی آن را به شکل درست تبدیل کنید. سپس Domain را تعریف و به فیلد نسبت دهید.
📅 کار با فیلدهای تاریخ و تاریخ شمسی
فیلدهای Date در ArcGIS Pro تاریخ را به شکل میلادی ذخیره میکنند و نمایش آنها بر اساس تنظیمات منطقهای ویندوز و قالب فیلد است. در نسخههای جدید، نوعهای Date Only، Time Only و Timestamp Offset هم اضافه شدهاند که برای ذخیرهی فقط تاریخ یا تاریخ با منطقهی زمانی مناسباند. برای پروژههای ایرانی که گزارش شمسی لازم دارند، توصیهی عملی این است:
- ۱تاریخ اصلی را همیشه در یک فیلد Date میلادی نگه دارید؛ این فیلد برای مرتبسازی، فیلتر زمانی، نمودار و Time Slider ضروری است.
- ۲برای نمایش، یک فیلد متنی مثلاً
Date_Shamsiبسازید و تاریخ شمسی را در آن ذخیره کنید؛ این مقدار را میتوانید در اکسل با فرمول یا در ArcGIS Pro با یک تابع تبدیل در Code Block پایتون محاسبه کنید. - ۳در برچسبها، Pop-up و گزارشها از فیلد شمسی و در تحلیلها از فیلد میلادی استفاده کنید.
- ۴برای ثبت تاریخ ویرایش بهطور خودکار، بهجای تایپ دستی از Editor Tracking استفاده کنید که در فصل نهم آموزش داده میشود.
⚠️ هشدار
هرگز تاریخ را فقط به شکل متن (مثلاً «۱۴۰۳/۰۵/۱۲») در یک فیلد متنی نگه ندارید. مرتبسازی متنی تاریخها، فیلتر بازهی زمانی و محاسبهی فاصلهی روزها روی متن درست کار نمیکند و بعداً تبدیل آن به تاریخ واقعی وقت زیادی میگیرد.
↩️ ویرایش امن: جلسهی ویرایش، Undo و Save
یک نکتهی مهم که بسیاری از کاربران آن را نمیدانند: اگر Calculate Field را از داخل جدول و در حالی که ویرایش فعال است اجرا کنید، تغییرات بخشی از جلسهی ویرایش میشوند و با Undo یا Discard قابل برگشتاند. اما اگر همان ابزار را از پنجرهی Geoprocessing روی دادهای اجرا کنید که در جلسهی ویرایش نیست، تغییر مستقیم در پایگاه داده نوشته میشود. پیش از محاسبههای پرخطر، یا نسخهی پشتیبان بگیرید یا مطمئن شوید ویرایش فعال است و Save نکردهاید. پس از بررسی نتیجه، از زبانهی Edit روی Save کلیک کنید.

🧪 تمرین عملی: تکمیل جدول قطعات یک محله
- ۱لایهی قطعات نمونه را از داده های آرک جی آی اس پرو در پروژهی
Practice_Ch06اضافه کنید و یک نسخهی پشتیبان بگیرید. - ۲با پنجرهی Attributes نام مالک و کاربری سه قطعه را وارد کنید.
- ۳۱۰ قطعهی یک بلوک را انتخاب کنید و با ویرایش گروهی کاربری همه را «تجاری» کنید.
- ۴در جدول، با Summarize مقادیر یکتای فیلد کاربری را ببینید و اشتباههای تایپی را با ویرایش گروهی اصلاح کنید.
- ۵فیلد
Area_haبسازید و با Calculate Geometry Attributes مساحت را به هکتار در سیستم UTM منطقه حساب کنید. - ۶با Calculate Field و Code Block پایتون، فیلد
Size_Classرا با سه دستهی کوچک، متوسط و بزرگ پر کنید. - ۷همین طبقهبندی را با Arcade در یک فیلد دیگر تکرار کنید و نتیجه را مقایسه کنید.
- ۸مختصات جغرافیایی مرکز هر قطعه را در دو فیلد
LonوLatمحاسبه کنید و ویرایشها را Save کنید.
💡 نکته
چکلیست موفقیت: هیچ رکوردی در فیلد کاربری Null نیست، فیلد Size_Class با Python و Arcade یکسان است و مختصات مرکز با موقعیت قطعات روی نقشهی پایه میخواند. تمرینهای بیشتر در تمرین های آرک جی آی اس پرو آمده است.
🏙️ سناریوی واقعی: بهروزرسانی گروهی وضعیت لولههای آب پس از بازرسی
تیم بهرهبرداری یک شرکت آب و فاضلاب فهرست ۴۰۰ لولهی بازرسیشده را در قالب اکسل تحویل داده است و باید فیلد «وضعیت» و «تاریخ بازرسی» آنها در لایهی GIS بهروز شود. وارد کردن دستی این مقدارها در پنجرهی Attributes هم کند است و هم پرخطا. مسیر پیشنهادی:
- ۱فایل اکسل را با ابزار Excel To Table به جدول ژئودیتابیس تبدیل کنید تا نوع فیلدها مشخص شود.
- ۲جدول را با فیلد کد لوله به لایهی لولهها Join کنید و فقط رکوردهای مطابق را نگه دارید.
- ۳با Calculate Field مقدار فیلد وضعیت لایه را برابر فیلد متناظر جدول قرار دهید و فیلد تاریخ را هم به همین روش پر کنید.
- ۴Join را حذف کنید و با Select By Attributes لولههایی را که وضعیت خالی دارند برای پیگیری تیم میدانی جدا کنید.
⚠️ هشدار
پیش از اجرای Calculate Field روی جدول متصل، حتماً بررسی کنید که کد لوله در هر دو جدول یکتا باشد. اگر یک کد دو بار در اکسل تکرار شده باشد، فقط یکی از مقدارها به لایه منتقل میشود و خطا به چشم نمیآید.
🐞 خطاهای رایج ویرایش اطلاعات توصیفی و راهحل
❓ پرسشهای متداول درباره ویرایش اطلاعات توصیفی
🔹 بهترین روش ویرایش اطلاعات توصیفی در ArcGIS Pro برای هزاران رکورد چیست؟
ابزار Calculate Field. رکوردهای هدف را انتخاب کنید و با یک عبارت Python یا Arcade مقدار فیلد را برای همه یکجا محاسبه کنید. برای چند عارضه پنجرهی Attributes و ویرایش گروهی کافی است.
🔹 تفاوت Python و Arcade در Calculate Field چیست؟
Python به کتابخانههای کامل پایتون دسترسی دارد و برای پردازشهای پیچیده مناسب است. Arcade زبان مشترک Esri است و همان عبارت در برچسب، Pop-up، Attribute Rules و ArcGIS Online هم کار میکند.
🔹 چرا نمیتوانم فیلد Shape_Area را ویرایش کنم؟
این فیلد را ژئودیتابیس خودکار از هندسه محاسبه میکند و فقطخواندنی است. برای مساحت با واحد دلخواه، یک فیلد جدید بسازید و با Calculate Geometry Attributes پر کنید.
🔹 آیا Calculate Field قابل Undo است؟
اگر در جلسهی ویرایش فعال اجرا شود، تا پیش از Save بله. اگر خارج از جلسهی ویرایش اجرا شود، تغییر مستقیم ذخیره میشود و برگشتپذیر نیست.
🔹 چطور چند عارضه را همزمان ویرایش کنم؟
عوارض را انتخاب کنید، در پنجرهی Attributes روی نام لایه کلیک کنید، مقدار جدید را وارد و Apply را بزنید. مقدار برای همهی عوارض انتخابشده اعمال میشود.
🔹 چطور مختصات مرکز هر چندضلعی را محاسبه کنم؟
دو فیلد Double بسازید و با Calculate Geometry Attributes ویژگیهای Central point x-coordinate و y-coordinate را در سیستم مختصات دلخواه، مثلاً WGS 1984 برای طول و عرض جغرافیایی، محاسبه کنید.
🔹 چرا در جدول برخی فیلدها را نمیبینم؟
فیلد در Fields View مخفی شده است. از منوی جدول Fields View را باز کنید و تیک Visible آن فیلد را بزنید.
🔹 میتوانم مقدار یک فیلد را از روی یک جدول دیگر بهصورت گروهی پر کنم؟
بله. جدول دوم را با فیلد مشترک به لایه Join کنید، سپس با Calculate Field مقدار فیلد مقصد را برابر فیلد جدول متصل قرار دهید و در پایان Join را حذف کنید. ابزار Join Field هم برای افزودن دائمی فیلد از جدول دیگر کاربرد دارد.
🏁 جمعبندی
در این فصل همهی روشهای ویرایش اطلاعات توصیفی در ArcGIS Pro را دیدید: پنجرهی Attributes برای ویرایش تکی و گروهی، جدول توصیفی برای مرور و اصلاح سریع، Calculate Field با Python و Arcade برای محاسبهی گروهی و Calculate Geometry Attributes برای مساحت، طول و مختصات. همچنین یاد گرفتید چطور با Domain جلوی خطا را بگیرید، تاریخها را درست ذخیره کنید و ویرایشها را امن نگه دارید. در فصل بعد سراغ پایهایترین مفهوم دقت مکانی میرویم: سیستم مختصات و تصویر نقشه در ArcGIS Pro.
✅ نکات کلیدی این بخش
- روش را بر اساس تعداد رکوردها انتخاب کنید
- Calculate Field به انتخاب احترام میگذارد
- محاسبات هندسی را در سیستم مختصات درست انجام دهید
🗺️ ادامهی مسیر آموزش ArcGIS Pro
→ فصل قبل: ایجاد عارضه جدید در آرکجیایاس پرو
🎓 اگر میخواهید این مباحث را با دادهی واقعی، تمرین تصحیحشده و پشتیبانی مدرس یاد بگیرید، سرفصل دوره آرک جی آی اس پرو گیسلند را ببینید. برای نصب نرمافزار هم راهنمای نصب آرک جی آی اس پرو و برای منابع مطالعهی بیشتر صفحهی کتاب آرک جی آی اس پرو را ببینید.
🔗 مطالب پایهی مرتبط: آشنایی با رابط کاربری ArcGIS Pro، ساخت پروژه در ArcGIS Pro، افزودن داده در ArcGIS Pro و پیمایش نقشه و بوکمارک در ArcGIS Pro.
📖 منابع: مستندات رسمی Esri: Calculate Field tool و Calculate Geometry Attributes tool.
📕 مطالعهی بیشتر: موضوعبندی این مطلب از فصل ۶ کتاب ArcGIS Pro 3.x Cookbook (ویرایش دوم)، نوشتهی Tripp Corbin، انتشارات Packt، ۲۰۲۴ الهام گرفته است؛ متن، مراحل و مثالها نوشتهی اختصاصی گیسلند هستند.


بدون دیدگاه