برنامه افزودن فیلد گره ابتدایی و انتهایی به لایه خطی

شاید برای شما هم پیش آمده باشید که یک لایه خطی- مثلا شبکه معابر، راه ها، رودخانه ها و…- داشته و بخواهید بدانید هر کدام از خطوط این لایه با چه خطوطی ارتباط دارد و به چه خطوطی وصل است. اما لایه خطی به خودی خود هیچ اطلاعی در این زمینه در اختیار شما قرار نمی دهد.

البته در بسیاری از موارد که به چنین اطلاعی نیاز هست معمولا پای یک آنالیز شبکه در میان است و چون آنالیزهای شبکه را می توان با ساخت یک شبکه هندسی (Geometric Network) از روی لایه خطی مورد نظر در ArcCatalog یا ArcMap و سپس استفاده از این شبکه هندسی در آنالیز به انجام رساند طبیعتا نیاز شما به دانستن ارتباطات بین خطوط مرتفع می شود؛ چرا که شبکه هندسی همه این ارتباطات را درون خود دارد.

اما شبکه هندسی این ارتباطات را در اختیار شما قرار نمی دهد بلکه به طور ضمنی درون خود ذخیره می کند. شما از شبکه هندسی تنها یک لایه خطی و یک لایه نقطه ای مربوط به گره ها را خواهید دید. (گره محل تقاطع خطوط است که می تواند نمایانگر چهارراه، میدان، …. باشد). کاری که اینجا برای حل مشکل در پی انجام آن هستیم افزودن دو فیلد به لایه خطی است که گره ابتدایی و گره انتهایی هر خط را مشخص می کنند. با وجود این دو فیلد- ولو که لایه گره ها را نداشته باشید- باز می توانید ارتباطات بین خطوط را تعیین کنید. کافی است در جدول مقدار گره ابتدایی و انتهایی خط مورد نظر را خوانده و سپس با انجام یک تحلیل Select By Attribute ببینید چه عوارضی در فیلد گره ابتدایی و انتهایی مقدار این دو گره وجود دارد. این عوارض همان خطوطی هستند که به خط موردنظر ما متصل هستند.

اما فیلد گره ابتدایی (From_Node) و گره انتهایی (To_Node) را چگونه باید ساخت؟ اینجاست که کد زیر که در ArcObjects 10 نوشته شده است به کمک شما می آید. اما قبل از پرداختن به کد:

1- از دستور Planarize Lines در نوارابزار Toplogy برای شکستن خطوط در جایی که اتصال وجود دارد استفاده کنید. این دستور باعث می شود که خطوطی که از روی همدیگر عبور کرده اند در محل تقاطع به خطوط کوچکتری شکسته شوند. (برای استفاده از این گزینه باید Start Editing از تولبار Editing را فعال کرده و سپس تمام عوارض درون لایه را انتخاب کنید تا دکمه Planarize فعال شود.)

planarize thumb برنامه افزودن فیلد گره ابتدایی و انتهایی به لایه خطی

2- یک Network Dataset از روی لایه خطی بسازید. با این عمل شما یک لایه نقطه ای به نام Junctions دارید که محل تقاطع ها را به شما نشان می دهید. از این لایه نقطه ای یک خروجی Shapefile بگیرید. در ادامه از این لایه استفاده خواهیم کرد.

اصل برنامه که در محیط VB.NET و ArcGIS 10 نوشته شده به شکل زیر است:

در این کد فرض شده که در محیط ArcGIS، لایه گره ها (Nodes.shp) لایه اول و لایه خطی شما لایه دوم از فهرست لایه هاست. این کد برای قالب AddIn و در Visual Studio 2008 نوشته شده است و در محیط ArcObjects قابل استفاده است. برای محیط ArcEngine کد فوق نیاز به تغییراتی جزئی در بخش معرفی نقشه و لایه ها در ابتدای برنامه خواهد داشت.

همچنین برای اجرای کد فوق نیاز دارید تا ارجاعاتی (Reerences) را به کتابخانه های Carto ، Geodatabase و Geometry به پروژه خود در Visual Studio اضافه کرده و این کتابخانه در بالای کلاس خود تعریف کنید. تعریف این کلاس ها در VB.NET با دستورات زیر انجام می شود که قبل از اولین خط تعریف کلاس قرار می گیرند:

 

کد فوق دو فیلد From_Node و To_Node به لایه خطی شما اضافه می کند که حاوی FID گره ابتدایی و انتهایی هر خط هستند. حال می توانید لایه گره ها را حذف کرده و از لایه خطی خود برای انجام آنالیزهایی که نیاز دارید استفاده کنید.

Суть продвижения сайта в примитиве сводится к следующему: определить ключевое слово, которое регулярно запрашивают пользователи в поисковых системах (например, запрос &#8220,свадебный букет из пионов&#8221, дословно вводят в поисковую форму около 70 раз в месяц), создать на сайте страницу, в тексте которой ГРАМОТНО употребить ключевик &#8220,свадебный букет из пионов&#8221, (например, в заголовке H1 и два раза по тексту), проставить на данную страницу ссылки с других статей данного сайта (внутренняя перелинковка) с указанным ключевиком в качестве текста ссылки (анкора), проставить на страницу ссылки с других сайтов, используя в качестве анкора ключевик (это и есть внешняя оптимизация!) topodin, Доверяйте профессионалам! Позвоните нам! Хотите стать “на шаг” ближе к своим потенциальных клиентам? Мы поможем Вам – закажите услугу “Продвижение в социальных сетях”

مطالب مرتبط

4 نظر

  1. رضا

    سلام و خدا قوت
    از اینکه این همه مطالب علمی و کاربردی را در خدمت دیگران قرار می دهید بسیار سپاسگزارم. ان شاالله خداوند به شما عزیزان توفیق بیشتر بدهد. باز از سایت خوب و آموزنده شما کمال تشکر را دارم.

    پاسخ
  2. pooria

    سلام بر حضرات محترم . بابت مطالب دوستان تشکر می کنم بنده در زمینه نرم افزار ARC GIS و علم GIS چندین سال است که فعالیت می کنم و پروژه های مختلفی را انجام داده ام از جمله دز زمینه شبکه گاز ، GIS Ready شهرداری، طرح های هادی بنیاد مسکن ، عضو انجمن های و گروه های GIS شرکت ESRI هستم و … اما غرض از گفتن این مطالب اینه که بابت gis به لطف خدا یه چیزایی بلد هستم ولی می خواستم در زمینه برنامه نویسی GIS اطلاع کسب کنم من آشنایی نسبی با VB6 و VB.NET و همچنین کتاب ترجمه آقای مهتدس هاشمی که در زمینه برنامه نویسی با ARC Object است را هم دارم ولی اگر کسی از دوستان تا حالا برای arcgis برنامه نویسی کرده در این رابطه اگر امکانش باشه کمکم کنه ممنون میشم.

    پاسخ
  3. حامد

    با سلام و عرض خسته نباشید
    من با اینکه خودم دانشجوی GIS هستم و برای پیشبرد موضوع تز دقیقاً همین کدها رو لازم داشتم واقعاً سوادشو نداشتم و اگرم میخواستم خودم شروع کنم به یادگیری زمان رو از دست می دادم بنابراین تشکر دارم از مدیر سایت و کسی که کدها رو گذاشته. انشاءا… به هر هدف خیری که دارید برسید و اگه تونستم جبران میکنم.

    پاسخ

نظر بدهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *