วิธีการเปลี่ยนความยาวของเขตข้อมูลใน QGIS


11

ฉันมีรูปร่างไฟล์ที่ฉันทำใน QGIS 1.7.4 หนึ่งในฟิลด์คือสตริงของความยาว 80 ฉันต้องการทำให้ฟิลด์ยอมรับความยาวที่ต่อเนื่อง แต่ฉันไม่สามารถหาวิธีเปลี่ยนความยาวได้ ฉันจะทำสิ่งนี้ได้อย่างไร

ขอบคุณ

คำตอบ:


15

นี่คือทางออกที่ทำให้ฉันประหลาดใจว่ามันใช้งานได้ !!!

คำเตือน: ก่อนทำการสำรองข้อมูลนี่เป็นการทดลองถึงแม้ว่ามันจะได้ผลสำหรับฉันตอนนี้ ..

เปิด. dbf ของ Shapefile เฉพาะโดยใช้แอปพลิเคชัน OpenOffice Calc เปลี่ยนค่าจาก 80 เป็นค่าที่คุณต้องการ โปรดดูภาพด้านล่าง สิ่งที่น่าแปลกใจคือคำจำกัดความของฟิลด์เหล่านี้ไม่ปรากฏใน Excel .. ข้อดีของการเป็นแบบเปิด !!

ป้อนคำอธิบายรูปภาพที่นี่


+1 - เคล็ดลับเล็ก ๆ ที่ยอดเยี่ยม มักจะพบว่าตัวเลขเหล่านั้นน่ารำคาญใน Libre / Openoffice DBFs แต่ตอนนี้เห็นการใช้งาน
Simbamangu

1
ฉันสองสิ่งนี้ใช้มันค่อนข้างมากสำหรับการแก้ไขและจัดรูปแบบข้อมูลที่รวดเร็วและสกปรก (โดยเฉพาะเมื่อฉันต้องการใช้สูตรของ Cals) หรือเมื่อฉันแค่ต้องการเข้าร่วมข้อมูลตามสถานที่และอีกครั้ง fieldname กลายเป็น auf ยาวเกินไป ... โปรดจำไว้ว่า: อย่าเรียงแถวใหม่โดยไม่มีคอลัมน์ FID บางคอลัมน์เพื่อจัดเรียงใหม่อย่างถูกต้องไม่เช่นนั้นคุณลักษณะทุกอย่างจะมีข้อมูลแอตทริบิวต์ที่ไม่ถูกต้องในภายหลัง
SAnderka

ฉันลองสิ่งนี้แล้วมันทำให้ค่าในคอลัมน์ที่ตามมาเสียหาย มันเป็นความคิดที่ฉลาด
Evan

2
ฉันไม่เคยประสบปัญหาข้อมูลเสียหายมาก่อน คุณเปลี่ยนประเภทข้อมูลโดยไม่ตั้งใจ (ตัวอย่างเช่น C ย่อมาจากตัวอักษรอธิบายเพิ่มเติมได้ที่นี่: dbase.com/knowledgebase/int/db7_file_fmt.htm )? แม้ว่า Calc จะเตือนคุณหากคุณพยายามบันทึก dbf ด้วยข้อมูลที่ไม่พอดีกับส่วนหัว ผมก็ยังไม่เข้าใจในวิธีการที่ข้อมูลของคุณได้รับความเสียหายที่อาจเกือบจะหมายถึงอะไร ...
SAnderka

2
และเกี่ยวกับการเรียงลำดับ: การเชื่อมต่อระหว่างข้อมูลฟีเจอร์ (รูปหลายเหลี่ยม, จุด, เส้น) และข้อมูลแอ็ตทริบิวต์ดูเหมือนจะทำโดยหมายเลขแถว, หากคุณใช้ไฟล์แอตทริบิวต์ใด ๆ ใน Calc และบันทึกไว้คุณสมบัติที่ไม่ถูกต้องจะเชื่อมต่อกับ คุณสมบัติ (ผสมขึ้นเพื่อพูด)
SAnderka

12

จากความรู้ของฉันคุณไม่สามารถเปลี่ยนความยาวของฟิลด์ shapefile ใน QGIS ขอแนะนำให้สร้างฟิลด์ใหม่:

  • เปิดตารางแอตทริบิวต์
  • สลับการแก้ไขบน
  • เลือก 'คอลัมน์ใหม่' และตั้งค่า
    ประเภทเป็นข้อความแล้วเลือกความกว้างที่ต้องการ

หากมีข้อมูลอยู่ในเขตข้อมูลเก่าแล้วให้ใช้เครื่องคำนวณภาคสนามเพื่อเติมฟิลด์ใหม่:

  • เลือก 'เครื่องคำนวณภาคสนาม'
  • ทำเครื่องหมาย 'อัปเดตฟิลด์ที่มีอยู่' แล้วเลือกฟิลด์ใหม่
  • คลิกสองครั้งที่ชื่อเขตข้อมูลเก่าภายใต้ 'ฟิลด์'
  • กด 'ตกลง' และอย่าลืมบันทึกการแก้ไขของคุณ

วิธีการที่ดี ในตอนท้ายของขั้นตอนเหล่านี้ไปที่ Table Manager (ปลั๊กอิน) เพื่อลบฟิลด์เก่าและ (ถ้าจำเป็น) เปลี่ยนชื่อฟิลด์ใหม่
IanS

4

ฉันเพิ่งทำสิ่งนี้ใน Excel เปิด dbf ใน Excel คลิกขวาที่ส่วนหัวคอลัมน์ที่คุณต้องการเปลี่ยนและเลือกความกว้างของคอลัมน์ เปลี่ยนความยาวที่คุณต้องการจากนั้นบันทึกเป็น dbf ดูเหมือนว่าจะทำงานตกลงสำหรับฉัน


ความกว้างของคอลัมน์ไม่ควรเป็นความกว้างในการแสดงผลของคอลัมน์ใช่หรือไม่
vinayan

3
@Vinayan คำถามนี้อ้างถึงสิ่งที่เขตข้อมูลสามารถเก็บได้อย่างชัดเจนไม่ใช่วิธีแสดงใน QGIS Excel ใช้ความกว้างในการแสดงผลของคอลัมน์เป็นแนวทางสำหรับความกว้างในการสร้างฟิลด์เมื่อบันทึกไฟล์ซึ่งเป็นสาเหตุที่คำตอบนี้ใช้งานได้ สำหรับรายละเอียดโปรดเยี่ยมชมquantdec.com/SYSEN597/GTKAV/section4/chapter_15a.htm#Recipe อย่างไรก็ตามสามารถใช้งานได้กับ Excel รุ่นเก่าเท่านั้น ล่าสุดจะไม่เขียนไฟล์ DBF ที่ฉันได้ยิน :-(.
whuber

@whuber นั่นเป็นสิ่งที่น่าสนใจ .. ฉันจะไม่ใส่ฟังก์ชั่นการใช้งานแบบนั้น (ปรับขนาด) ในแอปพลิเคชันของฉัน :-)
vinayan

0

คำแนะนำในการเปลี่ยนขนาดคอลัมน์สำหรับตารางคุณสมบัติใน QGIS

  1. คลิกขวาที่เลเยอร์เวกเตอร์และเลือกคุณสมบัติ
  2. ไปที่แท็บฟิลด์
  3. เพิ่มคอลัมน์ใหม่ (ปุ่มนี้อยู่ที่มุมขวาบน a. ตรวจสอบให้แน่ใจว่าตรงกับข้อมูลทั้งหมดที่เป็นคอลัมน์ที่คุณพยายามขยายให้กว้างยกเว้นความยาวเปลี่ยนไปตามความยาวที่คุณต้องการ
  4. เลือกปุ่ม 'Field Calculator' (ปุ่มนี้อยู่ที่มุมขวาบน)
  5. ตรวจสอบ 'อัพเดตฟิลด์ที่มีอยู่'
  6. ตรวจสอบให้แน่ใจว่าไม่ได้เลือกช่องทำเครื่องหมาย 'อัปเดตที่เลือกเท่านั้น'
  7. เลือกฟิลด์ใหม่จากเมนูถัดจากช่องทำเครื่องหมาย
  8. ใต้เมนูฟิลด์ให้คลิกสองครั้งที่ฟิลด์เก่า
  9. กดตกลงและบันทึกการแก้ไข
  10. * ไปที่เครื่องมือจัดการตาราง ปลั๊กอินTableTable Manager
  11. เลือกและลบฟิลด์เก่า
  12. เปลี่ยนชื่อฟิลด์ใหม่เป็นฟิลด์เก่า

* คุณจะต้องติดตั้งปลั๊กอินตัวจัดการตาราง


0

วิธีแก้ปัญหาของ Scro ดังที่ YP-kun อธิบายให้ฉันฟังมากขึ้น การเปลี่ยนแปลงหนึ่งอย่างตอนนี้ด้วย QGIS 3.4 ไม่จำเป็นต้องใช้ตัวจัดการตารางสำหรับขั้นตอนที่ 10 และ 11 ของ YP-kun (เพื่อลบคอลัมน์เก่า) ในความเป็นจริง Table Manager ดูเหมือนจะไม่มีอะไรเพิ่มเติมเนื่องจากไม่มีอยู่ในตัวจัดการปลั๊กอิน ตอนนี้หลังจากขั้นตอนที่ YP-kun 1-9 คุณสามารถไปที่ Layer Properties สำหรับเลเยอร์ (ดับเบิลคลิกที่เลเยอร์ในเลเยอร์พาเนลหรือคลิกขวาที่มันแล้วคลิกที่คุณสมบัติ)> ฟิลด์แหล่งที่มา> คลิกที่ปุ่มแก้ไข> จากนั้นเลือกฟิลด์เก่าที่คุณต้องการลบ> คลิกปุ่มลบฟิลด์> จากนั้นแก้ไขปุ่มอีกครั้งเพื่อปิดการแก้ไข> บันทึกการเปลี่ยนแปลงของคุณ ดูเหมือนว่าจะผ่านไปมากเพื่อเปลี่ยนความยาวของฟิลด์เดียวในเลเยอร์เดียว แต่ก็ไม่เป็นเช่นนั้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.