Append ใน ArcGIS และ QGIS คือการผนวกชั้นข้อมูล (ตั้งแต่ 1 ชั้นข้อมูล) เข้าไปรวมในชั้นข้อมูลเป้าหมายที่มีอยู่ ชั้นข้อมูลที่จะนำเข้าไปผนวก จะเป็น ตาราง เชปไฟล์ หรือข้อมูลอื่นใดที่ซอฟต์แวร์รองรับ
TIPS: Append จะคล้ายคลึงกับ Merge เพียงแต่จะนำข้อมูลไปรวมเข้าที่ชั้นข้อมูลใดข้อมูลหนึ่ง แต่ Merge จะเป็นการสร้างชั้นข้อมุลใหม่
อย่าลืมว่า การผนวกข้อมูล จะทำใน geometry แบบเดียวกัน ท่านไม่สามารถผนวกชั้นข้อมูล เส้น (line) เข้าไปในชั้นข้อมูลประเภท จุด (point)
หาก geometry มีปัญหา อาจจะผนวกไม่สำเร็จ โปรดอ่านเรื่อง Repair Geometry
เนื้อหาโดยรวม :)
Append
ในตัวอย่างนี้ จะใช้ feature class ประเภท polygon เป็นตัวอย่าง มีทั้งหมด 3 ชั้นข้อมูล คือ base (ในตัวอย่างจะเป็นชั้นข้อมูลสีเทาเข้ม) zone01 (ในตัวอย่างจะเป็นชั้นข้อมูลสีแดง) และ zone 02 (ในตัวอย่างเป็นชั้นข้อมูลสีน้ำเงิน)
ชั้นข้อมูลหลัก หรือ Target จะเป็นชั้นข้อมูล base
สิ่งที่เราต้องการคือ จะนำชั้นข้อมูล zone01 และ zone02 ไปรวมในชั้นข้อมูล base
ในตัวอย่างนี้ ชั้นข้อมูล base จะมีฟิลด์เหมือนกับ zone01 ทุกประการ แต่ zone02 จะมีฟิลด์ไม่เหมือนอีก 2 ชั้นข้อมูล คือ แทนที่จะเป็น ORG_ID (ในรูปแบบ text หรือ ข้อความ) ดันเป็น LAND_ID (ในรูปแบบตัวเลข และข้อมูลที่ควรจะเป็นฟิลด์ชื่อ Filename ดันกลายเป็นฟิลด์ชื่อ TEMP และฟิลด์ข้อมูลก็น้อยกว่าจำนวนฟิลด์ของชั้นข้อมูล base และ zone01
สิ่งที่ต้องสำรวจก่อน
ก่อนที่จะ ผนวกหรือว่ารวมชั้นข้อมูล เราควรตรวจสอบ schema หรือคุณลักษณะของชั้นข้อมูลก่อนว่า scheme เหมือนกันหรือไม่ ถ้าชื่อฟิลด์ตรงกัน จะผนวกไปยังฟิลด์นั้น แต่ถ้าชื่อฟิลด์เดียวกัน แต่ data type คนละประเภท เช่น ชั้นข้อมูลหนึ่งเป็นข้อความ แต่อีกชั้นข้อมูลหนึ่งเป็นตัวเลข ท่านอาจได้รับ Error 001156 ใน ArcGIS
นอกจากนี้ ความยาวของฟิลด์ ก็มีผล เช่นหาก target ตั้งความยาวในฟิลด์ข้อความเพียงแค่ 5 อักขระ แต่ถ้าชั้นข้อมูลที่นำไปผนวก มีข้อมูลที่เกิน 5 อักขระ ก็จะเกิดความเสียหายขึ้น ท่านสามารถแก้ไขข้อผิดพลาดนี้ได้โดยการกำหนดฟิลด์ประเภทใหม่ให้กับฟิลด์ หรือเพิ่มความยาวให้กับจำนวนอักขระ
The Basic
ไปที่ริบบอน Analysis เลือก Tools จะมีหน้าต่าง Geoprocessing ปรากฏขึ้นมา
แท็บ Toolboxes เลือก data management tools > general > append จะมีหน้าต่าง append ปรากฏขึ้นมา (หรือเพื่อความรวดเร็ว จะพิมพ์หาในช่อง Find Tools ก็ได้)
แท็บ parameter
ช่อง Input Datasets ให้เลือกชั้นข้อมูล zone01 และ zone02
ช่อง expression เราข้ามไปก่อน ยังไม่ต้องไปยุ่งกับมัน
ช่อง Target Datasets ให้เลือกชั้นข้อมูล base
ช่อง Field Matching Type จะมี 3 ตัวเลือก
Input fields must match target fields จะผนวกข้อมูลเมื่อ schema (คุณลักษณะฟิลด์) ของชั้นข้อมูล มีรูปแบบข้อมูลเหมือนกับชั้นข้อมูล Target
Use the field map to reconcile field differences จะเป็นการจับคู่ฟิลด์ ซึ่ง schema (คุณลักษณะของฟิลด์) ไม่จำเป็นต้องตรงกับข้อมูลในชั้น Target แต่ต้องมีการ map field เพื่อเป็นการกำหนดว่าจะไปอยู่ใน ฟิลด์ ไหน ฟิลด์ที่ไม่ตรง และไม่ได้กำหนด map filed จะไม่โดนนำไปรวมในชั้นข้อมูล Target
Skip and warn if schema does not match ข้อมูล schema ต้องตรงกับชั้นข้อมูล Target หากมีฟิลด์ที่ไม่ตรงกับฟิลด์ใน Target จะไม่นำเข้า และจะแสดงข้อความเตือน
อย่างที่บอกข้างต้น สิ่งที่ต้องระวังอย่างแรก ก่อนจะ append ชั้นข้อมูลก็คือ Attribute Table มีข้อมูลเหมือนกันหรือไม่ เราจะจัดการกับสิ่งที่ไม่เหมือนกันอย่างไร ซึ่งในตัวอย่างนี้ ชั้นข้อมูล zone02 จะมี attribute ไม่เหมือนกับอีก 2 ชั้นข้อมูล ซึ่งตรงนี้ จะมีผลต่อการ append ตาม Field Matching Type ที่เราเลือก
ถ้าเลือก input fields must match target fields
ผลลัพธ์ที่ได้จะเป็น error 000465 zone02 does not match the schema of previous inputs นั่นคือ เกิดความผิดพลาด และจะไม่นำ zone01 ซึ่งไม่มีปัญหาอะไร แต่จะไม่ดำเนินการทั้งหมด
ถ้าเลือก Skip and warn if schema does not match
ผลลัพธ์ที่ได้ จะเกิด warning (โปรดสังเกตว่า ถ้าเป็น warning จะเป็นสีเหลือง แต่ถ้าเป็น error จะเป็นสีแดง) warning 003413 zone02 does not match the schema of previous inputs and hence will not be appended
นั่นคือ บอกว่า zone02 มีปัญหา
แต่ว่าผลลัพธ์จะต่างไปจากวิธี input fields must match target fields เพราะ zone01 ซึ่งไม่มีปัญหาอะไร จะนำไป ผนวกรวมเข้าชั้นข้อมูล base
ถ้าเลือก Use the field map to reconcile field differences
ในกรณีที่ attribute ไม่เหมือนกัน หรือ schema ต่างกัน เรามีตัวเลือกที่จะดำเนินการต่อ 2 ทาง
ทางแรก ไปแก้ไข attribute ให้ตรงกัน แล้วดำเนินการใหม่ อันนี้แล้วแต่ว่าจะขยันหรือไม่ เพราะบางทีเราก็ไม่ได้เป็นเจ้าของผู้สร้างชั้นข้อมูลนั้นก็อาจไม่อยากปรับเปลี่ยนอะไร
ทางสอง เลือก Field Matching Type ให้เป็น Use the field map to reconcile field differences แล้วจัดการเรื่อง map field
เมื่อเราเลือก Use the field map to reconcile field differences จะมี Field Map ปรากฏขึ้นมา เพื่อให้เราจัดการข้อมูล
ทางฝั่งซ้ายมือ ฝั่ง Output Fields จะเป็นข้อมูลฝั่ง Target ซึ่งจะเป็นตัวต้น ในตัวอย่างนี้ก็คือ ฟิลด์ที่อยู่ในชั้นข้อมูล base
โปรดสังเกต ในตัวอย่างนี้ มีชั้นข้อมูลที่จะนำมาผนวกเข้าในชั้น base อยู่ 2 ชั้นข้อมูล ท่านจะเห็นว่า มี (2) ต่อท้ายชื่อฟิลด์ นั่นคือ ฟิลด์นั้นจะรับข้อมูลจาก 2 ชั้นข้อมูล
และดูที่ ORG_ID จะเห็นว่า ไม่มีอะไรต่อท้ายชื่อฟิลด์ นั่นคือ ตรงนี้ที่ยังมีปัญหาอยู่ เมื่อคลิกดู จะเห็นว่าในฝั่ง SOURCE มีเฉพาะข้อมูลของ zone01
เราจะนำ LAND_ID ใน zone02 มาผนวกเข้าไป เราก็คลิก Add New Source
จะมีหน้าต่างเล็ก ๆ ขึ้นมา มีแท็บ zone01 กับ zone02 คลิกเลือก zone02 จะมีชื่อฟิลด์ในไฟล์ที่จะผนวกเข้ามา เลือกที่ฟิลด์ที่ต้องการนำไปรวม ซึ่งในที่นี้ก็คือ LAND_ID แล้วกด add selected
ถึงแม้ว่า LAND_ID ใน zone02 จะเป็น ตัวเลข แต่เมื่อโดนผนวกไปอยู่ใน base จะกลายเป็นข้อความ
แต่ในทางกลับกัน ถ้าหากใน zone02 เป็นข้อความ ถ้าโดนผนวกไปอยู่ใน base ที่ฟิลด์เป็นตัวเลข จะไม่นำเข้าเพราะผิดรูปแบบ
ในตัวอย่างนี้ จะไม่ map field กับ Filename เพราะเดี๋ยวจะแสดงให้เห็นว่า ถ้าไม่ map field ผลจะเป็นอย่างไร
เลือกเรียกร้อยแล้วกด run ได้เลย
ผลก็คือ ผนวกข้อมูลสำเร็จ แต่ในฟิลด์ที่ชื่อ Filename ข้อมูลที่มาจาก zone2 ก็จะไม่มี เป็น null
นี่คือการ append โดยทั่วไป
Append แบบมีเงื่อนไข
บางครั้ง เราอาจไม่จำเป็นต้องนำ shapefile ไปผนวกรวมทั้งหมด เราอาจจะคัดกรองคุณลักษณะจาก attribute table ก่อน
วิธีการจะเหมือนกับการผนวกขั้นพื้นฐาน เพียงแต่เพิ่มเงื่อนไขสำหรับกรองข้อมูลเพิ่มเข้ามาด้วย อย่างเช่น ถ้าเราจะผนวกชั้นข้อมูล เฉพาะที่มี ค่าในฟิลด์ UTMMAP4 เท่ากับ 11 สิ่งที่เราต้องทำก็เพียงแค่เพิ่มเงื่อนไขนี้เข้าไป
ในหน้าต่าง Append นอกจากเลือกเหมือนหัวข้อข้างต้นแล้ว
ในหัวข้อ Expression
ช่อง Where ให้เราเลือก UTMMAP4
Is Equal (มีค่าเท่ากับ)
และใส่เลข 11
ส่วนอื่น ๆ ทำเหมือนเดิม
ผลลัพธ์ก็จะมาเฉพาะข้อมูลที่ค่า UTMMAP4 เท่ากับ 11 เท่านั้น
นี่คือวิธี append ชั้นข้อมูลแบบง่าย ๆ
ข้อมูลอ้างอิง เว็บไซต์ ESRI