ホーム » tarumi の投稿 (ページ 26)

作者アーカイブ: tarumi

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]

スクリーンショット 2014-01-15 13.06.18

参考

OpenlayersとGeoExtで電子国土地図を使ってみる

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をブラウザで表示して動作を確認
スクリーンショット 2014-01-15 10.27.54

参考にしたサイト

Tomcat上でPHPを動作させる

Tomcat 6.0.26でCGIを使って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]

web.xmlの詳細はこちらが詳しい

TOMCAT5以前ではC:\Program Files\Apache Software Foundation\Tomcat 7.0\conf\Catalina\localhost以下にコンテキストの情報をXMLに記述したが、TOMCAT6以降では必用はないようだ。

GeoServerの設定

http://localhost:8080/geoserver/web/をブラウザで表示

スクリーンショット 2014-01-14 01.08.47

アカウント admin/geoserverでGeoServerにログイン

スクリーンショット 2014-01-14 01.22.59

最初にデフォルトでインストール済のデータを表示してみる

GeoServerの管理サイトを開き、Data-Layer Previewを選択

スクリーンショット 2014-01-14 01.53.25

スクリーンショット 2014-01-14 01.53.36

tasmaniaのOpenLayersを選択するとデータが表示される

スクリーンショット 2014-01-14 01.54.05

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画面を表示

スクリーンショット 2014-01-14 07.24.48

create workspaceを選択、名称とURIを入力(名称とURIは任意でよい?)

スクリーンショット 2014-01-14 07.25.50

workspaceが正しく作成されるとworkspaceの一覧に表示される

スクリーンショット 2014-01-14 07.26.45

作成したworkspaceを選択してworkspaceの編集ページを表示

スクリーンショット 2014-01-14 07.28.18

WCF、WFS、WMSのチェックをONにする(必要ないかも)

Storeの追加

DATA-Stores-Add New Storeを選択

スクリーンショット 2014-01-14 07.30.51

ShapeFileを選択し、ShapeFileの情報を入力

Workspaceには先ほど作成したWorkspaceを選択

データソースにはShapeファイルの名称を設定

ShapeFile LocationにはShapeファイルのフルパスを設定

スクリーンショット 2014-01-14 07.36.22

保存すると追加したレイヤが表示される。

スクリーンショット 2014-01-14 07.43.00

publishをクリックしてレイヤ情報を編集

Declare SRSを設定

compute from data、compute from native boundsをクリックしてBounding Boxesを更新

clip_3

スクリーンショット 2014-01-14 08.31.23

スクリーンショット 2014-01-14 08.31.32

GeoServerをインストール(その2)

サービスマネージャーでTOMCATの動作を確認した後にTOMCATの管理サイトを開く

ブラウザでhttp://localhost:8080/を開いて管理サイト(?)を開く

tomcat1

ページ上部の「Server Status」をクリックすると以下のページを表示

スクリーンショット 2014-01-13 21.36.08

「Manager APP」をクリックすると以下のページを表示

スクリーンショット 2014-01-13 21.36.29

スクリーンショット 2014-01-13 21.36.37

「Manager APP」をクリックすると以下のページを表示

スクリーンショット 2014-01-13 21.37.08

スクリーンショット 2014-01-13 21.37.19

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

変更後



62914560
62914560
0

TOMCATの管理画面を開いてgeoserver-2.4.3-war.zipより解凍されたgeoserver.warを指定して配備ボタンを押す

スクリーンショット 2014-01-14 00.26.51

完了するとアプリケーションの一覧にgeoserverが追加されている

スクリーンショット 2014-01-14 01.01.38

PostGISにShapefileをインポート

PostGISに付属するPostGIS 2.0 Shapefile and DBF Loader Exporterを使用する
※インストールしたPostGISは2.1だがなぜかこちらのツールには2.0と表示される。

postgis1

インポート対象は東京の行政ポリゴン「N03-13_13_130401.shp」

PostGIS Shapefile Import/Export Managerを起動

postgis2

View Connection detailes を選択してデータベースに接続

postgis3

Add Fileボタンを押してインポート対象のShapeファイルを選択し、SRIDを指定
※インポート対象の測地系世界測地系の緯度、経度なのでSRIDは4326を指定

postgis4

Import Optionを以下に従って設定

DBFの文字コードはShiftJISなのでcp932を設定

postgis5

Importボタンを押して終了

インポート結果

postgis6

SRIDの一覧

PostgreSQLの文字コードについて

PostGISデータのインポート・エクスポート

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を確認

postgresql26

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にインストール

対象
PostGIS version 9.3.2(64bit版)
Windows 2008
PostgreSQL9.3.2のインストーラー(postgresql-9.3.2-1-windows-x64)を以下よりダウンロード
http://www.enterprisedb.com/products-services-training/pgdownload#windows

PostGISのサイト

全てのインストールが終了したらpsql.exeにパスを通す。
postgresql25

WindowsでPostgreSQLを使ってみよう

PostGISの詳細についてはこちら

PostGISのインストールについて

PostGIS日本語マニュアル

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