OpenLayersで電子国土を表示
環境
電子国土v4のAPI JS(V4source.zip)を以下よりダウンロード
http://portal.cyberjapan.jp/portalsite/docs/
V4source.zip内のwebtis_v4.jsをサイト上に配置
OpenLayerのソース、スタイル(OpenLayers-2.13.1.zip)を以下よりダウンロード
http://openlayers.org/
OpenLayers-2.13.1.zip内のlibディレクトリとthemaディレクトリをサイト上に配置
libディレクトリJavaScriptのソース、themaディレクトリはスタイル
※実際にはOpenLayersのソース等は電子国土のサイトのそれをリンクする必要があるようだ
OpenLayersに電子国土を表示するサンプルは以下のサイトに記載がある
以下はサンプル
[code]
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>K4map sample1-0</title>
<script type="text/javascript" src="http://portal.cyberjapan.jp/sys/OpenLayers-2.11/OpenLayers.js" charset="UTF-8"></script>
<script type="text/javascript" src="./lib/webtis_v4.js" charset="UTF-8"></script>
<link rel="stylesheet" href="http://portal.cyberjapan.jp/sys/v4/css/webtis.css" type="text/css">
<link rel="stylesheet" href="./css/theme/default/style.css" type="text/css">
<script type="text/javascript">
var cyber;
/*
var initCX = 139.1932638; // 初期中心:黒檜山(群馬県赤城山の最高峰)
var initCY = 36.56036769; // 初期中心:黒檜山(群馬県赤城山の最高峰)
var initScale = 16; // ここでは1~18までの数値、18を入れると白紙になる
*/
var initScale = 6; // ここでは1~18までの数値、18を入れると白紙になる
//初期の経度
var initCX = 139.4;
//初期の緯度
var initCY = 35.4;
//初期のズームレベル
//※ここで設定するズームレベルはデータセットの最小ズームレベルが0になる
//※デフォルトデータセットでは「ズームレベル5」が0になる
var initZoomLv = 0;
//真球メルカトル投影(電子国土WebシステムVer.4もこれに準拠)を定義
var projection900913 = new OpenLayers.Projection("EPSG:900913");
//真球メルカトル投影(電子国土WebシステムVer.4もこれに準拠)を定義
var projection3857 = new OpenLayers.Projection("EPSG:3857");
//等経緯度投影を定義
var projection4326 = new OpenLayers.Projection("EPSG:4326");
function init(){
//真球メルカトル投影のときの最大範囲(単位はm)
var maxExtent = new OpenLayers.Bounds(-20037508, -20037508, 20037508, 20037508);
//真球メルカトル投影のときの最大範囲に範囲を制限
var restrictedExtent = maxExtent.clone();
//真球メルカトル投影のときの最大解像度
var maxResolution = 156543.0339;
//地図表示画面のオプション設定
var options = {
//「controls」を設定することで、デフォルトのコントロールを破棄してコントロールを再設定
controls: [
//地図マウスイベントのハンドル設定。
new OpenLayers.Control.Navigation({mouseWheelOptions: {interval: 100}}),
//左上のパンズームバーを設定
new OpenLayers.Control.PanZoomBar(),
//キーボードをデフォルトに設定
new OpenLayers.Control.KeyboardDefaults(),
//国土地理院著作表示
//※OpenLayrsサイトを作るときは必ずこれを書くこと
new OpenLayers.Control.Attribution()
],
//背景地図の地理座標系
projection: projection900913,
//表示の地理座標系
displayProjection: projection4326,
//背景地図の単位
units: "m",
//背景地図の最大解像度
maxResolution: maxResolution,
//背景地図の最大範囲
maxExtent: maxExtent,
//背景地図の表示制限範囲
restrictedExtent: restrictedExtent
};
//OpenLayers APIのMapクラスからインスタンスを作成
cyber = new OpenLayers.Map(‘cambus’, options);
//スケールバーコントロール表示(最大ピクセル150、下段単位無、EPSG:900913)
cyber.addControl(new OpenLayers.Control.ScaleLine({maxWidth:150,bottomOutUnits: "", bottomInUnits: "",geodesic:true}));
//背景地図のデフォルトデータセットを定義
var dataSet = {
5:{dataId:"JAIS"},
6:{dataId:"JAIS"},
7:{dataId:"JAIS"},
8:{dataId:"JAIS"},
9:{dataId:"BAFD1000K"},
10:{dataId:"BAFD1000K"},
11:{dataId:"BAFD1000K"},
12:{dataId:"BAFD200K"},
13:{dataId:"BAFD200K"},
14:{dataId:"BAFD200K"},
15:{dataId:"DJBMM"},
16:{dataId:"DJBMM"},
17:{dataId:"DJBMM"},
18:{dataId:"FGD"}
};
//電子国土WebシステムVer.4背景地図レイヤーインスタンスを作成。
//上で定義したデータセットを利用
webtisMap = new webtis.Layer.BaseMap("webtismap",{dataSet:dataSet});
//背景地図レイヤーをMapに追加
cyber.addLayer(webtisMap);
//初期の中心座標を指定(経緯度で入力して、内部的に真球メルカトル座標に変換して表示)
cyber.setCenter(new OpenLayers.LonLat(initCX,initCY).transform(projection4326,projection900913), initZoomLv);
}
</script>
</head>
<body onload="init();">
<div id="cambus" style="width:1000px;height:600px;"></div>
</body>
</html>
[/code]
参考
TOMCAT上でPHPを動かす
環境
| OS | Windows 2008 64bit |
|---|---|
| TOCAT | 7.0.47 |
| PHP | php-5.3.28-Win32-VC9-x86 |
PHPのインストール
PHPのZIPファイル(php-5.3.28-Win32-VC9-x86.zip)をPHPのダウンロードページよりダウンロード
ZIPファイルをC:\php以下に展開
C:\php\php.ini-productionをC:\php\php.iniにコピー
;extension_dir = "ext"
を
extension_dir = "c:\php\ext"
に変更
;cgi.force_redirect = 1
を
cgi.force_redirect = 0
に変更
C:\phpにpathを通す
TOMCATの設定
PHP用のコンテキストPHPを作成
C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\php\WEB-INF\web.xmlに以下を記述
[code]
<?xml version="1.0" encoding="utf-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<display-name>PHP</display-name>
<servlet>
<servlet-name>cgi</servlet-name>
<servlet-class>org.apache.catalina.servlets.CGIServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>cgiPathPrefix</param-name>
<param-value></param-value>
</init-param>
<init-param>
<param-name>executable</param-name>
<param-value>C:\php\php-cgi.exe</param-value>
</init-param>
<init-param>
<param-name>passShellEnvironment</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>cgi</servlet-name>
<url-pattern>*.php</url-pattern>
</servlet-mapping>
</web-app>
[/code]
C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\php\META-INF\content.xmlに以下を記述
[code]
<?xml version="1.0" encoding="utf-8"?>
<Context privileged="true"/>
[/code]
C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\php\test.phpに以下を記述
[code]
<?php
phpinfo();
?>
[/code]
http://localhost:8080/php/test.phpをブラウザで表示して動作を確認

参考にしたサイト
TOMCATコンテキストの追加
C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps以下に新しいコンテキストとなるディレクトリを作成
ここではディレクトリphpを作成
C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\WEB-INF\web.xmlに以下を記述
[code]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>PHP</display-name>
</web-app>
[/code]
TOMCAT5以前ではC:\Program Files\Apache Software Foundation\Tomcat 7.0\conf\Catalina\localhost以下にコンテキストの情報をXMLに記述したが、TOMCAT6以降では必用はないようだ。
GeoServerの設定
http://localhost:8080/geoserver/web/をブラウザで表示
アカウント admin/geoserverでGeoServerにログイン
最初にデフォルトでインストール済のデータを表示してみる
GeoServerの管理サイトを開き、Data-Layer Previewを選択
tasmaniaのOpenLayersを選択するとデータが表示される
Shapeファイルを表示
東京の行政Shapeファイルを表示してみる
ディレクトリGEOSERVER_DATA_DIR\DATA\Tokyoを作成
※GEOSERVER_DATA_DIRはデフォルト(未設定)では「C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\geoserver\data」に設定されている
任意の場所に設定するときは環境変数で設定
GEOSERVER_DATA_DIR\DATA\TokyoにShape(N03-13_13_130401.shp)ファイルをコピー
ワークスペースの作成
DATA-Workspacesを選択してWorkspace画面を表示
create workspaceを選択、名称とURIを入力(名称とURIは任意でよい?)
workspaceが正しく作成されるとworkspaceの一覧に表示される
作成したworkspaceを選択してworkspaceの編集ページを表示
WCF、WFS、WMSのチェックをONにする(必要ないかも)
Storeの追加
DATA-Stores-Add New Storeを選択
ShapeFileを選択し、ShapeFileの情報を入力
Workspaceには先ほど作成したWorkspaceを選択
データソースにはShapeファイルの名称を設定
ShapeFile LocationにはShapeファイルのフルパスを設定
保存すると追加したレイヤが表示される。
publishをクリックしてレイヤ情報を編集
Declare SRSを設定
compute from data、compute from native boundsをクリックしてBounding Boxesを更新
GeoServerをインストール(その2)
サービスマネージャーでTOMCATの動作を確認した後にTOMCATの管理サイトを開く
ブラウザでhttp://localhost:8080/を開いて管理サイト(?)を開く
ページ上部の「Server Status」をクリックすると以下のページを表示
「Manager APP」をクリックすると以下のページを表示
「Manager APP」をクリックすると以下のページを表示
GeoServerを以下よりダウンロード
GeoServer HOME-ダウンロード-Stable-Web Arciveよりgeoserver-2.4.3-war.zipをダウンロード、解凍
GeoServerにはインストーラー、バイナリ、Web Archiveがある。ここでは既にTOMCAT、JREはインストール済なのでWeb Archiveをダウンロード
TOMCATのアップロードファイルサイズの最大を60MBに設定
C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\manager\WEB-INF\web.xmlを変更
変更前
52428800 52428800 0
変更後
TOMCATの管理画面を開いてgeoserver-2.4.3-war.zipより解凍されたgeoserver.warを指定して配備ボタンを押す
完了するとアプリケーションの一覧にgeoserverが追加されている
PostGISにShapefileをインポート
PostGISに付属するPostGIS 2.0 Shapefile and DBF Loader Exporterを使用する
※インストールしたPostGISは2.1だがなぜかこちらのツールには2.0と表示される。
インポート対象は東京の行政ポリゴン「N03-13_13_130401.shp」
PostGIS Shapefile Import/Export Managerを起動
View Connection detailes を選択してデータベースに接続
Add Fileボタンを押してインポート対象のShapeファイルを選択し、SRIDを指定
※インポート対象の測地系世界測地系の緯度、経度なのでSRIDは4326を指定
Import Optionを以下に従って設定
DBFの文字コードはShiftJISなのでcp932を設定
Importボタンを押して終了
インポート結果
PostGISデータベースの作成
PostGIS2.0まではPostGISデータベースのテンプレートを元に新規にPostGISデータベースを作成していたが、
PostGIS2.1からはEXTENSIONでPostgresqlのデータベースをPostGISデータベースに拡張が可能になった。
※以下はpsql上で管理者権限で実行
最初にPostgresqlのデータベースを作成
createdatabase testdb encoding ‘utf8’
postgres=# \c testdb
データベース “testdb” にユーザ”postgres”として接続しました。
testdb=# create extension postgis;
CREATE EXTENSION
testdb=# create extension pgrouting;
CREATE EXTENSION
testdb=# create extension postgis_topology;
CREATE EXTENSION
testdb=# b
以上でPostGISデータベースの作成終了
pgadmin上でPostGISを確認
PostgreSQLのコマンド
| データベース接続 | psql -h ホスト名 -U ユーザー名 -d データベース |
| データベース一覧 | \l |
| データベース指定 | \c データベース名 |
| テーブル一覧 | \d |
| テーブル定義 | \d テーブル名 |
| スキーマ一覧 | \dn |
| ユーザー一覧 | \du |
| psql終了 | \q |
| ユーザー作成 |
create role ユーザー名 with login password ‘パスワード’ with loginを省略した時はログイン不可なユーザー ※create role testuser with login password ‘testpwd’ |
| データベース作成 |
create database データベース名 encoding ‘UTF8’ ※create database testdb encoding ‘UTF8’ |
| ユーザー権限 |
grant 権限 on database データベース名 to ユーザー名 ※全ての権限を与えるときはallを設定 |
| スキーマ作成 |
CREATE SCHEMA スキーマ名 CREATE SCHEMA スキーマ名 AUTHORIZATION ロール名 ※AUTHORIZATIONを指定するとスキーマのオーナー名を指定 |
| カレントユーザーのスキーマ照会 | SELECT CURRENT_SCHEMA(); |
| スキーマのオーナー設定 | ALTER SCHEMA スキーマ名 OWNERT TO ロール名 |
| バックアップ |
pg_dump -U ユーザー名 -t テーブル名 データベース名 > ダンプファイル名 ※–format=customを指定すると、圧縮される。リストア時にはpg_restoreを指定 pg_dump -U ユーザー名 -t テーブル名 –format=custom データベース名 > ダンプファイル名 |
| リカバリ未圧縮 | psql -U ユーザー名 データベース名 < ダンプファイル名 |
| リカバリ圧縮 | pg_restore -U ユーザー名 -d データベース名 ダンプファイル名 |
PostGISをWindowsにインストール
SSH接続で警告
SSHで他サーバーにログインしようとしたら以下のメッセージが表示された。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
33:f2:21:91:42:98:0c:b3:40:83:b9:05:9c:c6:b2:9b.
Please contact your system administrator.
Add correct host key in /root/.ssh/known_hosts to get rid of this message.
Offending key in /root/.ssh/known_hosts:1
RSA host key for 接続先のIPアドレス has changed and you have requested strict checking.
Host key verification failed.
Couldn’t read packet: Connection reset by peer
これは接続先のPCが変更されたときに表示されるので以下のファイルを開いて該当する行を編集
/ホーム/.ssh/known_hosts
































