ฟังก์ชั่นการใช้งานใน ArcGIS

วันนี้มานำนำเสนอการใช้งานฟังก์ชั่นต่างๆ ใน ArcGIS 6 ฟังก์ชั่น (เล็กๆ) ซึ่งคิดว่าน่าจะเป็นประโยชน์สำหรับคนทำงานทางด้าน GIS ได้แก่

1. การนับจำนวน vertex ใน Polygon

2. การแปลง vertex ใน Polygon ไปเป็น Point

3. การคำนวณ Maximum Extent หรือ Envelop

4. การสร้าง Minimum Extent ในรูปแบบต่างๆ

5. การลบข้อมูลใน Field ที่ซ้ำกัน

6. การเลื่อนตำแหน่ง Polygon ตามระยะทางที่กำหนด

1. การนับจำนวน vertex ใน polygon

ฟังก์ชั่นนี้ผมใช้หาจำนวน vertex ใน polygon ของ Index ข้อมูลภาพถ่ายจากดาวเทียม ซึ่งปกติแล้วจะมีประมาณ 4 จุด จากการดูด้วยสายตา เนื่องจากเป็นพื้นที่สี่เหลี่ยม

111

แต่พอนำ Index นี้ไปขึ้นบนเว็บไซต์พบว่าข้อมูลโหลดขึ้นมาช้ามาก ซึ่งทำให้คิดว่าข้อมูลต้องมีปัญหาอะไรสักอย่าง ทำให้อยากทราบว่าแต่ละ Polygon ของ Index มีจำนวน vertex 4 จุด จริงๆ หรือเปล่าในแต่ละ Polygon

วิธีการคือ สร้าง Field ขึ้นมาใหม่ชื่อ vertex เป็น Long Integer และ Field Calculator เลือก Python และใส่ฟังก์ชั่นนี้ลงไป !shape.pointcount! ก็จะทราบจำนวน vertex ทั้งหมดในแต่ละ Polygon

2222

เมื่อทราบจำนวน vertex แล้วลองซูมเข้าไปดูก็พบว่าเป็นแบบนี้ ซึ่งสามารถแก้ไขปัญหาได้โดยใช้ การสร้าง Minimum Extent แบบ Convex_Hull ซึ่งมีวิธีทำในข้อที่ 4 (การสร้าง Minimum Extent ในรูปแบบต่างๆ)

3333

2. การแปลง vertex ใน Polygon ไปเป็น Point

ไปที่ ArcToolbox หรือ Search แล้วหาฟังก์ชั่น Feature Vertices To Points (Data Management) ก็จะสามารถแปลงจุด Vertex จาก Line หรือ Polygon ให้กลายเป็น Point ได้

pic13

pic21

3. การคำนวณ Maximum Extent หรือ Envelop

ถ้าใน Shapefile ของเรามีหลายๆ Polygon ที่มีรูปร่างแตกต่างกัน และเราต้องการทราบค่าพิักัดที่เป็น xMin, xMax, yMin, และ yMax ของแต่ละ Polygon เพื่อนำค่าเหล่านี้ไปกรอกในระบบ สำหรับใช้กำหนดกรอบในการสืบค้นข้อมูลภาพถ่ายจากดาวเทียม ซึ่งในระบบการค้นหาแบบเก่ายังไม่สามารถนำเข้า Polygon ที่มีจำนวนจุดมากกว่า 4 จุดหรือเป็น Shapefile ได้

pic52

ในที่นี้ข้อมูลเป็นระบบพิกัดแบบ UTM วิธีการคือสร้าง Field ขึ้นมา 4 Fields เป็นแบบ Double ได้แก่ xMin, xMax, yMin, และ yMax จากนั้นเลือกคำนวนโดย Field Calculator ในแต่ละ Field ตามฟังก์ชั่นนี้

xMin => !shape.extent.xmin!

xMax => !shape.extent.xmax!

yMin => !shape.extent.ymin!

yMax => !shape.extent.ymax!

pic71

pic81

ในกรณีข้อมูลเป็นระบบพิกัด Lat/Long ก็ใช้ฟังก์ชั่นเดิมในการคำนวณ เพียงแต่ว่าจะต้องเปลี่ยน Field ที่ใช้คำนวณให้ตรงกัน

LongMin = xMin => !shape.extent.xmin!

LongMax = xMax => !shape.extent.xmax!

LatMin = yMin => !shape.extent.ymin!

LatMax = yMax => !shape.extent.ymax!

4. การสร้าง Minimum Extent ในรูปแบบต่างๆ

ฟังก์ชั่นนี้ถ้าให้อธิบายที่เข้าใจง่ายๆ ก็คือ สร้างข้อมูล Extent ใหม่ (Polygon) จากข้อมูลเดิมที่มีอยู่ (Point, Line, Polygon) โดยเลือกวิธีการสร้างกรอบของ Extent ตามต้องการ ซึ่งจะมีวิธีการเลือกอยู่ 5 แบบ คือ Convex Hull, Rectangle By Area, Rectangle By Width, Circle, และ Envelopepic121

ใช้ฟังก์ชั่น Minimum Bounding Geometry โดยใช้ข้อมูลนำเข้าเป็นขอบเขตประเทศทั่วโลก และเลือกใช้วิธี Envelope จะได้ขอบเขตเป็นกรอบสีแดงpic112

5. การลบข้อมูลใน Field ที่ซ้ำกัน

pic131

การทำข้อมูลที่มีความซ้ำซ้อนกันทำให้ข้อมูลมีขนาดใหญ่โดยไม่จำเป็น วิธีการแก้ไขปัญหาคือ การใช้ฟังก์ชั่น Delete Identical และเลือกชื่อ Field ที่ต้องการลบข้อมูลที่ซ้ำกัน โปรแกรมจะลบทั้งข้อมูลเชิงพื้นที่และข้อมูลคำอธิบาย ซึ่งจะคงเหลือชุดข้อมูลที่ซ้ำกันหนึ่งค่า

pic14

pic15

6. การเลื่อนตำแหน่ง Polygon ตามระยะทางที่กำหนด

การเลื่อนตำแหน่ง Polygon นี้ เพื่อบางทีถ้าเราต้องการตัดข้อมูลภาพถ่ายจากดาวเทียม ออกเป็นหลายส่วนโดยต้องการให้มีส่วนที่ซ้อนทับกัน ซึ่งเราจะต้องสร้างกรอบพื้นที่ตัดขึ้นมาก่อนเป็น Polygon และทำการเลื่อนทีละ Polygon ไปทีละ 500 เมตร (กรอบที่ 2 เพราะกรอบแรกคงที่) 1,000 เมตร (กรอบที่ 3) 1,500 เมตร (กรอบที่ 4) …. โดยใช้คำสั่ง Move ใน Editor ก็จะสามารถนำ Polygon นี้ไปใช้ตัดข้อมูลภาพถ่ายจากดาวเทียมได้

กรอบสีแดง จาก Create Fishnet

pic16

เลือกกรอบที่ 2 และเลื่อนขึ้นไป 500 เมตร โดยการ Move

pic17

pic18

เปลี่ยนกรอบเลือกและพิมพ์ค่าที่จะเลื่อนไปเรื่อยๆ ก็จะได้กรอบที่จะใช้ตัดตามต้องการ (กรอบสุดท้ายให้ก๊อปปี้กรอบจากรองสุดท้ายมาแล้ววางและเลื่อนเป็นค่าลบจากค่าที่เลื่อนมาทั้งหมด)

pic19

 

ที่มา : gi4u.wordpress.com

 

Posted in GIS

Leave a Reply

Your email address will not be published. Required fields are marked *