भ्रष्ट आकार फिक्सिंग?


10

मेरे पास एक आकृति है जो मैं आर्कगिस डेस्कटॉप 9.3 में काम कर रहा था, किसी तरह भ्रष्ट हो गया और यह मुझे त्रुटि देता है "आकार की संख्या तालिका के रिकॉर्ड की संख्या से मेल नहीं खाती है।" मैं जो चाहूंगा वह इस आकृति को ठीक करना होगा क्योंकि इसमें बहुत सारे संपादन हैं जो फ़ाइल के अन्य संशोधनों के पास नहीं हैं।

पहले मैं ogr2gui का उपयोग करके इस त्रुटि से उबर गया था, लेकिन अब यह उपकरण क्रैश हो गया है। मैं भी कमांड लाइन संस्करण ogr2ogr की कोशिश की है, लेकिन अभी भी कोई किस्मत नहीं। यह स्क्रिप्ट, आर्किस्क्रिप्ट वेबसाइट से शेपफाइल रिपेयर टूल ने भी मदद नहीं की।

कोई विचार? (सिवाय इसके कि मैं शेपफाइल्स का इस्तेमाल करना बंद कर दूं)


यहाँ ogr2ogr से आउटपुट है (उत्तरों में आ सुझाव पर आधारित): यहां छवि विवरण दर्ज करें


1
यह लगभग निश्चित रूप से दूषित हो गया क्योंकि इसकी विशेषता तालिका (.dbf फ़ाइल) को अलग-अलग संपादित किया जा रहा था, जो आकृति रिकॉर्ड और विशेषता रिकॉर्ड के बीच एक असंगतता पैदा कर रहा था। यहां तक ​​कि अगर आप शेपफाइल को "ठीक" करने का प्रबंधन करते हैं, तो यह सुनिश्चित करें कि बहुत सावधानी से जांच करें कि सही विशेषताएँ आकृतियों से जुड़ी हैं!
whuber

त्रुटि संदेश बहुत प्रकट करते हैं। उन अंकों और भागों की संख्या 2 ^ 30 और 2 ^ 32 (अहस्ताक्षरित) के बीच मूल्यों को दर्शाती है, दृढ़ता से .shp फ़ाइल में रिकॉर्ड हेडर की व्यापक भौतिक ओवरराइटिंग का सुझाव देती है (क्योंकि वे मान्य गणना नहीं होगी, कभी भी)। इसलिए यह अत्यधिक संभावना है कि उन अभिलेखों में डेटा को भी अधिलेखित कर दिया गया है। संक्षेप में, आपके आकार का डेटा अब मौजूद नहीं है, कम से कम .shp फ़ाइल के कई हिस्सों में, और इसलिए सॉफ़्टवेयर द्वारा पुनर्प्राप्त करने योग्य नहीं है। अपने बैकअप से पुनर्स्थापित करें और वहां से शुरू करें।
whuber

1
@whuber। धन्यवाद। ज़रूर मामला है। इस भ्रष्ट आकृति से बरामद प्रत्येक फ़ाइल में मेरे बैकअप की तुलना में कम रिकॉर्ड हैं। मैं तब से बैकअप में वापस आ गया हूं।
इरिक

ब्रैड नेसोम्स ने shapeecheck.exe की सिफारिश की, मेरी भ्रष्ट आकार फ़ाइल को पहली बार ठीक किया! महान उपकरण

जवाबों:


8

दूषित सुविधाओं के खो जाने के साथ एक विकल्प, ऑस्कर -2ogr का उपयोग कर सकता है, जो आपके शेपफाइल को दूसरे शेपफाइल में परिवर्तित कर सकता है, -Scipfailures विकल्प के साथ:

ogr2ogr -skipfailures fixed_shapefile.shp corrupted_shapefile.shp

अधिक जानकारी के लिए पेरीजी ब्लॉग के इस ब्लॉग पोस्ट को देखें:

http://www.perrygeo.net/wordpress/?p=132


कमांड को रन करें (जिसमें "ईएसआरआई शेपफाइल" भी शामिल है जिसे आपने छोड़ दिया है)। फ़ाइल पर त्रुटि रिपोर्ट मिली। [स्क्रीनशॉट यहाँ पोस्ट नहीं कर सकते]। यह मुझे लगता है कि अपराधी आकार के साथ करना है। प्रारूप है: ERROR 1: दूषित .shp फ़ाइल: आकृति 2352, nPoints = 7, nEntitySize = 88।
एरिक

आप सुरक्षित रूप से -f विकल्प को हटा सकते हैं: आकारफाइल डिफ़ॉल्ट आउटपुट स्वरूप है। यह दिलचस्प होगा, आगे के शोध के लिए, यदि आप आकृति की एक प्रति संलग्न कर सकते हैं
capooti

शोध के लिए फाइल: मैंने खुशी-खुशी फाइल आगे बढ़ाई होगी लेकिन दुर्भाग्य से डेटा कॉपीराइट हो गया है। फिर भी धन्यवाद।
एरिक

@ एरिक, अगर आप स्क्रीनशॉट को imgur.com पर डालते हैं, तो मैं इसे यहाँ पोस्ट कर सकता हूं (यदि अभी भी प्रासंगिक है)
djq

5

मैं इस एक का उपयोग करें। इसने हमेशा मेरे लिए उस समस्या को ठीक कर दिया है।

shapecheck.exe


मैं ब्रैड के साथ सहमत हूं, शेपचेक सिर्फ काम करता है - जब आवश्यक हो तो स्टैंडअलोन आकार के फिक्सल्स - ट्रंकट्स को ठीक करता है।
Mapperz

@Mapperz। कई ट्रंकट्स के साथ टूल को चलाएं। उसके बाद वास्तव में आकार को खोल सकता है! लेकिन इसमें अब बैकअप से कम रिकॉर्ड हैं, जिन्हें मुझे वापस करना है। अगर मेरे पास कोई बैकअप नहीं होता तो इस तरह की वसूली होती। (आखिरकार के लिए संग्रह उपकरण) धन्यवाद।
एरिक

लिंक टूट गया है। यहाँ एक काम कर रहा है: geonet.esri.com/servlet/JiveServlet/download/614216-1-160601/… स्रोत: geonet.esri.com/thread/177037#comment-6b216
श्री चे।

4

ESRI से आधिकारिक जवाब सुझावों की एक संख्या है, लेकिन करने के लिए आप अंक shp मरम्मत उपयोगिता जो मुझे बचाया है कई बार निकाल दिया हो रही।

कुछ अन्य जिन्हें मैंने सुना है, लेकिन यह नहीं कह सकता कि मैंने कोशिश की है:


धन्यवाद साइमन। लेकिन मेरी बड़ी अड़चन यह है कि मुझे शुरुआत के लिए फाइल नहीं मिल सकती है इसलिए अधिकांश सुझाव काम नहीं करेंगे। आपने जो सुझाव दिया है, उस पर केवल एक ही कोशिश करें। कुछ भी काम नहीं किया।
एरिक

2

ठीक है, ऊपर अच्छे उत्तरों के ढेर में जोड़ने के लिए यहां एक और चाल है।

यह थोड़ा अधिक क्रूर बल है, ज्यादातर समय यह मदद करता है, कभी-कभी यह नहीं करता है, और जबकि यह शायद समस्या को ठीक करने की दिशा में पहला कदम है (बजाय खुद के समाधान के बजाय, जो अक्सर नहीं होता है), यह मदद कर सकता है जहाँ आप शेपफाइल खोल सकते हैं, वहाँ जाएँ। आकृतिफाइल खुलने के बाद अधिकांश मामलों में आपको अभी भी ArcMap में अधिक मैनुअल मरम्मत करने की आवश्यकता होगी (भ्रष्ट विशेषताएं ?, लापता विशेषताएँ? गलत विशेषताएँ) आदि।

  1. शेपफाइल को एक नए खाली फ़ोल्डर में कॉपी करें। केवल SHP, SHX और DBF को अपने साथ रखें। अन्य सभी फ़ाइलों को पीछे छोड़ दें, और हाँ जिसमें prj भी शामिल है।

  2. (विंडोज़): SHX फ़ाइल पर राइट-क्लिक करें और फ़ाइल गुण खोलने के लिए "गुण" चुनें।

  3. "सामान्य" टैब पर इस SHX फ़ाइल के EXACT फ़ाइल आकार पर एक नज़र बाइट पर डालें। "आकार" गुण को देखें, न कि "आकार ऑन डिस्क" गुण।

  4. उस फ़ाइल का आकार बाइट्स में लें और 100 बाइट्स (हेडर) घटाएं। शेष में से, 8 से विभाजित करें (प्रत्येक "शब्द" का आकार)। परिणाम आपको आकृति के एसएचपी भाग के अंदर आकार की कई विशेषताएं प्रदान करता है।

  5. DBF को कुछ सॉफ्टवेयर में खोलें जो आपको DBF को संपादित करने और वापस DBF के रूप में सहेजने की अनुमति देने जा रहा है। DBF में पंक्तियों को बनाने के लिए रिकॉर्ड जोड़ें या हटाएं चरण # 4 में गणना की गई SHP में आकार की सुविधाओं की संख्या से मेल खाते हैं। (यदि आप एक्सेल के पुराने संस्करण का उपयोग कर रहे हैं, तो ध्यान रखें कि पंक्ति # 1 में फ़ील्ड नाम शामिल हैं, इसलिए यदि आप 1,000 रिकॉर्ड के लिए जा रहे हैं, तो यह पहली डेटा पंक्ति के बाद से शीट में 1,001 पंक्तियाँ होगी। पंक्ति # 2 है।) यदि पंक्तियों की संख्या बनाने के लिए आपको पंक्तियों को हटाने के लिए आवश्यक मिलान करना है और उन पंक्तियों में वास्तविक डेटा है, जिन्हें आपको रखने की आवश्यकता है, तो बस उन लोगों को एक नए DBF में सहेजें, और आप उस सामान को वापस पढ़ सकते हैं बाद में, एक बार जब आप उस बिंदु पर पहुंच गए, जहां सब कुछ फिर से आर्कपा में खुलता है।

  6. एक बार DBF में पंक्तियों की संख्या के साथ SHP में सुविधाओं की संख्या से मेल खाने के लिए ऊपर दिए गए चरणों का उपयोग करने के बाद, फिर से ArcMap में शेपफाइल को खोलने का प्रयास करें।


1

आप ogrinfo के साथ अपने .shp फ़ाइलों में आकृतियों की संख्या गिनने का प्रयास कर सकते हैं (यह सुनिश्चित नहीं है कि यह काम करेगा):

 ogrinfo -sql 'select count(*) from myshp' myshp.shp

यदि आप अपनी आकृतियों की संख्या गिन सकते हैं, तो अपनी .dbf फ़ाइल को खोलने के लिए इसे पूरा करने के लिए कार्यालय खोल सकते हैं (या अतिरिक्त पंक्तियों को हटा सकते हैं)


सुझाव के लिए धन्यवाद, लेकिन मैं बिल्कुल एक GDAL उपकरण समर्थक नहीं हूँ। या 'बहुत' sql साक्षर। आपके द्वारा प्रदान किए गए मापदंडों के साथ ट्राय किया हुआ टूल, लेकिन टूल से संबंधित त्रुटि मिली। "डेटासोर्स काउंट (*) खोलने में असमर्थ"।
एरिक

क्या आप कमांड लाइन को कॉपी / पेस्ट कर सकते हैं?
सिमो

मैं लेकिन अभी भी वही त्रुटि कर सकता हूं। लेकिन @capooti के समाधान ने कुछ परिणाम / पहचाने गए अपराधी आकार बनाए हैं।
एरिक

1

मैं कुछ किस्मत सूचकांक फ़ाइलें (.idx और .shx) को हटा रहा हूं, जो आपके जीआईएस को फिर से जुड़ने पर पुनर्जीवित करेगा।


बिना सफलता के यह कोशिश की। सुझाव देने के लिए धन्यवाद।
एरिक

0

यदि आपकी शेपफाइल एक बिंदु परत थी और इसमें XY फ़ील्ड मान थे, तो आप दूषित आकृति आकृति dbf से दूसरी परत बनाने के लिए Make XY Event Layer टूल चला सकते हैं।


इसकी सड़कें (पॉलीलाइन) फ़ाइल हैं। लेकिन एक अंक परिदृश्य के लिए आपके संकेत को ध्यान में रखेंगे। धन्यवाद।
एरिक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.