आर्केप प्रोग्राम में शेपफाइल का संपादन प्रोग्रामिक रूप से?


9

क्या यह कुछ ऐसा है जो किया जा सकता है?

उदाहरण के लिए यदि मैंने नक्शे पर एक ओवरले बनाया है और इसे शेपफाइल के रूप में सहेजा है, तो मैं इसे जाना चाहता हूं और इसे संपादित करना चाहता हूं ( पहले से मौजूद फ़ाइल )।

आदर्श रूप से मैं एक नई आकृति बनाने और पुराने को हटाने से बचना चाहता हूं।

विचार?

संपादित करें 1: ठीक है, अब किसी ने कहा है कि यह किया जा सकता है। स्पष्ट सवाल यह है कि, आप आकार-निर्धारण को कैसे संपादित करें (ArcObjects में प्रो-व्याकरणिक रूप से)?

संपादन 2: टिप्पणियों को देखते हुए ऐसा प्रतीत होता है कि मुझे ऐसा कुछ करने की आवश्यकता है, लेकिन मुझे यकीन नहीं है।

मेरे पास वर्तमान में एक मूल आकृति है जिसे मैं C # में ArcObjects में संपादित करना चाहता हूं।

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

मैं मान रहा हूं कि मुझे उस फीचरक्लास, वर्कस्पेस को फिर से इस्तेमाल करने और नए आकार में पास करने की जरूरत है। हालांकि, मैं जो कर रहा हूं वह काम नहीं करता है। यह वह जगह है जहाँ मैं संपादन पर हूँ - कोई भी सलाह बहुत अच्छी होगी।

IWorkspaceEdit workspaceEdit = (IWorkspaceEdit)inWorkspace;
workspaceEdit.StartEditing(true);
workspaceEdit.StartEditOperation();

ComReleaser comReleaser = new ComReleaser();

IFeatureCursor featureCursor = inFeatureClass.Update(null , true);

IFeature feature = null;
while((feature = featureCursor.NextFeature()) != null)
{
   int id = feature.Fields.FindField("shape");
   IFeatureBuffer featureBuffer = inFeatureClass.CreateFeatureBuffer();
   featureCursor.DeleteFeature(); //Delete the old 
   featureBuffer.Shape = (IGeometry)inShape;
   featureCursor.InsertFeature(featureBuffer);
}

workspaceEdit.StopEdidtOperation();
workspaceEdit.StopEditing(true);

EDIT 3: अंतिम समाधान

featureCursor = inFeatureClass.Update(null ,true);
//DELETE old shape
featureCursor = inFeatureClass.Insert(true);
//Insert new 
workspaceEdit.StopEditOperation();
workspaceEdit.StopEditing(true);

क्या आप कह रहे हैं कि आपने ArcMap के ड्राइंग टूल्स के साथ मैप पर कुछ एनोटेशन लेयर्स खींची हैं? यदि आपने उसे एक आकृति फ़ाइल में परिवर्तित किया है, तो आप निश्चित रूप से इसे संपादित कर सकते हैं जैसे कि यह एक आकार फ़ाइल हो।
ज्वांगेल्ड

मैं एक IPolygon बनाने के लिए ArcMap.TrackPolygon का उपयोग कर रहा हूं और फिर मैं अंततः इसे एक आकृति फ़ाइल में बदल देता हूं। फिर मैं क्या करना चाहता हूं इस आकृति को संपादित करें .... मुझे पता है कि गुण (अंक, भरण, रंग, आदि) कैसे प्राप्त करें
ist_lion

1
तो ArcObjects में प्रो-व्याकरणिक रूप से?
Mapperz

हाँ, मैं यही चाहता हूँ
ist_lion

समाधान साझा करने के लिए धन्यवाद, यदि आप C # के साथ टैग करते हैं, तो आपको सिंटैक्स हाइलाइटिंग मिलेगा।
पैट्रिक

जवाबों:


4

मैंने एक शेपफाइल को प्रोग्रामेटिक रूप से बनाया और हेरफेर किया है - इसलिए हो सकता है कि यह अंक जोड़ने के लिए कुछ संकेत प्रदान कर सकता है: IGeometry को Layer फ़ाइल के रूप में डिस्क पर सेव करें

एक परत को रंगने के लिए, यह बहुत सरल है।

IGeoFeatureLayer geolayer = thislayer as IGeoFeatureLayer;
ISimpleRenderer simplerenderer = geolayer.Renderer as ISimpleRenderer;
if (simplerenderer != null)
{
//depending on the type one of these objects will probably not be null -- then set .Color and .Symbol 

IMarkerSymbol markersymbol = simplerenderer.Symbol as IMarkerSymbol;
ILineSymbol linesymbol = simplerenderer.Symbol as ILineSymbol;
SimpleFillSymbol simpleFillSymbol = simplerenderer.Symbol as SimpleFillSymbol;
}

हम्म, शायद मैं इस सवाल का सही ढंग से जवाब नहीं दे रहा हूं। मैं पहले से ही एक फ़ाइल को प्रोग्रामेटिक रूप से बना और सेव कर सकता हूँ। मैं जो करना चाहता हूं वह इस पहले से मौजूद फ़ाइल को संपादित करना है। मैं अनुमान लगा रहा हूँ कि एक ही तर्क काम करेगा ....
ist_lion

1
@PSU_Kardi मुझे लगता है कि आपको featureCursor.InsertFeature (fb) का उपयोग करना होगा; और featureCursor.DeleteFeature अपनी पूर्व-मौजूदा फ़ाइल को संपादित करने के लिए
patrick

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