যদিও আমি জিওপ্রোসেসিং স্ক্রিপ্ট / পরিষেবাদি তৈরি করতে পাইথন ব্যবহার করি, তবুও আমার ধারণা ছিল যে সমতুল্য অপারেশন (গুলি) করার জন্য আর্কওবজেক্টগুলি ব্যবহার করা আরও ভাল পারফরম্যান্স পাবে।
আমি আরকিজিআইএস সার্ভার জিপি সার্ভিস পোস্ট করেছি - রাস্টারআইও.ডিল ক্র্যাশিং আরকিএসওসি.এক্সি এবং আরকজিআইএস জিওপ্রসেসিং স্ক্রিপ্ট ডেস্কটপে ঠিকঠাক চলমান তবে জিওপ্রসেসিং পরিষেবা হিসাবে ক্র্যাশ হয়েছে? ভূ-প্রসেসিং পরিষেবা হিসাবে কাজ করতে স্পেসিয়াল অ্যানালিস্ট সরঞ্জামগুলি ব্যবহার করে এমন ভূ-প্রসেসিং স্ক্রিপ্টগুলি সম্পর্কে গত কয়েক দিন ধরে। আমার সময়সীমা দ্রুত এগিয়ে আসছে, তাই আমি কাঙ্ক্ষিত কার্যকারিতা অর্জনের জন্য এসওই রুটে যাওয়ার সিদ্ধান্ত নিয়েছি।
আরকিওবজেক্টসে ব্যয় নির্ধারণের বিশ্লেষণ পাওয়া .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 সেকেন্ড সময় নেয়। এমনকি। নেট জিওপ্রোসেসর ব্যবহার করে তোরণ থেকে তুলনামূলকভাবে ধীর গতি হয়।
আমার ধারণা এখানে আমার প্রশ্নগুলি হ'ল:
- আরকিপি এবং আরকোবজেক্টগুলি বাস্তবায়নগুলি কি একই কোড বেসের দিকে নির্দেশ করছে (তাদের পাইথন এবং .NET মোড়কের মাধ্যমে)?
- আরকোবজেক্ট ভিত্তিক খরচ পাথ বিশ্লেষণকে অনুকূল করতে কোনও টিপস?