मेरे पास लाखों पंक्तियों के साथ एक पोस्टग्रेज़ डेटाबेस है जिसमें इसका नाम जिओम नामक एक कॉलम है जिसमें संपत्ति की सीमा होती है।पोस्टगिस - मैं डालने से पहले ज्यामिति प्रकार की जांच कैसे करूं
एक पायथन स्क्रिप्ट का उपयोग करके मैं इस तालिका से जानकारी निकाल रहा हूं और इसे एक नई तालिका में दोबारा डालने वाला हूं।
जब मैं निम्नलिखित के साथ बाहर नई तालिका में सम्मिलित स्क्रिप्ट कीड़े:
Traceback (most recent call last):
File "build_parcels.py", line 258, in <module>
main()
File "build_parcels.py", line 166, in main
update_cursor.executemany("insert into parcels (par_id, street_add, title_no, proprietors, au_name, ua_name, geom) VALUES (%s, %s, %s, %s, %s, %s, %s)", inserts)
psycopg2.IntegrityError: new row for relation "parcels" violates check constraint "enforce_geotype_geom"
नई तालिका है एक जांच बाधा enforce_geotype_geom = ((geometrytype (geom) = 'बहुभुज' :: पाठ) या (geom IS NULL)) जबकि पुरानी तालिका नहीं है, इसलिए पुरानी तालिका में dud डेटा या गैर बहुभुज (शायद multipolygon डेटा?) अनुमान लगा रहा हूँ। मैं नया डेटा बहुभुज के रूप में रखना चाहता हूं इसलिए कुछ और नहीं डालना चाहता हूं।
प्रारंभ में मैंने मानक पायथन त्रुटि के साथ क्वेरी को लपेटने की कोशिश की, उम्मीद है कि डूड जियो पंक्तियां असफल हो जाएंगी लेकिन स्क्रिप्ट चलती रहेगी, लेकिन स्क्रिप्ट को अंत में प्रतिबद्ध करने के लिए लिखा गया है, प्रत्येक पंक्ति नहीं, इसलिए यह काम नहीं करता है ।
मुझे लगता है कि मुझे क्या करना है पुरानी तालिका भू-पंक्तियों के माध्यम से पुनरावृत्ति करना है और जांचें कि वे किस प्रकार की ज्यामिति हैं, इसलिए मैं यह स्थापित कर सकता हूं कि मैं इसे रखना चाहता हूं या नहीं, इससे पहले कि मैं नई टेबल में डालूं
इस बारे में जाने का सबसे अच्छा तरीका क्या है?
से ऊपर के उत्तर के समान, धन्यवाद एक हाइब्रिड पायथन/पोस्टग्रेस उत्तर के लिए बस गया होगा, लेकिन यह पोस्टग्रेस के अंदर सभी को करने में सक्षम होने के लिए आश्चर्यजनक है। आपके उत्तर के लिए धन्यवाद – ADAM