ساخت ژئودیتابیس در آرک‌جی‌ای‌اس پرو – ساخت ژئودیتابیس در ArcGIS Pro

تا اینجای سری بیشتر با داده‌هایی کار کردیم که از قبل وجود داشتند. اما در هر پروژه‌ی جدی، روزی می‌رسد که باید ساختار داده را خودتان طراحی کنید: چه لایه‌هایی لازم است، هر لایه چه فیلدهایی دارد، چه مقادیری مجاز است و داده‌ها چطور دسته‌بندی شوند. ساخت ژئودیتابیس در ArcGIS Pro پاسخ این نیاز است. در این آموزش ArcGIS Pro یاد می‌گیرید ژئودیتابیس بسازید، کلاس عارضه و Feature Dataset ایجاد کنید و با Domain و Subtype از همان ابتدا جلوی ورود داده‌ی نادرست را بگیرید.

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

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

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

  1. 🗄️ ژئودیتابیس چیست و چه انواعی دارد؟
  2. 🆕 ساخت ژئودیتابیس فایلی جدید
  3. 🧱 ساخت کلاس عارضه (Feature Class)
  4. 📁 ساخت Feature Dataset
  5. ➕ افزودن و مدیریت فیلدها پس از ساخت
  6. 📚 ساخت Domain با مقادیر کدی (Coded Value Domain)
  7. 🏷️ ساخت Subtype (زیرگروه)
  8. 📎 جدول، پیوست و رستر در ژئودیتابیس
  9. 🏷️ قواعد نام‌گذاری و مستندسازی آیتم‌های ژئودیتابیس
  10. 📝 طراحی مدل داده پیش از ساخت ژئودیتابیس
  11. 📦 کپی و انتقال ساختار ژئودیتابیس
  12. 📱 ژئودیتابیس موبایل؛ گزینه‌ی قابل حمل
  13. 🧪 تمرین عملی: طراحی ژئودیتابیس شبکه‌ی آب یک محله
  14. 🏙️ سناریوی واقعی: مهاجرت داده‌های یک شهرداری از شیپ‌فایل به ژئودیتابیس
  15. 🐞 خطاهای رایج ساخت ژئودیتابیس و راه‌حل
  16. ❓ پرسش‌های متداول
  17. 🏁 جمع‌بندی

🗄️ ژئودیتابیس چیست و چه انواعی دارد؟

ژئودیتابیس قالب بومی Esri برای ذخیره‌ی داده‌ی مکانی است. برخلاف Shapefile که هر لایه چند فایل جداگانه است، ژئودیتابیس یک ظرف واحد است که کلاس‌های عارضه، جدول‌ها، رسترها و قوانین رفتاری (دامنه، زیرگروه، رابطه، توپولوژی و قوانین توصیفی) را با هم نگه می‌دارد.

نوع ساختار کاربران هم‌زمان مناسب برای
File Geodatabase پوشه با پسوند .gdb یک ویرایشگر برای هر کلاس، خوانندگان متعدد بیشتر پروژه‌های فردی و تیم‌های کوچک
Mobile Geodatabase یک فایل SQLite با پسوند .geodatabase یک کاربر جابه‌جایی آسان، کار آفلاین، اشتراک با برنامه‌های موبایل
Enterprise Geodatabase روی SQL Server، PostgreSQL، Oracle و … ده‌ها تا صدها کاربر با نسخه‌بندی سازمان‌ها و سامانه‌های چندکاربره
معیار Shapefile File Geodatabase
حداکثر حجم حدود ۲ گیگابایت برای هر جزء تا ۱ ترابایت برای هر جدول (قابل افزایش)
طول نام فیلد ۱۰ کاراکتر ۶۴ کاراکتر
Domain، Subtype، رابطه، توپولوژی ندارد دارد
پشتیبانی از Null در اعداد ندارد دارد
نوع تاریخ و زمان کامل محدود کامل
سرعت در داده‌ی حجیم پایین‌تر بالاتر
انواع ژئودیتابیس در ArcGIS Pro: فایلی، موبایل و سازمانی
مقایسه انواع ژئودیتابیس برای ساخت ژئودیتابیس در آرک جی آی اس پرو

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

  • ژئودیتابیس ظرف داده و قوانین رفتاری است
  • File Geodatabase برای بیشتر پروژه‌ها انتخاب مناسب است
  • Shapefile نام فیلد ۱۰ کاراکتری و محدودیت ۲ گیگابایتی دارد

🆕 ساخت ژئودیتابیس فایلی جدید

دو راه برای ساخت ژئودیتابیس فایلی وجود دارد: از پنجره‌ی Catalog یا با ابزار ژئوپروسسینگ.

🗂️ روش اول: از پنجره‌ی Catalog

  1. ۱در پنجره‌ی Catalog به پوشه‌ای بروید که ژئودیتابیس باید در آن ساخته شود (مثلاً پوشه‌ی پروژه زیر Folders).
  2. ۲روی پوشه راست‌کلیک کنید و New > File Geodatabase را بزنید.
  3. ۳یک نام کوتاه، انگلیسی و بدون فاصله بنویسید؛ مثلاً CityUtilities.gdb و Enter بزنید.
  4. ۴برای اینکه خروجی ابزارها به این ژئودیتابیس برود، روی آن راست‌کلیک کنید و Make Default را بزنید.

🛠️ روش دوم: ابزار Create File Geodatabase

  1. ۱در پنجره‌ی Geoprocessing ابزار Create File Geodatabase را باز کنید.
  2. ۲در File Geodatabase Location پوشه‌ی مقصد و در File GDB Name نام را وارد کنید.
  3. ۳در File Geodatabase Version گزینه‌ی Current را نگه دارید تا همه‌ی قابلیت‌های جدید پشتیبانی شوند.
  4. ۴Run را بزنید. ابزار Create Mobile Geodatabase هم به همین شکل ژئودیتابیس موبایل می‌سازد.

💡 نکته

برای هر پروژه یک ساختار ثابت داشته باشید؛ مثلاً یک ژئودیتابیس Source.gdb برای داده‌های خام دریافتی، یک Working.gdb برای ویرایش و تحلیل و یک Final.gdb برای خروجی‌های تحویلی. این تفکیک ساده، از بازنویسی ناخواسته‌ی داده‌ی اصلی جلوگیری می‌کند.

⚠️ هشدار

ژئودیتابیس فایلی را در پوشه‌های همگام‌شونده‌ی ابری مثل OneDrive یا Google Drive نگذارید. همگام‌سازی فایل‌های داخلی هنگام ویرایش ممکن است ژئودیتابیس را خراب کند. همچنین هرگز محتوای پوشه‌ی gdb را در File Explorer دست‌کاری نکنید.

🧱 ساخت کلاس عارضه (Feature Class)

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

  1. ۱در Catalog روی ژئودیتابیس (یا یک Feature Dataset داخل آن) راست‌کلیک کنید و New > Feature Class را بزنید. راهنمای Create Feature Class باز می‌شود.
  2. ۲در صفحه‌ی Define، در Name نام فنی (مثلاً WaterPipes)، در Alias نام نمایشی (مثلاً «لوله‌های آب») و در Feature Class Type نوع هندسه را انتخاب کنید؛ مثلاً Line.
  3. ۳اگر عوارض ارتفاع دارند، گزینه‌ی Z values و اگر اندازه‌ی مسیر دارند (مثل کیلومترشمار جاده)، M values را فعال کنید. این گزینه‌ها بعداً قابل تغییر نیستند.
  4. ۴Next را بزنید. در صفحه‌ی Fields فیلدهای پیش‌فرض (OBJECTID و Shape) دیده می‌شوند. روی ردیف Click here to add a new field کلیک کنید و فیلدها را اضافه کنید.
  5. ۵برای هر فیلد Field Name، Alias، Data Type و در صورت متنی بودن Length را تعیین کنید.
  6. ۶در صفحه‌ی Spatial Reference سیستم مختصات را انتخاب کنید؛ مثلاً WGS 1984 UTM Zone 39N. اگر کلاس داخل Feature Dataset ساخته می‌شود، این صفحه نمایش داده نمی‌شود چون سیستم از دیتاست به ارث می‌رسد.
  7. ۷در صفحه‌ی Tolerance و Resolution مقادیر پیش‌فرض را نگه دارید، مگر آنکه دلیل مشخصی برای تغییر داشته باشید.
  8. ۸در صفحه‌ی Storage (برای ژئودیتابیس سازمانی) کلمه‌ی کلیدی پیکربندی را بررسی کنید و Finish را بزنید.
مراحل ساخت Feature Class در ساخت ژئودیتابیس با ArcGIS Pro
گام‌های راهنمای Create Feature Class در آرک جی آی اس پرو

🔤 انتخاب نوع داده‌ی فیلدها

نوع کاربرد مثال
Short Integer عدد صحیح کوچک (تا حدود ±۳۲ هزار) تعداد طبقات، کد کاربری
Long Integer عدد صحیح بزرگ کد پلاک، جمعیت
Big Integer عدد صحیح بسیار بزرگ (نسخه‌های جدید) شناسه‌های سامانه‌های ملی
Float عدد اعشاری با دقت کمتر مقادیر تقریبی
Double عدد اعشاری با دقت بالا مساحت، طول، مختصات
Text متن با طول مشخص نام، آدرس، کد متنی
Date / Date Only / Time Only تاریخ و زمان تاریخ نصب، ساعت بازدید
GUID / Global ID شناسه‌ی یکتای سراسری رابطه‌ها و همگام‌سازی
Blob / Raster داده‌ی دودویی یا تصویر به‌ندرت در کار روزمره

💡 نکته

نام فیلدها را انگلیسی، بدون فاصله و کوتاه بگذارید (مثلاً Diameter_mm) و نام فارسی را در Alias بنویسید. این کار هم سازگاری با ابزارها و اسکریپت‌ها را حفظ می‌کند و هم نمایش فارسی خوانا در جدول و Pop-up می‌دهد. واحد را در نام یا Alias بیاورید تا ابهامی نماند.

📌 یادداشت

برای ساخت سریع کلاس با همان ساختار یک کلاس موجود، در ابزار Create Feature Class پارامتر Template Feature Class را روی کلاس الگو بگذارید؛ همه‌ی فیلدها کپی می‌شوند ولی عوارض نه.

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

  • Z و M را هنگام ساخت تعیین کنید؛ بعداً قابل تغییر نیستند
  • نام فنی انگلیسی و Alias فارسی
  • Double برای مساحت و طول، Long برای کدهای بزرگ
  • Template Feature Class برای کپی ساختار

📁 ساخت Feature Dataset

Feature Dataset پوشه‌ای داخل ژئودیتابیس است که کلاس‌های عارضه‌ی مرتبط با یک سیستم مختصات مشترک را کنار هم نگه می‌دارد. برای قابلیت‌هایی مثل توپولوژی، شبکه‌ی هندسی و Utility Network، کلاس‌ها حتماً باید داخل یک Feature Dataset باشند.

  1. ۱در Catalog روی ژئودیتابیس راست‌کلیک کنید و New > Feature Dataset را بزنید؛ ابزار Create Feature Dataset باز می‌شود.
  2. ۲در Feature Dataset Name نامی مثل WaterNetwork بنویسید.
  3. ۳در Coordinate System سیستم مختصات پروژه را انتخاب کنید. همه‌ی کلاس‌های داخل این دیتاست همین سیستم را خواهند داشت.
  4. ۴Run را بزنید.
  5. ۵برای ساخت کلاس جدید داخل آن، روی دیتاست راست‌کلیک کرده و New > Feature Class را بزنید. برای انتقال کلاس‌های موجود، از Import > Feature Class(es) روی دیتاست استفاده کنید یا آن‌ها را بکشید و رها کنید.
چه زمانی Feature Dataset بسازیم؟ چه زمانی لازم نیست؟
کلاس‌هایی که باید توپولوژی مشترک داشته باشند (قطعات و بلوک‌ها) کلاس‌های مستقل بدون ارتباط هندسی
شبکه‌های تأسیسات (لوله، شیر، پمپ) داده‌های مرجع منفرد مثل مرز کشور
اجرای سیاست مختصات واحد برای ورودی‌ها پروژه‌های کوچک یک‌لایه‌ای

⚠️ هشدار

Feature Dataset را فقط به‌عنوان «پوشه‌ی سازمان‌دهی» استفاده نکنید. هر بار ویرایش یک کلاس داخل دیتاست، ممکن است کلاس‌های دیگر آن را هم قفل کند و در ژئودیتابیس‌های سازمانی کارایی را پایین بیاورد. برای سازمان‌دهی ساده، نام‌گذاری منظم (مثلاً پیشوند Wtr_ و Swr_) کافی است.

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

  • Feature Dataset سیستم مختصات مشترک را اجبار می‌کند
  • برای توپولوژی و شبکه الزامی است
  • Import کلاس‌ها را خودکار به سیستم دیتاست تبدیل می‌کند
  • فقط برای سازمان‌دهی ساده استفاده نکنید

➕ افزودن و مدیریت فیلدها پس از ساخت

پس از ساخت کلاس، معمولاً به فیلدهای بیشتری نیاز پیدا می‌کنید. Fields View مرکز مدیریت فیلدهاست.

  1. ۱روی کلاس عارضه در Catalog یا لایه در Contents راست‌کلیک کنید و Data Design > Fields را بزنید. نمای Fields باز می‌شود و زبانه‌ی موقعیتی Fields در ریبون ظاهر می‌شود.
  2. ۲در زبانه‌ی Fields روی New کلیک کنید یا در پایین جدول روی ردیف Click here to add a new field کلیک کنید.
  3. ۳نام، Alias، نوع داده، طول (برای متن) و در صورت نیاز Default (مقدار پیش‌فرض) و Domain را وارد کنید.
  4. ۴تیک ستون Allow NULL را برای فیلدهایی که نباید خالی بمانند بردارید (فقط هنگام ساخت فیلد قابل تعیین است).
  5. ۵برای فیلدهایی که زیاد در کوئری استفاده می‌شوند، در Catalog از Properties کلاس و زبانه‌ی Indexes یک Attribute Index بسازید تا جست‌وجو سریع‌تر شود.
  6. ۶در زبانه‌ی Fields روی Save کلیک کنید. تا Save نزنید، تغییرات اعمال نمی‌شوند.

💡 نکته

ستون‌های Read Only و Required در Fields View نشان می‌دهند کدام فیلدها سیستمی‌اند. فیلدهای سیستمی مثل OBJECTID، Shape، Shape_Length و Shape_Area قابل حذف یا تغییر نیستند.

📚 ساخت Domain با مقادیر کدی (Coded Value Domain)

Domain مجموعه‌ی قوانینی است که مقادیر مجاز یک فیلد را تعیین می‌کند. با Domain، کاربر به جای تایپ آزاد، از یک فهرست انتخاب می‌کند و امکان ورود «مسکونی»، «مسکونى» و «Residential» برای یک مفهوم از بین می‌رود. Domain در سطح ژئودیتابیس تعریف می‌شود و می‌تواند به فیلدهای چند کلاس نسبت داده شود.

نوع Domain کاربرد مثال
Coded Value فهرست بسته‌ای از مقادیر با کد و توضیح ۱ = چدن، ۲ = پلی‌اتیلن، ۳ = آزبست
Range محدوده‌ی مجاز عددی یا تاریخ قطر بین ۵۰ تا ۱۲۰۰ میلی‌متر

🛠️ مراحل ساخت Coded Value Domain از نمای Domains

  1. ۱در Catalog روی ژئودیتابیس راست‌کلیک کنید و Domains را بزنید (در برخی نسخه‌ها زیر Data Design > Domains). نمای Domains باز می‌شود.
  2. ۲در زبانه‌ی Domains ریبون روی New Domain کلیک کنید یا در جدول بالا روی ردیف خالی کلیک کنید.
  3. ۳در Domain Name نامی مثل PipeMaterial و در Description توضیحی مثل «جنس لوله» بنویسید.
  4. ۴Field Type را مطابق نوع فیلدی که Domain به آن نسبت داده می‌شود انتخاب کنید؛ مثلاً Short. نوع Domain و فیلد باید یکی باشند.
  5. ۵Domain Type را Coded Value Domain بگذارید.
  6. ۶در جدول پایین، برای هر مقدار یک ردیف اضافه کنید: در Code عدد (مثلاً ۱) و در Description توضیح فارسی (مثلاً «چدن داکتیل»).
  7. ۷Split Policy و Merge Policy را بر اساس رفتار مطلوب تعیین کنید (توضیح در ادامه).
  8. ۸در زبانه‌ی Domains روی Save کلیک کنید.

🔗 نسبت دادن Domain به فیلد

  1. ۱Fields View کلاس عارضه (مثلاً WaterPipes) را باز کنید.
  2. ۲در ردیف فیلد Material، روی ستون Domain کلیک کنید و از فهرست PipeMaterial را انتخاب کنید.
  3. ۳Save را بزنید.
  4. ۴جدول توصیفی یا پنجره‌ی Attributes را باز کنید؛ فیلد Material اکنون فهرست کشویی با توضیحات فارسی دارد، در حالی که در پایگاه داده کد عددی ذخیره می‌شود.

💡 نکته

راه ابزاری: برای ساخت Domain از ابزار Create Domain، برای افزودن مقادیر از Add Coded Value To Domain و برای نسبت دادن از Assign Domain To Field استفاده کنید. اگر فهرست مقادیر در یک جدول اکسل دارید، ابزار Table To Domain کل فهرست را یکجا وارد می‌کند؛ برای فهرست‌های بلند مثل نام محله‌ها بسیار کاربردی است.

📏 Range Domain

برای مقادیر عددی پیوسته، Range Domain حداقل و حداکثر مجاز را تعیین می‌کند. در نمای Domains، Domain Type را Range Domain بگذارید و Minimum و Maximum را وارد کنید؛ مثلاً قطر لوله ۵۰ تا ۱۲۰۰. توجه کنید که Range Domain مانع تایپ مقدار خارج از محدوده در پنجره‌ی Attributes نمی‌شود، اما با ابزار Validate در زبانه‌ی Edit یا هنگام Calculate Field با Enforce Domains، مقادیر نامعتبر شناسایی می‌شوند.

✂️ سیاست‌های Split و Merge در Domain

سیاست گزینه‌ها مثال
Split Policy Default Value، Duplicate، Geometry Ratio هنگام برش لوله، جنس Duplicate و هزینه Geometry Ratio
Merge Policy Default Value، Sum Values، Geometry Weighted هنگام ادغام قطعات، جمعیت Sum Values

این سیاست‌ها همان رفتاری هستند که در فصل چهارم: ویرایش عوارض در ArcGIS Pro هنگام Split و Merge دیدیم. سیاست‌های Coded Value Domain فقط Default و Duplicate را پشتیبانی می‌کنند، چون تقسیم یا جمع کد معنی ندارد؛ برای فیلدهای عددی بدون Domain هم می‌توانید سیاست را در نمای Fields تعیین کنید.

🧹 نگهداری Domainها در طول عمر پروژه

Domainها مثل هر بخش دیگر ژئودیتابیس نیاز به نگهداری دارند. چند کار رایج:

  • افزودن مقدار جدید: در نمای Domains ردیف جدیدی به جدول کدها اضافه و Save کنید، یا از ابزار Add Coded Value To Domain استفاده کنید. فیلدهایی که این Domain را دارند بلافاصله گزینه‌ی جدید را نشان می‌دهند.
  • حذف مقدار: پیش از حذف یک کد، با Select By Attributes مطمئن شوید هیچ عارضه‌ای آن مقدار را ندارد؛ وگرنه آن عوارض مقدار «بدون توضیح» پیدا می‌کنند.
  • مرتب‌سازی کدها: ابزار Sort Coded Value Domain ترتیب نمایش فهرست کشویی را بر اساس کد یا توضیح مرتب می‌کند.
  • استفاده‌ی مشترک: یک Domain مثل YesNo یا Condition (خوب، متوسط، بد) را برای ده‌ها فیلد در کلاس‌های مختلف به کار ببرید؛ لازم نیست برای هر فیلد Domain جدا بسازید.
  • حذف Domain: ابتدا آن را از همه‌ی فیلدها جدا کنید (ابزار Remove Domain From Field) و سپس حذف کنید.

📌 یادداشت

کد Domain آن چیزی است که ذخیره می‌شود و توضیح آن چیزی است که نمایش داده می‌شود. اگر داده را به Excel یا CSV خروجی بگیرید، ممکن است کدها به جای توضیحات بیایند؛ در ابزارهای خروجی گزینه‌ی استفاده از توضیحات Domain (Use domain and subtype description) را فعال کنید.

مراحل ساخت و اعمال Domain در ساخت ژئودیتابیس با ArcGIS Pro
گردش کار Domain مقادیر کدی در آرک جی آی اس پرو

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

اگر Domain در فهرست ستون Domain فیلد دیده نمی‌شود، نوع داده‌ی Domain با نوع فیلد یکی نیست؛ مثلاً Domain از نوع Short است و فیلد از نوع Long. Domain جدیدی با نوع درست بسازید یا فیلد را با نوع درست دوباره ایجاد کنید.

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

  • Domain در سطح ژئودیتابیس تعریف و به فیلدها نسبت داده می‌شود
  • نوع Domain و فیلد باید یکسان باشد
  • Table To Domain برای فهرست‌های بلند
  • Range Domain با Validate کنترل می‌شود

🏷️ ساخت Subtype (زیرگروه)

Subtype یک کلاس عارضه را به دسته‌هایی تقسیم می‌کند که در یک جدول ذخیره می‌شوند اما رفتار متفاوت دارند. مثلاً لایه‌ی لوله‌ها می‌تواند سه Subtype داشته باشد: خط انتقال، شبکه‌ی توزیع و انشعاب. هر Subtype می‌تواند مقادیر پیش‌فرض و Domainهای متفاوت داشته باشد؛ مثلاً قطر مجاز خط انتقال ۳۰۰ تا ۱۲۰۰ و قطر انشعاب ۱۶ تا ۶۳ میلی‌متر.

معیار Subtype کلاس‌های عارضه‌ی جدا
ذخیره‌سازی یک کلاس، یک جدول چند کلاس، چند جدول
تحلیل کل شبکه ساده؛ همه در یک لایه نیاز به ادغام
قوانین متفاوت برای دسته‌ها با Domain و پیش‌فرض هر Subtype با طراحی جدای هر کلاس
قالب‌های ویرایش خودکار برای هر Subtype جدا برای هر کلاس
چه وقت مناسب است دسته‌ها فیلدهای مشترک دارند دسته‌ها فیلدهای کاملاً متفاوت دارند

🛠️ مراحل ساخت Subtype

  1. ۱مطمئن شوید کلاس یک فیلد عدد صحیح (Short یا Long) برای کد Subtype دارد؛ مثلاً PipeType. اگر ندارد، آن را در Fields View بسازید و Save کنید.
  2. ۲روی کلاس در Catalog راست‌کلیک کنید و Data Design > Subtypes را بزنید. نمای Subtypes باز می‌شود.
  3. ۳در زبانه‌ی Subtypes ریبون روی Create/Manage کلیک کنید و فیلد PipeType را به‌عنوان Subtype Field انتخاب کنید.
  4. ۴در جدول نمای Subtypes، برای هر دسته یک ردیف اضافه کنید: کد ۱ با نام «خط انتقال»، کد ۲ «شبکه‌ی توزیع» و کد ۳ «انشعاب».
  5. ۵در ستون‌های هر فیلد، برای هر Subtype مقدار پیش‌فرض و Domain را تعیین کنید؛ مثلاً برای «انشعاب» Domain قطر کوچک.
  6. ۶Subtype پیش‌فرض (Default Subtype) را مشخص کنید؛ عوارضی که بدون انتخاب Subtype ساخته شوند این مقدار را می‌گیرند.
  7. ۷روی Save کلیک کنید.

💡 نکته

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

⚠️ هشدار

فیلد Subtype را پس از پر شدن داده با Calculate Field تغییر ندهید، مگر آنکه بدانید Domain و پیش‌فرض‌های Subtype جدید با مقادیر فعلی سازگارند. تغییر Subtype ممکن است مقادیری را که در Domain جدید مجاز نیستند نامعتبر کند.

نمونه Subtype لوله‌ها با Domain متفاوت در ساخت ژئودیتابیس ArcGIS Pro
Subtype و Domain در طراحی ژئودیتابیس آرک جی آی اس پرو

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

  • Subtype دسته‌های یک کلاس با رفتار متفاوت است
  • فیلد Subtype باید عدد صحیح باشد
  • هر Subtype پیش‌فرض و Domain خودش را دارد
  • قالب‌ها و نمادشناسی خودکار ساخته می‌شوند

📎 جدول، پیوست و رستر در ژئودیتابیس

ژئودیتابیس فقط برای کلاس عارضه نیست. سه نوع آیتم دیگر هم در کار روزمره بسیار مفیدند:

📋 جدول مستقل (Table)

برای داده‌هایی که موقعیت مکانی ندارند، مثل فهرست مشترکان، سوابق بازدید یا پروانه‌ها، یک جدول بسازید: روی ژئودیتابیس راست‌کلیک و New > Table را بزنید. مراحل ساخت فیلدها مثل کلاس عارضه است. جدول‌ها از Domain و Subtype هم پشتیبانی می‌کنند و با Relationship Class به کلاس‌های عارضه وصل می‌شوند.

📷 پیوست‌ها (Attachments)

اگر می‌خواهید به هر عارضه عکس، PDF یا فایل دیگری پیوست کنید (مثلاً عکس شیر یا نقشه‌ی اجرایی لوله)، روی کلاس عارضه راست‌کلیک کنید و Manage > Attachments را فعال کنید یا ابزار Enable Attachments را اجرا کنید. ArcGIS Pro یک جدول پیوست و یک Relationship Class می‌سازد. از آن پس در پنجره‌ی Attributes، بخش پیوست‌ها برای افزودن فایل در دسترس است و در Pop-up هم نمایش داده می‌شود. پیوست‌ها داخل ژئودیتابیس ذخیره می‌شوند و حجم آن را بالا می‌برند؛ برای عکس‌های زیاد، حجم و فشرده‌سازی را در نظر بگیرید.

🖼️ رستر و موزاییک دیتاست

تصاویر هوایی و DEM را می‌توانید به شکل Raster Dataset داخل ژئودیتابیس ذخیره کنید (ابزار Raster To Geodatabase یا Copy Raster) یا برای مجموعه‌های بزرگ تصویر، یک Mosaic Dataset بسازید که تصاویر را بدون کپی فیزیکی مدیریت و یکپارچه نمایش می‌دهد. برای پروژه‌های کوچک، نگه داشتن رسترها به‌صورت فایل TIFF در پوشه‌ی پروژه هم کاملاً قابل قبول است.

🏷️ قواعد نام‌گذاری و مستندسازی آیتم‌های ژئودیتابیس

  • نام‌ها با حرف انگلیسی شروع شوند و فقط حرف، عدد و خط زیر داشته باشند؛ فاصله، خط تیره و حروف فارسی در نام فنی ممنوع.
  • از واژه‌های رزرو پایگاه داده مثل DATE، ORDER، USER و SELECT به‌عنوان نام فیلد استفاده نکنید.
  • یک الگوی ثابت انتخاب کنید؛ مثلاً PascalCase برای کلاس‌ها (WaterPipes) و پیشوند حوزه برای گروه‌ها (Wtr_، Swr_).
  • Alias فارسی را برای همه‌ی کلاس‌ها و فیلدها وارد کنید تا کاربران نهایی نام خوانا ببینند.
  • برای هر کلاس متادیتا بنویسید: روی آن در Catalog راست‌کلیک و Edit Metadata را بزنید و خلاصه، توضیحات، منبع، تاریخ، سیستم مختصات و محدودیت‌های استفاده را ثبت کنید.

💡 نکته

متادیتای خوب برای همکاری که شش ماه بعد داده را باز می‌کند، از هر آموزشی ارزشمندتر است. حداقل سه چیز را همیشه بنویسید: داده از کجا آمده، کی به‌روز شده و چه کسی مسئول آن است.

📝 طراحی مدل داده پیش از ساخت ژئودیتابیس

مهم‌ترین بخش ساخت ژئودیتابیس در ArcGIS Pro پیش از باز کردن برنامه انجام می‌شود: طراحی روی کاغذ یا در یک جدول اکسل. ساعتی که برای طراحی می‌گذارید، روزها اصلاح بعدی را حذف می‌کند.

  1. ۱نیازها را فهرست کنید: چه پرسش‌هایی باید با این داده جواب داده شود؟ مثلاً «طول لوله‌های آزبست در هر منطقه» یعنی به فیلد جنس و ارتباط با مناطق نیاز دارید.
  2. ۲موجودیت‌ها را تعیین کنید: هر شیء دنیای واقعی (لوله، شیر، مشترک، منطقه) یک کلاس عارضه یا جدول.
  3. ۳نوع هندسه را انتخاب کنید: شیر نقطه، لوله خط، منطقه چندضلعی؛ مشترکان بدون هندسه، جدول.
  4. ۴فیلدها را بنویسید: نام فنی، Alias، نوع، طول، اجباری بودن و واحد هر فیلد.
  5. ۵فهرست‌های بسته را پیدا کنید: هر فیلدی که مقادیر محدود دارد، کاندیدای Domain است.
  6. ۶دسته‌ها را مشخص کنید: اگر یک کلاس دسته‌هایی با قوانین متفاوت دارد، Subtype طراحی کنید.
  7. ۷روابط را ترسیم کنید: کدام کلاس‌ها با هم رابطه‌ی یک‌به‌چند دارند (مثلاً قطعه و پروانه) تا Relationship Class بسازید. (فصل سوم)
  8. ۸قوانین مکانی را بنویسید: مثلاً «قطعات نباید هم‌پوشانی داشته باشند» که بعداً به توپولوژی تبدیل می‌شود. (فصل دهم)

💡 نکته

یک جدول طراحی با ستون‌های «کلاس، فیلد، نوع، طول، Domain، اجباری، توضیح» در اکسل بسازید و آن را با کارشناسان حوزه (مثلاً مهندسان آبفا) مرور کنید. این جدول بعداً بهترین مستند متادیتای پروژه هم خواهد بود.

📦 کپی و انتقال ساختار ژئودیتابیس

وقتی طراحی کامل شد، ممکن است بخواهید همان ساختار را برای شهر دیگری یا پیمانکار دیگری بفرستید، بدون داده. ArcGIS Pro چند راه دارد:

روش چه چیزی منتقل می‌شود کاربرد
Copy و Paste در Catalog کلاس‌ها با داده و Domainهای وابسته کپی سریع بین دو ژئودیتابیس
Export XML Workspace Document ساختار با یا بدون داده در یک فایل XML ارسال طراحی به پیمانکار
Import XML Workspace Document ساخت ساختار از فایل XML در ژئودیتابیس خالی پیاده‌سازی طراحی دریافتی
Generate Schema Report گزارش HTML یا PDF از ساختار مستندسازی و بازبینی طراحی
Create Feature Class با Template ساختار فیلدهای یک کلاس ساخت کلاس هم‌شکل
  1. ۱روی ژئودیتابیس در Catalog راست‌کلیک کنید و Export > XML Workspace Document را بزنید.
  2. ۲در ابزار، گزینه‌ی Schema only را انتخاب کنید تا فقط ساختار بدون عوارض صادر شود.
  3. ۳مسیر و نام فایل XML را تعیین و Run را بزنید.
  4. ۴در مقصد، یک ژئودیتابیس خالی بسازید و با ابزار Import XML Workspace Document فایل را وارد کنید. همه‌ی کلاس‌ها، Domainها، Subtypeها و روابط ساخته می‌شوند.

📌 یادداشت

ابزار Generate Schema Report (در نسخه‌های جدید) گزارش خوانایی از همه‌ی کلاس‌ها، فیلدها و Domainها تولید می‌کند. برای تحویل پروژه یا بازبینی همکاران، این گزارش از توضیح شفاهی بسیار بهتر است.

📱 ژئودیتابیس موبایل؛ گزینه‌ی قابل حمل

ژئودیتابیس موبایل یک فایل واحد SQLite است که برخلاف پوشه‌ی gdb، به‌راحتی با ایمیل یا فلش جابه‌جا می‌شود. از Domain، Subtype، رابطه و قوانین توصیفی پشتیبانی می‌کند و در برنامه‌های میدانی مبتنی بر ArcGIS Maps SDK هم قابل استفاده است. محدودیت اصلی آن تک‌کاربره بودن است. برای پروژه‌های دانشجویی، تحویل داده به کارفرما و کار آفلاین، ژئودیتابیس موبایل گزینه‌ی جذابی است؛ برای کار تیمی هم‌زمان روی یک داده، ژئودیتابیس سازمانی لازم است.

🧪 تمرین عملی: طراحی ژئودیتابیس شبکه‌ی آب یک محله

  1. ۱یک جدول طراحی با سه کلاس (لوله، شیر، مخزن) و یک جدول (مشترکان) بنویسید.
  2. ۲یک ژئودیتابیس فایلی به نام WaterNet.gdb بسازید و آن را Default کنید.
  3. ۳یک Feature Dataset به نام Network با سیستم WGS 1984 UTM Zone 39N (یا منطقه‌ی شهر خودتان) بسازید.
  4. ۴داخل آن کلاس خطی Pipes و نقطه‌ای Valves و Tanks را با فیلدهای طراحی‌شده ایجاد کنید.
  5. ۵Coded Value Domain PipeMaterial با چهار جنس و Range Domain PipeDiameter بسازید و به فیلدها نسبت دهید.
  6. ۶سه Subtype برای لوله‌ها (انتقال، توزیع، انشعاب) با Domain قطر متفاوت تعریف کنید.
  7. ۷لایه را به نقشه اضافه کنید و با قالب‌های خودکار، سه لوله از سه Subtype ترسیم کنید.
  8. ۸ساختار را با XML Workspace Document صادر و در یک ژئودیتابیس خالی دیگر وارد کنید.

💡 نکته

چک‌لیست موفقیت: فیلد جنس لوله فهرست کشویی فارسی دارد، قالب‌های ویرایش سه Subtype را نشان می‌دهند و ژئودیتابیس دوم دقیقاً همان ساختار را بدون داده دارد. نسخه‌ی کامل در تمرین های آرک جی آی اس پرو.

🏙️ سناریوی واقعی: مهاجرت داده‌های یک شهرداری از شیپ‌فایل به ژئودیتابیس

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

  1. ۱فهرست همه‌ی شیپ‌فایل‌ها، سیستم مختصات و صاحب هر داده را در یک جدول ثبت کنید و نسخه‌های تکراری را کنار بگذارید.
  2. ۲یک File Geodatabase با یک Feature Dataset در سیستم مختصات رسمی پروژه بسازید.
  3. ۳پیش از انتقال، Domainهای کاربری، جنس معبر و وضعیت را تعریف کنید تا داده از همان ابتدا با کد استاندارد وارد شود.
  4. ۴هر شیپ‌فایل را با Feature Class To Feature Class و Field Map منتقل کنید و نام فیلدها را به نام‌های گویا تغییر دهید.
  5. ۵با Calculate Field املاهای مختلف یک مقدار را به کد Domain تبدیل کنید و رکوردهای ناسازگار را جداگانه گزارش دهید.
  6. ۶پس از تأیید نهایی، پوشه‌ی شیپ‌فایل‌ها را فقط‌خواندنی و بایگانی کنید تا کسی روی نسخه‌ی قدیمی کار نکند.

💡 نکته

پیش از مهاجرت با ابزار Frequency روی فیلدهای متنی، فهرست همه‌ی مقدارهای موجود و تعداد تکرار هر کدام را بگیرید. این فهرست نشان می‌دهد Domain شما به چه کدهایی نیاز دارد و چه املاهای اشتباهی باید یکسان شوند.

🐞 خطاهای رایج ساخت ژئودیتابیس و راه‌حل

مشکل علت راه‌حل
ژئودیتابیس قفل است و نمی‌توان فیلد افزود لایه در نقشه یا برنامه‌ی دیگر باز است لایه را حذف یا ویرایش را ذخیره و ArcGIS Pro را دوباره باز کنید
Domain در فهرست فیلد نیست نوع داده‌ی Domain و فیلد متفاوت است Domain یا فیلد هم‌نوع بسازید
Subtype Field قابل انتخاب نیست فیلد عدد صحیح نیست فیلد Short یا Long بسازید
کلاس داخل Feature Dataset ساخته نمی‌شود سیستم مختصات یا نوع ناسازگار کلاس را بیرون بسازید یا سیستم را هماهنگ کنید
نمی‌توان Z را بعداً فعال کرد Z فقط هنگام ساخت تعیین می‌شود کلاس جدید با Z بسازید و داده را Append کنید
تغییرات Fields View اعمال نشد Save زده نشده در زبانه‌ی Fields روی Save کلیک کنید

❓ پرسش‌های متداول درباره ساخت ژئودیتابیس

🔹 بهترین نوع ژئودیتابیس برای شروع کدام است؟

برای بیشتر پروژه‌های فردی و تیم‌های کوچک، ژئودیتابیس فایلی (File Geodatabase) انتخاب مناسبی است. برای جابه‌جایی آسان ژئودیتابیس موبایل و برای کار چندکاربره ژئودیتابیس سازمانی لازم است.

🔹 چرا به‌جای Shapefile از ژئودیتابیس استفاده کنم؟

ژئودیتابیس محدودیت حجم و طول نام فیلد Shapefile را ندارد و از Domain، Subtype، رابطه، توپولوژی و قوانین توصیفی پشتیبانی می‌کند که کیفیت داده را تضمین می‌کنند.

🔹 تفاوت Domain و Subtype چیست؟

Domain مقادیر مجاز یک فیلد را تعیین می‌کند، مثلاً فهرست جنس لوله. Subtype عوارض یک کلاس را به دسته‌هایی تقسیم می‌کند که هرکدام مقادیر پیش‌فرض و Domainهای خودشان را دارند.

🔹 آیا Feature Dataset برای همه‌ی کلاس‌ها لازم است؟

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

🔹 چطور ساختار ژئودیتابیس را بدون داده برای کسی بفرستم؟

روی ژئودیتابیس راست‌کلیک کنید و Export > XML Workspace Document را با گزینه‌ی Schema only اجرا کنید. گیرنده با Import XML Workspace Document ساختار را می‌سازد.

🔹 آیا می‌توان پس از ساخت کلاس، نوع فیلد را تغییر داد؟

خیر. باید فیلد جدیدی با نوع درست بسازید، مقادیر را با Calculate Field منتقل کنید و فیلد قدیمی را حذف کنید.

🔹 آیا می‌توان نام فارسی برای فیلدها گذاشت؟

بهتر است نام فنی انگلیسی و نام فارسی را در Alias بنویسید تا هم با ابزارها و اسکریپت‌ها سازگار بماند و هم نمایش فارسی داشته باشید.

🔹 چطور چند شیپ‌فایل را یک‌جا به ژئودیتابیس منتقل کنم؟

از ابزار Feature Class To Geodatabase استفاده کنید؛ می‌توانید چند شیپ‌فایل را هم‌زمان در ورودی بگذارید و ژئودیتابیس یا Feature Dataset مقصد را انتخاب کنید. اگر نیاز به تغییر نام یا نوع فیلد دارید، برای هر لایه از Feature Class To Feature Class یا Export Features با Field Map استفاده کنید.

🏁 جمع‌بندی

در این فصل مراحل کامل ساخت ژئودیتابیس در ArcGIS Pro را دیدید: انتخاب نوع ژئودیتابیس، ساخت ژئودیتابیس فایلی، طراحی و ساخت کلاس عارضه با فیلدهای مناسب، ساخت Feature Dataset برای اجرای سیستم مختصات مشترک، تعریف Domain مقادیر کدی و محدوده‌ای و ساخت Subtype با قوانین متفاوت. در فصل بعد یک قدم جلوتر می‌رویم و قابلیت‌های پیشرفته‌ی ژئودیتابیس را فعال می‌کنیم: Editor Tracking، فیلدهای GPS، Attribute Rules و Contingent Values.

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

  • طراحی پیش از ساخت
  • Domain و Subtype خط اول کنترل کیفیت‌اند
  • ساختار را با XML قابل تکرار و قابل انتقال کنید

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

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

📖 منابع: مستندات رسمی Esri: What is a geodatabase و An overview of attribute domains.

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

بدون دیدگاه

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