تحلیل مجاورت در آرک‌جی‌ای‌اس پرو – تحلیل مجاورت در ArcGIS Pro

«نزدیک‌ترین بیمارستان به این محله کدام است؟»، «چند مدرسه در فاصله‌ی ۵۰۰ متری این پمپ‌بنزین قرار دارند؟»، «حریم ۳۰ متری رودخانه کدام قطعات را قطع می‌کند؟». این‌ها پرتکرارترین پرسش‌های GIS هستند و همه با تحلیل مجاورت در ArcGIS Pro پاسخ داده می‌شوند. در این آموزش ArcGIS Pro چهار مهارت اصلی را قدم‌به‌قدم یاد می‌گیریم: انتخاب عوارض در یک فاصله‌ی مشخص، ساخت حریم با Buffer و Multiple Ring Buffer، یافتن نزدیک‌ترین عارضه با Near و ساخت جدول کامل فاصله‌ها با Generate Near Table.

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

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

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

  1. 🧭 تحلیل مجاورت چیست و چه ابزارهایی دارد؟
  2. 🎯 انتخاب عوارض در یک فاصله‌ی مشخص
  3. 🟢 ساخت حریم با ابزار Buffer
  4. 🎯 حلقه‌های فاصله با Multiple Ring Buffer
  5. 📍 یافتن نزدیک‌ترین عارضه با Near
  6. 📋 جدول فاصله‌ها با Generate Near Table
  7. 🧮 مقایسه و انتخاب ابزار درست
  8. 💼 سه سناریوی کامل تحلیل مجاورت در ArcGIS Pro
  9. 🧭 نکات حرفه‌ای و بهینه‌سازی
  10. 🧰 ابزارهای مکمل مجاورت
  11. 🎨 نمایش حرفه‌ای نتایج مجاورت
  12. 🐍 خودکارسازی تحلیل مجاورت با Python
  13. 🧪 تمرین عملی: مکان‌یابی ایمن مدارس
  14. 🏙️ سناریوی واقعی: سنجش دسترسی ساکنان به ایستگاه‌های آتش‌نشانی
  15. 🐞 خطاهای رایج و راه‌حل
  16. ❓ پرسش‌های متداول
  17. 🏁 جمع‌بندی

🧭 تحلیل مجاورت چیست و چه ابزارهایی دارد؟

تحلیل مجاورت (Proximity Analysis) به پرسش‌هایی درباره‌ی فاصله بین عوارض پاسخ می‌دهد. خروجی این تحلیل‌ها سه شکل دارد: یک انتخاب (کدام عوارض نزدیک‌اند)، یک لایه‌ی جدید (محدوده‌ی حریم) یا فیلد و جدول فاصله (چقدر نزدیک‌اند).

پرسش ابزار خروجی لایسنس
کدام عوارض در فاصله‌ی X هستند؟ Select By Location (Within a distance) انتخاب Basic
محدوده‌ی X متری اطراف عوارض کجاست؟ Buffer / Pairwise Buffer چندضلعی جدید Basic (برخی گزینه‌ها Advanced)
چند حلقه‌ی فاصله‌ای می‌خواهم Multiple Ring Buffer چندضلعی حلقه‌ای Basic
نزدیک‌ترین عارضه به هر عارضه کدام است؟ Near فیلد جدید در ورودی Basic
فاصله تا چند عارضه‌ی نزدیک Generate Near Table جدول جدید Basic
فاصله‌ی همه‌ی نقاط تا همه‌ی نقاط Point Distance جدول Advanced

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

ابزارهای تحلیل مجاورت در ArcGIS Pro و خروجی هر کدام
انتخاب ابزار مناسب برای تحلیل فاصله در آرک جی آی اس پرو

📏 فاصله‌ی مسطح یا ژئودزیک؟

ابزارهای مجاورت دو روش اندازه‌گیری دارند:

  • Planar (مسطح): فاصله روی صفحه‌ی تخت سیستم تصویر محاسبه می‌شود. برای محدوده‌های کوچک مثل یک شهر در سیستم UTM دقیق و سریع است.
  • Geodesic (ژئودزیک): فاصله روی بیضوی زمین محاسبه می‌شود. برای محدوده‌های بزرگ (یک کشور یا چند منطقه‌ی UTM)، داده‌ی در مختصات جغرافیایی یا سیستم‌هایی که فاصله را تحریف می‌کنند (مثل Web Mercator) ضروری است.

⚠️ هشدار

داده‌ی در WGS 1984 Web Mercator (سیستم پیش‌فرض نقشه‌های پایه‌ی آنلاین) فاصله را به‌شدت تحریف می‌کند؛ در عرض جغرافیایی ایران حدود ۲۰ تا ۳۰ درصد. اگر داده در این سیستم است، یا روش Geodesic را انتخاب کنید یا ابتدا داده را با Project به UTM منطقه‌ی خود ببرید.

🔢 واحدها و دقت فاصله

در همه‌ی ابزارهای مجاورت، فاصله را می‌توانید با واحد صریح وارد کنید (Meters، Kilometers، Feet و…). اگر واحد را Default بگذارید، واحد خطی سیستم مختصات لایه به کار می‌رود؛ و اگر لایه در مختصات جغرافیایی باشد، این واحد «درجه» است که تقریباً هیچ‌وقت مطلوب نیست. همیشه واحد را صریح انتخاب کنید، حتی وقتی مطمئنید سیستم مختصات متری است.

دقت فاصله هم به دقت داده بستگی دارد: اگر لایه‌ی مدارس از روی تصویر ماهواره‌ای با دقت ۱۰ متر رقومی شده باشد، گزارش فاصله با دقت سانتی‌متر بی‌معناست. در گزارش‌ها فاصله را گرد کنید (مثلاً به نزدیک‌ترین ۱۰ متر) و دقت داده‌ی مبنا را ذکر کنید.

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

  • سه نوع خروجی: انتخاب، لایه، جدول
  • سیستم مختصات درست شرط اول
  • Planar برای محدوده‌ی کوچک در UTM
  • Geodesic برای محدوده‌ی بزرگ یا Web Mercator

🎯 انتخاب عوارض در یک فاصله‌ی مشخص

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

🛠️ مراحل

  1. ۱لایه‌ی هدف (مثلاً Schools) و لایه‌ی مرجع (مثلاً GasStations) را به نقشه اضافه کنید.
  2. ۲در زبانه‌ی Map، گروه Selection، روی Select By Location کلیک کنید.
  3. ۳در Input Features لایه‌ی مدارس را انتخاب کنید؛ یعنی عوارضی که می‌خواهید انتخاب شوند.
  4. ۴در Relationship گزینه‌ی Within a distance را انتخاب کنید.
  5. ۵در Selecting Features لایه‌ی پمپ‌بنزین‌ها را بگذارید.
  6. ۶در Search Distance مقدار و واحد را وارد کنید؛ مثلاً 500 Meters.
  7. ۷Selection type را روی New selection بگذارید و OK را بزنید.
  8. ۸تعداد عوارض انتخاب‌شده را پایین جدول توصیفی یا در زبانه‌ی List By Selection پنجره‌ی Contents ببینید.

💡 نکته

اگر فقط پمپ‌بنزین‌های انتخاب‌شده (مثلاً فقط یک منطقه) باید مبنا باشند، ابتدا آن‌ها را انتخاب کنید؛ Select By Location فقط عوارض انتخاب‌شده‌ی لایه‌ی مرجع را به کار می‌برد.

📌 یادداشت

Within a distance فاصله را از لبه‌ی عوارض می‌سنجد، نه از مرکز آن‌ها. برای یک چندضلعی بزرگ، مدرسه‌ای که ۴۰۰ متر با لبه فاصله دارد انتخاب می‌شود، حتی اگر ۲ کیلومتر با مرکز فاصله داشته باشد. برای بررسی کامل سایر روابط مکانی مثل Intersect، Contains و Within، مطلب اختصاصی انتخاب مکانی گیس‌لند را دنبال کنید.

🔁 ترکیب با انتخاب توصیفی

یکی از قوی‌ترین الگوها، ترکیب انتخاب مکانی و توصیفی است. مثلاً: «مدارس دخترانه‌ی ابتدایی در فاصله‌ی ۵۰۰ متری پمپ‌بنزین‌ها». ابتدا با Select By Location انتخاب کنید، سپس Select By Attributes را با Selection type = Select subset from the current selection و شرط مربوط به نوع مدرسه اجرا کنید.

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

  • انتخاب داده‌ی جدید نمی‌سازد
  • فاصله از لبه‌ی عوارض سنجیده می‌شود
  • عوارض انتخاب‌شده‌ی مرجع مبنا هستند
  • Subset برای ترکیب با شرط توصیفی

🟢 ساخت حریم با ابزار Buffer

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

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

  1. ۱در زبانه‌ی Analysis، گالری Tools، روی Buffer کلیک کنید یا آن را در جست‌وجوی ابزارها پیدا کنید.
  2. ۲Input Features: لایه‌ی ورودی، مثلاً Rivers.
  3. ۳Output Feature Class: نام خروجی در ژئودیتابیس، مثلاً Rivers_Buffer30m. نام توصیفی با فاصله، بعدها کار را آسان می‌کند.
  4. ۴Distance: یا Linear Unit (یک عدد ثابت مثل 30 Meters) یا Field (فاصله از یک فیلد در جدول؛ مثلاً حریم متفاوت برای رودخانه‌های درجه‌ی ۱، ۲ و ۳).
  5. ۵Method: Planar برای داده‌ی محلی در سیستم تصویر و Geodesic برای محدوده‌های بزرگ.
  6. ۶Dissolve Type: None (هر عارضه حریم جداگانه)، Dissolve all (همه‌ی حریم‌ها یکی) یا Dissolve by field (یکی شدن بر اساس مقدار یک فیلد).
  7. ۷در صورت نیاز Side Type و End Type را برای خطوط تنظیم کنید (این دو گزینه به لایسنس Advanced نیاز دارند).
  8. ۸Run را بزنید.
مراحل ساخت حریم با ابزار Buffer در ArcGIS Pro
گام‌های ساخت حریم در آرک جی آی اس پرو

⚙️ توضیح تنظیمات مهم

تنظیم گزینه‌ها اثر
Distance از فیلد یک فیلد عددی هر عارضه حریم متناسب با مقدار خودش
Dissolve: None هر عارضه یک حریم حفظ فیلدهای ورودی، اما حریم‌های هم‌پوشان
Dissolve: All یک چندضلعی واحد بدون هم‌پوشانی، بدون فیلدهای ورودی
Dissolve: By field یک چندضلعی برای هر مقدار حریم جدا برای هر دسته
Side Type Full، Left، Right، Outside only حریم فقط یک سمت خط یا فقط بیرون چندضلعی
End Type Round یا Flat انتهای گرد یا صاف برای خطوط

💡 نکته

برای ساخت حریم «بیرونی» یک چندضلعی (مثلاً فقط ۱۰۰ متر بیرون مرز پارک، نه داخل آن) از Side Type = Outside only استفاده کنید. اگر لایسنس Advanced ندارید، یک Buffer معمولی بسازید و سپس با ابزار Pairwise Erase (در دسترس در Basic) خود پارک را از حریم کم کنید؛ نتیجه همان حلقه‌ی بیرونی است.

⚡ Pairwise Buffer برای داده‌ی بزرگ

Pairwise Buffer همان کار Buffer را با پردازش موازی انجام می‌دهد و روی داده‌ی بزرگ معمولاً بسیار سریع‌تر است. برای چند صد هزار عارضه، Pairwise Buffer را ترجیح دهید. تعداد هسته‌های پردازنده را می‌توانید با محیط Parallel Processing Factor تنظیم کنید.

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

اگر حریم ۳۰ متری روی نقشه بسیار کوچک یا بزرگ به نظر می‌رسد، احتمالاً داده در مختصات جغرافیایی (درجه) است و Planar فاصله را اشتباه تفسیر کرده یا سیستم مختصات تعریف نشده است. سیستم مختصات را بررسی و از Geodesic یا تصویر کردن داده استفاده کنید.

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

  • Buffer لایه‌ی حریم جدید می‌سازد
  • فاصله ثابت یا از فیلد
  • Dissolve را بر اساس هدف انتخاب کنید
  • Pairwise Buffer برای داده‌ی بزرگ

🎯 حلقه‌های فاصله با Multiple Ring Buffer

گاهی یک فاصله کافی نیست. مثلاً می‌خواهید نشان دهید چه جمعیتی در فاصله‌ی ۵۰۰، ۱۰۰۰ و ۲۰۰۰ متری یک ایستگاه مترو زندگی می‌کند. Multiple Ring Buffer چند حلقه را در یک اجرا می‌سازد:

  1. ۱ابزار Multiple Ring Buffer را باز کنید.
  2. ۲لایه‌ی ورودی (ایستگاه‌ها) و نام خروجی را تعیین کنید.
  3. ۳در Distances فاصله‌ها را یکی‌یکی اضافه کنید: 500، 1000 و 2000.
  4. ۴Distance Unit را Meters بگذارید.
  5. ۵Buffer Distance Field Name نام فیلدی است که فاصله‌ی هر حلقه در آن نوشته می‌شود؛ پیش‌فرض distance.
  6. ۶Dissolve Option را روی Non-overlapping (rings) بگذارید تا حلقه‌ها مثل دونات روی هم نیفتند و هر حلقه فقط فاصله‌ی بین دو مقدار را پوشش دهد.
  7. ۷Run را بزنید و لایه را بر اساس فیلد distance با Graduated Colors نمادگذاری کنید.

حالت Non-overlapping یعنی حلقه‌ی ۱۰۰۰ متری فقط ناحیه‌ی بین ۵۰۰ تا ۱۰۰۰ متر را می‌پوشاند؛ این برای شمارش جمعیت هر حلقه بدون شمارش تکراری ضروری است.

💡 نکته

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

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

  • Multiple Ring Buffer چند فاصله در یک اجرا
  • Non-overlapping برای شمارش بدون تکرار
  • فیلد distance برای نمادگذاری
  • Summarize Within برای آمار هر حلقه

📍 یافتن نزدیک‌ترین عارضه با Near

ابزار Near برای هر عارضه‌ی ورودی، نزدیک‌ترین عارضه از لایه‌ی (یا لایه‌های) دیگر را پیدا می‌کند و شناسه و فاصله‌ی آن را مستقیم در جدول ورودی می‌نویسد. پرسش‌هایی مثل «نزدیک‌ترین ایستگاه آتش‌نشانی به هر ساختمان» یا «فاصله‌ی هر چاه تا نزدیک‌ترین گسل» با Near پاسخ داده می‌شوند.

🛠️ مراحل

  1. ۱از لایه‌ی ورودی نسخه‌ی پشتیبان بگیرید، چون Near فیلدها را به همین لایه اضافه می‌کند.
  2. ۲ابزار Near را باز کنید.
  3. ۳Input Features: لایه‌ای که برای هر عارضه‌اش نزدیک‌ترین همسایه را می‌خواهید (مثلاً Buildings).
  4. ۴Near Features: یک یا چند لایه‌ی هدف (مثلاً FireStations). اگر چند لایه بدهید، از میان همه نزدیک‌ترین پیدا می‌شود.
  5. ۵Search Radius (اختیاری): حداکثر فاصله‌ی جست‌وجو. عوارضی که در این شعاع همسایه ندارند، مقدار -1 می‌گیرند.
  6. ۶Location: اگر فعال شود، مختصات نزدیک‌ترین نقطه روی عارضه‌ی هدف هم در فیلدهای NEAR_X و NEAR_Y نوشته می‌شود.
  7. ۷Angle: اگر فعال شود، زاویه‌ی جهت تا نزدیک‌ترین عارضه در فیلد NEAR_ANGLE ثبت می‌شود.
  8. ۸Method: Planar یا Geodesic.
  9. ۹Run را بزنید و جدول توصیفی ورودی را باز کنید.
فیلد خروجی معنا
NEAR_FID ObjectID نزدیک‌ترین عارضه؛ -1 اگر یافت نشود
NEAR_DIST فاصله تا نزدیک‌ترین عارضه به واحد سیستم مختصات؛ -1 اگر یافت نشود
NEAR_FC مسیر لایه‌ی نزدیک‌ترین عارضه (فقط با چند لایه‌ی هدف)
NEAR_X / NEAR_Y مختصات نزدیک‌ترین نقطه (با Location)
NEAR_ANGLE زاویه‌ی جهت (با Angle)
گردش کار ابزار Near برای یافتن نزدیک ترین عارضه در ArcGIS Pro
مسیر کار ابزار Near در آرک جی آی اس پرو

💡 نکته

NEAR_FID فقط یک عدد است. برای اینکه نام ایستگاه آتش‌نشانی را کنار هر ساختمان ببینید، لایه‌ی ورودی را بر اساس NEAR_FID به ObjectID لایه‌ی FireStations با Add Join وصل کنید.

⚠️ هشدار

Near ورودی را تغییر می‌دهد و این تغییر Undo ندارد. اگر ابزار را دوباره اجرا کنید، مقادیر قبلی بازنویسی می‌شوند. اگر نمی‌خواهید ورودی تغییر کند، از Generate Near Table استفاده کنید.

🧷 Near با چند لایه‌ی هدف

اگر در Near Features چند لایه بدهید (مثلاً Hospitals و Clinics)، ابزار از میان همه‌ی آن‌ها نزدیک‌ترین را پیدا می‌کند و فیلد NEAR_FC نشان می‌دهد نزدیک‌ترین عارضه از کدام لایه بوده است. این برای پرسش‌هایی مثل «نزدیک‌ترین مرکز درمانی از هر نوع» مفید است. اما اگر می‌خواهید فاصله تا نزدیک‌ترین بیمارستان و جداگانه فاصله تا نزدیک‌ترین درمانگاه را داشته باشید، Near را دو بار اجرا کنید و با پارامتر Field Names نام فیلدهای خروجی هر اجرا را متفاوت بگذارید تا اجرای دوم نتایج اولی را بازنویسی نکند.

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

  • Near برای هر عارضه نزدیک‌ترین همسایه را می‌یابد
  • نتیجه در خود ورودی نوشته می‌شود
  • -1 یعنی هیچ همسایه‌ای در شعاع نیست
  • Join روی NEAR_FID برای نام هدف

📋 جدول فاصله‌ها با Generate Near Table

Generate Near Table شبیه Near است با دو تفاوت مهم: ورودی را تغییر نمی‌دهد و نتیجه را در یک جدول جدید می‌نویسد، و می‌تواند برای هر عارضه چند همسایه‌ی نزدیک (نه فقط اولی) را با رتبه‌بندی برگرداند. پرسشی مثل «سه بیمارستان نزدیک به هر روستا و فاصله‌ی هر کدام» دقیقاً کار این ابزار است.

🛠️ مراحل

  1. ۱ابزار Generate Near Table را باز کنید.
  2. ۲Input Features: روستاها. Near Features: بیمارستان‌ها.
  3. ۳Output Table: نام جدول در ژئودیتابیس.
  4. ۴Search Radius: مثلاً 50 Kilometers تا جدول بیش از حد بزرگ نشود.
  5. ۵گزینه‌ی Find only closest feature را غیرفعال کنید؛ در غیر این صورت فقط نزدیک‌ترین برگردانده می‌شود.
  6. ۶Maximum number of closest matches را ۳ بگذارید.
  7. ۷در صورت نیاز Location و Angle و Method را تنظیم کنید.
  8. ۸Run را بزنید.
فیلد معنا
IN_FID ObjectID عارضه‌ی ورودی (روستا)
NEAR_FID ObjectID عارضه‌ی هدف (بیمارستان)
NEAR_DIST فاصله
NEAR_RANK رتبه‌ی نزدیکی؛ ۱ نزدیک‌ترین، ۲ دومی و…
FROM_X / FROM_Y و NEAR_X / NEAR_Y مختصات دو سر کوتاه‌ترین فاصله (با Location)

جدول خروجی رابطه‌ی یک‌به‌چند دارد: هر روستا سه ردیف دارد. برای تحلیل، دو Join بزنید: IN_FID به روستاها و NEAR_FID به بیمارستان‌ها. سپس با Summary Statistics مثلاً میانگین فاصله‌ی سه بیمارستان نزدیک هر روستا را حساب کنید.

💡 نکته

برای دیدن خطوط فاصله روی نقشه، Location را فعال کنید و سپس با ابزار XY To Line از FROM_X/FROM_Y تا NEAR_X/NEAR_Y خط بکشید. این نقشه در گزارش‌ها بسیار گویاست.

📌 یادداشت

فاصله‌ی این ابزارها مستقیم (خط هوایی) است، نه فاصله‌ی جاده‌ای. برای زمان یا مسافت واقعی رانندگی، به تحلیل شبکه (Network Analyst) نیاز دارید.

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

  • Generate Near Table ورودی را تغییر نمی‌دهد
  • چند همسایه با NEAR_RANK
  • جدول یک‌به‌چند است؛ دو Join لازم است
  • فاصله‌ی خط هوایی است نه جاده‌ای

🧮 مقایسه و انتخاب ابزار درست

معیار Select By Location Buffer Near Generate Near Table
داده‌ی جدید می‌سازد؟ خیر بله، لایه خیر، فیلد در ورودی بله، جدول
مقدار فاصله را می‌دهد؟ خیر خیر بله بله
چند همسایه؟ – – فقط اولی بله، با رتبه
ورودی را تغییر می‌دهد؟ فقط انتخاب خیر بله خیر
بهترین کاربرد شمارش سریع نقشه‌ی حریم و هم‌پوشانی فاصله تا نزدیک‌ترین مقایسه‌ی چند گزینه

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

  • پاسخ سریع: انتخاب
  • نقشه و هم‌پوشانی: Buffer
  • یک عدد فاصله: Near
  • چند گزینه با رتبه: Generate Near Table

💼 سه سناریوی کامل تحلیل مجاورت در ArcGIS Pro

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

🌊 سناریو ۱: حریم رودخانه و قطعات متأثر

اداره‌ی منابع آب اعلام کرده حریم رودخانه‌های اصلی ۳۰ متر و رودخانه‌های فرعی ۱۵ متر است. می‌خواهیم بدانیم کدام قطعات ملکی در حریم قرار دارند و چه مساحتی از هر قطعه درگیر است.

  1. ۱در جدول Rivers یک فیلد عددی BufDist بسازید و با Calculate Field برای رودخانه‌های اصلی ۳۰ و برای فرعی ۱۵ قرار دهید.
  2. ۲Buffer را با Distance از نوع Field و انتخاب BufDist و Dissolve All اجرا کنید.
  3. ۳با Pairwise Intersect حریم را با Parcels قطع دهید تا بخش درگیر هر قطعه به‌دست آید.
  4. ۴در خروجی با Calculate Geometry مساحت بخش درگیر را محاسبه کنید.
  5. ۵با Summary Statistics مساحت درگیر را بر اساس شناسه‌ی قطعه جمع بزنید و به Parcels Join کنید.

نتیجه، فهرستی از قطعات با مساحت دقیق درگیر در حریم است که می‌تواند مبنای اطلاع‌رسانی به مالکان باشد. فاصله از فیلد یعنی یک اجرا برای همه‌ی قواعد حریم؛ دیگر نیازی به چند Buffer جداگانه و Merge نیست.

🚒 سناریو ۲: پوشش ایستگاه‌های آتش‌نشانی

استاندارد شهری می‌گوید هر ساختمان باید حداکثر ۲ کیلومتر (خط هوایی، به‌عنوان تقریب اولیه) با یک ایستگاه آتش‌نشانی فاصله داشته باشد.

  1. ۱Near را روی Buildings با Near Features = FireStations و بدون شعاع اجرا کنید.
  2. ۲با Select By Attributes شرط NEAR_DIST > 2000 را بزنید؛ این ساختمان‌ها خارج از پوشش‌اند.
  3. ۳لایه‌ی ساختمان‌ها را بر اساس NEAR_DIST با Graduated Colors در پنج کلاس نمادگذاری کنید تا مناطق کم‌برخوردار دیده شوند.
  4. ۴برای نقشه‌ی ارائه، Multiple Ring Buffer با حلقه‌های ۱، ۲ و ۳ کیلومتری اطراف ایستگاه‌ها بسازید.
  5. ۵با Summarize Within جمعیت هر حلقه را از لایه‌ی بلوک‌های آماری محاسبه کنید.

💡 نکته

در این سناریو، خروجی Near مستقیماً می‌تواند ورودی مکان‌یابی ایستگاه جدید باشد: خوشه‌های ساختمان‌های دور از ایستگاه را با آمار فضایی (فصل بعد) تحلیل کنید تا بهترین مکان پیشنهادی پیدا شود.

🏥 سناریو ۳: دسترسی روستاها به مراکز درمانی

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

  1. ۱Generate Near Table را با Maximum number of closest matches = 3 و شعاع ۱۰۰ کیلومتر اجرا کنید. چون محدوده بزرگ است، Method را Geodesic بگذارید.
  2. ۲جدول خروجی را با Select By Attributes و شرط NEAR_RANK = 3 فیلتر کنید.
  3. ۳رکوردهای با NEAR_DIST بیش از ۴۰ کیلومتر را انتخاب کنید؛ این‌ها روستاهای اولویت‌دارند.
  4. ۴جدول را از طریق IN_FID به لایه‌ی روستاها Join کنید و روستاهای اولویت‌دار را روی نقشه نمایش دهید.
  5. ۵با Table To Excel گزارش را برای کارشناسان بهداشت خروجی بگیرید.

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

  • فاصله از فیلد برای قواعد متفاوت
  • Near و Graduated Colors برای نقشه‌ی پوشش
  • Generate Near Table و NEAR_RANK برای اولویت‌بندی
  • Geodesic برای محدوده‌ی استانی و کشوری

🧭 نکات حرفه‌ای و بهینه‌سازی

  • همیشه سیستم مختصات را بررسی کنید. پیش از هر تحلیل، Properties لایه‌ها را ببینید. اگر داده‌ها در سیستم‌های مختلف‌اند، با Project همه را به یک سیستم تصویر متریک ببرید.
  • شعاع جست‌وجو تعیین کنید. در Near و Generate Near Table، شعاع منطقی زمان اجرا را بسیار کم و جدول را کوچک نگه می‌دارد.
  • خروجی‌ها را با نام توصیفی ذخیره کنید. Schools_Near_Gas_500m بسیار گویاتر از Buffer1 است.
  • اندازه‌ی جدول را پیش‌بینی کنید. Generate Near Table بدون شعاع و با چند همسایه روی دو لایه‌ی بزرگ می‌تواند میلیون‌ها ردیف بسازد.
  • Spatial Index را بررسی کنید. برای شیپ‌فایل‌های بزرگ، Add Spatial Index سرعت ابزارهای مجاورت را بالا می‌برد.
  • نتیجه را روی نقشه ببینید. حتی یک نگاه کوتاه به خروجی، خطاهای واحد و مختصات را بلافاصله آشکار می‌کند.

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

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

  • مختصات یکسان و متریک
  • شعاع جست‌وجو برای سرعت
  • نام‌گذاری توصیفی
  • آزمون دستی با Measure

🧰 ابزارهای مکمل مجاورت

چهار ابزار اصلی این فصل بیشتر نیازها را پوشش می‌دهند، اما چند ابزار دیگر هم ارزش شناختن دارند:

ابزار کار لایسنس یا اکستنشن
Spatial Join با Match Option = Closest انتقال فیلدهای نزدیک‌ترین عارضه به ورودی در یک لایه‌ی جدید Basic
Create Thiessen Polygons تقسیم فضا به ناحیه‌هایی که هر نقطه‌اش به یک عارضه‌ی خاص نزدیک‌تر است Advanced
Distance Accumulation سطح پیوسته‌ی فاصله به‌صورت رستر، با در نظر گرفتن موانع و هزینه Spatial Analyst
Near 3D نزدیک‌ترین عارضه با احتساب ارتفاع 3D Analyst
Point Distance ماتریس فاصله‌ی همه‌ی نقاط تا همه‌ی نقاط در شعاع Advanced
ابزارهای مکمل تحلیل مجاورت در ArcGIS Pro
ابزارهای تکمیلی تحلیل فاصله در آرک جی آی اس پرو

Spatial Join با گزینه‌ی Closest جایگزین خوبی برای Near است وقتی می‌خواهید ورودی دست نخورد و همه‌ی فیلدهای عارضه‌ی هدف (نه فقط شناسه) در خروجی بیاید. در این حالت می‌توانید با پارامتر Distance Field Name فاصله را هم در خروجی ثبت کنید.

💡 نکته

نقشه‌ی Thiessen برای «حوزه‌ی نفوذ» بسیار گویاست؛ مثلاً اینکه هر خانه به کدام شعبه‌ی بانک نزدیک‌تر است. اگر لایسنس Advanced ندارید، با Spatial Join و گزینه‌ی Closest نتیجه‌ی مشابهی به‌صورت جدولی بگیرید.

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

  • Spatial Join Closest بدون تغییر ورودی
  • Thiessen برای حوزه‌ی نفوذ
  • Distance Accumulation برای فاصله با مانع
  • Near 3D برای ارتفاع

🎨 نمایش حرفه‌ای نتایج مجاورت

تحلیل درست وقتی دیده می‌شود که درست نمایش داده شود. چند الگوی نمایش پیشنهادی:

  • حریم‌ها با شفافیت: لایه‌ی Buffer را با رنگ ملایم و شفافیت ۵۰ تا ۶۰ درصد بگذارید تا عوارض زیرین دیده شوند.
  • حلقه‌ها با رنگ پیوسته: Multiple Ring Buffer را با Graduated Colors بر اساس فیلد distance و یک طیف تک‌رنگ از تیره (نزدیک) به روشن (دور) نمایش دهید.
  • فاصله با اندازه یا رنگ: لایه‌ی نقطه‌ای را بر اساس NEAR_DIST با Graduated Symbols یا Graduated Colors نمادگذاری کنید تا دورترین عوارض بلافاصله دیده شوند.
  • خطوط ارتباط: با XY To Line خطوطی از هر عارضه تا نزدیک‌ترین هدف رسم کنید؛ این «نقشه‌ی عنکبوتی» برای ارائه بسیار گویاست.
  • برچسب فاصله: برای عوارض مهم، برچسبی با عبارت Arcade مانند Round($feature.NEAR_DIST) + " متر" بگذارید.

📌 یادداشت

برای ساخت نقشه‌ی چاپی و خروجی PDF از این نتایج، از Layout استفاده کنید و حتماً مقیاس‌خط و راهنمای حلقه‌ها را اضافه کنید تا خواننده فاصله‌ها را بفهمد.

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

  • شفافیت برای حریم
  • طیف تک‌رنگ برای حلقه‌ها
  • XY To Line برای نقشه‌ی عنکبوتی
  • برچسب Arcade برای فاصله

🐍 خودکارسازی تحلیل مجاورت با Python

وقتی تحلیل مجاورت باید هر ماه با داده‌ی جدید تکرار شود، یک اسکریپت کوتاه زمان را از ساعت به ثانیه می‌رساند:

import arcpy
arcpy.env.workspace = r"C:\GIS\City.gdb"
arcpy.env.overwriteOutput = True
arcpy.analysis.Buffer("Rivers", "Rivers_Buf", "BufDist", dissolve_option="ALL")
arcpy.analysis.Near("Buildings", "FireStations", search_radius="5000 Meters")
arcpy.analysis.GenerateNearTable("Villages", "Clinics", "Village_Clinic_Near",
    search_radius="100 Kilometers", closest="ALL", closest_count=3, method="GEODESIC")
print("Proximity analysis done")

همین گردش کار را می‌توانید در ModelBuilder هم بسازید تا همکاران بدون دانش برنامه‌نویسی با یک کلیک اجرا کنند. پارامترهای فاصله را در مدل به‌صورت Model Parameter تعریف کنید تا کاربر بتواند فاصله را تغییر دهد.

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

  • overwriteOutput برای اجرای تکراری
  • پارامترهای Python همان پارامترهای پنجره‌ی ابزارند
  • ModelBuilder برای همکاران غیربرنامه‌نویس

🧪 تمرین عملی: مکان‌یابی ایمن مدارس

  1. ۱لایه‌های مدارس، پمپ‌بنزین‌ها، بیمارستان‌ها و رودخانه‌های یک شهر را از داده های آرک جی آی اس پرو بردارید یا خودتان بسازید و همه را به UTM منطقه‌ی خود Project کنید.
  2. ۲با Select By Location مدارسی را که در فاصله‌ی ۳۰۰ متری پمپ‌بنزین هستند انتخاب و تعداد را یادداشت کنید.
  3. ۳با Buffer حریم ۵۰ متری رودخانه‌ها (Dissolve All) بسازید و با Select By Location مدارس داخل حریم را پیدا کنید.
  4. ۴با Near نزدیک‌ترین بیمارستان به هر مدرسه و فاصله را محاسبه کنید و مدارس با فاصله‌ی بیش از ۳ کیلومتر را با رنگ قرمز نمایش دهید.
  5. ۵با Generate Near Table دو بیمارستان نزدیک به هر مدرسه را با رتبه به‌دست آورید و به مدارس Join کنید.
  6. ۶اطراف هر بیمارستان Multiple Ring Buffer با حلقه‌های ۱، ۲ و ۳ کیلومتر بسازید و با Summarize Within تعداد مدارس هر حلقه را بشمارید.
  7. ۷یک نقشه‌ی نهایی با عنوان «ایمنی و دسترسی مدارس» آماده کنید.

💡 نکته

چک‌لیست موفقیت: فاصله‌ی یک مدرسه تا بیمارستان را با Measure دستی بسنجید و با NEAR_DIST مقایسه کنید؛ اختلاف باید ناچیز باشد. تعداد کل مدارس در حلقه‌ها نباید از تعداد کل مدارس بیشتر شود (به لطف Non-overlapping). تمرین‌های بیشتر در تمرین های آرک جی آی اس پرو.

🏙️ سناریوی واقعی: سنجش دسترسی ساکنان به ایستگاه‌های آتش‌نشانی

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

  1. ۱با Buffer دور هر ایستگاه حریم ۲ کیلومتری بسازید و گزینه‌ی Dissolve را روی All بگذارید تا حریم‌ها یکی شوند.
  2. ۲با Select By Location و رابطه‌ی Have their center in، بلوک‌هایی را که خارج از حریم‌اند انتخاب کنید و جمعیت‌شان را در جدول جمع بزنید.
  3. ۳با ابزار Near برای هر بلوک فاصله و شناسه‌ی نزدیک‌ترین ایستگاه را محاسبه کنید و نقشه را بر اساس فیلد فاصله طبقه‌بندی کنید.
  4. ۴خوشه‌های بلوک‌های دور و پرجمعیت را به‌عنوان گزینه‌های محل ایستگاه جدید علامت بزنید.

📌 یادداشت

فاصله‌ی مستقیم (اقلیدسی) فقط تقریب اولیه است. زمان رسیدن واقعی خودرو به شبکه‌ی معابر، یک‌طرفه‌ها و ترافیک بستگی دارد و برای تصمیم نهایی باید با ابزارهای Network Analyst و تحلیل Service Area بررسی شود.

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

مشکل علت راه‌حل
فاصله‌ها عددهای خیلی کوچک مثل ۰٫۰۰۴ هستند داده در مختصات جغرافیایی و واحد درجه Geodesic یا Project به UTM
حریم‌ها بیضی یا نامتقارن‌اند داده در Web Mercator یا سیستم نامناسب Geodesic یا سیستم تصویر محلی
NEAR_DIST برابر -1 است همسایه‌ای در شعاع نیست افزایش Search Radius
Generate Near Table بسیار طولانی است بدون شعاع و داده‌ی بزرگ تعیین شعاع منطقی
گزینه‌ی Side Type غیرفعال است لایسنس Basic Buffer کامل و سپس Pairwise Erase
Select By Location چیزی انتخاب نمی‌کند واحد فاصله اشتباه یا لایه‌ی مرجع خالی بررسی واحد و انتخاب‌های قبلی
حریم‌ها روی هم افتاده‌اند Dissolve = None Dissolve All یا By field

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

🔹 تحلیل مجاورت در ArcGIS Pro به چه لایسنسی نیاز دارد؟

Select By Location، Buffer، Pairwise Buffer، Multiple Ring Buffer، Near و Generate Near Table در لایسنس Basic در دسترس‌اند. برخی گزینه‌های Buffer مثل Side Type و End Type و ابزار Point Distance به لایسنس Advanced نیاز دارند.

🔹 تفاوت Buffer و Select By Location چیست؟

Select By Location فقط عوارض موجود را انتخاب می‌کند و داده‌ی جدیدی نمی‌سازد. Buffer یک لایه‌ی چندضلعی جدید از حریم می‌سازد که می‌توان آن را نمایش داد، اندازه گرفت و با لایه‌های دیگر هم‌پوشانی کرد.

🔹 تفاوت Near و Generate Near Table چیست؟

Near فقط نزدیک‌ترین عارضه را پیدا و نتیجه را در جدول خود ورودی می‌نویسد. Generate Near Table ورودی را تغییر نمی‌دهد، یک جدول جدید می‌سازد و می‌تواند چند همسایه‌ی نزدیک را با رتبه برگرداند.

🔹 چرا فاصله‌های خروجی من عجیب هستند؟

تقریباً همیشه به سیستم مختصات برمی‌گردد. اگر داده در مختصات جغرافیایی یا Web Mercator است، روش Geodesic را انتخاب کنید یا داده را به یک سیستم تصویر متریک محلی مثل UTM ببرید.

🔹 آیا این ابزارها فاصله‌ی جاده‌ای را می‌دهند؟

خیر؛ همه‌ی ابزارهای این آموزش فاصله‌ی مستقیم یا خط هوایی را می‌سنجند. برای مسافت یا زمان واقعی سفر روی شبکه‌ی معابر به اکستنشن Network Analyst نیاز دارید.

🔹 چطور حریم متفاوت برای عوارض مختلف بسازم؟

در جدول ورودی یک فیلد عددی با فاصله‌ی هر عارضه بسازید و در Buffer گزینه‌ی Distance را از نوع Field انتخاب کنید.

🔹 Pairwise Buffer چه زمانی بهتر از Buffer است؟

برای داده‌های بزرگ؛ Pairwise Buffer با پردازش موازی کار می‌کند و معمولاً بسیار سریع‌تر است. خروجی آن در بیشتر کاربردها با Buffer معادل است.

🔹 تحلیل مجاورت با فاصله‌ی مستقیم چقدر قابل اعتماد است؟

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

🏁 جمع‌بندی

در این فصل تحلیل مجاورت در ArcGIS Pro را از ساده تا پیشرفته مرور کردیم: با Select By Location عوارض را در یک فاصله‌ی مشخص انتخاب کردیم، با Buffer و Multiple Ring Buffer حریم و حلقه‌های فاصله ساختیم، با Near نزدیک‌ترین عارضه و فاصله‌اش را به جدول اضافه کردیم و با Generate Near Table چند همسایه‌ی نزدیک را رتبه‌بندی کردیم. همچنین دیدیم که سیستم مختصات و روش Planar یا Geodesic مهم‌ترین عامل درستی نتایج است. در فصل بعد از فاصله فراتر می‌رویم و الگوهای پراکندگی داده‌ها را با فصل سیزدهم: آمار فضایی در ArcGIS Pro بررسی می‌کنیم.

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

  • سیستم مختصات را اول بررسی کنید
  • انتخاب برای پاسخ سریع، Buffer برای نقشه
  • Near برای یک فاصله، Generate Near Table برای چند گزینه
  • نتیجه را با Measure آزمون کنید

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

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

📖 منابع: مستندات رسمی Esri: Buffer tool و Near tool.

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

بدون دیدگاه

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