Read data from text file by Python

1 04 2010

มีข้อมูลที่สกัดออกมาจากกล้อง Ladybug ที่เก็บค่าพิกัดตำแหน่งภูมิศาสตร์อยู่ในรูปของ Text file หาวิธีแยกเอาเฉพาะส่วนที่ต้องการจากข้อความที่ได้มา ในเบื้องต้นมองหาการอ่านข้อมูลตัวอักษรแบบที่เคยทำใน VB งมอยู่นานไม่มีตัวอย่างที่เข้าใจง่ายซักที จนได้โค้ดของ อ.ไพศาลมาสำหรับดึงข้อมูล Lat, Lon จากข้อมูล LadyBug ก็พบเลยว่าใช้คำสั่งไม่กี่บรรทัด(แต่ต้องเข้าใจลึกซึ้งกว่า VB) มาดูกันดีกว่า(จดไว้กันลืม)

ตัวอย่างข้อมูลใน Textfile

Filename: ladybug_frame_info_115.txt
000000, SEQID 0, CYCLE 000 0000, SIZE 11945472, LAT 13.74372167, LON 100.52316167, ALT 41.100, GAMMA 0.000, GAIN 0, SHUTTER 0
000001, SEQID 0, CYCLE 000 0000, SIZE 11945472, LAT 13.74367167, LON 100.52314500, ALT 41.300, GAMMA 0.000, GAIN 0, SHUTTER 0
000002, SEQID 0, CYCLE 000 0000, SIZE 11945472, LAT 13.74356333, LON 100.52312167, ALT 41.200, GAMMA 0.000, GAIN 0, SHUTTER 0
000003, SEQID 0, CYCLE 000 0000, SIZE 11945472, LAT 13.74350333, LON 100.52311333, ALT 41.200, GAMMA 0.000, GAIN 0, SHUTTER 0
000004, SEQID 0, CYCLE 000 0000, SIZE 11945472, LAT 13.74338000, LON 100.52309333, ALT 40.600, GAMMA 0.000, GAIN 0, SHUTTER 0
000005, SEQID 0, CYCLE 000 0000, SIZE 11945472, LAT 13.74331500, LON 100.52307667, ALT 40.500, GAMMA 0.000, GAIN 0, SHUTTER 0
000006, SEQID 0, CYCLE 000 0000, SIZE 11945472, LAT 13.74319167, LON 100.52305333, ALT 40.100, GAMMA 0.000, GAIN 0, SHUTTER 0
000007, SEQID 0, CYCLE 000 0000, SIZE 11945472, LAT 13.74313000, LON 100.52303667, ALT 40.200, GAMMA 0.000, GAIN 0, SHUTTER 0
000008, SEQID 0, CYCLE 000 0000, SIZE 11945472, LAT 13.74302000, LON 100.52300667, ALT 39.200, GAMMA 0.000, GAIN 0, SHUTTER 0
000009, SEQID 0, CYCLE 000 0000, SIZE 11945472, LAT 13.74296667, LON 100.52299833, ALT 39.000, GAMMA 0.000, GAIN 0, SHUTTER 0

ต้องการดึงข้อมูลเฉพาะ ID, Latitude, Longitude มาแสดง
สามารเขียนโค้ดภาษาไพธอนได้ดังนี้

#
# Read GPS data from text file
# Text file was exported from LadyBug pgr file
# Applied from Dr.Phisan Python script
#

filename = ‘C:\Temp\ladybug\ladybug_frame_gps_info_115.txt’

frames = dict()

with open( filename, ‘r’ ) as f:
gps_data = f.readlines()

print ‘ Frame’, ‘ Latitude ‘, ‘ Longitude’
for frame_data in gps_data:
kvps = frame_data.split( ‘,’ )
frame_num = kvps[0]
gps_lat = float( kvps[4].strip(‘ LAT ‘) )     # Latitude data
gps_lon = float( kvps[5].strip(‘ LON ‘) )    # Longitude data

print frame_num, gps_lat, gps_lon           #Print frame number, Latitude, Longitude

เมื่อสั่ง run
จะแสดงหมายเลข ID ค่าละติจูด และค่าลอนจิจูดออกมา
สำหรับการพัฒนาต่อยอดนำไปใช้ก็ทำต่อจากนี้ไม่ว่าจะเป็นเขียนลงเป็นไฟล์ใหม่ หรือว่าจัดกลุ่ม นำเข้าฐานข้อมูลหรือ ส่งออกไปยัง Google Earth หรือเขียนเป็น shape file ก็สามารถทำได้

ผลที่ได้
Frame Latitude   Longitude
000000 13.74372167 100.52316167
000001 13.74367167 100.523145
000002 13.74356333 100.52312167
000003 13.74350333 100.52311333
000004 13.74338 100.52309333
000005 13.743315 100.52307667
000006 13.74319167 100.52305333
000007 13.74313 100.52303667
000008 13.74302 100.52300667
000009 13.74296667 100.52299833
000010 13.74286667 100.52298167
000011 13.74282833 100.52298167


Actions

Information

Leave a comment




Design a site like this with WordPress.com
Get started