পাইথনের আর্কোবজেক্টস: বৈশিষ্ট্য (আকৃতি) জ্যামিতি সহ বস্তুগুলিকে ইন্টারফেস বরাদ্দ করুন


10

আমি পাইথনে আরকোবজেক্টটি ব্যবহার করার চেষ্টা করছি। জ্যামিতি ডেটা সহ আমার অবজেক্টে একটি ইন্টারফেস (অর্থাত্ IZ.InterplateZsBetween) নির্ধারণে আমার সমস্যা আছে, কোডটি হ'ল:

from Comtypes.client import CreateObject, GetModule
import arcgisscripting

gp = arcgisscripting.create(9.3)
gp.setproduct("ArcInfo")

esriSystem = GetModule("C:/Program Files (x86)/ArcGIS/com/esriSystem.olb")
esriGeometry = GetModule("C:/Program Files (x86)/ArcGIS/com/esriGeometry.olb")
esriDataSourcesGDB = GetModule("C:/Program Files (x86)/ArcGIS/com/esriDataSourcesGDB.olb")
esriGeoDatabase = GetModule("C:/Program Files (x86)/ArcGIS/com/esriGeoDatabase.olb")

sPath ="c:/temp/test.gdb"
pWSF = CreateObject(esriDataSourcesGDB.FileGDBWorkspaceFactory,\
                    interface=esriGeoDatabase.IWorkspaceFactory)
pWS = pWSF.OpenFromFile(sPath, 0)
pFWS = pWS.QueryInterface(esriGeoDatabase.IFeatureWorkspace)
pFClass = pFWS.OpenFeatureClass("test_z")
pFCursor = pFClass.Search(None, True)
pFeat = pFCursor.NextFeature()
pIZ = pFeat.QueryInferface(esriGeometry.IZ2)

কেন এটি কাজ করছে না? আউটপুটটি হ'ল:

 Traceback (most recent call last):
  File "<pyshell#175>", line 1, in <module>
    pIZ = pFeat.QueryInterface(esriGeometry.IZ2)
   File "C:\Python25\lib\site-packages\comtypes\__init__.py", line 1078, in QueryInterface
 self.__com_QueryInterface(byref(iid), byref(p))
 COMError: (-2147467262, 'Taki interfejs nie jest obs\xb3ugiwany.', (None, None, None, 0, 
 None))

সুতরাং আমি চেষ্টা করেছি:

pShape = pFeat.ShapeCopy
pIZ = pShape.QueryInterface(esriGeometry.IZ2)
pShape.InterpolateZsBetween(0, 0, 0, 4)

এবং এই কাজ করছে। তবে কীভাবে এটিকে পিছনে রেখে আমার বৈশিষ্ট্যে সংরক্ষণ করতে হবে? আমি পাইথন এবং আরকোবজেক্টস শিখছি, সুতরাং দয়া করে বোধগম্য হন। যে কোন ধরণের সাহায্য গ্রহন করা হবে.


1
সিওএম এবং পাইথন দেখতে খুব সুন্দর দেখাচ্ছে না, তবে এটি সেই রুট যা আপনাকে যা চাইবে তা পাবে। এতদূর এত দ্রুত পাওয়ার জন্য +1!
রাগী ইয়াছার বারহুম

কিছু সহায়ক কাজের সাথে আপনি এটি বেশ খানিকটা আপ করতে পারেন ।
blah238

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

উত্তর:


4

IZইন্টারফেস শুধুমাত্র বাস্তবায়িত হয় Polygonএবং Polylineক্লাস, যা আপনার কাছ থেকে প্রাপ্ত Shapeবা ShapeCopyএকটি বৈশিষ্ট্য IFeature। আপনি কোনও ইন্টারফেসের মধ্যে কিউআই করতে পারবেন না যা কোনও বস্তুর দ্বারা সমর্থিত নয় (বাস্তবায়িত বা উত্তরাধিকারসূত্রে প্রাপ্ত)। প্রতিটি বর্গ প্রয়োগকারী ইন্টারফেসগুলি দেখতে আরকোবজেক্টস এসডিকেগুলির একটির জন্য ডকুমেন্টেশন ব্যবহার করুন । অবজেক্ট মডেল রেখাচিত্র পড়া (সাহায্য, প্রতিটি নামস্থান অধীন তালিকাভুক্ত উদাহরণ ) বিভিন্ন শ্রেণীর এবং ইন্টারফেস মধ্যে উত্তরাধিকার / বাস্তবায়ন সম্পর্ক দেখতে খুব সহায়ক হতে পারে।

আপনার প্রকৃত কর্মপ্রবাহ হিসাবে, আপনাকে আপডেট কার্সারটি পেতে আপনার বৈশিষ্ট্য শ্রেণিতে পদ্ধতির Updateপরিবর্তে Searchপদ্ধতির পরিবর্তে ব্যবহার করতে হবে , এবং তারপরে পদ্ধতির ফলাফলের বৈশিষ্ট্যের বৈশিষ্ট্যটি সেট করে এবং অবশেষে কল করুন (সংশোধন করার জন্য ধন্যবাদ রাগী @ রাগি )।ShapeInterpolateZsBetweenIFeatureCursor.UpdateFeature


2
আপনি আইফিচার :: স্টোরকে একটি আপডেট কার্সর ব্যবহার করে স্টোর কল করতে চান না তা বাদ দিয়ে সবকিছু ঠিক আছে (এটি একটি আপডেটক্রেসার ব্যবহারের উদ্দেশ্যকে পরাস্ত করে)। পরিবর্তে আপনি আপডেট ফিচার কল করতে চান। help.arcgis.com/en/sdk/10.0/arcob پروژې_net
রাগী ইয়াছার বুড়হুম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.