2008/08/08

GPS概念及常用术语

没有评论:

(copy)

随着整个GPS市场的发展,导航产品在人们生活中的的应用范围越来越广。今天笔者就将一些和GPS相关的概念和常用术语做了一个汇总。

智能手机GPS

智能手机GPS是手机、GPS、PDA掌上计算机三合一产品,可通过运营商网络进行实时数据更新。最快可在5秒内实现卫星定位,这是目前最快的定位 速度。在接收不到卫星信号,但有移动信号的情况下,该类手机会迅速转换搜索模式,链接电信运营商的后台,实现定位。只要能接收到手机信号,就可进行卫星定 位。而且此类产品信号稳定性较好。

最后我们在来看看在使用GPS导航产品过程中能接触到的一些相关术语及概念,对它们有一个较深的理解和认识会更有助于大家对导航产品的认识和把握。

1.坐标

大部分GPS是以经/纬度(Lat/Long)的方式显示坐标,另外还有一些也可用Universal Transverse Mercator等坐标系统来显示,具体到消费者使用的产品,则取决产品本身的坐标系统。坐标的精度在Selective Availability打开时,GPS的水平精度在100-50米之间,具体数据由接受到卫星信号的多少和强弱而定,若根据GPS的指示则应该在大约一 个足球场大小的面积内发现用户所指示的目标。

2.航点

GPS 产品内存中保存的一个点的坐标值。航点是GPS数据核心,它是构成“航线”的基矗标记航点是GPS主要功能之一,但是用户也可以从地图上读出一个地点的坐 标,手工或通过计算器接口输入GPS,使之成为一个航点。一个航点可以将来用于GOTO功能的目标,也可以选进一条航线Route,作为一个支点。一般 GPS能记录500个或以上的航点。

3.航线

航线是GPS内存中存储的一组数据,包括一个起点和一个终点的坐标,还可以包括若干中间点的坐标,每两个坐标点之间的线段叫一条"腿"。常见GPS 能存储 20条线路,每条线路30条"腿"。各坐标点可以从现有航点中选择,或是手工/计算器输入数值,输入的路点同时做为一个航点保存。实际上一条航线的所有点 都是对某个航点的引用,比如在航点菜单下改变一个航点的名字或坐标,如果某条航线使用了它,用户会发现这条航线也发生了同样的变化。可以有一条航线是"活 跃"的。“活跃”航线的路点是导向功能的目标。

4.前进方向

一般的GPS没有指北针的功能,静止不动时它是不知道方向的。但是一旦动了起来,它就能知道自己的运动方向。GPS每隔一秒更新一次当前地点信息, 每一点的坐标和上一点的坐标一一比较,就可以知道前进的方向,但是这里请大家注意这并不是GPS头指的方向,因为它是不知道自己的脑袋和运动路线是成多少 度角的。不同GPS关于前进方向的算法是不同的,基本上是最近若干秒的前进方向,所以除非哟凝固用户已经走了一段并仍然在走直线,否则前进方向是不准确 的,尤其是在拐弯的时候用户会看到通过GPD显示出来的数值在不停的变化。方向是以多少度显示的,这个度数是手表表盘朝上,12点指向北方,顺时针转的角 度。有很多 GPS还可以用指向罗盘和标尺的方式来显示这个角度。一般同时还显示前进平均速度,也是根据最近一段的位移和时间计算的。

5.导向

导向功能在以下条件下起作用︰

A.以设定"走向"目标。"走向"目标的设定可以按"走向"键,然后从列表中选择一个航点。以后"导向"功能将导向此航点。

B.目前有活跃航线。活跃航线一般在设置->航线菜单下设定。如果目前有活动航线,那么"导向"的点是航线中第一个路点,每到达一个路点后,自动指到下一个路点。

在“导向”页面上部都会标有当前导向路点名称。它是根据当前位置,计算出导向目标对你的方向角,以与"前进方向"相同的角度值显示。同时显示离目标 的距离等信息。些GPS把前进方向和导向功能结合起来,只要用GPS的头指向前进方向,就会有一个指针箭头指向前进方向和目标方向的偏角,跟着这个箭头就 能找到目标。

6.日出日落时间

大多数GPS能够显示当地的日出、日落时间,这对于用户计划出发/宿营时间时是很有用的。这个时间是GPS根据当地经度和日期计算得到的,是指平原 地区的日出、日落时间,在山区因为有山脊遮挡,日照时间根据情况要早晚各少半个小时以上。GPS的时间是从卫星信号得到的格林尼制时间,在设置菜单里可以 设置本地的时间偏移,对中国来说,一般情况下都应设+8小时,而且这个数值只与时间的显示有关。

7.航迹

GPS 每秒更新一次坐标信息,所以可以记载自己的运动轨迹。一般GPS能记录1024个以上足迹点,在一个专用页面上,以可调比例尺显示移动轨迹。足迹点的采样 有自动和定时两种方式自动采样由GPS自动决定足迹点的采样方式,一般是只记录方向转折点,但是长距离直线行走时GPS是不记点;用户可以定时采样功能中 提前规定采样时间间隔。在足迹线页面上可以清楚地看到自己足迹的水平投影。

“足迹”在线的点都没有名字,不能单独引用,查看其坐标,主要用来画路线图和“回溯”功能。很多GPS有一种叫做“回溯”(Trace back)的功能,使用此功能时,它会把航迹转化为一条“路线”(ROUTE),路点的选择是由GPS内部程序完成的一般是选用航迹上大的转折点。

同时,把此路线激活为活动路线,用户即可按导向功能原路返回。要注意的是回溯功能一般会把回溯路线放进某一默认路线(比如route0)中,看 GPS的说明书,使用前要先检查此线路是否已有数据,若有,要先用拷贝功能复制到另一条空线路中去,以免覆盖。回溯路线上的各路点用系统默认的临时名字 如"T001" 之类,有的GPS定第二条回溯路线时会重用这些名字,这时即使用户已经把旧的路线做了拷贝,由于路点引用的名字被重用了,所以路线也会改变,不是原来那条 回溯路线了。

GPS产品的开机定位可分为冷启动、温启动和热启动三种情况︰

冷启动︰以下几种情况开机均属冷启动。初次使用时;电池耗尽导致星历信息丢失时;关机状态下将接收机移动1000公里以上距离。

温启动︰距离上次定位的时间超过两个小时的启动。

热启动︰距离上次定位的时间小于两个小时的启动。

在nokia s60手机上编写 python 程序

没有评论:

s60: 为symbian os 的手机操作系统.这种可编程的手机通常称智能手机,如我的手机nokia 7610。
PyS60:Python for S60

手机上安装 PyS60

下载点 http://sourceforge.net/projects/pys60/%E4%B8%8B%E8%BD%BD
* PythonForS60_1_3_20_2ndEd.SIS - PyS60
* PythonScriptShell_1_3_20_2ndEd.SIS - Python shell 否则没有运行界面

开发环境的选取

方法1。在windows里面写python程序。保存,手机拔卡,用读卡器把程序放到卡里,手机插卡,然后运行python for s60 然后运行脚本。调试起来比较麻烦。也可用bluetooth console传数据。

Q:Symbian python程序是否可以制作成独立软件包(sis)?
A:可以,使用Symbian Python SDK里面带的py2sis.exe.
用法:

py2sis.exe python程序名.py sis文件名称.sis --uid=0x12345678
例子:

E:\Nokia\Tools\Python_for_Series_60\py2sis>py2sis.exe sms.py smskiki.sis --uid=0x100039Cf
注意:目标文件名一定要添加sis后缀,不然会出现error: invalid destination file

方法2。安装nokia的sdk,这样就构造了一个模拟器,然后从模拟器里面安装python。
PythonForS60_1_3_20_SDK_2ndEd.SIS - SDK 开发环境,可不装,用 wxpython+pys60 emulation开发

方法3。wxPython 模拟器 (推荐)
和nokia sdk模拟器不同的是,PyS60 emulation library利用wxPython gtk只写了主要两个图形包例如appuifw,e32。appuifw继承了wx的图形类。

software:
* python2.4 当然需要 (from http://www.python.org/ftp/python/2.4.3/python-2.4.3.msi)
* PyS60 emulation library (4 files: "appuifw.py, e32.py, graphics.py, key_codes.py")
* wxPython (for win32 or linux, www.wxpython.org )

windows 下安装:
安装办法:先去下载python 2.4,然后再去下载wxPython。然后下这个模拟器,把里面的四个py文件放到C:\Python2.4\Lib下。(具体放到哪里得看你的Python的安装目录了)

Ubuntu 下安装:
- wxPython
(copied from http://wxpython.org/download.php#binaries)
Add the following to your /etc/apt/sources.list file:

# wxPython APT repository at wxcommunity.com
deb http://wxpython.wxcommunity.com/apt/ubuntu/dapper /
deb-src http://wxpython.wxcommunity.com/apt/ubuntu/dapper /

After the repository info has been added to /etc/apt/sources.list you can fetch and install the packages using one of the GUI package manager tools such as Synaptic or Adept, or by running the following commands from a terminal window:

sudo apt-get update
sudo apt-get install python-wxgtk2.8 python-wxtools wx2.8-i18n

- pys60 compact library
put 4 files to PYTHONPATH directory, which is normally /usr/lib/python2.x. Show PYTHONPATH in "import sys, print sys.path".

手机与电脑之间的文件传输、控制

方法1:蓝牙控制台

能够让你通过个人电脑连接你手机上的Python命令行并执行命令。

  1. 在你的PC上打开比如一个超级中端(确定你已经安装了蓝牙设备并为超级终端选择了正确的端口)。
  2. 在你的手机上运行python -> optoins -> Bluetooth console。现在一个蓝牙连接将会被激活,python命令行将会显示在超级终端上

方法2。MIT PUTools: 使用bluetooth 在手机和pc之间传数据,实现同步。可以在PC上编程序,然后整个传到手机上去run over bluetooth。网址是http://people.csail.mit.edu/kapu/symbian/python.html

一个显示输入对话框的程序:

import appuifw
import e32

def bexit():
app_lock.signal()
def addtext():
t = appuifw.query(u'Input text:','text')
r.add(unicode(t))
r = appuifw.Text()
r.set(u'info:\n')
appuifw.app.screen = 'normal'
appuifw.app.menu = [(u'Add',addtext),(u'Exit',bexit)]
appuifw.app.body = r
appuifw.app.exit_key_handler = bexit
app_lock = e32.Ao_lock()
app_lock.wait()

保存成1.py然后直接用python执行。。。

sample2: take photo and save

import camera
import graphics
img=camera.take_photo()
img.save("test.jpg")

Note: 如果有gps receiver with bluetooth, 可以在拍照的同时记录下照片经纬度

2008/07/30

Ubuntu: LAMP 安装

没有评论:

LAMP套件就是Linux+Apache+Mysql+PHP这四款软件,组成了一个可以使网站运行的套装工具软件。其中P也可代指 PHP/Python/Perl。如果只用后台数据处理,可以考虑用python编写。当然python 也有网页功能。

版本:
Apache 2
Mysql 5.0
Php 5.1

1.搭建基本的web环境,我使用的是apache2 + php5 + mysql 5.0
sudo apt-get install apache2 mysql-server php5-mysql
2.(optional)解决用户登录时图形验证码无法显示的问题
apt-get install php5-gd
3. 安装mysql的web管理软件phpmyadmin
apt-get install phpmyadmin
4. 基于浏览器的图形化管理工具软件 webwin (http://www.webwin.com)

MySQL更改root密码
刚安装mysql后可执行 mysql -u root -p 加上密码。
方法1:
shell>mysqladmin -u root password new_password

方法2:
mysql> SET PASSWORD FOR root=PASSWORD(’new_password’);

方法3:使用 mysqladmin命令
shell> mysql -u root
mysql> UPDATE user SET Password=PASSWORD(’new_password’) WHERE user=’root’;
mysql> FLUSH PRIVILEGES;

2008/07/07

安装 Python for MySQL 的连接扩展

没有评论:

sudo apt-get install python-mysqldb

MySQLdb is an interface for connecting to a MySQL database server from Python. It implements the Python Database API v2.0 (http://www.python.org/dev/peps/pep-0249/), and is built on top of the MySQL C API. Can discuss using MySQL and Python in forum (http://forums.mysql.com/list.php?50).

一个Python访问mysql的 sample script
1. 建立一个 database 和 一个table:
mysql ->
create database my_db;
use my_db;
create table test(
id int,
name varchar(50)
);
insert into test values(1,”hello”);
insert into test values(2,”world”);

2.Python代码 sample.py

import MySQLdb
class Eb_db:
def __init__(self):
try:
connection = MySQLdb.connect(host=”localhost”, user=”root”, passwd=”123456″, db=”my_db” )
cursor = connection.cursor()
cursor.execute( “SELECT * FROM test ” )
except MySQLdb.OperationalError, message:
errorMessage = “Error %d:\n%s” % (message[ 0 ], message[ 1 ] […]

Another script:

#!/usr/bin/env python
# -*-coding:UTF-8-*-#这一句告诉python用UTF-8编码
"""
***** This is a MySQL test *****

select:
conn=Connection()
conn.select_db('test')
cur=conn.cursor()
cur.execute('select * from user')
cur.scroll(0)
row1=cur.fetchone()
row1[0]
row1[1]
row1[2]

insert:
cur.execute('insert into user (name,passwd) values(\'benyur\',\'12345\')')
cur.insert_id()

update:
cur.execute('update user set passwd=\'123456\' where name=\'benyur\'')

delete:
cur.execute('delete from user where id=2')

**********************************
"""

from MySQLdb import *

def conn():
conn=Connection()
conn.select_db('test')
cur=conn.cursor()
cur.execute('select * from user')
cur.scroll(0)
row1=cur.fetchone()
row1[0]
row1[1]
row1[2]

def usage():
print __doc__

if __name__=='__main__':
usage()

3. 使用
import MySQLdb
3.1. 连接
conn = MySQLdb.Connection(host, user, password, dbname)
3.2. 选择数据库
conn.select_db(’database name’)
3.3. 获得cursor
cur = conn.cursor()
3.4. cursor位置设定
cur.scroll(int, mode)
mode可为相对位置或者绝对位置,分别为relative和absolute。
3.5. select
cur.execute(‘select clause’)
例如
cur.execute(‘select * from mytable’)
row = cur.fetchall()
或者:
row1 = cur.fetchone()
3.6. insert
cur.execute(‘inset clause’)
例如
cur.execute(‘insert into table (row1, row2) values (\’111\’, \’222\’)’)
conn.commit()
3.7. update
cur.execute(‘update clause’)
例如
cur.execute(“update table set row1 = ‘’ where row2 = ‘row2 ‘ ”)
conn.commit()
3.8. delete
cur.execute(‘delete clause’)
例如
cur.execute(“delete from table where row1 = ‘row1’ ”)
conn.commit()

LAMP实例: 如何安装bbPress论坛系统

没有评论:
1. go to www.bbPress.org, and download software;
2. edit& save config-sample.php to config.php;
mysql> create database tigerbeach;
3. upload all package to /var/www directory (LAMP ready);
4. open http://155.69.149.85/ to run bb-admin/install.php.

bbPress: upgrade 0.8

(copied from bbpress.org)

To upgrade bbPress from a previous version takes just a few minutes.

First, you should always back up your files and your database in case something goes wrong.

Second, keep the following files and directories.

1. .htaccess
2. config.php
3. my-plugins/ (if you have it)
4. my-templates/ (if you have it)

and delete everything else.

Third, upload the newest version of bbPress to your server.

Fourth, log in and visit your bbPress’ admin panels. If you see an upgrade link instead of the normal screens, click it. If you don’t see an upgrade link (it would have been really obvious), continue to step five.

Fifth, sit back and relax; you’re done!


bbpress theme 主题:

mkdir my-tempates
在 ./my-templates/下拷贝了两个themes,但激活的时候有问题:告诉这是 themes for wordpress 。
需要修改才行!


Allow Images插件

With this plugin, users may include image tags in their posts. Currently the images only support pngs, gifs or jpegs.

== Installation ==
download "allow-images.php" from bbpress.org
Add the allow-images.php file to bbPress/my-plugins/ directory.

插入图片的 HTML 代码是:

csail-mit

<img alt="csail-mit" src="http://www.csail.mit.edu/images/csaillogo150.gif"
/>

所以现在也支持img 这个HTML 标签


MimeTex for WordPress & bbPress

mimetex http://www.forkosh.dreamhost.com/mimetex.html
是一个C语言编写的程序,它直接读入latex表达式,输出一个GIF文件(如果在linux下,输出一个ascii点阵)。编译成CGI文件后,放到支持CGI的服务器上就行了。mimetex如此强大,热门的blog,论坛程序都有专门开发的插件,WordPress也不例外。

1。将编译好的 mimetex.cgi (或直接下载 for linux http://www.forkosh.com/mimetex.exe/linux/mimetex.zip) 移到 /usr/lib/cgi-bin/ 目录下
sudo mv mimetex.cgi /usr/lib/cgi-bin/

访问以下网址,如果正常显示则 mimetex.cgi安装成功
http://155.69.149.85/cgi-bin/mimetex.cgi?x^2+y^2

注: Ubuntu 下 cgi-bin 目录在 apache配置文件中定义
cd /etc/apache2/sites-available
vi default
...
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
...

2 在 http://zhiqiang.org/blog/plugin/mimetex 下载一个 mimetex for bbpress的插件, 拷贝这两个文件 mimetex-plugin.php and Snoopy.class.php 到目录 my-plugins/ 。然后到bbpress admin中激活该插件。修改mimetex-plugin.php的$mimetex_server变量:

// change it to your server
$mimetex_server = "http://localhost/cgi-bin/mimetex.cgi"

// cache directory
$cache_path = BBPATH . '/bb-cache/';

修改 bb-cache/ 目录为可写
sudo chmod 777 bb-cache

3 如果显示 $$x^2+y^2=z^2$$ 而不是 x^2+y^2=z^2,则插件安装成功。

4. 目前是用 两个美元符号把公式括起来(如同latex ),如要修改,则
在mimitex-plugin.php 中 改 function parseTex() 中的变量 $regex

一个直接输入数学公式并直接以图片输出该公式的方法!!

***用此方法的前提是懂得Latex语言,即数学符号的代码,代如根号x就是\sqrt(x),a/b就是\frac{a}{b},等等...***
操作如下:
例如我要输入公式 a^2+b^2=c^2
那么我们只需输入
[img]http://www.imathas.com/cgi-bin/mimetex.cgi?a^2+b^2=c^2[/img ]

或者在bbpress中img tag可以接受如下形式:
<img src="http://www.imathas.com/cgi-bin/mimetex.cgi?a^2+b^2=c^2"
/>