আরকম্যাপ / সি # তে উইন্ডোজ ক্লিপবোর্ড থেকে নির্বাচিত বৈশিষ্ট্য / জ্যামিতি কীভাবে পাবেন?


14

আরক্যাপেপ 10 এ আমার একটি কাস্টম সরঞ্জাম রয়েছে ওয়ার্কফ্লোটি নিম্নলিখিত:

  • "আয়তক্ষেত্র দ্বারা বৈশিষ্ট্য নির্বাচন করুন" সরঞ্জাম সহ একটি স্তরতে বৈশিষ্ট্যগুলি নির্বাচন করুন
  • স্ট্রিপ + সি ব্যবহার করে ক্লিপবোর্ডে বৈশিষ্ট্যগুলি অনুলিপি করুন
  • কাস্টম সরঞ্জাম নির্বাচন করুন
  • সরঞ্জামটি ক্লিপবোর্ডটি পরীক্ষা করে। ক্লিপবোর্ডে একটি অনুলিপিযুক্ত বৈশিষ্ট্য সন্ধানের ক্ষেত্রে ওয়ার্কফ্লো পরিবর্তন হয়

আমি http://kiwigis.blogspot.com/2011/07/how-to-create-DP-target-for-layers-in.html- তে একটি উদাহরণ পেয়েছি যেখানে ড্র্যাগ এবং ড্রপ ব্যবহার করে অনুরূপ জিনিস প্রয়োগ করা হয়।

উদাহরণ অনুসরণ এবং মানিয়ে নেওয়া এবং টিআরসিএপ-এর টিওসি-তে স্তরগুলি স্ট্রিপ + সি ব্যবহার করে ক্লিপবোর্ডে অনুলিপি করার চেষ্টা করা আমার পক্ষে কাজ করছে:

//Get the Data from the Clipboard
IDataObject clipBoardDataObject = Clipboard.GetDataObject();

//The format of the object data is "ESRI Layers" (this can be checked using clipBoardDataObject.GetFormats();) 
MemoryStream geomStream = clipBoardDataObject.GetData("ESRI Layers") as MemoryStream;                
byte[] bytes = geomStream.ToArray();

IMemoryBlobStreamVariant memoryBlobStreamVariant = new MemoryBlobStreamClass();
memoryBlobStreamVariant.ImportFromVariant(bytes);
IMemoryBlobStream2 memoryBlobStream = memoryBlobStreamVariant as IMemoryBlobStream2;
IStream stream = memoryBlobStream as IStream;
IObjectStream objectStream = new ObjectStreamClass();
objectStream.Stream = stream;

byte pv;
uint cb = sizeof(int);
uint pcbRead;

objectStream.RemoteRead(out pv, cb, out pcbRead);
int count = Convert.ToInt32(pv);

//Guid you find in the ESRI ILayer Interface
Guid iLayerGuid = new Guid("34C20002-4D3C-11D0-92D8-00805F7C28B0");

for (int i = 0; i < count; i++)
{
  object o = objectStream.LoadObject(ref iLayerGuid, null);
  ILayer layer = o as ILayer;      
}

আমি বস্তুটি ILayer এ কাস্ট করতে পারি, এটি কাজ করছে!

অনুলিপিযুক্ত বৈশিষ্ট্যগুলির সাথে এটি অর্জনের চেষ্টা করা আমার পক্ষে কাজ করছে না, কমপক্ষে আমি আসলে কী করব তা জানি না।

//Get the Data from the Clipboard
IDataObject clipBoardDataObject = Clipboard.GetDataObject();

MemoryStream geomStream = clipBoardDataObject.GetData("ESRI Geometry List") as MemoryStream;                
byte[] bytes = geomStream.ToArray();

IMemoryBlobStreamVariant memoryBlobStreamVariant = new MemoryBlobStreamClass();
memoryBlobStreamVariant.ImportFromVariant(bytes);
IMemoryBlobStream2 memoryBlobStream = memoryBlobStreamVariant as IMemoryBlobStream2;
IStream stream = memoryBlobStream as IStream;
IObjectStream objectStream = new ObjectStreamClass();
objectStream.Stream = stream;

byte pv;
uint cb = sizeof(int);
uint pcbRead;

objectStream.RemoteRead(out pv, cb, out pcbRead);
int count = Convert.ToInt32(pv);

//What to do next? What object do I need to unpack to?

আপনি এখানে দেখুন যে অবজেক্ট ফর্ম্যাটটি হ'ল "ইএসআরআই জ্যামিতি তালিকা" (যার মধ্যে আমি অনলাইনে কোনও তথ্য খুঁজে পাই না)। তাহলে আমি কীভাবে এই বস্তুটিকে "আনপ্যাক" করব? IFeatureSelection, IFeature, IGeometry অভ্যাস কাজ করে না।

কোন ধারনা?


+1 ভাল প্রশ্ন। গেটডাটাতে "ইএসআরআই জ্যামিতি তালিকা" পাস করার প্রয়োজনীয়তা আপনি কীভাবে নির্ধারণ করলেন?
কर्क কুইকেনডাল

@ কির্ক কুইকেনডাল আমি ক্লিপবোর্ডডাটাঅবজেক্ট.গেটফর্ম্যাটস () কল করতে পারি যা আমাকে ফর্ম্যাটটির একটি তালিকা দেয় যা ডেটা সম্পর্কিত। ক্লিপবোর্ডে আমি বৈশিষ্ট্যগুলি অনুলিপি করার ক্ষেত্রে স্ট্রিংয়ের ফলাফল হ'ল "ইএসআরআই জ্যামিতি তালিকা"।
prisma.ph

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

আমি সিস্টেম, কার্টো, জ্যামিতি, জিওডাটাবেস এবং ফ্রেমওয়ার্কের সমস্ত ইন্টারফেসের সাথে পরীক্ষা করেছি এবং আমি এমন একটি ইন্টারফেস পাইনি যা কাজ করে worked হতে পারে এটি একটি মাইক্রোসফ্ট ইন্টারফেস?
গোলডোরাক 84

সমাধান কি কেউ পেয়েছে? আমি সিস্টেম এবং জিওডাটাবেস ইন্টারফেসে কাস্ট করার চেষ্টা করেছি, তবে কোনও ভাগ্য ছাড়াই।

উত্তর:


2

আমি আপনার সরঞ্জাম / কর্মপ্রবাহের অনুরূপ কিছু করেছি। আমিও বুঝতে পারি না যে কীভাবে একটি স্বয়ংক্রিয় ফ্যাসে কপিরাইট করা বৈশিষ্ট্যগুলি যথাযথ স্তরে সরাসরি প্রেরণ করা যায়। আমার পরিস্থিতির জন্য আমি সম্পাদনা সেশনে থাকাকালীন নির্বাচিত বৈশিষ্ট্যগুলিকে এক স্তর থেকে অন্য স্তরে সরানোর জন্য কপির এবং পেস্ট করার জন্য আর্কম্যাপ কমান্ড ব্যবহার করেছি । ব্যবহারকারীকে কেবল ম্যানুয়াল পদক্ষেপটি কার্যকর করতে হয়েছিল এবং লক্ষ্য স্তরটি সংজ্ঞায়িত করতে হয়েছিল।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.