আর্কম্যাপে সত্যিকারের কার্ভ / আরকস সনাক্তকরণ?


13

আর্কম্যাপে চেনাশোনা তৈরি করার একমাত্র ভাল উপায় হ'ল সত্য আরাক ব্যবহার করা (যৌগিক বক্ররেখা) তবে একটি সামঞ্জস্যতার সমস্যার কারণে আমার এগুলি ভার্টেক্সে (ডেনসাইফাই) রূপান্তর করা দরকার। জিওডাটাবেসস এবং এসডিও_ জ্যামিতি (আরসিএসডি) এর জন্য আমার তথ্য দরকার

এবং হ্যাঁ একটি উপায় আছে। আমি ব্যবহার করি:

UPDATE layer1 a SET arctype = 'compound' WHERE has_compound_curves(a.shape) <> 0;

এবং তারপরে স্তরটি স্তরকে ঘন করতে ET জিওটুলগুলি ব্যবহার করে।

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

আমি কীভাবে আর্কম্যাপে প্রকৃত আরকসকে সনাক্ত করতে পারি এবং কীভাবে এগুলি সম্ভব এবং দ্রুত এবং সহজেই ঘন করা যায়?

ওরাকল এসকিউএল এর জন্য একই।


এখানে 2006 এর একটি থ্রেড যা সত্য আরকেস সন্ধান করতে ভিবিএ ব্যবহার করে, তবে যেহেতু আরকজিআইএস আর ভিবিএ সমর্থন করে না, তাই এটি করার জন্য কি পাইথন বা ইউআই উপায় আছে?
রায়ানকডাল্টন

আমি আশা করছি যে এই "আর্কজিআইএস আইডিয়া" এর অর্থ এই নয় যে 10.0 তে সত্য বক্ররেখা খুঁজে পাওয়া অসম্ভব।
রায়ানকডাল্টন

উত্তর:


8

আমাকে আজ এই প্রশ্ন জিজ্ঞাসা করা হয়েছিল ("যদি কোনও ফিচার ক্লাসের বক্ররেখা থাকে তবে আমি কীভাবে সনাক্ত করব) এবং কিছু আরকি কোডের পরামর্শ দেওয়া হয়েছিল you আপনি উপযুক্ত হিসাবে নিম্নলিখিত কোডটি সংশোধন করুন (উদাহরণস্বরূপ কোনও বার্তার পরিবর্তে একটি পতাকা পরিবর্তনশীল)

geometries = arcpy.CopyFeatures_management("inputFeatures", arcpy.Geometry())
import json
for g in geometries:
    j = json.loads(g.JSON)
    if 'curve' in j: print "You have true curves!"
    else: print "No curves here"

No curves here
No curves here
You have true curves!
You have true curves!
No curves here
You have true curves!
No curves here
No curves here
You have true curves!
You have true curves!
You have true curves!
You have true curves!
You have true curves!

4

ডেনসিফাই ব্যবহার করে, বক্ররেগগুলি সর্বাধিক ডিফ্লেশন এঙ্গেল বা সর্বাধিক অফসেট বিচ্যুতি পরামিতি দ্বারা ঘনকরণের মাধ্যমে সহজতর করা হয়।

সুতরাং সরলরেখার অংশগুলি অক্ষত রাখা হবে।


1
যদিও এটি প্রকৃত বক্ররেখাগুলি সনাক্ত করতে সহায়তা করবে না, আমি সম্মত হই যে অ্যাঙ্গেল প্যারামিটারের সাথে ডেনসিফ ব্যবহার করা খুব দ্রুত তাদের ঘনত্বের একটি দ্রুত এবং কার্যকর উপায়। অ্যাঙ্গেল প্যারামিটার ব্যবহার করা কেবলমাত্র সঠিক বক্ররেখাকে ঘন করে তোলে, তবে দূরত্ব বিকল্পটি সমস্ত সীমাটি ঘন করে দেয়, যার ফলে ফাইলের আকারের 10x বৃদ্ধি পর্যন্ত (অন্তত আমার পরীক্ষায়, ডিফল্ট পরামিতিগুলি ব্যবহার করে) হয়।
রায়ানকডাল্টন

ঠিক আছে, তাই বিভিন্ন সমাধান আছে, তবে আমার সমস্যাটি হ'ল আমি আমার এসডি লেয়ারে কোনও টুলবক্স ব্যবহার করতে সক্ষম নই, আমরা চেকআউট / চেকইনগুলির জন্য স্তরগুলি লক করছি, আমি যা করতে চাই তা হল একটি সরঞ্জাম / স্ক্রিপ্ট চালানো যা সন্ধান করে এই বক্ররেখা এবং তার পরে ডেনসিফাই, তবে এটি যদি আপনি বলছেন যে কেবলমাত্র ঘনক্ষেত্রটি সত্যিকার অর্কগুলিকে স্পর্শ করে তবে আমি সমস্ত বৈশিষ্ট্যগুলি যাচাই করতে পারি, তবে এমন কোনও সম্পাদনার সরঞ্জাম আছে যা ইটি জিওটুলগুলির চেয়ে বেশি ঘনকরণ করে
জোনাকটিভ

এই উত্তরটি gis.stackexchange.com/a/37082/2969 সোজা লাইনগুলি বের করার চেষ্টা করে, তবে আপনি পুরো স্তরটি থেকে সরলরেখাগুলি বিয়োগ করে বক্ররেখাকে আহরণ করতে পারেন, যাতে আপনি সম্পূর্ণ ডেটা স্পর্শ না করে বাঁকগুলি সনাক্ত করতে পারেন। তবে ইটি জিওটুলগুলি কীভাবে কাজ করে তা আমার কোনও ধারণা নেই।
জিওজেক

জোনাকটিভ, ডেনসিফ টুল যার সাথে জিওজেক লিঙ্ক করেছেন এটি একটি আর্কইডিটর বা আর্কআইএনফো লাইসেন্স সহ উপলব্ধ একটি মূল আর্কজিআইএস সরঞ্জাম, এটি জি জিও উইজার্ডের অংশ নয়।
রায়ানকডাল্টন

2

আমি মনে করি আপনি একবার সেগুলি নির্বাচন করলে আপনি সেগুলি ঘন করতে পারেন। নীচে (স্বাক্ষরিত) কোডটি এটি করতে মানিয়ে নেওয়া যেতে পারে। (ধরে নিই বেজিয়ার কার্ভগুলি অর্ক হিসাবে যোগ্যতা অর্জন করবে)।

public void SelectTrueArcFeatures()
{
    var editor = ArcMap.Application.FindExtensionByName("ESRI Object Editor") as IEditor;
    if (editor.EditState != esriEditState.esriStateEditing)
        throw new Exception("start editing first");
    var fLayer = ((IEditLayers)editor).CurrentLayer;
    if (fLayer.FeatureClass.ShapeType == esriGeometryType.esriGeometryPoint)
        throw new Exception("current edit layer must have polylines or polygons");

    var fSel = fLayer as IFeatureSelection;
    fSel.Clear();
    var fCur = fLayer.FeatureClass.Search(null,false);
    IFeature feat;
    while ((feat = fCur.NextFeature()) != null)
    {
        if(HasAnArc(feat.Shape))    
            fSel.SelectionSet.Add(feat.OID);
    }
    fSel.SelectionChanged();
    System.Runtime.InteropServices.Marshal.FinalReleaseComObject(fCur);
    ArcMap.Document.ActiveView.Refresh();
}

private bool HasAnArc(IGeometry geom)
{
    var segcoll = geom as ISegmentCollection;
    if (segcoll == null)
        return false;
    for (int i = 0; i < segcoll.SegmentCount; i++)
    {
        if (segcoll.get_Segment(i) is ICircularArc 
          || segcoll.get_Segment(i) is IBezierCurve)
          return true;
    }
    return false;
}

এই সম্পাদনা লিপি? আমি এই কোডটি কীভাবে অর্কম্যাপে রাখব? এবং কোডটি কীভাবে কাজ করে, এটি কী বেইজকার্ফগুলি খুঁজে পায় বা কেবল আমি (নির্বাচিত) খুঁজে পেয়েছি
তারগুলি ঘনকরণ করে

এটি সি #। আপনি যদি ইতিমধ্যে সি # (বা। নেট কাস্টমাইজেশন) এর সাথে পরিচিত না হন তবে আপনি কাউকে পাইথনের সমতুল্য লিখতে বলবেন। এই কোডটি ব্যবহার করতে আপনাকে এটি ভিজ্যুয়াল স্টুডিওতে সংকলন করতে হবে। এটি বর্তমানের সম্পাদনা টার্গেট লেয়ারের সমস্ত পলাইনগুলি (বা বহুভুজ) নির্বাচন করে যার কোনও অ-রৈখিক বিভাগ রয়েছে।
কर्क কুইকেনডাল

@ জোনাকটিভ আপনি যদি 9.3.1 ব্যবহার করছেন তবে আপনি ক্যালকুলেটর স্ক্রিপ্টে ভিবিএর সাহায্যে এটি করতে পারেন। একটি পতাকা বৈশিষ্ট্য গণনা করুন, তারপরে পতাকা রয়েছে এমন বৈশিষ্ট্যগুলি নির্বাচন করুন। আপনি যদি 8.3 ব্যবহার করছেন তবে আপনি সরাসরি ফিল্ড ক্যালকুলেটর ব্যবহার করে জ্যামিতিটি আপডেট করতে পারেন এবং একটি পতাকা বৈশিষ্ট্যের প্রয়োজন হবে না।
কर्क কুইকেনডাল

চমত্কার! আমি খুব কৃতজ্ঞ, আমি ভয় পেয়েছিলাম যে এটি সম্ভব হয়নি
jonaktiv


2

@ KHibma এর উত্তরে বিল্ডিংয়ের মাধ্যমে ডেটা অ্যাক্সেস কার্সারের টোকন রয়েছে SHAPE@JSONযা jsonমডিউলটি আমদানি না করে কার্ভগুলি পরীক্ষা করতে ব্যবহার করা যেতে পারে ।

with arcpy.da.SearchCursor ("InputFeatures", ["OID@", "SHAPE@JSON"]) as curs:
    for oid, json in curs:
        if "curve" in json:
            print "{} is curved".format (oid)

1

@ জিওজিকের পরামর্শের ভিত্তিতে আমি এর জন্য আমার নিজস্ব সমাধানও তৈরি করেছি। আমি এমন একটি মডেল তৈরি করেছি যা উত্স স্তর স্তরটির শিখার সাথে উত্স স্তরটির একটি ঘনকৃত (অ্যাঙ্গেল বিকল্পটি ব্যবহার করে) অনুলিপিটির সাথে ভার্টেক্সগুলির সাথে তুলনা করে। আউটপুটটি হল উত্সের একটি স্তর যা উত্সটির সাথে "মেলে না"। চূড়ান্ত পদক্ষেপটি এমন সমস্ত উত্স বৈশিষ্ট্যগুলিকে নির্বাচন করে যা তুলনাহীন পয়েন্টগুলিকে ছেদ করে, এর মাধ্যমে এমন বৈশিষ্ট্য সনাক্ত করা যায় যা সত্য বক্ররেখা ধারণ করে।

এই মডেলটি আরকের শুরু এবং শেষ পয়েন্টগুলিতে বৈশিষ্ট্যগুলিকে বিভক্ত করে না বলে পুরো বৈশিষ্ট্যটি রফতানি করা হবে। অতএব, আপনার যদি একটি একক জ্যামিতি থাকে যা "লাইন-বক্ররেখা-রেখা-কার্ভ-রিভার্সেকারভ-লাইন" হিসাবে সংযুক্ত থাকে তবে পুরো বৈশিষ্ট্যটি কেবল কার্ভের অংশ নয়, আউটপুট হবে। প্রকৃত বক্ররেখা কোথায় বিদ্যমান তা নির্ধারণ করতে পয়েন্টগুলি ব্যবহার করুন।

আপনি আর্কজিআইএস রিসোর্স সেন্টার "অ্যানালাইসিস" গ্যালারী থেকে " সনাক্ত করুন ট্রু কার্ভস " নামক মডেলটি ডাউনলোড করতে পারেন ।


আপনাকে সকলকে ধন্যবাদ, এটি দুর্দান্ত। আমাদের কাছে অর্কিগিস ৯.৩.১ রয়েছে তবে আমি আমার প্রাইভেট কম্পিউটারের এডিআইটি পরীক্ষা করব: এটি একটি খুব ভাল সরঞ্জাম, তবে যথেষ্ট দ্রুত নয় যদিও: / আমি যা চাই তা সত্য আর্কের সাহায্যে বৈশিষ্ট্যগুলি সন্ধান / নির্বাচন করার জন্য পরিবেশ সম্পাদনা করতে সক্ষম হতে হবে এবং তারপরে সত্যিক আরাক্স সহ আমার বৈশিষ্ট্যগুলি চেক আউট করুন এবং তারপরে ডেনসিফ করুন (এট জিওটুলের চেয়ে কোনও সম্পাদনা ডেনসিফাই সরঞ্জাম রয়েছে কেন, আমি এট গিটুলগুলি কেন চাই না কারণ আপনার লক্ষ্য স্তরটি পরিবর্তন করতে হবে, আমরা সম্ভবত 10 টি বিভিন্ন স্তরকে ঘনত্বে করি।
জোনাকটিভ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.