การสร้าง Label หลายบรรทัดบน ArcMap

เป็นทิปง่ายๆ ที่ได้ตัวอย่างจากเว็บไซต์นี้ https://geonet.esri.com/thread/48202 ปัญหาก็คือชื่อระวางแผนที่ 1 : 4,000 ยาว 9 ตัวอักษร แต่ช่องที่ใส่แคบไปทำให้ต้องลดขนาดตัวหนังสือให้เล็กลงจนเหลือ 8 ซึ่งก็มองไม่ค่อยเห็น เลยต้องหาวิธีตัดตัวอักษรออกให้เป็น 2 บรรทัดเพื่อจะได้กำหนดขนาดตัวอักษรที่ใหญ่มากกว่า 8 และยังคงอยู่ในช่องที่ต้องการ

Font 8

วิธีการคือ
1. เลือก Properties… ของชั้นข้อมูล –> ไปที่แท็บ Labels –> เลือก Expression

Expression

2. พิมพ์ [Field 1] & vbnewline & [Field 2]

vbnewline

3. เพิ่มขนาดตัวหนังสือให้ใหญ่ขึ้น ในที่นี้กำหนดได้ 14 จาก 8

Font 14

ถ้าต้องการหลายๆ บรรทัด ก็ใช้คำสั่ง vbnewline เพื่อทำการต่อ Field ไปเรื่อยๆ ครับ

วิธีการทำ Change Detection บน ArcGIS และ eCognition

ไปเห็นวิธีการทำ Change Detection บนเว็บไซต์ https://www.e-education.psu.edu/geog883/node/609 ทำการจำแนกพื้นที่เกิดไฟป่า โดยใช้โปรแกรม ArcGIS (pixel-based) และ eCognition (object-based) น่าสนใจมาก เลยนำมาฝากครับ

ArcGIS

eCognition

การสุ่มเลือกข้อมูลใน Shapefile โดยใช้ Subset Features

เวลาจะทำแผนที่สักแผ่นหนึ่ง จะต้องประกอบไปด้วยชั้นข้อมูลต่างๆ มากมายที่ต้องการนำเสนอ ยกตัวอย่างเช่น ถนน ทางน้ำ สถานที่สำคัญ ขอบเขตการปกครอง เป็นต้น แต่บางชั้นข้อมูลจำนวนข้อมูลเยอะมากเหลือเกิน เช่น สถานที่สำคัญ มีจำนวน 1,000 จุด ถ้าเอามาใส่ในแผนที่และแสดง Label ด้วย คงทำให้แผนที่ดูรกน่าดูและมีการซ้อนทับกันจนดูไม่เห็นข้อมูลอย่างอื่น

Original Landmark

การจะมาเลือกและลบข้อมูลเอง ก็ไม่รู้จะเลือกลบอันไหน และเสียเวลามานั่งคลิกเลือก ดังนั้น จึงไปใช้ฟังก์ชั่น Subset Feature ใน Geostatistical Analyst เพื่อให้ฟังก์ชั่นสุ่มเลือกจำนวน Landmark ให้ตามจำนวนที่ต้องการ

Geostatistical Analyst

ในตัวอย่างนี้ เลือกสุ่มข้อมูลที่ร้อยละ 5 แสดงว่า จากข้อมูล Landmark ทั้งหมด 1,000 เลือกสุ่มเอาร้อยละ 5 จะได้ข้อมูล Landmark ใหม่มีจำนวน 50 จุด

Subset Features

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

Result

การสร้าง Multiple Sync Data Frame

ปกติเวลาทำ Layout แผนที่ใน ArcGIS เราจะนิยมสร้างเพียง 1 Data Frame เพื่อการนำเสนอแผนที่ 1 เรื่อง แต่ถ้าเราต้องการนำเสนอแผนที่ 2 เรื่องในแผ่นเดียวกัน และต้องการให้การเลื่อนหรือซูมแผนที่มีความสอดคล้องกัน ก็สามารถทำได้ ยกตัวอย่างเช่น Data Frame ด้านบน เป็นข้อมูลภาพถ่ายฯ ปี 2550 และ Data Frame ด้านล่าง เป็นข้อมูลภาพถ่ายฯ ปี 2555 เป็นต้น วิธีการทำมีดังนี้

1. เปิด Layout ขึ้นมา จะมี 1 Data Frame มาให้ อัตโนมัติ

One Data Frame

2. ก๊อปปี้ Data Frame และ วาง พร้อมเปลี่ยนชื่อ Data Frame ให้ชื่อมีความแตกต่างกัน

Copy and Paste Data Frame

3. เลือกทั้ง 2 Data Frame และไปที่ View –> Data Frame Properties…

Data Frame Properties

4. กำหนดค่า Extent ตามรูป

Extent

5. เสร็จแล้ว ลองเลื่อนหรือซูมข้อมูลภาพถ่ายฯ ที่ Data Frame ด้านบน จะทำให้ Data Frame ด้านล่าง เปลี่ยนแปลงตาม

Result

*** สามารถทำ Sync ได้หลายๆ Data Frame ตามข้อ 1 – 4

Credit จาก Web Site นี้

arc2google

เวลาทำงานกับชั้นข้อมูลเวคเตอร์หรือชั้นข้อมูล GIS ใน ArcGIS บางทีก็ไม่มีข้อมูลใน Attribute ที่จะบอกว่า อันนี้คืออะไร อันนั้นคืออะไร จำเป็นที่จะต้องไปหาข้อมูลเพิ่มเติม ซึ่งโปรแกรมเสริมอันหนึ่งของ ArcGIS 10.1/10/9x ที่สามารถ Synchronize แผนที่กับ Google Maps, Google Earth, Bing Maps, และ Yahoo Maps สามารถ ช่วยทำให้ได้ข้อมูลดังกล่าวได้ ซึ่งการใช้งานก็ง่ายและสะดวกดี

วิธีการดาวน์โหลดและติดตั้ง arc2google

เครดิตจากเว็บไซต์นี้ครับ http://www.husseinnasser.com/2011/09/arc2google-for-arcgis-101-compatible.html

ดูชื่อแหล่งน้ำ

Water

ดูชื่อแหล่งน้ำ ถนน และสถานที่สำคัญ

Water and Road

ถ้ากำลังแปลข้อมูลภาพถ่ายฯ ก็อาจจะใช้ประกอบเพื่อการตัดสินใจได้ จากข้อมูลภาพถ่ายดาวเทียม

Maps Compare

การแสดงรายละเอียดข้อมูล ด้วย HTML Popup

ปกติเคยใช้แต่ identify และ hyperlink วันนี้เลยมาแนะนำ Html Popup ให้เป็นอีกหนึ่งทางเลือกในการนำเสนอรายละเอียดข้อมูล

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

Sample

2. การแสดงรูปภาพ

picture format

3. การกำหนดหัวข้อของ Popup

Select Field

4. เลือกฟิลด์ที่จะแสดง
การแสดงชื่อหัวข้อฟิลด์ สามารถตั้งชื่อให้เป็นภาษาไทยได้ที่ Alias

Show Field

5. เลือกแสดงแบบ Html Popup

Html Popup

การตัดข้อมูลภาพถ่ายจากดาวเทียมรายตำบล

การตัดข้อมูลภาพถ่ายจากดาวเทียมรายตำบล โดยใช้โปรแกรม ArcGIS

1. Shapefile ตำบลซ้อนทับกับข้อมูลภาพถ่ายจากดาวเทียมไทยโชต

Input Data

2. สร้าง Model Builder

Model Builder

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

Result

เปิดเอกสาร

การสร้างและลบ Donut Holes ใน ArcGIS

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

ช่องว่างใน Polygon หรือที่เรียกว่า Donut Holes

Donut Holes

การสร้าง Donut

1. ปิดชั้นข้อมูลอื่นๆ ก่อน และ Start Editing

2. Select Polygon ที่ต้องการจะสร้าง Donut

Select Polygon

3. วาด Polygon ใหม่ (Donut ที่จะได้)

New Donut

4. เลือก Editor –> Clip –> Discard..

Clip

5. กดปุ่ม Delete ก็จะได้ Donut Holes ตามต้องการ

Donut Holes

6. Save และ Stop Editing

 

การลบ Donut

1. Start Editing และเลือกชั้นข้อมูลที่ต้องการก่อน

2. Select Polygon ที่ต้องการจะลบ Donut

3. เลือก Edit Vertices

Edit Vertices

4. เลือก Donut Holes ที่ต้องการจะลบ –> คลิกขวา Part –> Delete

Delete

5. Donut Holes ก็จะหายไป

Finish

6. Save และ Stop Editing

การสร้าง lterators บน ArcGIS

ช่วงนี้ต้องทำงานกับข้อมูลปริมาณมากและมีความหลากหลาย ทำให้ต้องหาวิธีการและเครื่องมือใหม่ๆ ที่จะมาช่วยอำนวยความสะดวก ให้สามารถทำงานได้เร็วขึ้น วิธีการอย่างหนึ่งก็คือการสร้างชุดคำสั่งวนซ้ำของการทำ Geoprocessing กับข้อมูลเดียวกันแต่ต่างพื้นที่ ซึ่งผมได้ใช้ตัว Iterators ที่อยู่ใน Model Builder ของ ArcGIS

ยกตัวอย่างเช่น ผมมีข้อมูลดัชนีข้อมูลภาพถ่ายจากดาวเทียม ที่ตัดออกมาแล้วเป็นรายจังหวัด (ใช้คำสั่ง Split)

Index

ซึ่งผมจะต้องทำการ Dissolve ทีละจังหวัด เพื่อลดความซ้ำซ้อนของข้อมูล ถ้าผมใช้วิธีการแบบเดิม ผมจะต้องทำการเลือกคำสั่ง Dissolve ทีละครั้งเพื่อให้ได้ 1 จังหวัด ซึ่งก็คงใช้เวลาไม่น้อยและน่าเบื่อมาก

ดังนั้น ผมจึงมาสร้าง Iterate เพื่อให้โมเดล ทำการ Dissolve ทุกจังหวัด แบบอัตโนมัติ ซึ่งวิธีการมีดังนี้

1. สร้างโฟลเดอร์ใหม่ 2 โฟลเดอร์ ชื่อ test1 และ test2 สำหรับเก็บข้อมูล Shapefile ก่อน Dissolve และหลังจากทำ Dissolve ตามลำดับ ซึ่งในโฟลเดอร์ test1 มีข้อมูลอยู่แล้ว

Folder

2. สร้าง d:/myToolbox.tbx

Toolbox

3. เปิด d:/myToolbox.tbx ที่ ArcToolbox

Add myToolbox

4. สร้าง Model Builder ใน myToolbox

Model Builder

5. ตั้งชื่อโมเดล ที่ Model Properties และ บันทึกโมเดล จะปรากฏชื่อโมเดลที่หน้าต่างและ myToolbox

Model Name

6. เลือก Insert — Iterators — Feature Classes

7. ดับเบิ้ลคลิกที่ Iterate Feature Classes และกำหนดค่า

Workspace of Feature Dataset เป็น D:\test1

Feature Type (optional) เป็น POLYGON

Iterate Feature Classes

8. ค้นหาคำสั่ง Dissolve ใน ArcToolbox หรือ Search และลากเข้ามาใส่ใน Model Builder

Dissolve

9. ใช้เครื่องมือ Connect ลากเส้นจากวงรีสีเขียว (Input Features) ไปยังสี่เหลี่ยม Dissolve และเลือกเป็น Input Features

10. ดับเบิ้ลคลิกที่สี่เหลี่ยม Dissolve และกำหนดค่า

Output Feature Class เป็น D:\test2\%name%.shp เนื่องจากชื่อของผลลัพธ์ที่ได้จากการทำงานแต่ละรอบจะได้มาจากชื่อของ Input Features ทำให้ต้องกำหนดชื่อไฟล์เป็น %name%.shp

Dissolve Field(S) (optional) เป็น ชื่อของฟิลด์ที่ต้องการ Dissolve ในที่นี้เลือก FileName

Statistics Field(S) (optional) เป็น ข้อมูลของฟิลด์อื่นๆ ที่ต้องการเก็บไว้ และเลือกวิธีการทางสถิติเพื่อใส่ค่าที่ Dissolve ลงไป

Dissolve

11. กดปุ่ม Run ก็จะได้ผลลัพธ์ที่ปรากฏในโฟลเดอร์ test2 ตามต้องการ

Finish Output

ฟังก์ชั่นการใช้งานใน 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 จุด จากการดูด้วยสายตา เนื่องจากเป็นพื้นที่สี่เหลี่ยม

Data

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

Field Calculator

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

Result

——————————————————————————————————————————————————

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

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

Feature Vertices To Points

Result

——————————————————————————————————————————————————

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

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

Data

ในที่นี้ข้อมูลเป็นระบบพิกัดแบบ 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!

Field Calculator

Result

ในกรณีข้อมูลเป็นระบบพิกัด 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, และ Envelope

Minimum Bounding Geometry

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

Result

——————————————————————————————————————————————————

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

Data

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

Delete Identical

Result

——————————————————————————————————————————————————

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

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

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

Create Fishnet

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

Move

Delta X,Y

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

Result