भौगोलिक डेटा फ़ाइल से अनावश्यक कॉलम हटाएं?


10

मेरे पास कुछ GML डेटा हैं जिनमें कुछ अनावश्यक कॉलम हैं। मैं फ़ाइल आकार को कम करने के लिए इन स्तंभों को निकालना चाहूंगा। (स्पष्ट करने के लिए: मेरा मतलब है कि फ़ाइल में कई बिंदु हैं, और इनमें से प्रत्येक बिंदु में कुछ मेटाडेटा संलग्न है, और मुझे मेटाडेटा के सभी की आवश्यकता नहीं है।)

मैं कमांड लाइन से भी ऐसा करना चाहूंगा, क्योंकि मेरे पास कई फाइलें हैं।

मैं GML फ़ाइलों को विभिन्न प्रारूपों में परिवर्तित कर सकता हूं ogr2ogr, इसलिए मेरा सवाल यह है: कमांड लाइन से भौगोलिक डेटा फ़ाइल से कॉलम हटाने का सबसे आसान तरीका क्या है?

मैं एक पायथन प्रोग्रामर हूं, इसलिए मेरी वृत्ति को फ़ाइल को जियोसन में बदलना होगा, फिर पाइथन के JSON-पार्सिंग विधियों का उपयोग करके JSON फ़ाइल को फिर से पढ़ना और लिखना होगा।

लेकिन शायद GDAL टूल या इसके समान का उपयोग करके एक अधिक प्रत्यक्ष तरीका है।

जवाबों:


10

एक अस्थायी फ़ाइल प्रारूप के रूप में शेपफाइल आवश्यक नहीं है और यह जीएमएल डेटा को भी बदल सकता है (विशेषता नाम को छोटा कर दें, अधिकतम 255 वर्णों में तार काट दें, DATETIME को DATE आदि में बदल दें)

मैं ogr2ogr का उपयोग अवांछित विशेषताओं को छोड़ने के द्वारा नहीं, बल्कि उन लोगों का चयन करके करूंगा जो चाहते हैं। SQLite SQL बोली डिफ़ॉल्ट OGR बोली की तुलना में अधिक मानक है, इसीलिए मैं इसका उपयोग करता हूं, यहां तक ​​कि इस क्वेरी के लिए भी यह आवश्यक नहीं है।

ogr2ogr -f GML -dialect SQLite -sql "SELECT attr1, attr2, attr3,... FROM layer" output.gml input.gml

9

आप OGR SQL का उपयोग करके एक फ़ील्ड हटा सकते हैं और एक OGR प्रारूप का चयन कर सकते हैं जो फ़ील्ड हटाने का समर्थन करता है। दुर्भाग्य से GML इसका समर्थन नहीं करता है, इसलिए आपको दूसरे प्रारूप से गुजरना होगा, जैसे SHP:

ogr2ogr temp.shp input.gml
ogrinfo temp.shp -sql "ALTER TABLE temp DROP COLUMN field_to_drop"
ogr2ogr -f GML output.gml temp.shp

मैं एक सरल काम करने में सक्षम था, जियोजोन ड्राइवर के साथ इसी तरह की बात; ogrinfo input.geojson -sql "ALTER TABLE input DROP COLUMN field_to_drop" तालिका के रूप में फ़ाइल नाम के उपयोग को नोट करें।
vpipkt
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.