আরকিপিস্ট কস্ট পাথ বিশ্লেষণ সরঞ্জামটি আরকোবজেক্টসের চেয়ে দ্রুত কেন বোঝা যাচ্ছে? [বন্ধ]


15

যদিও আমি জিওপ্রোসেসিং স্ক্রিপ্ট / পরিষেবাদি তৈরি করতে পাইথন ব্যবহার করি, তবুও আমার ধারণা ছিল যে সমতুল্য অপারেশন (গুলি) করার জন্য আর্কওবজেক্টগুলি ব্যবহার করা আরও ভাল পারফরম্যান্স পাবে।

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

আরকিওবজেক্টসে ব্যয় নির্ধারণের বিশ্লেষণ পাওয়া .NET ESRI.ArcGIS.SpatialAnalyst.RasterDistanceOpClass , বিশেষত CostDistanceFull () এবং CostPath () পদ্ধতিগুলি ব্যবহার করে তুলনামূলকভাবে সোজা-এগিয়ে ছিল ।

আমি কীভাবে জিনিসগুলি করছি তার কয়েকটি কোড স্নিপেটস:

পাইথন

# Get Cost Path Origin and Destination Points
inputPointsShp = 'D:/RasterStuff/test_points.shp'
arcpy.MakeFeatureLayer_management(inputPointsShp,"origin",' "TYPE" = \'ORIGIN\' ')
arcpy.MakeFeatureLayer_management(inputPointsShp,"destination",' "TYPE" = \'DESTINATION\' ')

# Check out the ArcGIS Spatial Analyst extension license
arcpy.CheckOutExtension("Spatial")

# Execute CostDistance
outCostDistance = CostDistance("origin",SOURCE_RASTER,"#","backlink")

# Execute CostPath
outCostPath = CostPath("destination", outCostDistance,"backlink")

# Convert Result to Polyline
arcpy.RasterToPolyline_conversion(outCostPath, "leastCostPath")
featSet = arcpy.FeatureSet("leastCostPath")

সি শার্প

IDistanceOp distanceOp = new RasterDistanceOpClass();
IRasterBandCollection costDistanceRaster = (IRasterBandCollection)distanceOp.CostDistanceFull((IGeoDataset)sourceFc, (IGeoDataset)raster, true, true, false);
IRasterBand distanceRaster = costDistanceRaster.Item(0);
IRasterBand backLinkRaster = costDistanceRaster.Item(1);

IGeoDataset costPath = distanceOp.CostPath((IGeoDataset)destFc, (IGeoDataset)distanceRaster, (IGeoDataset)backLinkRaster, ESRI.ArcGIS.SpatialAnalyst.esriGeoAnalysisPathEnum.esriGeoAnalysisPathForEachCell);

আর্কপাইয়ের একটি ব্যয় নির্ধারণের বিশ্লেষণ (sa.CostDistance এবং sa.CostPath ব্যবহার করে) প্রায় 15-20 সেকেন্ড লাগে। ঠিক একই ইনপুটগুলি ব্যবহার করে, আরকোবজেক্টস ভিত্তিক রুটিনটি 55-60 সেকেন্ড সময় নেয়। এমনকি। নেট জিওপ্রোসেসর ব্যবহার করে তোরণ থেকে তুলনামূলকভাবে ধীর গতি হয়।

আমার ধারণা এখানে আমার প্রশ্নগুলি হ'ল:

  1. আরকিপি এবং আরকোবজেক্টগুলি বাস্তবায়নগুলি কি একই কোড বেসের দিকে নির্দেশ করছে (তাদের পাইথন এবং .NET মোড়কের মাধ্যমে)?
  2. আরকোবজেক্ট ভিত্তিক খরচ পাথ বিশ্লেষণকে অনুকূল করতে কোনও টিপস?

2
কোন ফোনটি সবচেয়ে দীর্ঘ সময় নিচ্ছে ঠিক ঠিক তা জানতে আপনি কি আপনার কোডটি প্রোফাইল করেছেন? আপনি একটি কোড স্নিপেট প্রদর্শন করতে পারেন?
রাগী ইয়াছার বারহুম

আমার বুদ্ধিটি আর্কপাই ছিল কেবলমাত্র আর্কওবজেক্টসের চারপাশে একটি মোড়ক যাতে এটি আগ্রহী। এটি প্রাসঙ্গিক কিনা তা আমি জানি না তবে এখানে একটি উত্তর আছে: gis.stackexchange.com/questions/171304/… .. নোটস যে জিওআই সরঞ্জামগুলির তুলনায় জিওপ্রসেসিং সরঞ্জামগুলি লোড করা দরকার। সুতরাং, যদি আর্কিপাই প্রাসঙ্গিক কোডটি আগেই ইনস্ট্যান্ট করে বা টুলবক্স ফাংশনের পরিবর্তে কোনও জিইউআই ফাংশন আবৃত করে, এটি কিছু সেট আপ সময় ছেড়ে যেতে পারে। বড় ডেটাসেটের সাথে গতির ফাঁক কমেছে কিনা তা যাচাই করে দেখার জন্য যথেষ্ট সহজ।
আনসারজিআইএস

ট্যুর অনুসারে প্রতি প্রশ্নে একটি করে প্রশ্ন করা উচিত।
পলিজিও

উত্তর:


0

আমি বিশ্বাস করি কারণ আপনার পাইথন জিওপ্রসেসিং কার্যগুলিতে কল করতে আরকিপি ব্যবহার করছে যা 64৪ -বিট প্রক্রিয়াতে চলছে । আরকোবজেক্টস 32-বিট প্রক্রিয়াগুলিতে ঘটে ।


2
এই অনুমানগুলি করার জন্য এই পোস্টে পর্যাপ্ত তথ্য নেই। তবুও, সার্ভারটি bit৪ বিট বা তার যদি bit৪ বিট বিজি ইনস্টল করা থাকে তবে তিনি তার ফাংশন সরঞ্জামটি এর বিরুদ্ধে কার্যকর করতে পারেন। যাইহোক, চিন্তাধারার বিনোদন দেওয়ার জন্য, 32 থেকে 64 বিট থেকে সহজভাবে যাওয়া কোনও কার্যকারিতা বৃদ্ধি দেয় না। 32 বিট এর চেয়ে 64 বিট 'দ্রুত' হয় তবে এটি খুব পরিস্থিতিযুক্ত।
KHibma

এই অনুমানগুলি ভিত্তিহীন কিনা তা ওপি স্পষ্ট করতে পারে। আমি যে লিঙ্কগুলি সরবরাহ করেছি সেগুলি অনুমানকে সমর্থন করে যেমন কর্মক্ষমতা আরও ভাল হয় কারণ আরও বেশি সিস্টেমের সংস্থাগুলিতে অ্যাক্সেস রয়েছে ইত্যাদি these আজকের দিনে বেশিরভাগ ওএস 64 বিট হওয়ার একটি কারণ রয়েছে এবং বড়গুলির মধ্যে একটি হল কর্মক্ষমতা বৃদ্ধি। সুতরাং সমস্ত জিনিস সমান হচ্ছে, বিশেষত ভারী সংখ্যা ক্রাঞ্চিংয়ের সাথে, 64 বিট প্রক্রিয়াগুলি 32 বিট প্রক্রিয়া সম্পাদন করবে।
আলেক্সজিআইএস 4'16
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.