اتصال جداول (Join و Relate) در آرک‌جی‌ای‌اس پرو – اتصال جدول در ArcGIS Pro

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

📚 مسیر یادگیری: این مطلب فصل ۳ از مجموعه‌ی ۱۴ فصلی «کتاب‌خوانی عملی ArcGIS Pro» در گیس‌لند است؛ فهرست کامل فصل‌ها را در صفحه‌ی دوره جامع آموزش آرک‌جی‌ای‌اس پرو ببینید. این مجموعه بخشی از آموزش آرک جی آی اس پرو از صفر تا پیشرفته است. فایل‌های تمرینی را از داده های آرک جی آی اس پرو بردارید و تمرین‌های بیشتر را در تمرین های آرک جی آی اس پرو ببینید.

روش‌هایی که در این فصل بررسی می‌کنیم عبارت‌اند از: Join برای پیوند یک‌به‌یک یا چندبه‌یک، Relate برای رابطه‌ی یک‌به‌چند، Spatial Join برای پیوند بر اساس موقعیت مکانی، Relationship Class برای رابطه‌ی دائمی در ژئودیتابیس و آنوتیشن Feature-linked که متن را به عارضه گره می‌زند. پیش‌نیاز این فصل آشنایی با جدول توصیفی و پیکربندی لایه در ArcGIS Pro است.

🧭 فهرست مطالب این آموزش

  1. 🔗 روش‌های اتصال جدول در ArcGIS Pro در یک نگاه
  2. 🧷 Join کردن دو جدول با Add Join
  3. 🏷️ برچسب‌گذاری عوارض با فیلدهای جدول متصل
  4. 🔍 کوئری روی جدول متصل‌شده
  5. 🪢 ساخت و استفاده از Relate برای رابطه‌ی یک‌به‌چند
  6. 📍 اتصال مکانی (Spatial Join)؛ پیوند بدون فیلد مشترک
  7. 📝 ساخت آنوتیشن Feature-linked
  8. 🏛️ ساخت و استفاده از Relationship Class با داده‌های موجود
  9. 📊 ترفند حرفه‌ای: خلاصه‌سازی جدول یک‌به‌چند پیش از Join
  10. 🧪 تمرین عملی: پیوند داده‌های محله، جمعیت و حوادث
  11. 🐞 خطاهای رایج اتصال جدول و راه‌حل
  12. ❓ پرسش‌های متداول
  13. 🏁 جمع‌بندی

🔗 روش‌های اتصال جدول در ArcGIS Pro در یک نگاه

پیش از رفتن سراغ مراحل، بهتر است تصویر کلی را ببینید. انتخاب روش اشتباه رایج‌ترین دلیل نتیجه‌ی غلط در پیوند داده‌هاست؛ مثلاً اگر برای رابطه‌ی یک‌به‌چند از Join استفاده کنید، فقط اولین رکورد مرتبط نمایش داده می‌شود و بقیه بی‌صدا نادیده گرفته می‌شوند.

روش مبنای پیوند نوع رابطه ماندگاری
Join فیلد مشترک یک‌به‌یک یا چندبه‌یک (و یک‌به‌چند با گزینه‌ی خاص) موقت، در لایه‌ی پروژه
Relate فیلد مشترک یک‌به‌چند و چندبه‌چند موقت، در لایه‌ی پروژه
Spatial Join موقعیت مکانی بر اساس رابطه‌ی هندسی دائمی، خروجی کلاس جدید
Relationship Class فیلد کلید در ژئودیتابیس یک‌به‌یک، یک‌به‌چند، چندبه‌چند دائمی، در ژئودیتابیس
Feature-linked Annotation کلاس رابطه بین آنوتیشن و عارضه یک‌به‌چند دائمی، در ژئودیتابیس
مقایسه روش‌های اتصال جدول در ArcGIS Pro: Join، Relate، Spatial Join و Relationship Class
انتخاب روش مناسب اتصال جدول در آرک جی آی اس پرو

🔑 مفاهیم پایه: فیلد کلید، جدول هدف و جدول اتصال

در هر پیوند مبتنی بر فیلد، دو جدول داریم: جدول هدف (Target یا Input) که معمولاً لایه‌ی روی نقشه است و جدول اتصال (Join table) که اطلاعات اضافه از آن می‌آید. فیلد کلید فیلدی است که در هر دو جدول مقدار مشترک دارد، مثل کد محله، کد ملی قطعه یا شناسه‌ی مشترک. برای موفقیت پیوند سه شرط لازم است:

  • مقادیر فیلد کلید در دو جدول دقیقاً یکسان باشند؛ «۱۰۱» فارسی با «101» انگلیسی یکسان نیست و فاصله‌ی اضافه هم تطبیق را خراب می‌کند.
  • نوع داده‌ی دو فیلد سازگار باشد؛ مثلاً هر دو عدد صحیح یا هر دو متن. پیوند فیلد متنی با عددی معمولاً شکست می‌خورد.
  • در جدول اتصال، برای Join یک‌به‌یک، کلید یکتا باشد. اگر یک کد چند بار تکرار شده باشد، فقط یکی از آن‌ها به عارضه می‌چسبد.

💡 نکته

پیش از هر Join، ابزار Validate Join را اجرا کنید. این ابزار گزارش می‌دهد چند رکورد تطبیق پیدا می‌کنند، آیا کلید تکراری وجود دارد و آیا نوع فیلدها سازگار است. چند ثانیه وقت گذاشتن روی آن از ساعت‌ها اشکال‌یابی جلوگیری می‌کند.

💡 نکته

در پروژه‌های شهری، کد قطعه یا کد نوسازی معمولاً بهترین کلید است، چون در همه‌ی سامانه‌های شهرداری ثبت می‌شود. از نام‌ها (مثل نام محله یا نام خیابان) به‌عنوان کلید پرهیز کنید؛ تفاوت در یک «ی» یا «ك» عربی و فارسی کافی است تا تطبیق شکست بخورد.

✅ نکات کلیدی این بخش

  • جدول هدف همان لایه‌ی نقشه است و جدول اتصال اطلاعات را می‌دهد
  • کلیدها باید یکسان، هم‌نوع و برای Join یکتا باشند
  • Validate Join را پیش از اتصال اجرا کنید

🧷 Join کردن دو جدول با Add Join

Join رایج‌ترین روش اتصال جدول در ArcGIS Pro است. پس از Join، فیلدهای جدول اتصال در جدول توصیفی لایه ظاهر می‌شوند و می‌توانید با آن‌ها نمادشناسی کنید، برچسب بزنید یا تحلیل انجام دهید. فرض کنید لایه‌ی محله‌ها را دارید و جدولی اکسلی از جمعیت هر محله با ستون کد محله.

  1. ۱جدول اتصال (مثلاً شیت اکسل یا جدول ژئودیتابیس) را به نقشه اضافه کنید تا در بخش Standalone Tables پنجره‌ی Contents دیده شود.
  2. ۲جدول توصیفی جدول اتصال را باز کنید و مطمئن شوید ستون کلید و مقادیرش درست هستند.
  3. ۳در Contents روی لایه‌ی محله‌ها راست‌کلیک کنید، به Joins and Relates بروید و Add Join را بزنید.
  4. ۴در Input Table لایه‌ی محله‌ها و در Input Field فیلد کد محله را انتخاب کنید.
  5. ۵در Join Table جدول جمعیت و در Join Field ستون کد محله را انتخاب کنید.
  6. ۶گزینه‌ی Keep all input records را بر اساس نیاز تعیین کنید (توضیح در ادامه).
  7. ۷در صورت نیاز گزینه‌ی Index join fields را فعال کنید تا روی جدول‌های بزرگ سرعت بالاتر برود.
  8. ۸روی دکمه‌ی Validate Join در همان پنجره کلیک کنید و پیام‌ها را بخوانید.
  9. ۹OK را بزنید. جدول توصیفی لایه را باز کنید؛ ستون‌های جدول اتصال در سمت راست اضافه شده‌اند.
مراحل Add Join برای اتصال جدول در ArcGIS Pro
گام‌های اصلی Join کردن جدول در آرک جی آی اس پرو

⚖️ Keep all input records: تطبیق داخلی یا خارجی؟

حالت نتیجه چه وقت استفاده کنیم
فعال (Keep all) همه‌ی عوارض لایه می‌مانند؛ عوارض بدون تطبیق مقدار Null می‌گیرند وقتی می‌خواهید عوارض بدون داده را هم ببینید و پیدا کنید
غیرفعال (Keep only matching) فقط عوارضی که تطبیق یافته‌اند در لایه می‌مانند وقتی فقط عوارض دارای داده برای تحلیل یا نقشه لازم است

⚠️ هشدار

وقتی Keep all input records غیرفعال است، عوارض بدون تطبیق از لایه پنهان می‌شوند. ممکن است فکر کنید داده‌ای حذف شده، در حالی که فقط Join باعث فیلتر شده است. با برداشتن Join (Remove Join) همه برمی‌گردند.

🔢 Join یک‌به‌چند (One to many)

در نسخه‌های جدید ArcGIS Pro، ابزار Add Join پارامتری به نام Join Operation دارد. حالت پیش‌فرض Join one to first است که فقط اولین رکورد تطبیق را می‌آورد. با انتخاب Join one to many، برای هر رکورد مرتبط یک ردیف در جدول نتیجه ساخته می‌شود؛ یعنی ممکن است یک محله چند بار در جدول دیده شود. این حالت برای خروجی گرفتن و تحلیل مفید است، اما برای نمادشناسی ساده‌ی نقشه معمولاً Relate یا خلاصه‌سازی جدول پیش از Join گزینه‌ی تمیزتری است.

💾 دائمی کردن نتیجه‌ی Join

Join فقط در لایه‌ی پروژه وجود دارد و اگر لایه را در پروژه‌ی دیگری اضافه کنید، فیلدهای اتصال‌یافته آنجا نیستند. برای ذخیره‌ی دائمی دو راه دارید:

  • روی لایه راست‌کلیک کنید و از Data گزینه‌ی Export Features را بزنید. خروجی یک کلاس عارضه‌ی جدید با همه‌ی فیلدهای Join شده است.
  • از ابزار Join Field استفاده کنید که فیلدهای انتخابی را به‌طور دائم به جدول اصلی اضافه می‌کند. این ابزار داده‌ی اصلی را تغییر می‌دهد، پس پیش از اجرا نسخه‌ی پشتیبان بگیرید.

🧹 مدیریت و حذف Joinها

یک لایه می‌تواند چند Join هم‌زمان داشته باشد؛ مثلاً جمعیت از یک جدول و درآمد از جدولی دیگر. برای دیدن فهرست آن‌ها، Layer Properties را باز کنید و صفحه‌ی Joins را ببینید. از همین صفحه می‌توانید Join جدید اضافه کنید یا Join موجود را بردارید. راه سریع‌تر، راست‌کلیک روی لایه و Joins and Relates > Remove Join یا Remove All Joins است.

ترتیب Joinها مهم است: اگر Join دوم بر اساس فیلدی از جدول Join اول ساخته شده باشد، حذف Join اول Join دوم را هم بی‌اثر می‌کند. همچنین هرچه تعداد Joinها بیشتر باشد، باز شدن جدول و رسم نقشه کندتر می‌شود. برای پروژه‌هایی که مرتب استفاده می‌شوند، بعد از نهایی شدن داده، نتیجه را با Export Features ثابت کنید و لایه‌ی سبک بدون Join را در نقشه نگه دارید. این کار انتقال پروژه به همکاران را هم ساده‌تر می‌کند، چون دیگر به مسیر جدول‌های جانبی وابسته نیست.

🐞 خطای رایج و راه‌حل

اگر پس از Join همه‌ی ستون‌های جدید Null هستند، علت تقریباً همیشه ناسازگاری کلید است: نوع فیلد متفاوت، فاصله‌ی اضافه، صفرهای ابتدایی (مثلاً «0101» در برابر «101») یا اعداد فارسی. با ابزار Calculate Field یک فیلد کلید تمیز بسازید؛ مثلاً با عبارت Python !Code!.strip() فاصله‌ها را حذف کنید.

✅ نکات کلیدی این بخش

  • Add Join از Joins and Relates در منوی لایه در دسترس است
  • Keep all input records تعیین می‌کند عوارض بدون تطبیق بمانند یا نه
  • برای ماندگاری از Export Features یا Join Field استفاده کنید
  • ستون‌های Null یعنی کلیدها ناسازگارند

🏷️ برچسب‌گذاری عوارض با فیلدهای جدول متصل

پس از Join، فیلدهای جدول اتصال مثل فیلدهای خود لایه در دسترس برچسب‌گذاری هستند. تنها تفاوت این است که نام آن‌ها با پیشوند نام جدول نمایش داده می‌شود؛ مثلاً Population.Pop_1400.

  1. ۱لایه را در Contents انتخاب کنید و زبانه‌ی Labeling را باز کنید.
  2. ۲روی Label کلیک کنید تا برچسب‌ها روشن شوند.
  3. ۳در کادر Field فهرست را باز کنید؛ فیلدهای جدول اتصال با پیشوند نام جدول دیده می‌شوند. فیلد جمعیت را انتخاب کنید.
  4. ۴برای ترکیب نام محله و جمعیت، روی دکمه‌ی Expression (کنار Field) کلیک کنید تا پنجره‌ی Label Class باز شود.
  5. ۵Language را روی Arcade بگذارید و عبارتی مثل نمونه‌ی زیر بنویسید. سپس Apply را بزنید.
$feature['Neighborhoods.Name'] + TextFormatting.NewLine + "جمعیت: " + Text($feature['Population.Pop_1400'], '#,###')

💡 نکته

اگر برخی برچسب‌ها مقدار خالی یا «null» نشان می‌دهند، عوارض بدون تطبیق هستند. در Arcade با شرط IIf(IsEmpty(...), "نامشخص", ...) برای آن‌ها متن جایگزین بگذارید تا نقشه حرفه‌ای‌تر دیده شود.

📌 یادداشت

برچسب‌ها با تغییر مقیاس دوباره چیده می‌شوند و جای ثابتی ندارند. اگر می‌خواهید متن جای ثابت داشته باشد و دستی جابه‌جا شود، آن را به آنوتیشن تبدیل کنید که در ادامه‌ی همین فصل بررسی می‌شود.

🔍 کوئری روی جدول متصل‌شده

یکی از کاربردهای اصلی Join این است که بتوانید عوارض را بر اساس داده‌ی جدول دیگر انتخاب کنید؛ مثلاً «محله‌هایی که جمعیتشان بیش از ۵۰٬۰۰۰ نفر است».

  1. ۱در زبانه‌ی Map روی Select By Attributes کلیک کنید.
  2. ۲در Input Rows لایه‌ی Join شده را انتخاب کنید و Selection type را روی New selection بگذارید.
  3. ۳روی New expression کلیک کنید. در فهرست فیلدها، فیلد جمعیت را که با نام جدول اتصال مشخص شده انتخاب کنید.
  4. ۴عملگر is greater than را انتخاب و مقدار 50000 را وارد کنید.
  5. ۵برای دیدن متن SQL، دکمه‌ی SQL را روشن کنید. عبارت شبیه Population.Pop_1400 > 50000 خواهد بود.
  6. ۶روی Verify (آیکون تیک) کلیک کنید تا عبارت بررسی شود و سپس OK را بزنید.
  7. ۷تعداد عوارض انتخاب‌شده را در پایین جدول توصیفی یا نوار وضعیت نقشه ببینید.

⚠️ هشدار

اگر جدول اتصال از فایل اکسل یا CSV آمده باشد، ممکن است برخی عملگرها یا توابع SQL روی فیلدهای آن کار نکنند یا کند باشند، چون منبع داده از نوع دیگری است. در این حالت ابتدا جدول را با ابزار Table To Table یا Export Table به ژئودیتابیس پروژه منتقل کنید و Join را روی جدول ژئودیتابیس انجام دهید.

✅ نکات کلیدی این بخش

  • فیلدهای Join شده با پیشوند نام جدول دیده می‌شوند
  • Select By Attributes روی فیلدهای جدول متصل هم کار می‌کند
  • برای کوئری مطمئن، جدول اکسل را به ژئودیتابیس منتقل کنید

🪢 ساخت و استفاده از Relate برای رابطه‌ی یک‌به‌چند

فرض کنید لایه‌ی قطعات زمین دارید و جدولی از پروانه‌های ساختمانی که برای هر قطعه ممکن است چند پروانه در سال‌های مختلف ثبت شده باشد. اگر Join کنید، فقط یکی از پروانه‌ها به هر قطعه می‌چسبد. Relate داده‌ها را ادغام نمی‌کند، بلکه یک مسیر رفت‌وبرگشت بین دو جدول می‌سازد؛ با انتخاب یک قطعه، همه‌ی پروانه‌های مرتبطش را می‌بینید و برعکس.

  1. ۱جدول پروانه‌ها را به نقشه اضافه کنید.
  2. ۲روی لایه‌ی قطعات راست‌کلیک کنید، به Joins and Relates بروید و Add Relate را بزنید.
  3. ۳در Input Table لایه‌ی قطعات و در Input Field فیلد شناسه‌ی قطعه (مثلاً Parcel_ID) را انتخاب کنید.
  4. ۴در Related Table جدول پروانه‌ها و در Related Field فیلد شناسه‌ی قطعه در آن جدول را انتخاب کنید.
  5. ۵در Relate Name نامی گویا بنویسید؛ مثلاً Parcel_Permits. این نام در منوها نمایش داده می‌شود.
  6. ۶Cardinality را روی One to many بگذارید و OK را بزنید.

🧭 پیمایش رابطه در جدول و Pop-up

  1. ۱با ابزار Select روی نقشه یک یا چند قطعه را انتخاب کنید.
  2. ۲جدول توصیفی لایه‌ی قطعات را باز کنید. از منوی جدول (دکمه‌ی سه‌خط بالای جدول) به Related Data بروید و نام Relate را انتخاب کنید.
  3. ۳جدول پروانه‌ها باز می‌شود و فقط رکوردهای مرتبط با قطعات انتخاب‌شده انتخاب شده‌اند. با دکمه‌ی Show selected records فقط آن‌ها را ببینید.
  4. ۴مسیر برعکس هم کار می‌کند: در جدول پروانه‌ها چند پروانه را انتخاب کنید و از Related Data به لایه‌ی قطعات بروید تا قطعات آن‌ها روی نقشه انتخاب شوند.
  5. ۵با کلیک روی یک قطعه، در پنجره‌ی Pop-up هم بخشی برای رکوردهای مرتبط دیده می‌شود که می‌توانید آن را باز کنید.

💡 نکته

Relate برای پرسش‌هایی مثل «قطعاتی که در پنج سال اخیر پروانه داشته‌اند کدام‌اند؟» عالی است: ابتدا در جدول پروانه‌ها با Select By Attributes پروانه‌های اخیر را انتخاب کنید و سپس با Related Data انتخاب را به قطعات منتقل کنید.

📌 یادداشت

مثل Join، Relate هم در لایه‌ی پروژه ذخیره می‌شود. برای رابطه‌ی دائمی که در همه‌ی پروژه‌ها و حتی سرویس‌های وب کار کند، Relationship Class بسازید که در ادامه می‌بینیم.

✅ نکات کلیدی این بخش

  • Relate داده را ادغام نمی‌کند و برای یک‌به‌چند مناسب است
  • از منوی جدول > Related Data بین دو جدول حرکت کنید
  • انتخاب در هر دو جهت منتقل می‌شود

📍 اتصال مکانی (Spatial Join)؛ پیوند بدون فیلد مشترک

گاهی دو لایه هیچ فیلد مشترکی ندارند اما رابطه‌ی مکانی دارند؛ مثلاً نقاط حوادث و چندضلعی محله‌ها. می‌خواهید بدانید هر حادثه در کدام محله رخ داده یا هر محله چند حادثه دارد. Spatial Join فیلدهای یک لایه را بر اساس موقعیت به لایه‌ی دیگر منتقل می‌کند. در این فصل به‌عنوان یکی از روش‌های پیوند داده با آن آشنا می‌شوید؛ تنظیمات تحلیلی پیشرفته‌تر آن در درس جداگانه‌ی تحلیل برداری می‌آید.

🛠️ روش اول: Add Spatial Join روی لایه

  1. ۱روی لایه‌ی هدف (مثلاً محله‌ها) راست‌کلیک کنید، به Joins and Relates بروید و Add Spatial Join را بزنید.
  2. ۲در Target Features لایه‌ی محله‌ها و در Join Features لایه‌ی حوادث را انتخاب کنید.
  3. ۳در Match Option رابطه‌ی مکانی را تعیین کنید؛ برای نقطه در چندضلعی معمولاً Intersect یا Contains مناسب است.
  4. ۴OK را بزنید. جدول محله‌ها اکنون فیلد Join_Count و فیلدهای حوادث را دارد.

🛠️ روش دوم: ابزار Spatial Join و خروجی دائمی

  1. ۱در زبانه‌ی Analysis روی Tools کلیک کنید و ابزار Spatial Join را جست‌وجو کنید.
  2. ۲Target Features و Join Features را تعیین کنید و در Output Feature Class نام خروجی را بنویسید.
  3. ۳در Join Operation گزینه‌ی Join one to one را برای شمارش و خلاصه یا Join one to many را برای یک ردیف به ازای هر تطبیق انتخاب کنید.
  4. ۴گزینه‌ی Keep All Target Features را فعال بگذارید تا محله‌های بدون حادثه هم با شمار صفر در خروجی بمانند.
  5. ۵در بخش Fields (Field Map) می‌توانید برای هر فیلد قانون ادغام تعیین کنید؛ مثلاً برای فیلد خسارت، Sum یا Mean.
  6. ۶Match Option و در صورت نیاز Search Radius را تعیین کنید و Run را بزنید.
Match Option معنی مثال
Intersect هر نوع تماس یا هم‌پوشانی نقطه‌ها داخل یا روی مرز محله
Within عارضه‌ی هدف کاملاً درون عارضه‌ی اتصال ساختمان‌ها درون پهنه‌ی سیلاب
Contains عارضه‌ی هدف عارضه‌ی اتصال را در بر دارد محله‌ای که مدرسه را در بر دارد
Closest نزدیک‌ترین عارضه نزدیک‌ترین ایستگاه آتش‌نشانی به هر حادثه
Within a distance در فاصله‌ی مشخص مدارس در ۵۰۰ متری پارک

⚠️ هشدار

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

✅ نکات کلیدی این بخش

  • Spatial Join برای پیوند بدون فیلد مشترک است
  • Join_Count تعداد تطبیق‌ها را نشان می‌دهد
  • Field Map قانون ادغام فیلدها را تعیین می‌کند
  • Keep All Target Features را برای حفظ عوارض بدون تطبیق فعال کنید

📝 ساخت آنوتیشن Feature-linked

آنوتیشن متنی است که مثل یک عارضه در ژئودیتابیس ذخیره می‌شود: جای ثابت دارد، قابل ویرایش و جابه‌جایی دستی است و در هر مقیاسی همان‌جا می‌ماند. نوع Feature-linked یک قدم جلوتر است: هر متن با یک کلاس رابطه به عارضه‌ی خودش گره خورده است. اگر عارضه را جابه‌جا کنید، متن هم با آن حرکت می‌کند؛ اگر مقدار فیلد را تغییر دهید، متن به‌روز می‌شود و اگر عارضه را حذف کنید، متن هم حذف می‌شود.

ویژگی برچسب (Label) آنوتیشن استاندارد آنوتیشن Feature-linked
محل ذخیره تنظیمات لایه کلاس آنوتیشن در gdb کلاس آنوتیشن در gdb + کلاس رابطه
جای ثابت خیر، پویا بله بله
ویرایش دستی هر متن خیر بله بله
همگامی با تغییر عارضه خودکار خیر بله
سطح لایسنس لازم برای ساخت Basic Basic Standard یا Advanced

🛠️ مراحل تبدیل برچسب به آنوتیشن Feature-linked

  1. ۱مطمئن شوید لایه‌ی مبدأ یک کلاس عارضه در ژئودیتابیس است (Shapefile پشتیبانی نمی‌شود) و برچسب‌های آن با فیلد و ظاهر دلخواه تنظیم شده‌اند.
  2. ۲به مقیاس مرجع مناسب بروید. روی نقشه در Contents راست‌کلیک کنید و از Reference Scale گزینه‌ی Set Reference Scale را بزنید؛ اندازه‌ی متن آنوتیشن نسبت به این مقیاس ثابت می‌شود.
  3. ۳روی لایه‌ی برچسب‌دار راست‌کلیک کنید و Convert Labels > Convert Labels To Annotation را بزنید (یا ابزار Convert Labels To Annotation را از جعبه‌ابزار Cartography اجرا کنید).
  4. ۴در Output Geodatabase همان ژئودیتابیسی را انتخاب کنید که کلاس عارضه در آن است؛ این شرط برای Feature-linked الزامی است.
  5. ۵گزینه‌ی Create feature-linked annotation را فعال کنید.
  6. ۶در Extent تعیین کنید کل داده یا فقط محدوده‌ی فعلی تبدیل شود.
  7. ۷گزینه‌ی Convert unplaced labels را در صورت نیاز فعال کنید تا برچسب‌هایی که جا نشده بودند هم تبدیل شوند و بعداً دستی جابه‌جا شوند.
  8. ۸Run را بزنید. یک کلاس آنوتیشن و یک کلاس رابطه در ژئودیتابیس ساخته می‌شود و برچسب‌های پویا خاموش می‌شوند.

💡 نکته

پس از تبدیل، برای جابه‌جا کردن یک متن از زبانه‌ی Edit ابزار Annotation یا Move را بزنید. متن‌های Unplaced با رنگ متفاوت نمایش داده می‌شوند و با پنجره‌ی Unplaced Annotation پیدا و جایگذاری می‌شوند.

🐞 خطای رایج و راه‌حل

اگر گزینه‌ی Create feature-linked annotation خاکستری است، یکی از این سه علت را دارد: لایسنس شما Basic است، کلاس عارضه در ژئودیتابیس نیست یا مقصد خروجی ژئودیتابیس دیگری است.

✅ نکات کلیدی این بخش

  • آنوتیشن Feature-linked با عارضه حرکت، به‌روزرسانی و حذف می‌شود
  • به لایسنس Standard یا Advanced نیاز دارد
  • خروجی باید در همان ژئودیتابیس کلاس عارضه باشد
  • پیش از تبدیل، مقیاس مرجع را تنظیم کنید

🏛️ ساخت و استفاده از Relationship Class با داده‌های موجود

Relationship Class رابطه‌ای دائمی است که در خود ژئودیتابیس ذخیره می‌شود. برخلاف Relate، در همه‌ی پروژه‌ها، Pop-upها، ویرایش و حتی لایه‌های منتشرشده در ArcGIS Online کار می‌کند. همچنین می‌تواند قانون داشته باشد؛ مثلاً حذف تیر برق، ترانسفورماتورهای روی آن را هم حذف کند. طبق راهنمای Esri، ابزار Create Relationship Class در هر سه سطح لایسنس در دسترس است.

🧩 مفاهیم اصلی Relationship Class

مفهوم توضیح
Origin / Destination جدول مبدأ (مثلاً قطعات) و جدول مقصد (مثلاً مالکان یا پروانه‌ها)
Primary Key / Foreign Key کلید اصلی در مبدأ و کلید خارجی در مقصد که مقدار یکسان دارند
Cardinality یک‌به‌یک (1:1)، یک‌به‌چند (1:M) یا چندبه‌چند (M:N)
Simple دو طرف مستقل از هم وجود دارند؛ حذف یکی دیگری را حذف نمی‌کند
Composite عمر مقصد به مبدأ وابسته است؛ همیشه یک‌به‌چند است
Path Labels برچسب مسیر رفت و برگشت، مثل «دارای پروانه» و «متعلق به قطعه»
Message Direction جهت ارسال پیام‌ها بین دو طرف (برای رفتارهایی مثل حذف آبشاری)
Attributed رابطه‌ای که خودش فیلد دارد؛ مثلاً درصد مالکیت در رابطه‌ی قطعه و مالک
مراحل ساخت Relationship Class در ArcGIS Pro برای اتصال دائمی جدول
گردش کار ساخت کلاس رابطه در آرک جی آی اس پرو

🛠️ مراحل ساخت با ابزار Create Relationship Class

  1. ۱مطمئن شوید جدول مبدأ و مقصد هر دو در یک ژئودیتابیس هستند. اگر جدول اکسل یا dbf دارید، ابتدا آن را با Export Table به همان ژئودیتابیس منتقل کنید.
  2. ۲در پنجره‌ی Geoprocessing ابزار Create Relationship Class را باز کنید.
  3. ۳Origin Table را لایه‌ی قطعات و Destination Table را جدول پروانه‌ها انتخاب کنید و در Output Relationship Class نامی مثل Parcel_Permit_Rel بنویسید.
  4. ۴Relationship Type را Simple بگذارید (پروانه‌ها پس از حذف قطعه باید در بایگانی بمانند).
  5. ۵در Forward Path Label بنویسید «پروانه‌ها» و در Backward Path Label بنویسید «قطعه».
  6. ۶Message Direction را برای رابطه‌ی ساده روی None بگذارید.
  7. ۷Cardinality را One to many (1:M) انتخاب کنید و گزینه‌ی Relationship class is attributed را خاموش بگذارید.
  8. ۸در Origin Primary Key فیلد شناسه‌ی قطعه در لایه‌ی قطعات و در Origin Foreign Key فیلد شناسه‌ی قطعه در جدول پروانه‌ها را انتخاب کنید و Run را بزنید.

🧪 آزمون رابطه

  1. ۱لایه‌ی قطعات را دوباره به نقشه اضافه کنید (یا نقشه را تازه کنید) تا رابطه شناخته شود.
  2. ۲روی یک قطعه کلیک کنید. در Pop-up زیر اطلاعات قطعه، بخش «پروانه‌ها» با فهرست رکوردهای مرتبط ظاهر می‌شود.
  3. ۳در پنجره‌ی Attributes (زبانه‌ی Edit) قطعه را انتخاب کنید؛ رکوردهای مرتبط زیر آن به شکل درختی دیده می‌شوند و از همین‌جا می‌توانید رکورد مرتبط جدید اضافه کنید.
  4. ۴در جدول توصیفی، از منوی Related Data نام رابطه را انتخاب کنید تا مثل Relate بین دو جدول حرکت کنید.

⚠️ هشدار

رابطه پس از ساخت قابل ویرایش نیست و فقط می‌توانید قانون‌هایش را تغییر دهید. اگر کلید یا Cardinality را اشتباه انتخاب کرده‌اید، کلاس رابطه را حذف و دوباره بسازید. پیش از حذف هم مطمئن شوید آنوتیشن یا رفتار دیگری به آن وابسته نیست.

💡 نکته

اگر کلید رکوردهای مقصد خالی یا اشتباه باشد، رابطه ساخته می‌شود ولی رکوردی پیدا نمی‌کند. پیش از ساخت، با Validate Join یا یک Join آزمایشی مطمئن شوید کلیدها تطبیق دارند.

✅ نکات کلیدی این بخش

  • Relationship Class دائمی است و در همه‌ی پروژه‌ها و سرویس‌ها کار می‌کند
  • هر دو جدول باید در یک ژئودیتابیس باشند
  • Simple برای اشیای مستقل و Composite برای وابستگی عمر
  • پس از ساخت، رابطه قابل ویرایش نیست

📊 ترفند حرفه‌ای: خلاصه‌سازی جدول یک‌به‌چند پیش از Join

بسیاری از پرسش‌ها در واقع به یک عدد خلاصه برای هر عارضه نیاز دارند، نه به همه‌ی رکوردهای مرتبط: «هر قطعه چند پروانه دارد؟»، «جمع مساحت پروانه‌های هر محله چقدر است؟» یا «آخرین تاریخ بازدید هر چاه کی بوده؟». در این حالت بهترین راه این است که ابتدا جدول یک‌به‌چند را خلاصه کنید تا برای هر کلید فقط یک ردیف بماند و سپس آن را Join کنید.

  1. ۱در پنجره‌ی Geoprocessing ابزار Summary Statistics را باز کنید.
  2. ۲در Input Table جدول پروانه‌ها را انتخاب کنید و در Output Table نامی مثل Permits_Summary در ژئودیتابیس پروژه بنویسید.
  3. ۳در Statistics Field(s) فیلدهایی را که باید خلاصه شوند و نوع آماره را تعیین کنید؛ مثلاً فیلد مساحت با Sum و فیلد تاریخ با Max.
  4. ۴در Case field فیلد کلید، یعنی شناسه‌ی قطعه، را انتخاب کنید تا آمار برای هر قطعه جداگانه محاسبه شود.
  5. ۵Run را بزنید. جدول خروجی برای هر قطعه یک ردیف و فیلدی به نام FREQUENCY (تعداد رکوردها) دارد.
  6. ۶جدول خلاصه را با Add Join به لایه‌ی قطعات وصل کنید. اکنون می‌توانید با فیلد FREQUENCY نقشه‌ی «تعداد پروانه در هر قطعه» بسازید.
مراحل خلاصه‌سازی جدول و Join در ArcGIS Pro برای رابطه یک‌به‌چند
خلاصه‌سازی جدول پیش از اتصال جدول در آرک جی آی اس پرو

💡 نکته

این ترفند هم سریع‌تر از Join one to many است و هم نقشه‌ی تمیزتری می‌دهد، چون هر عارضه فقط یک مقدار دارد. اگر بعداً جدول اصلی به‌روز شد، فقط Summary Statistics را دوباره اجرا کنید.

✅ نکات کلیدی این بخش

  • برای پرسش‌های «چند تا» و «جمع» ابتدا خلاصه کنید
  • Case field همان کلید پیوند است
  • فیلد FREQUENCY تعداد رکوردهای مرتبط را می‌دهد

🧪 تمرین عملی: پیوند داده‌های محله، جمعیت و حوادث

  1. ۱داده‌ی نمونه‌ی محله‌ها، جدول جمعیت (اکسل) و نقاط حوادث را از داده های آرک جی آی اس پرو بردارید و در پروژه‌ی Practice_Ch03 اضافه کنید.
  2. ۲جدول اکسل را با Export Table به ژئودیتابیس پروژه منتقل کنید و با Validate Join کلید را آزمایش کنید.
  3. ۳جدول جمعیت را با Add Join به محله‌ها وصل کنید و با Graduated Colors نقشه‌ی جمعیت بسازید.
  4. ۴برچسبی با Arcade بسازید که نام محله و جمعیت را در دو خط نشان دهد.
  5. ۵با Select By Attributes محله‌های بالای ۵۰٬۰۰۰ نفر را انتخاب کنید و تعدادشان را یادداشت کنید.
  6. ۶با ابزار Spatial Join تعداد حوادث هر محله را محاسبه کنید و محله‌ی دارای بیشترین حادثه را پیدا کنید.
  7. ۷یک جدول پروانه‌ی نمونه بسازید و بین محله‌ها و پروانه‌ها یک Relationship Class یک‌به‌چند ایجاد کنید؛ در Pop-up نتیجه را بررسی کنید.
  8. ۸اگر لایسنس Standard دارید، برچسب‌ها را به آنوتیشن Feature-linked تبدیل کنید، یک محله را جابه‌جا کنید و حرکت متن را ببینید.

💡 نکته

چک‌لیست موفقیت: نقشه‌ی جمعیت با برچسب دوخطی، یک کلاس خروجی Spatial Join با فیلد Join_Count و یک کلاس رابطه که در Pop-up کار می‌کند. تمرین‌های مکمل در تمرین های آرک جی آی اس پرو آمده است.

🐞 خطاهای رایج اتصال جدول و راه‌حل

مشکل علت راه‌حل
ستون‌های Join همه Null هستند ناسازگاری نوع یا مقدار کلید Validate Join؛ پاک‌سازی کلید با Calculate Field
فقط یک رکورد از چند رکورد مرتبط آمده استفاده از Join برای رابطه‌ی یک‌به‌چند Relate، Join one to many یا Relationship Class
عوارض بعد از Join ناپدید شدند غیرفعال بودن Keep all input records Remove Join و Join دوباره با گزینه‌ی فعال
Add Join روی اکسل کند یا ناپایدار است منبع داده‌ی غیر ژئودیتابیسی انتقال جدول به ژئودیتابیس
Join_Count همه صفر است سیستم مختصات اشتباه یا Match Option نامناسب بررسی مختصات و تغییر Match Option
گزینه‌ی Feature-linked خاکستری است لایسنس Basic یا خروجی در gdb دیگر لایسنس Standard و همان ژئودیتابیس

❓ پرسش‌های متداول درباره اتصال جدول در ArcGIS Pro

🔹 تفاوت Join و Relate در ArcGIS Pro چیست؟

Join فیلدهای جدول اتصال را به جدول لایه اضافه می‌کند و برای رابطه‌ی یک‌به‌یک یا چندبه‌یک مناسب است. Relate داده را ادغام نمی‌کند و فقط مسیری بین دو جدول می‌سازد؛ برای رابطه‌ی یک‌به‌چند مثل یک قطعه و چند پروانه مناسب است.

🔹 چرا پس از اتصال جدول در ArcGIS Pro ستون‌ها خالی هستند؟

معمولاً مقدار یا نوع فیلد کلید در دو جدول یکسان نیست؛ مثلاً یکی متن و دیگری عدد است، فاصله‌ی اضافه دارد یا اعداد فارسی‌اند. ابزار Validate Join مشکل را گزارش می‌دهد.

🔹 آیا Join داده‌ی اصلی را تغییر می‌دهد؟

خیر. Add Join موقت است و فقط در لایه‌ی پروژه وجود دارد. برای دائمی کردن از Export Features یا ابزار Join Field استفاده کنید؛ Join Field جدول اصلی را تغییر می‌دهد.

🔹 Spatial Join چه زمانی به‌جای Join استفاده می‌شود؟

وقتی دو لایه فیلد مشترک ندارند ولی رابطه‌ی مکانی دارند؛ مثلاً شمارش حوادث هر محله یا یافتن محله‌ی هر مدرسه.

🔹 آیا ساخت Relationship Class به لایسنس Advanced نیاز دارد؟

طبق راهنمای Esri، ابزار Create Relationship Class در سطح Basic، Standard و Advanced در دسترس است. اما ساخت آنوتیشن Feature-linked به Standard یا Advanced نیاز دارد.

🔹 چرا نمی‌توانم بین جدول اکسل و لایه Relationship Class بسازم؟

هر دو طرف رابطه باید در یک ژئودیتابیس باشند. جدول اکسل را با Export Table به همان ژئودیتابیس منتقل کنید و سپس رابطه را بسازید.

🔹 تفاوت رابطه‌ی Simple و Composite چیست؟

در Simple دو طرف مستقل‌اند و حذف یکی دیگری را حذف نمی‌کند. در Composite عمر مقصد به مبدأ وابسته است؛ مثلاً با حذف تیر برق، ترانسفورماتورهای روی آن هم حذف می‌شوند. رابطه‌ی Composite همیشه یک‌به‌چند است.

🏁 جمع‌بندی

در این فصل همه‌ی روش‌های اتصال جدول در ArcGIS Pro را دیدید: Join برای افزودن فیلدها، برچسب و کوئری روی جدول متصل، Relate برای رابطه‌ی یک‌به‌چند، Spatial Join برای پیوند مکانی، آنوتیشن Feature-linked و Relationship Class برای رابطه‌ی دائمی در ژئودیتابیس. قانون طلایی این است که پیش از هر پیوند، کلیدها را آزمایش کنید و روش را بر اساس نوع رابطه انتخاب کنید. اگر این فصل را با داده‌ی واقعی سازمان خودتان تمرین کنید، خیلی زود می‌بینید که بیشتر پرسش‌های مدیریتی، از شمارش پروانه‌ها تا گزارش جمعیت، با ترکیب درست همین چند ابزار جواب داده می‌شوند. در فصل بعد سراغ ویرایش عوارض موجود: Reshape، Split، Merge و Align می‌رویم.

✅ نکات کلیدی این بخش

  • روش را بر اساس نوع رابطه (یک‌به‌یک، یک‌به‌چند، مکانی) انتخاب کنید
  • Validate Join را فراموش نکنید
  • برای ماندگاری، Relationship Class یا خروجی دائمی بسازید

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

🔗 مطالب پایه‌ی مرتبط: آشنایی با رابط کاربری ArcGIS Pro، ساخت پروژه در ArcGIS Pro، افزودن داده در ArcGIS Pro و پیمایش نقشه و بوکمارک در ArcGIS Pro.

📖 منابع: مستندات رسمی Esri: Add Join tool و Create Relationship Class tool.

📕 مطالعه‌ی بیشتر: موضوع‌بندی این مطلب از فصل ۳ کتاب ArcGIS Pro 3.x Cookbook (ویرایش دوم)، نوشته‌ی Tripp Corbin، انتشارات Packt، ۲۰۲۴ الهام گرفته است؛ متن، مراحل و مثال‌ها نوشته‌ی اختصاصی گیس‌لند هستند.

بدون دیدگاه

دیدگاهتان را بنویسید