MARCO's FREE MEMO

携帯フォトや備忘録などをちょこっと…

Mapserver インストール

2012年09月29日 14時29分25秒 | JavaScript
先週、ノートPCを買い換えた。
Core i5でメモリが4GB(あと4GB買い足した)でWindows7(64bit)
「これからはVMだろう」ということでVM Player5を入れてそこにCentOSをゲストOSで入れてみた。
丁度、仕事でMapServerを扱うようになったので、まずMapServerのインストールに挑戦。

以下、あちこちのサイトを見ながら試行錯誤しながら構築したメモ
多くの人がノウハウを残してくれるからインストールであまり苦しまなくなった
皆さんに感謝☆
------------------------------------------------------------------------
■Apachの追加インストール
# yum -y install httpd httpd-devel

■PHPの追加インストール
# yum -y install php php-mbstring php-mcrypt php-pgsql php-devel php-gd

■GDのインストール
# yum -y install gd gd-devel

■GIF,PNG,JPEGのインストール
# yum -y install giflib giflib-devel
# yum -y install libpng libpng-devel
# yum -y install libjpeg libjpeg-devel

■LIbicuのインストール
# yum -y install libicu libicu-devel

■Xercesのインストール
# wget http://ftp.riken.jp/net/apache//xerces/c/3/sources/xerces-c-3.1.1.tar.gz
# tar zxvf xerces-c-3.1.1.tar.gz
# cd xerces-c-3.1.1
# ./configure --prefix=/usr/local/
# make
# make install
# /sbin/ldconfig -v

■geosのインストール
# wget http://download.osgeo.org/geos/geos-3.2.2.tar.bz2
# tar jxvf geos-3.2.2.tar.bz2
# cd geos-3.2.2
# ./configure --prefix=/usr/local/
# make
# make install
# /sbin/ldconfig -v

■PROJのインストール
# wget http://download.osgeo.org/proj/proj-4.7.0.tar.gz
# tar zxvf proj-4.7.0.tar.gz
# cd proj-4.7.0
# ./configure --prefix=/usr/local/
# make
# make install
#

■PostgreSQLのインストール
# yum -y install postgresql84 postgresql84-server postgresql84-libs postgresql84-devel

■初期設定
# service postgresql initdb

■起動
# service postgresql start

■PostGISをインストール
# wget http://postgis.refractions.net/download/postgis-1.5.3.tar.gz
# tar zxvf postgis-1.5.3.tar.gz
# cd postgis-1.5.3
# ./configure \
--with-geos=/usr/local/bin/geos-config \
--with-pgconfig=/usr/bin/pg_config \
--with-proj=/usr/local \
--with-proj-libdir=/usr/local/lib
# make
# make install

■GDAL/OGRをインストール
// 追加パッケージを導入 (導入済であれば不要)
# yum -y install curl curl-devel unixODBC unixODBC-devel

# wget http://download.osgeo.org/gdal/gdal-1.9.0.tar.gz
# tar zxvf gdal-1.9.0.tar.gz
# cd gdal-1.9.0
# ./configure \
--with-libtiff=internal \
--with-pg \
--with-pymoddir=/usr/lib/python2.4/site-packages \
--with-python \
--with-xerces=/usr/local/ \
--with-odbc \
--with-geos=/usr/local/bin/geos-config
# make
# make install

■MapServerをインストールする
// 追加パッケージを導入 (導入済ならば不要)
# yum install freetype freetype-devel

# wget http://download.osgeo.org/mapserver/mapserver-5.6.8.tar.gz
# tar zxvf mapserver-5.6.8.tar.gz
# cd mapserver-5.6.8
# ./configure \
--with-tiff \
--with-zlib \
--with-jpeg \
--with-png \
--with-freetype \
--with-gd \
--with-geos \
--with-postgis=/usr/bin/pg_config \
--with-proj \
--with-sos \
--with-threads \
--with-wcs \
--with-wfs \
--with-wfsclient \
--with-wmsclient \
--with-wmsserver \
--with-gdal=/usr/local/bin/gdal-config \
--with-ogr=/usr/local/bin/gdal-config \
--with-agg \
--with-php=/usr/include/php \
--with-httpd=/usr/sbin/httpd
# make

■makeでエラーが出たら足りないライブラリを追加
/usr/bin/ld: cannot find -lxslt
/usr/bin/ld: cannot find -lpam
# yum -y install libxslt libxslt-devel
# yum -y install pam pam-devel

// イントーラーは付属しないので、手動で設置する
# cp legend mapserv mapserver-config msencrypt scalebar shp2img shp2mysql.pl shp2pdf shptree shptreetst shptreevis sortshp tile4ms /usr/local/bin

■mapservモジュール確認
# /usr/local/bin/mapserv -v
/usr/local/bin/mapserv: error while loading shared libraries: libproj.so.0: cannot open shared object file: No such file or directory
というエラーが出た場合は、Libraryを追加
# echo '/usr/local/lib' > /etc/ld.so.conf.d/mapserver.conf
# /sbin/ldconfig -v
再度、モジュール確認
# /usr/local/bin/mapserv -v
MapServer version 5.6.5 OUTPUT=GIF OUTPUT=PNG OUTPUT=JPEG OUTPUT=WBMP OUTPUT=SVG SUPPORTS=PROJ SUPPORTSWFS_CLIENT SUPPORTS=WCS_SERVER SUPPORTS=SOS_SERVER SUPPORTS=THREADS SUPPORTS=GEOS INPUT=EPPL7 INPUT=POSTGIS INPUT=OGR INPUT=GDAL INPUT=SHAPEFILE
とりあえずOK

mapservを/cgi-binディレクトリにコピー
# cp ./mapserv /var/www/cgi-bin/


■ブラウザで確認
http://localhost/cgi-bin/mapserv
「No query information to decode. QUERY_STRING is set, but empty」のメッセージで動いている

*ローカルPCからゲストOSにhttpがとどかなかったら
# system-config-securitylevel-tui
でfirewallの設定を無効にすればよい


■PostGISのデータベースを作成
# -su postgres
$ createdb -EUTF-8 -Upostgres template_postgis
$ createlang plpgsql template_postgis
$ psql -Upostgres -f /usr/share/pgsql/contrib/postgis-1.5/postgis.sql template_postgis
$ psql -Upostgres -f /usr/share/pgsql/contrib/postgis-1.5/spatial_ref_sys.sql template_postgis
$ createdb -EUTF-8 -Upostgres -Ttemplate_postgis mapdb


■shapeファイルをテーブルにインポートする
# shp2pgsql -s 4612 -D -i -I -W cp932 N03-12_12_120401.shp gyousei > gyousei.sql
$ psql mapdb -f gyousei.sql

■PostgreSQLに外部から接続するための設定
/var/lib/pgsql/data/postgres.confを修正
listen_addresses = '*' # what IP address(es) to listen on;

/var/lib/pgsql/data/pg_hbs.confに接続可能なセグメントを追加
local all all trust
host all all 192.168.xxx.1/32 trust
host all all 192.168.yyy.1/32 trust


JavaScriptでCookie

2010年02月17日 23時15分06秒 | JavaScript
明日試そうとしていること★

JavaScriptでCookieにWeb上のチェックボックスの情報を保存して、次に開くときCookieを読み取って前回設定したチェックボックスの状態に戻す

ということをやりたい。

動作環境を自分の好みに設定して、それをDBとかiniファイルとかじゃなくてCookieに保存してみようという試み。
どのくらいCookieが使えるか試してみよう♪


チェックボックスの読み取り

2009年02月08日 16時23分05秒 | JavaScript
JavaScript じゃなくてVBScriptのメモ。

複数のチェックボックスでチェックされた値を順番に取り出す。

For Each val In Request.Form("check1")
Response.Write val & "<br>"
Next

###
今日は快晴だったけど北風ピーポーですごく寒かった。

さて今年初の映画は2月1日に鑑賞した「20世紀少年第2章」
今回は原作をしっかり読み終えて見たので、「あの役をあの人が」というのを楽しめた。
カンナと小泉はイメージ通りで良かった。
ところで原作の単行本を読んでいた時にちょっと驚いたことがあった。
映画にも出ていたけど、オッチョを理科室に導くメモのことだ。
映画では近所のおばさんに渡されたけど、原作では思い出を元に学校の図書館からメモを見つけ出す。
やっとカギになる本にたどりついて本をめくっていくとメモがヒラリと落ちるのだが・・・。
このシーンのページに古びたメモがはさまれていて、まさに同じ内容が同じ文字で書かれていたのだ。
最初はこの単行本を買った私の息子がわざわざ真似して書いたのかと思った。
いや、あいつがそんな面倒なことをするはずがない・・・。
それでネット検索してみたら、単行本の初版のオマケだったようだ。
ちょっとしたアイデアだけど結構インパクトが強くていいと思った。






javaScriptでSubmit

2009年01月20日 12時15分05秒 | JavaScript
プルダウンで別の画面に飛ばす時などに画面に入力したパラメーターを使って動的に飛び先のURLを指定したい場合に使えそう。

function SelectSubmit(){
var param = document.F1.para.value;
document.F1.action = "sample.php?PARAM="+param;
document.F1.submit();
}

formのactionも書き換えて実行できるんだな。

#SONYから新発売のVAIOが気になる今日この頃。
#細長スリムで重量も630gくらいしかないのにHDD60GBメモリ2GBというスペックだ。
#無線LANは当然ながらワンセグも搭載している。
#久々に買いたい気持ちがわいてきている。




選択した項目に対応したラジオボタンを表示する

2008年08月26日 17時22分38秒 | JavaScript
プルダウンとラジオボタンの組み合わせで、選択した項目に対応したラジオボタンを表示させる方法

■JavaScript側の記述
function selRadio(sel){
 n=sel.selectedIndex;
 for(i=0;i<sel.length;i++){   if(i==n){
   rad[i].style.visibility = "visible";
  }
 }
}

■HTML側の記述
<select onChange="selRadio(this);">
<option>国名
<option>果物
<option>乗り物
</select>

<div id="rad" style="visibility:visible; position: absolute;">
<input type="radio" value="japan">日本
<input type="radio" value="america">アメリカ
<input type="radio" value="france">フランス
</div>

<div id="rad" style="visibility:hidden; position: absolute;">
<input type="radio" value="apple">リンゴ
<input type="radio" value="orange">みかん
<input type="radio" value="banana">バナナ
</div>

<div id="rad" style="visibility:hidden; position: absolute;">
<input type="radio" value="train">電車
<input type="radio" value="bus">バス
<input type="radio" value="ship">船
</div>

#帰省中
#komoさん、パソコンを買い替えていたよ
#近頃のパソコンはリモコンもついてテレビも普通に見れるんだな
#テレビやHDDレコーダと融合してきてる感じがする
#そういえば我が家のHDDレコーダはメールで録画をしてくれる
#外出先で録画忘れに気づいた時には便利だな


プルダウンメニュー

2008年07月10日 18時38分42秒 | JavaScript
WEBにプルダウンメニューをつけたいなと思っている。
見た中では以下が一番シンプルかな?

<script Language="JavaScript">
vType = ["hidden","visible"];
function pdMenu(mName)
{
Menu = document.all[mName].style;
Menu.visibility = vType[Menu.visibility.indexOf("hidden") + 1];
}
</script>

本当はマウスオーバーで表示/非表示を切り替えたいのだが・・・。
もう少し勉強してみよう。

#週末は電気店に行くつもり
#ハイビジョンレコーダーを買い換えたいなぁ
#いまのレコーダーはケーブルテレビの番組表に対応できないので
#壁掛けテレビも買いたいなぁ
#いや、テレビはもう少し我慢しよう


マウスドラッグでページ更新

2008年06月21日 11時50分45秒 | JavaScript
スケジュール管理のプログラムで表示期間をマウスドラッグで変更できるようにしてみた。

動作サンプルは以下のURL。
http://marco.s4.xrea.com/php/TASK/schedule.php

ソースの抜粋
<SCRIPT language='JavaScript'>
<!--
var flag = false;
var x1,x2;
window.document.onmousemove = dragImg;
function dragOn(){
flag = true;
x1=Math.floor(event.x/12);
}
function dragOff(){
flag = false;
x2=Math.floor(event.x/12)-x1;
location.replace('schedule.php?ADD='+x2);
}
function dragImg() {
if(!flag) return;
document.F1.btn.style.left = event.x-10;
return false;
}
//-->
</SCRIPT>



<img src='gif/btn.gif' name='btn' style='position:absolute' onMousedown='dragOn()' onMouseup=dragOff()>

#今日は「インディジョーンズ」を見に行くぞ!
#楽しみ♪

#絵は娘の高校の合唱祭のパンフの表紙絵。
#娘が締切間際に徹夜して描いたらしい・・・。



Ajaxでデータ更新

2008年04月26日 19時29分03秒 | JavaScript
WEBページでラジオボタンを選択した時点でデータベースを更新するプログラムを研究していたがAjaxで簡単に実現できそうだ。
要するに[送信]ボタンがなくても登録できてしまう画面だ。
「最後に送信ボタンを押してね」とか言わなくてもいいし、「100問選択した後に送信を押そうとしたら通信エラーで全部やり直しだ~」と悲しまなくてもいい。
Ajaxは便利だと思っていたが、こんな使い方もあるんだなあ。
ちょっと感動。

#20日に情報処理試験を受けてきた。
#相変わらず午前でつまずきそうだ。
#でも答え合わせをしたら完敗ではなく微妙な出来具合だった。
#とりあえず6月の合否発表を待つ

ajax

2008年02月03日 21時31分40秒 | JavaScript
郵便番号を入れると住所がセットされるajaxに挑戦している。
自宅のサーバではちゃんと動くのだが、レンタルサーバで試してみると文字化けする。
自宅サーバはUTF-8、レンタルはEUCという文字コードの違いがそもそもの原因だと思う。
あとはPHPで文字コードを自動エンコードする設定も影響があるらしい。
とりあえず自分ちのサーバのみで使ってみることにしよう。

#今日は朝から雪だった。
#実はゆうべ、本当に久しぶりにカラオケに行った。
#「明日晴れるかな」と「花の名」を歌ってすごく満足して店を出ると雪だった。
#歌った曲名と現実は一致しないものである(笑)
#今日は雪降る中を散歩して雪景色を楽しんできた。
#明日の通勤がちょっとだけ心配である

ASPで文字変換(改)

2007年09月06日 22時54分18秒 | JavaScript
去年、この手の処理を調べて、忘れないようにと思ってここに書いてたのに忘れてた(T-T)

それでまたサイト検索して調べた。
今日、なんとなく気になって過去の記事を調べたら、全く同じことをする目的でメモってあった(泣)

・・・で、ASPで改行コードを<BR>に変換する方法。

str = Replace(str,vbCrLf,"<BR>")

去年調べたコードは4行だったが、今回は1行でOK。
まあ、無駄骨では無かったということで自分を慰めておこう(笑)


#台風接近中!明日は出勤できないかも・・・。それは大変だ(^-^)

←こんな生易しいものではない!