การสร้างตัวเลขแบบเรียงลำดับในตาราง Attribute

การทำงานกับข้อมูล Shapefile หรือ GeoDatabase ปกติแล้วฟิลด์ข้อมูลที่เป็น FID หรือ ObjectID จะเรียงลำดับเลขให้แบบอัตโนมัติ คือเริ่มต้นจาก 0 1 2 3 4 5 6 7 8 9 ไปเรื่อยๆ ซึ่งเวลาจะคำนวณค่าอะไรเพิ่มเติม เช่น ต้องการค่า 100001 – 100100 หรือ 23456 – 24000 เราก็นำเลข FID มาบวกเพิ่มเติมได้ โดยตัวเลขก็จะเรียงลำดับให้อัตโนมัติ แต่ถ้า Shapefile ที่เรามีการแก้ไขข้อมูลหลายครั้งทั้งเพิ่มและลบข้อมูลทำให้ค่า FID ไม่เรียงลำดับ เช่น 1 3 4 8 10 11 12 16 แต่เราต้องการที่จะสร้างตัวเลขแบบเรียงลำดับให้กับอีกฟิลด์หนึ่ง คือ 1 2 3 4 5 6 7 8 การจะใช้ค่าอ้างอิงจาก FID คงทำไม่ได้

แต่ก็มีโค๊ด VBA จากเว็บไซด์
http://mappingcenter.esri.com/index.cfm?fa=ask.answers&q=1211
ที่สามารถสร้างตัวเลขแบบเรียงลำดับให้ได้ ตามข้อมูลที่เราต้องการ สมมุติว่าในตาราง Attribute มี 1,000 แถว (FID ไม่เรียงลำดับ) ในฟิลด์ A แถวที่ 1- 300 ต้องการให้เรียงตัวเลข 1 – 300 แถวที่ 301- 800 ต้องการให้เรียงตัวเลข 1 – 800 และแถวที่ 801- 1,000 ต้องการให้เรียงตัวเลข 1 – 200 ก็สามารถที่จะใช้โค๊ดนี้ได้

Advanced
Pre-Logic VBA Script Code

Static rec As Long
Static i As Long
Dim lStart As Long
Dim lInterval As Long
lStart = 1
lInterval = 1
If (i = 0) Then
rec = lStart
Else
rec = rec + lInterval
End If
i = i + 1

Field Name

rec

ตัวอย่างการใช้งานใน ArcMap

ผลลัพธ์ที่ได้

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s