ফাইল জিওডাটাবেস ফিচার ক্লাসের সম্পূর্ণ পরিসীমা পুনরায় গণনা করছেন?


19

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

এই মানগুলি পুনরায় গণনার জন্য কি কোনও উপায় আছে?

আমি যথেষ্ট নিশ্চিত যে আর্কম্যাপে বৈশিষ্ট্যগুলি সম্পাদনা করে সবার মধ্যে এই সমস্যাটি হওয়া উচিত ...


1
দুর্ভাগ্যক্রমে অর্ক: রিবক্স একটি আর্কজিআইএস সরঞ্জাম হিসাবে অনুবাদ করা যায় নি :-)
পলিজিও

উত্তর:


6

এসরির এখন 10.4 (হুরয়) এ এর ​​জন্য একটি সরঞ্জাম রয়েছে: ফিচার ক্লাস এক্সটেন্ডেন্টের পুনঃ গণনা করুন।

যখন আমি একটি বৈশিষ্ট্য বর্গ তৈরি করছিলাম এবং আরকি দিয়ে এটিতে জ্যামিতি লিখছিলাম তখন আমি এই সমস্যাটিতে চলে আসছিলাম। স্পষ্টতই সেই সরঞ্জামগুলি সীমাটি আপডেট করে না (পারফরম্যান্সের কারণে সম্ভবত একটি ভাল ধারণা)।

@ লু'র পরামর্শ দিয়ে আমি 10.2.2 এ সীমাটি পুনরায় সেট করতে সফল হয়েছি:

arcpy.CompressFileGeodatabaseData_management(output_workspace)
arcpy.UncompressFileGeodatabaseData_management(output_workspace)

19

আর্ককিগ্ল্যাজে ফিচার ক্লাসে ডান ক্লিক করুন এবং বৈশিষ্ট্যে যান। ফিচার এক্সট্যান্ট ট্যাবে, পুনরায় গণনা ক্লিক করুন। ও ভয়েল!

আমি আরকিজিআইএস 10.2.1 ব্যবহার করছি


6

জিওডাটাবেসকে কম্প্যাক্ট করা আপনার স্থানিক সূচককে পরিপাটি করে দেবে

"আপনি যদি প্রায়শই ডেটা যুক্ত এবং মুছতে থাকেন তবে আপনাকে নিজের ফাইল বা ব্যক্তিগত জিওডাটাবেসকে একটি মাসিক ভিত্তিতে কমপ্যাক্ট করা উচিত any কোনও বৃহত আকারের পরিবর্তনের পরে আপনার কোনও জিওডাটাবেসকেও কমপ্যাক্ট করা উচিত records প্রতিটি ফাইলের ডেটা আরও দক্ষতার সাথে অ্যাক্সেস করা যেতে পারে Comp কমপ্যাক্ট করা প্রতিটি ফাইলের আকারও হ্রাস করে a একটি জিওডাটাবেজের আকার দেড় বা তার বেশি কমাতে সক্ষম হওয়া সম্ভব ""

http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#/Compacting_file_and_personal_geodatabases/003n0000007t000000/

কমপ্যাক্ট (ডেটা ম্যানেজমেন্ট)

"ব্যক্তিগত জিওডাটাবেসগুলি 250 এমবি-র চেয়ে বড় হয়ে ওঠার সময় তাদের কাছে কমপ্যাক্ট করার পরামর্শ দেওয়া হয় data যদি ডাটা এন্ট্রি, মোছা বা সাধারণ সম্পাদনা ঘন ঘন কোনও ডাটাবেজে সম্পাদনা করা হয় তবে অনুকূল কর্মক্ষমতা নিশ্চিত করার জন্য ডাটাবেসটি নিয়মিত কমপ্যাক্ট করা উচিত" "

http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//00170000000n000000


4
আপনি যদি বড় মুছে ফেলতে থাকেন তবে এটি করা একটি গুরুত্বপূর্ণ কাজ (বিশেষত বৃহত্তর জিওডাটাবেসগুলির জন্য)। আমি ব্যক্তিগতভাবে এটি নির্ভরযোগ্যভাবে সীমা সমস্যার সমাধান করতে পারি নি, তবে এটি অবশ্যই একটি ভাল ধারণা।
লু

6

এখানে আর্কজিআইএস 10 এর জন্য একটি আর্ককিগ্যালগ অ্যাড-ইন রয়েছে যা বৈশিষ্ট্য শ্রেণীর পরিমাণ আপডেট করার জন্য একটি কমান্ড যুক্ত করেছে, সম্ভবত @ রাগির ভিবিএ কোডের মতো একই পদ্ধতি ব্যবহার করছে:


এই লিঙ্কটি এমন একটি অ্যাড-ইন যা 10.1 arcgis.com/home/item.html?id=576ebff497094274bdd7c76e456de6c3
সাইমন

5

জিওডাটাবেস এক্সট্যান্ট সর্বদা প্রসারিত হয় - স্বয়ংক্রিয়ভাবে কখনও ছোট হয় না। কমপ্যাক্টিং এবং কমপ্রেসিং কেবল স্টোরেজ এবং টুকরো টুকরোকেই অনুকূল করে তোলে তবে এটি এক্সটেন্টই নয়। আমি প্রথমে স্থানিক সূচকটি পুনরুদ্ধার করার চেষ্টা করব এবং দেখছি এটি কৌশলটি কার্যকর করে কিনা।

হালনাগাদ:

যেহেতু স্থানিক সূচক পুনর্নির্মাণ কৌশলটি করে না, আমি নিশ্চিত যে নিম্নলিখিত ভিবিএ কোডটি করবে:

Public Sub reCalcExt()
  Dim pGXApplication As IGxApplication
  Set pGXApplication = Application

  Dim pGxObject As IGxObject
  Set pGxObject = pGXApplication.SelectedObject

  If Not TypeOf pGxObject.InternalObjectName Is IFeatureClassName Then
    Exit Sub
  End If

  Dim pName As IName
  Set pName = pGxObject.InternalObjectName
  Dim pSchemaLock As ISchemaLock
  Set pSchemaLock = pName.Open

  pSchemaLock.ChangeSchemaLock esriExclusiveSchemaLock
  Dim pFeatureClassManage As IFeatureClassManage
  Set pFeatureClassManage = pSchemaLock
  pFeatureClassManage.UpdateExtent

  Exit Sub

ErrHandler:
  pSchemaLock.ChangeSchemaLock esriSharedSchemaLock
End Sub

আপনি অন্য কোনও ESRI সমর্থিত প্রোগ্রামিং ভাষায় এটি করতে পারেন। কৌশলটি হ'ল একটি স্কিমালক পাওয়া এবং IFeatureClassManage :: আপডেটExant পদ্ধতি ব্যবহার করা।


আমি একটি নমুনা ডেটাসেটে স্থানিক সূচকটি পুনরায় তৈরি করার চেষ্টা করেছি এবং এটি আমার পরীক্ষার ক্ষেত্রে সহায়তা করতে পারেনি। আমি সত্যিই অবাক হয়েছি।
লু

কিছু কোডের সাথে আমার উত্তর আপডেট করা।
রাগী ইয়াছার বুড়হুম

এইভাবে, এটি হ'ল আর্কটেল্ল্যাজ ভিবিএ কোড।
রাগী ইয়াছার বুড়হুম

4

ফাইল জিওডাটাবেসগুলিতে এর কারণ কী তা আমি ঠিক জানি না তবে আমি অবশ্যই এটির অনুলিপি করতে সক্ষম এবং এটি এমন একটি বিষয় যা আমি এর আগে सामना করেছি। এটির বাইপাস কীভাবে খুঁজে পেতে সক্ষম হয়েছি তা কেবল ফাইল জিওডাটাবেসকে সংকুচিত করে। এটি ব্যাপ্তির বিষয়টি ঠিক করবে fix আপনার কাজ শেষ হয়ে গেলে আপনাকে এটি সঙ্কুচিত করতে হবে কারণ আপনি একটি সংকুচিত ফাইল জিওডাটাবেস সম্পাদনা করতে পারবেন না।

সম্পাদনা / আর্কম্যাপ সেশনের সময় আপনি যখন ডেটা আসলে ব্যবহার করেন, আপনি সর্বদা সমস্ত নির্বাচন করতে পারেন জুম থেকে একটি workaround হিসাবে নির্বাচিত। এটি দুর্দান্ত নয়, তবে আমি আমার ওয়ার্কফ্লোতে এটি ব্যবহার করেছি যতক্ষণ না আমি একটি ব্রেকিং পয়েন্টে পৌঁছে যাই যেখানে আমি সেই সংকোচন / ডিকম্প্রেস কৌশলটি করতে পারি।

দ্রষ্টব্য, কমপ্যাক্টিং কাজ করবে না (কমপক্ষে, নির্ভরযোগ্যভাবে নয়)। এটি আপনার সূচকগুলি পুনর্নির্মাণ করবে, তবে আমি এটির পরিমাণ সমাধানের জন্য অবিশ্বাস্য বলে মনে করেছি found এটি এখনও সময়ে সময়ে আপনার করা উচিত। আমি এখনই এটি আবার চেষ্টা করেছি এবং এটি আমার নমুনা ডেটাসেটে কাজ করে না। YMMV।


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

3

আপনি যদি আপনার এমএক্সডি ডকুমেন্টে বৈশিষ্ট্য সংঘর্ষের পরিমাণ আপডেট করতে চান তবে কোডের এই অংশটি আপনাকে সহায়তা করতে পারে:

Dim pLayer As ILayer
        Dim pEnumLayer As IEnumLayer
        Dim pFeatureLayer As IFeatureLayer
        Dim pFeatureClass As IFeatureClass
        Dim pFeatureClassManage As IFeatureClassManage


        pEnumLayer = pMap.Layers
        pLayer = pEnumLayer.Next

        Do Until pLayer Is Nothing
            If TypeOf pLayer Is FeatureLayer Then
                pFeatureLayer = pLayer
                pFeatureClass = pFeatureLayer.FeatureClass
                pFeatureClassManage = pFeatureClass
                pFeatureClassManage.UpdateExtent()
            End If
            pLayer = pEnumLayer.Next
        Loop
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.