سؤال

تواجه مشكلة في تحويل ilayer إلى ipolygon.

أقوم بتطوير شريط أدوات لـ ARCMAP وأمسك طبقة عبر رمز من جدول المحتويات الجانبية. الطبقة عبارة عن مضلع ، لكن الكود لن يحوله إلى ipolygon.

يمكن لأي شخص مساعدتي؟ هذا هو الرمز الذي أستخدمه لمحاولة تحويله إلى ipolygon ...

 IPolygon poly = m_document.Maps.get_Item(0).get_Layer(0) as IPolygon;

أستطيع أن أفعل ذلك:

 ILayer layer = m_document.Maps.get_Item(0).get_Layer(0) as ILayer;

وهذا يعمل ، فقط عدم تحويله إلى iPoingon ..

هل كانت مفيدة؟

المحلول

إذا كنت ترغب في الوصول إلى الأشكال الهندسية الموجودة في طبقة FASEFILE ، فيجب عليك الحصول على فئة ميزة الطبقة. هذه خاصية لواجهة ifeatuRelayer ، لذلك عليك أن تثير طبقتك (وهي ilayer) أولاً:

IFeatureLayer FLayer = layer as IFeatureLayer;
IFeatureClass FClass = FLayer.FeatureClass;

إذا كان لديك فئة ميزة ، فيمكنك الحصول على ميزات حسب الفهرس (بطيء) أو عن طريق تحديد المؤشر على فئة الميزات (هذه سريعة والطريقة المفضلة عندما تريد التعامل مع الكثير من الميزات. ابحث عن ifeaturecurs ؛ مستندات ESRI المعتادة مع قصاصات رمز جيدة).

إذا كانت فئة الميزات الخاصة بك تحتوي على ميزة واحدة فقط ، أو إذا كنت تريد فقط ميزة واحدة ، فيمكنك استخدام طريقة getFeature:

IFeature MyFeature = FClass.GetFeature(0);

أنت الآن هناك على وشك. تم وضع هندسة الميزة في خاصية الشكل:

IPolygon MyPoly = MyFeature.Shape as IPolygon;

هناك حاجة إلى الممثلين الإضافيين لأن خاصية الشكل عبارة عن IPOLYGON ، وهو قياس Igeometry أكثر تحديداً.

نصائح أخرى

سوف يتكون ilayer من مضلعات متعددة. فكر في طبقة كجدول SQL وميزة كصف في هذا الجدول. سوف يشير Ipolygon إلى الهندسة التي تشكل ميزة فردية. قد تحتاج إلى إلقاء هذا ilayer كشيء مثل ifeatuRelayer للوصول إلى الخصائص/الأساليب الصحيحة للوصول إلى الميزات الفردية داخل طبقتك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top