星期二, 12月 10, 2013

GMT 繪圖軟體使用中文字

因為不知道下次是多久之後才會再設定到了
所以在這裏記錄一下
也不想另外安裝字型,就用系統裏的。

系統內建的中文字型檔,不是從 windows co 過去的!!

yum CentOS6.4 的字型套件名:cjkuni-fonts-ghostscript.noarch
CentOS 7 的字型套件名與上面的不同:ghostscript-chinese-zh_TW.noarch
首先看看這個檔在不在 vi /usr/share/ghostscript/conf.d/cidfmap.zh_TW
不在就是字型套件沒裝,就裝上吧:
yum install cjkuni-fonts-ghostscript.noarch #centos 6
yum install ghostscript-chinese-zh_TW.noarch #centos 7
它應該至少會把二個字型分別裝在 /usr/share/fonts/cjkuni-ukai/ 與 /usr/share/fonts/cjkuni-uming/
然後 /usr/share/ghostscript/conf.d/cidfmap.zh_TW 這個檔案也會出現!內容如下:
/ZenKai-Medium          << /FileType /TrueType /Path (/usr/share/fonts/cjkuni/ukai.ttc) /CSI [(CNS1) 4] >> ;
/ShanHeiSun-Light       << /FileType /TrueType /Path (/usr/share/fonts/cjkuni/uming.ttc) /CSI [(CNS1) 4] >> ;
/Adobe-CNS1             /ShanHeiSun-Light ;
不知道在搞什麼!字型的位置跟實際上的不太一樣,把它改過來,改成下面的樣子

/ZenKai-Medium          << /FileType /TrueType /Path (/usr/share/fonts/cjkuni-ukai/ukai.ttc) /CSI [(CNS1) 4] >> ;
/ShanHeiSun-Light       << /FileType /TrueType /Path (/usr/share/fonts/cjkuni-uming/uming.ttc) /CSI [(CNS1) 4] >> ;
/Adobe-CNS1             /ShanHeiSun-Light ;

加到GMT的字型列表中

然後,ZenKai-Medium 聽起來像是正楷,就把它加到gmt中吧,方法如下:
#gmt4的版本,是要改PS_font_info.d 這個檔案,gmt 5則不是(請看下面gmt 5的部份)
#後面三行看起來像這樣:
vi /usr/local/gmt/share/pslib/PS_font_info.d Palatino-BoldItalic 0.677 0 ZapfChancery-MediumItalic 0.610 0 ZapfDingbats 0.700 1 #最後面新增一行 ZenKai-Medium-UniCNS-UTF8-H 0.700 1 #如果是gmt5,改的是PSL_custom_fonts.txt這個檔案在 /gmtdir/share/postscriptlight/下吧 vi /usr/local/share/postscriptlight/PSL_custom_fonts.txt #一樣在最後面新增一行 ZenKai-Medium-UniCNS-UTF8-H 0.700 1
上面這行很重要的是ZenKai-Medium是字型名稱,但是後面還一定要加一串不知道是什麼鬼的字"-UniCNS-UTF8-H"
我真的不知道為什麼,只知道UniCNS-UTF8-H 可以
ls /usr/share/ghostscript/8.70/Resource/CMap/
中找到,網路上人家簡體字用的是UniGB-UTF8-H,我試了一下不行…想說GB命名的編碼八成都與簡體有關,就想說隨便拿幾個試試…第一個就是把GB換成CNS…就成功了!耶!
# 重要1,gmt 的字型設定可以分五項FONT_ANNOT_PRIMARY, FONT_ANNOT_SECONDARY, FONT_LABEL, FONT_LOGO, FONT_TITLE,要確定你用到字型的部份是哪一個,不然會以為沒改好。 # 重要2, 可以用gmtset,只在需要打中文字的前面設定使用中文字形,之後再設定回原來的字型,這樣英文字比較不會怪…
gmtset HEADER_FONT 35; echo 1.5 5 40 0 35 LM GMT,測試 >tmp;echo 5 0.5 20 0 35 LM 測試2>>tmp;pstext tmp -R0/7/0/7 -JX6i/6i -B1/1:."GMT 中文": -P >cn.ps; ghostscript cn.ps
如果有中文字就成功了
CentOS5 設定路徑和6.4版不同,我的系統也沒要裝什麼,cidfmap.zh_TW是放在/etc/ghostscript/中。看起來與6.4版內容很像,所以什麼都沒做,就從"加到GMT的字型列表中"的部份開始即可

星期一, 7月 22, 2013

python3.3 easy_install numpy scipy matplotlib 安裝

安裝ptyhon 3.3.2
yum install tk-devel.x86_64
yum install tcl-devel.x86_64
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel
yum install lzma-devel.x86_64 # centos 6.5 不叫這個名字,先不裝看看
yum install xz-devel.x86_64

#上面二個要先裝,不然plot.show()會沒畫面跳出來。
wget http://www.python.org/ftp/python/3.3.2/Python-3.3.2.tar.bz2
tar jxvf Python-3.3.2.tar.bz2
cd Python-3.3.2
export LDFLAGS=-L/usr/lib64;./configure --prefix=/opt/python3 --with-wide-unicode
# 還有,如之後要裝 mod_wsgi (django會用到),那麼記得一定要在configure時加上,--enable-shared
# 還要在編譯時加上-fPIC 不過應該做好--enable-shared設定時就會加上了,如果沒有就export CFLAGS=-fPIC再configure

make
make test
#出現如下錯誤,但似乎不是程式的問題,是不應該用真實存在的網址www.python.org做測試
#所以假裝測這件事…
#FAIL: test_geturl (test.test_urllibnet.urlopenNetworkTests)
#----------------------------------------------------------------------
#Traceback (most recent call last):
#  File "/home/cmd/tmp/python3/Python-3.3.5/Lib/test/test_urllibnet.py", line 86, in test_geturl
#    self.assertEqual(gotten_url, URL)
#AssertionError: 'https://www.python.org/' != 'http://www.python.org/'
#- https://www.python.org/
#?     -
#+ http://www.python.org/

make install
# 有人說要用 make altinstall
# 不知道差異是啥…

#好了之後記得設定路徑
# 因為Centos5已經裝了python2.? 所以我們新裝的請用python3執行

移除先前用yum裝的版本(如果有裝的話)
yum remove python-setuptools.noarch

安裝 setuptools
wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py 
python3 ez_setup.py
easy_install pip
pip install numpy
cd /opt/python3/lib/python3.3/site-packages/numpy-1.7.1-py3.3-linux-x86_64.egg/numpy/distutils
# 這一段應該不用執行
# 執行 python3 setup.py ,然後輸入下面二行設定c與fortran 編譯器
# gcc
# f<intelem>
# Ctrl-D
新增 site.cfg 檔案,內容如下:
vi /opt/python3/lib/python3.3/site-packages/numpy/distutils/site.cfg
[mkl]
library_dirs = /opt/intel/mkl/lib/intel64
include_dirs = /opt/intel/mkl/include
mkl_libs = mkl_rt
lapack_libs =
透過pip 安裝 scipy 及 matplotlib
先裝 libpng-devel
yum install libpng-devel.x86_64
pip install scipy
pip install matplotlib
# 上面這個如果有X相關的問題(可能是遠端ssh 有x-tunnel沒開X serv),

安裝Module netCDF4 假設我們已經裝好hdf5在 /usr/local/hdf5及netcdf4在/usr/local/netcdf 中
export HDF5_DIR=/usr/local/hdf5
export NETCDF4_DIR=/usr/local/netcdf
export USE_NCCONFIG=1
pip install netcdf4
安裝basemap
yum install agg.x86_64
# geos 必需3.?版以上與 proj 與 ,所以另外增加第三方套件庫,
wget http://apt.sw.be/redhat/el5/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el5.rf.x86_64.rpm
wget http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
#註,請自行連上網去看,上面的/rpmforge-release-0.5.3-1.el5.rf.x86_64.rpm 檔案有無更新的版本。
rpm -Uvh rpmforge-release-0.5.3-1.el5.rf.x86_64.rpm
yum install proj-devel.x86_64
yum install geos-devel.x86_64
# yum install geos-python.x86_64 <--不用?

pip install pillow
pip install pytz
pip install python-dateutil
easy_install basemap
# 在用到PIL套件時如果遇到此類錯誤
#decoder jpeg not available
#就是沒裝libjpeg
#要裝上它(CentOS6.5是如下套件)
yum install libjpeg-turbo-devel.x86_64
#完了之後要重新裝PIL及相關套件(Python2版)在python3中叫做Pillow
pip install -I Pillow
pip install -I pytz
pip install -I python-dateutil
# 
easy_install -mxN basemap
easy_install basemap
# 這次在CentOS6.5的機器上,一直沒有辦法把basemap裝好,
#感覺是GEOS的問題,試了好久,只好編譯basemap裏面附的geos版本
# 編譯好之後再手動setup basemap,步驟如下
# 下載 basemap-1.0.7.tar.gz 並且 tar zxvf
# src 資料夾裏有一個 geos-3.3.3
./configure --prefix=/usr/local/geos
make; make install
export GEOS_DIR=/usr/local/geos
cd ../
python3 setup.py install
# 搞定
安裝ipython
#先安裝zeromq 套件,網站建議用yum,所以要把該網站的repo放到/etc/yum.repos.d/中
#cd /etc/yum.repos.d/
#wget http://download.opensuse.org/repositories/home:/fengshuo:/zeromq/CentOS_CentOS-5/home:fengshuo:zeromq.repo
# 6.5 版直接不用做上面的步驟
yum install zeromq-devel.x86_64
pip install tornado
pip install pyzmq
pip install ipython