Python: Trigonometry in python

14 08 2013

20130814

ตรีโกณมิติในไพธอน มีการคำนวณคล้ายกับโปรแกรมอื่นๆยกตัวอย่างเช่น 

(หน่วยวัดมุมเป็น องศา)
sin 30  = 0.5000  
cos 30 = 0.8666
tan 30 = 0.5773
ในทางกลับกัน 
asin 0.5000 = 30
acos 0.8666 = 30
atan 0.5777 = 30

การใช้ไพธอนคำนวณค่ามุมพวกนี้ควรระลึกไว้เสมอว่าคอมพิวเตอร์คำนวณมุมในหน่วย เรเดียน หากต้องการทราบค่าหน่วยมุมเป็นองศา ต้องทำการแปลงให้เรียบร้อยก่อน
ดังตัวอย่างข้างบนเขียนในภาษาไพธอนได้ดังนี้

Python code:

from math import sin, cos, tan, asin, acos, atan, radians, degrees
print sin( radians(30) )
print cos( radians(30) )
print tan( radians(30) )

print degrees( asin( 0.5) )
print degrees( acos(0.8666) )
print gegrees( atan(0.5773) )

 





Python: pyQt: set MessageBox default button

8 03 2013

20130308

I use MessageBox in pyQt and want to change default button from Yes to No, let see how to do.

first I want to show the basic command to show message box

from PyQt4 import QtGui
reply = QtGui.QMessageBox.question(None,'Warning!!','Click [Yes] to do or [No] to skip',QtGui.QMessageBox.Yes, QtGui.QMessageBox.No)
 if reply == QtGui.QMessageBox.Yes:
      print 'Yes'
 else:
      print 'No'

output show in image the default button is highlight on Yes button

Image

when we want to change default from Yes to No button we can do like this

from PyQt4 import QtGui
reply = QtGui.QMessageBox.question(None,'Warning!!','Click [Yes] to do or [No] to skip',QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.No)
if reply == QtGui.QMessageBox.Yes:
     print 'Yes'
else:
     print 'No'

the “QtGui.QMessageBox.Yes | QtGui.QMessageBox.No, QtGui.QMessageBox.No” is key point first two are what button to show, this word meas show Yes and No button and after comma is what default button now I set No button and the result is
Image





Python: How to skip / break in for loop

21 01 2013

20130121

For loop in python working like this

for i in range(10):
   print i

output will be

0
1
2
3
4
5
6
7
8
9

if you want to exit loop when condition is true (when i = 5)

for i in range(10):
   if i == 5:
      break
   print i

output will be

0
1
2
3
4

if you want skip when condition is true (when i = 5) but you still want it continue loop

for i in range(10):
   if i == 5:
      continue
   print i

output will be

0
1
2
3
4
6
7
8
9




Python: install GDAL with Python 2.7 on Windows 7 64 bit

14 01 2013

20130114

It’s easy to install GDAL library for Python on Windows 7 64 bit

การติดตั้ง GDAL สำหรับ Python บนระบบปฎิบัติการ Windows 7  64 bit เดิมเคยคิดว่ายุ่งยากกลับไม่เป็นเช่นนั้น ติดตั้งได้ง่ายมากเลย

required: (dowload มาได้เลย)

  1. Python 2.7.3 for windows 64 bit [download link][download page]
  2. GDAL-1.9.2.windows 64bit for Python 2.7 [download link]

เมื่อโหลดมาครบแล้วก็เริ่มกันได้เลย

  • install Python 2.7 [if you already installed pass this ^_^]
  • install GDAL 1.9.2

เรียบร้อย ไม่ต้องตั้งค่าอื่นเห็นไหมง่ายมากเลยเทียบกับของเดิม

test: มาทดสอบกันว่าใช้งานได้หรือเปล่า

เปิด Python Shell หรือ Python Interpreter ขึ้นมา
พิมพ์ from osgeo import gdal ถ้าสามารถโหลดเข้ามาได้จะแสดงพร้อมสำหรับรับคำสั่งต่อไป
พิมพ์ dir(gdal) ถ้าสมบูรณ์ก็จะแสดงคำสั่งต่างๆ ออกมาดังภาพ
Image

พร้อมใช้งานแล้ว





Python: read text file into list

24 12 2012

20121224

text file contain data of 15 ground point. file name is grounddata.txt

 15
 1 18160.153 -57509.869 1284.700 0.2 0.2 0.1
 2 24207.094 -54489.362 1341.192 0.2 0.2 0.1
 3 27248.245 -51442.223 824.272 0.2 0.2 0.1
 4 21195.711 -51470.131 946.992 0.2 0.2 0.1
 5 24000.0 -54000.0 1000.0 1000.0 1000.0 1000.0
 6 24000.0 -54000.0 1000.0 1000.0 1000.0 1000.0
 7 24000.0 -54000.0 1000.0 1000.0 1000.0 1000.0
 8 24000.0 -54000.0 1000.0 1000.0 1000.0 1000.0
 9 24000.0 -54000.0 1000.0 1000.0 1000.0 1000.0
 10 24000.0 -54000.0 1000.0 1000.0 1000.0 1000.0
 11 24000.0 -54000.0 1000.0 1000.0 1000.0 1000.0
 12 24000.0 -54000.0 1000.0 1000.0 1000.0 1000.0
 13 24000.0 -54000.0 1000.0 1000.0 1000.0 1000.0
 14 24000.0 -54000.0 1000.0 1000.0 1000.0 1000.0
 15 24000.0 -54000.0 1000.0 1000.0 1000.0 1000.0

the first line is number of points.
second line to end is point number, X, Y, Z, SDX,SDY,SDZ

I need to read text file and convert data from text to number and add them to list in Python.
I use this code

def num(s):
  try:
     return int(s)
  except ValueError:
     return float(s)
if __name__ == '__main__':
   filemane = 'grounddataTom.txt'
   with open(filemane,'r') as f:
     i = 0
     groundPointList = []
     for line in f:
       if i == 0:
         groundPoint = int(line)
       else:
         lineTxt = line.split()
         lineNum = []
           for j in lineTxt:
             lineNum.append(num(j))
           groundPointList.append(lineNum)
       i +=1
  print groundPoint
  print groundPointList

it work very well





Python: get variable value from text

14 12 2012

20121214

มีตัวแปรที่เก็บไว้แบบเรียงหมายเลข ต้องการระบุเฉพาะหมายเลขแล้วเข้าไปเรียกตัวแปรได้ถูกตัว

code:

frame098Data = [1,a,2,b,3,]
frame101Data = [2,d,e,f,g,]
frame104Data = [3,q,2,p,1,]

input ="098"
dataname ="frame"+input+"Data"

print dataname

จะได้ >”frame098Data”
แต่หากเราใช้ฟังก์ชั่น eval()

print eval(dataname)

จะได้ >[1,a,2,b,3,]





Python: get last folder from path

7 12 2012

20121207

ต้องการใช้ชื่อโฟล์ดเดอร์สุดท้าย ไปใช้งานสามารถทำได้ดังนี้

code:

import os
mypath = ‘G:\Python\Sample\lastFolder’
print os.path.basename(os.path.normpath(mypath)

the result is “lastFolder”