समभुज बिंदुओं के समूह में एक रेखा को कैसे विभाजित किया जाए


11

इसके लिए XTools पर भरोसा करते थे, लेकिन मेरे वर्तमान परिवेश में, मेरे पास इसकी पहुंच नहीं है।

मैं ArcMap10 में ऐसा करने की कोशिश कर रहा हूं।

लक्ष्य समान रूप से स्थान बिंदुओं के एक समूह में एक धारा के एक पंक्ति प्रतिनिधित्व को तोड़ना है ताकि अंततः उन बिंदुओं पर z मान निर्धारित किया जा सके ताकि मैं ढाल का निर्धारण कर सकूं।


मेरा इरादा वर्कफ़्लो इस तरह है।

  1. बिंदुओं में धारा को विभाजित करें
  2. GME का उपयोग करके DEM के साथ बिंदुओं को काटें
  3. बिंदुओं के बीच की दूरी का निर्धारण करके, मुझे यह निर्धारित करने में सक्षम होना चाहिए कि ग्रेडिएंट है।
  4. ऐसा लगता है कि यह मूल डेटा को मूल स्ट्रीमलाइन में वापस एकीकृत करने के लिए समझ में आता है। इस चरण के बारे में पता न करें।

मैं अपने तरीके की किसी भी आलोचना की सराहना करता हूं, लेकिन इस बिंदु पर मेरी प्राथमिकता उन धाराओं को बिंदुओं में परिवर्तित कर रही है।

धन्यवाद!


1
क्या आप चाहते हैं कि दूरी माप के आधार पर हो (मी) या सरल है जो प्लैनिमीटर x / y दूरी पर आधारित है?
कर्क कुक्केंडल

एक उपाय किर्क के संबंध में।
जैक्स टार्डी

जवाबों:


6

मैं अभी तक ArcGIS 10 का उपयोग नहीं कर रहा हूं, लेकिन 9.3.1 में आप अपनी लाइन लेयर पर एक एडिट सेशन शुरू कर सकते हैं, उस फीचर को हाइलाइट करें, जिसे आप डिवाइड करना चाहते हैं, एडिटर टूलबार ड्रॉप डाउन पर डिवाइड ऑप्शन को चुनें। यहां आप चयनित सुविधा को विभाजित करने के लिए दूरी निर्दिष्ट कर सकते हैं। आप प्रत्येक विभाजित खंड के लिए एक बिंदु परत प्राप्त करने के लिए ET GeoWizard (फ्री टूल) के भीतर एक्सपोर्ट नोड्स टूल का उपयोग कर सकते हैं ।

बिंदु डेटा जानकारी को वापस लाइन लेयर में रखने के लिए आप एक स्थानिक जुड़ाव का उपयोग कर सकते हैं। ArcMap TOC में अपनी लाइन लेयर पर राइट क्लिक करें और Join and Relates> Join सेलेक्ट करें। पहली ड्रॉप डाउन पर "स्थानिक स्थान के आधार पर किसी अन्य परत से डेटा सम्मिलित करें" विकल्प चुनें।


धन्यवाद कलाकृति, मैं आज बाद में यह कोशिश करूँगा। मेरे लिए बहुत ही उचित लगता है! धन्यवाद :)
जैक्स टार्डी

4

मैं UI पर एक उपकरण के बारे में नहीं जानता जो ऐसा करता है, लेकिन यह IMSeactation3 इंटरफ़ेस के माध्यम से प्रोग्रामेटिक रूप से किया जा सकता है ।

protected override void OnClick()
{
    try
    {
        var fSel = ArcMap.Document.FocusMap.get_Layer(1) as IFeatureSelection;
        if (fSel.SelectionSet.Count == 0)
        {
            MessageBox.Show("choose a line feature first");
            return;
        }
        var gc = ArcMap.Document.FocusMap as IGraphicsContainer;
        IFeature feat = ((IFeatureLayer)fSel).FeatureClass.GetFeature(fSel.SelectionSet.IDs.Next());
        var pnts = GetPoints((IPolyline)feat.ShapeCopy, 2.0);
        foreach (IPoint pnt in pnts)
        {
            var elem = new MarkerElementClass() as IElement;
            elem.Geometry = pnt;
            ((IMarkerElement)elem).Symbol = new SimpleMarkerSymbolClass();
            gc.AddElement(elem, 0);
        }
        ((IActiveView)ArcMap.Document.FocusMap).PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

/// <summary>
/// Get points at evenly spaced measures along a polyline
/// </summary>
/// <param name="polyline"></param>
/// <param name="count"></param>
/// <returns></returns>
private List<IPoint> GetPoints(IPolyline polyline, double mspacing)
{
    var outList = new List<IPoint>();

    var mseg = polyline as IMSegmentation3;
    if (mseg.MMonotonic == esriMMonotonicEnum.esriMNotMonotonic)
        throw new Exception("polyline not monotonic");
    for (double m = mseg.MMin; m <= mseg.MMax; m += mspacing)
    {
        var geomcoll = mseg.GetPointsAtM(m, 0.0);
        if (geomcoll != null && geomcoll.GeometryCount > 0)
        {
            var pnt = geomcoll.get_Geometry(0) as IPoint;
            outList.Add(pnt);
        }
    }
    return outList;
}

0

आप स्ट्रीम के एक छोर पर एक बफर बना सकते हैं और फिर उस बिंदु को पहचान सकते हैं जहां आपका बफर स्ट्रीम को इंटरसेप्ट करता है। तब आप इस कदम को दोहरा सकते हैं। यह आपको स्ट्रीम की सटीक दूरी नहीं देगा (क्योंकि यह स्ट्रीम लाइन के बजाय स्ट्रेट लाइन है), लेकिन अगर आप फिर इन पॉइंट्स के आधार पर लाइन को सेक्शन्स में विभाजित कर सकते हैं, और उन लाइनों की लंबाई का उपयोग करके ग्रेडिएंट का अनुमान लगा सकते हैं।

यह अजगर में लिपिबद्ध किया जा सकता है अगर यह एक योग्य दृष्टिकोण था!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.