মাল্টিপার্ট পললাইন থেকে একটি অংশ পললাইন তৈরি?


11

আমার কাছে একটি পললাইন রয়েছে যা বহুগুণে বিভক্ত এবং এই অংশগুলি ভালভাবে অর্ডার করা হয়নি যাতে ভার্টেক্সের আইডিটি পললাইনটির চক্রান্ত অনুসরণ না করে।

এই পললাইনটি একটি বাস লাইনের প্রতিনিধিত্ব করে এবং আমার বাসের চালনা পথ অনুসরণ করে চক্রান্ত করা দরকার। আমি জানতে চাই কীভাবে এই পললাইনটির মাল্টিপার্টগুলি একীভূত করা যায়?

আমি ইতিমধ্যে স্প্লিট এবং আনস্প্লিট করার পাশাপাশি মাল্টিপার্ট টু সিঙ্গল পার্ট, ইউনিয়ন, মার্জ ইত্যাদি চেষ্টা করেছি কিন্তু আমার ফলাফলটি কেউ আমাকে দিচ্ছে না।


@ বিমোসিয়া, আপনি কি দ্রবীভূতকরণ সরঞ্জামটি ব্যবহার করেছিলেন?
আর্টওয়ার্ক 21

@ আর্টওয়ার্ক 21 হ্যাঁ আমি করেছি, তবে এতে কোনও পরিবর্তন হয় না:
পললাইনটি

পরীক্ষা করে দেখুন জ্যামিতি যাচাই করুন যে বহু-অংশ সঠিকভাবে প্রথম নির্দেশ দেওয়া হয় help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//... তারপর একটি artwork21 গুলা উল্লেখ
Mapperz

আমি জ্যামিতিটি পরীক্ষা করে দেখেছি এবং কোনও সমস্যা নেই বলে জানা গেছে। বহুগুণগুলি চেকজমোমেট্রি তে উপস্থিত হয় না কারণ তারা ইতিমধ্যে পললাইনের অংশ।
বমৌসিয়া

আমার পললাইনটির মাল্টিপার্টস যেখানে আমার পললাইন রয়েছে সেই স্তরটি সম্পাদনা করার সময় উপস্থিত হবে এবং তারপরে ডান ক্লিক করুন -> ভার্টেস সম্পাদনা করুন এবং স্কেচ বৈশিষ্ট্যগুলি দেখুন। আমার পললাইনটির বিবিধ অংশ (মাল্টিপার্ট) এখানে আমি সংযুক্ত করতে চাই।
বমৌসিয়া

উত্তর:


5

আমি আপনার ট্যাগগুলি থেকে দেখতে পাচ্ছি যে আপনি আর্কিজিআইএস 10 চালাচ্ছেন I've আমি অনুরূপ কোনও কাজের জন্য নিম্নলিখিত পদ্ধতিটি ব্যবহার করেছি:

1) একক অংশে মাল্টিপার্ট ব্যবহার করুন

2) আনস্প্লিট ব্যবহার করুন

এটি কাজ করার জন্য (যেমন আপনার যথাযথ ক্রমে লাইনগুলি রয়েছে) আপনার প্রয়োজন হতে পারে উপাদানটি শেষ পয়েন্টগুলিতে বিভক্ত করতে হবে এবং তারপরে কোনও বৈশিষ্ট্যের উপর ভিত্তি করে দিকটি পরিবর্তন করতে হবে (উদাহরণস্বরূপ 1 = শুরু, 2 = শেষ) - আপনি এটি শর্তসাপেক্ষে কেবলমাত্র পয়েন্টগুলি পৃথকভাবে সংযুক্ত করতে ব্যবহার করতে পারেন (যদি 1 + 2 তবে সংযোগকারী লাইন তৈরি করুন)।

আপনি যদি কোনও আইডিই নিয়ে কাজ করে থাকেন তবে কোডটি করার জন্য কোডটি বেশ দীর্ঘ, তবে আপনার যদি নির্দিষ্ট প্রশ্ন থাকে তবে আমি সাহায্য করার জন্য যথাসাধ্য চেষ্টা করব।


1
"আনস্প্লিট লাইন" এর জন্য একটি আর্কইনফো লাইসেন্স প্রয়োজন। আপনার যদি এই লাইসেন্স স্তরটি না থাকে তবে "দ্রবীভূত করুন" ব্যবহার করুন, এটির আনস্প্লিট লাইন বিকল্প রয়েছে।
klewis

1

এভি 3.x এবং অ্যাভিনিউ ব্যবহার করে বেশ কিছুক্ষণ আগে আমাকে ঠিক একই কাজ করতে হয়েছিল। আমি কোডটি তাত্ক্ষণিকভাবে খুঁজে পেয়েছি তবে এটি খুঁজে পেল না। যদি আমি মনে করি সঠিকভাবে যুক্তিটি এরকম কিছু হয়েছিল: (আমার কাছে বাস স্টপস এবং টার্মিনালগুলি আলাদা পয়েন্টের শেফফাইল হিসাবে ছিল তাই আমি শুরু এবং শেষ অংশগুলি নির্ধারণ করতে সক্ষম হয়েছি):

  1. সাজানো অংশগুলি পাওয়ার জন্য একটি খালি পললাইন তৈরি করুন। একে 'বাছাই করা পললাইন' বলি
  2. প্রথম অংশটি পেতে:

    2A। টার্মিনাল শুরু করতে নিকটতম অংশটি পান

    2b। এই অংশের শুরু এবং শেষ নোডের দূরত্বগুলি শুরু টার্মিনালে পান। শুরু প্রান্তটি যদি নিকটতম হয় তবে এই অংশটি 'সাজানো পলিনে' যুক্ত করুন। যদি এর শেষটি হয় - এটিকে এফ্লাইপ করুন এবং তারপরে এটি যুক্ত করুন।

  3. মাঝের এবং শেষ অংশগুলি পেতে, আপনি পূর্ববর্তী ধাপে তৈরি অংশ (পললাইন) দিয়ে শুরু করুন এবং কিছুক্ষণের মধ্যে (সত্য) লুপটি, ইনপুটটির প্রথম অংশের শেষ নোডের মধ্যবর্তী দূরত্বের সাথে অন্য অংশের সাথে তুলনা শুরু করুন পলিলাইন। যেটি সবচেয়ে নিকটে এটি হ'ল 'পরের অংশ'। 'সাজানো পল্লীকরণে' যুক্ত করার আগে এটিকে উল্টানো হবে কিনা তা নির্ধারণ করতে পরবর্তী অংশের শুরু এবং শেষ নোডের দূরত্বের সাথে তুলনা করুন
  4. লন্ড থেকে প্রস্থান করুন যখন 'সাজানো পলিনলাইনে' অংশের সংখ্যা ইনপুট পললাইনের মতো হয়।

... বা এরকম কিছু! :-)

এটি আপনার কাছে বোধগম্য হয় এবং আমাকে আমার আসল অ্যাভিনিউ কোডটি সন্ধান করতে আরও কিছু করতে পারি তা আমাকে জানান।


1

আমি এর অনুরূপ একটি প্রকল্পে কাজ করেছি, আমি আরকোবজেক্টস ব্যবহার করেছি। আমার লক্ষ্যটি দুটি সংলগ্ন পলিনগুলিকে সংযুক্ত করছিল যদি এর একের শেষ বিন্দুতে অন্য একটির একের প্রথম বিন্দুতে দুটি সংক্ষিপ্ত পলিনগুলিকে একক পললিনে পরিণত করা হয়। আমার প্রক্রিয়াটি ছিল:

1. Dictionary<PointKey, FeatureDataList> polylineDictionary;
  • পয়েন্টকি একটি শ্রেণি যা একটি বিন্দু ধারণ করে।
  • ফিচারডাটালিস্ট এমন একটি শ্রেণি যা আইফাইচারগুলির তালিকা অন্তর্ভুক্ত করে।
  • উভয় শ্রেণি "সমান" এবং "গেটহ্যাশকোড" পদ্ধতিগুলিকে ওভাররাইড করে।

    Dictionary<PointKey, FeatureDataList> ToPointDictionary;
    Dictionary<PointKey, FeatureDataList> FromPointDictionary;
    public void CreateDictionary(IFeatureLayer featureLayer)
    {
        var featureFunctionality = new FeatureFunctionality();
        List<IFeature> features = GetAllFeatures(featureLayer.FeatureClass);
    
        foreach (var feature in features)
        {
            IPolyline polyline = GetPolylineFromFeature(feature);
            AddFeatureInDictionary(ToPointDictionary, feature, polyline.ToPoint);
            AddFeatureInDictionary(FromPointDictionary, feature, polyline.FromPoint);
        }
    }
    
    
    
    void AddFeatureInDictionary(Dictionary<PointKey, FeatureDataList> polylineDictionary, IFeature feature, IPoint point)
    {
        FeatureDataList featureDataList;
        PointKey key = PointKey.GetKey(point);
        if (!polylineDictionary.ContainsKey(key))
        {
            featureDataList = new FeatureDataList();
            featureDataList.Add(feature);
            polylineDictionary.Add(key, featureDataList);
        }
        else
        {
            featureDataList = polylineDictionary[key];
            featureDataList.Add(feature);
        }
    }
    

এই প্রক্রিয়া দ্বারা আমি দুটি অভিধান তৈরি। অভিধান তৈরি করার পরে, আমি উভয় অভিধানে একই পয়েন্ট রয়েছে কিনা এবং উভয় অভিধানে পরীক্ষা করে দেখছি, সেই কীটিতে বৈশিষ্ট্য তালিকায় কেবল একটি বৈশিষ্ট্য রয়েছে, তবে আমি সেই দুটি পলাইন দিয়ে একটি নতুন পললাইন তৈরি করেছি এবং দুটি সংক্ষিপ্ত পলিনগুলি মুছলাম।

একটিতে দুটি পলিইন যোগ দিতে:

   private IPolyline GetJoinedPolylineFromFeatures(List<IFeature> features)
   {
        IPolyline newPolyline = null;
        if (features.Count == 2)
        {
            IPolyline polyline1 = feature1.Shape as IPolyline;
            IPolyline polyline2 = feature2.Shape as IPolyline;
            if (PointKey.GetKey(polyline1.ToPoint).Equals(PointKey.GetKey(polyline2.FromPoint)))
            {
                var topoOperator2 = polyline1 as ITopologicalOperator2;
                if (topoOperator2 != null)
                    newPolyline = topoOperator2.Union(polyline2) as IPolyline;
            }
            else if (PointKey.GetKey(polyline1.FromPoint).Equals(PointKey.GetKey(polyline2.ToPoint)))
            {
                var topoOperator2 = polyline2 as ITopologicalOperator2;
                if (topoOperator2 != null)
                    newPolyline = topoOperator2.Union(polyline1) as IPolyline;
            }
        }
        return newPolyline;
  }

1

"পুনঃসাম্পরণ বৈশিষ্ট্য" সরঞ্জামটি ব্যবহার করে বাস রুটে যে আপডেট হয়েছিল তার কারণে আমার ঠিক একই সমস্যা হয়েছিল। দ্রবীভূত করা, মার্জ এবং আনস্প্লিট কাজ করছে না কারণ বহুগুণ বৈশিষ্ট্য কাকতালীয় ছিল না।

আপনি যদি এখনই এটি নজরে না পেয়ে থাকেন তবে আপনার মাল্টিপার্ট বৈশিষ্ট্যের সাথে মিল থাকা আবৃত্তিকাগুলিটি ঘনিষ্ঠভাবে দেখুন। প্রয়োজনীয় হিসাবে প্রসারিত করুন, ছাঁটাই করুন বা পুনরায় আকার দিন এবং তারপরে উপরে বর্ণিত যেকোন সরঞ্জাম ব্যবহার করুন।


ওহ, এবং উপায় দ্বারা: "কাছাকাছি চেহারা" দ্বারা আমি বোঝাচ্ছি খুব খুব ক্লোজ।
আব্রাহাম এল

1
আমারও একই সমস্যা ছিল এবং অব্রাহামের পরামর্শ অনুসারে অংশের সমাপ্ত অংশটিকে আরও ঘনিষ্ঠভাবে দেখেছিলাম। তারা আসলে সংযুক্ত ছিল না। শেষবিন্দু স্ন্যাপিং চালু করুন এবং একসাথে শেষ প্রান্তগুলি স্ন্যাপ করুন, সমস্যার সমাধান হয়েছে .. আমার জন্য যাই হোক।
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.