GeoExt1.1で印刷してみる。準備編[Chapter 11]
GeoExtで印刷しようとすると、
This example shows how to set the bounds of a printable PDF interactively with a dynamic print extent rectangle. It requires the MapFish or GeoServer print module.
というメッセージが出てexampleが動きませんよね。
それじゃ、まずはMapFishで印刷機能を試してみましたが、なぜか動かせず。
また、MapFishの情報は結構古いので、今回は最新のGeoServerを使ってみます。
GeoServerとは?
GeoServerの詳しい情報は、GeoServerを参照してください。最新Versionは2.3.2です。
また、OSGeo-Live 6.5にも、
「GeoServer は、多彩な形式の地図とデータを Web ブラウザやデスクトップ GIS プログラム等の標準的なクライアントに配信する Web サーバです。ユーザーは GIS データについて全く知ることなく、ほとんど全ての フォーマット で空間データを保存することができます。地図をみるには Web ブラウザだけが必要となります。
GeoServer は Open Geospatial Consortium (OGC) の Web Feature Service (WFS) 、 Web Coverage Service (WCS)、高性能なWebサーバの Web MapService (WMS) の参考実装です。GeoServer は空間情報 web の中核を担います。
主な機能
-
様々な種類のデータストアデータの配信:
-
ベクタ
-
シェープファイル、 外部WFS、PostGIS、 ArcSDE、 DB2、 Oracle Spatial、 MySql、 SQL Server
-
-
ラスタ
-
GeoTiff、 JPG and PNG (ワールドファイル付き)、 image pyramid、 GDAL formats、Image Mosaic、 Oracle GeoRaster
-
-
-
WMS プロトコルを利用して安全かつ迅速にデータ配信:
-
データは画像の状態で保存し、完全に安全でセキュアに配信します。データを再入力しない限り、あなたのデータを盗み出すことはできないでしょう。 それぞれの地図のレイヤは SLD を用いて表示を変更できます。SLD 標準により地物の色やラベル表示を設定できます。これに、縮尺によって変化する OGC フィルターにを合わせると、ユーザーが拡大表示すると、より詳細を表示するような実装が可能です。ラベルの描画衝突の管理、グループ化、優先順位も実装されています。
-
-
WFS プロトコルを利用したクライアントへのベクタデータ送信:
-
WFS クライアントは、ベクタデータをダウンロードして地図表示や空間解析等の用途に使用できます。さらにWFS-Tプロトコルを利用して、認証されたユーザがサーバのデータを編集、アップロードすることで更新できます。 shapefile や json のような標準規格同様に、データは圧縮した GML で送受信を行います。
-
-
WCS プロトコルを利用したクライアントへのラスタデータ送信:
-
GISクライアントはラスタの実データを要求して空間解析に使うことができます。この機能を使うと、あなたのデータで記述したプロセスをベースに、ユーザーが活用することができます。
-
-
オンザフライ投影変換:
-
GeoServer は EPSG データベースの主な投影法をサポートしており、オンデマンドでそれらの投影法への再投影ができます。クライアント側で再投影を制限され手いる場合にはサーバ側でその処理を行うこともできます。
-
-
WMS タイルキャッシュ:
-
GeoWebCache は WMS タイリングクライアントです。これは地図クライアントと地図サーバーの間のプロキシサーバとして動作し要求に応じてタイルをキャッシュします。余分なリクエストをまとめて莫大なCPU時間を減少させます。GeoWebCache は GeoServer に統合されています。
-
-
準拠している標準規格
-
多くの Open Geospatial Consortium (OGC) 標準をサポートしています:
-
Web Map Service (WMS)
-
Web Feature Service (WFS), WFS-T (transacional)
-
Web Coverage Service (WCS)
-
Filter Encoding (FE)
-
Style Layer Descriptor (SLD)
-
Geography Markup Language (GML)
-
(WEBから引用)」
GeoServerを利用すれば、MapServerよりも自由度は広がりそうですね。
そして、印刷については、GeoServer Printing Moduleにその方法が書かれています。
まずは、GeoServerをinstallしてみましょう。
GeoServerをInstall
今回は、Version 2.3.2 05/17/2013の最新版を使います。
開発環境は、Windows 7 64bitの環境です。 また、すでにms4wがinstallされています。
GeoServer Downloadは、GeoServer Downloadから入手します。
GeoServerを動かすのに必要なものは、Java SDK1.5以上が必要になります。
Javaについては、installしてあるものとして作業を進めます。
Downloadした、geoserver-2.3.2.exeをdouble clickで開きます。
Next > buttonをclickして次に進みます。
Installの場所を入力します。
Next > buttonをclickして次に進みます。
Javaがinstallされて、JAVA_HOMEの設定ができていると、Javaのinstall先が表示されます。
Next > buttonをclickして次に進みます。
Username: admin
Password: geosever
変更する場合は、お好きな名前とパスワードを入力してください。
Next > buttonをclickして次に進みます。
サービスとして開くPort番号を入力します。80番はms4wが使用しているので、defaultで良いと思います。
Next > buttonをclickして次に進みます。
手動でGeoServerが起動するように、manuallyにしておく。
Next > buttonをclickして次に進みます。
入力したparameterを確認して、
Install buttonをclickしてinstallを開始します。
Installが終了すると
が表示されるので、Finish buttonをclickして終了します。
これで、GeoServerのInstallが終わりました。
次に、Install後の確認を行います。
Install後の確認
Start GeoServer
まずは、WindowsのServiceとしてGeoServerを動かさなければなりません。
Start GeoServerを選択すると、
な感じで、cmd ターミナルが開いて、なにやらゴニョゴニョと動き出します。
そして、
で表示が止まります。この状態でGeoServerがサービスを開始した状態になります。
GeoServer Web admin page
次に、GeoServer Web admin pageを選択すると、
が表示されます。
このページが正しく表示されない場合は、GeoServerが正しくinstallされていないことになります。
次に、GeoServer Web admin pageからloginします。
Install時に設定したUsername,Passwordを入力します。
Admin画面が表示されます。
試しに、左のメニューからData→Layer previewを選択して、tasmaniaをOpenLayersで表示させると、
な感じで表示されます。
ちゃんとInstallできて、Serviceも動いているようです。
次に、print moduleをinstallしておきます。
GeoServerのprint module install
では、印刷はどのようにするのでしょうか?
GeoServer Printing Moduleにその方法があります。
これに従って、
-
nightly build serverからgeoserver-2.1-SNAPSHOT-printing-plugin.zipを取得します。
-
geoserver-2.1-SNAPSHOT-printing-plugin.zipを解凍後に、webapps¥geoserver¥WEB-INF¥lib folderにfileをcopyします。
-
copy後、GeoServerを再起動します。再起動は、Stop GeoServer後、再度Start GeoServerでOKです。
再起動後、 http://localhost:8080/geoserver/pdf/info.jsonをclickすると、browser上にinfo.jsonが表示されます。
info.jsonは、
{ "scales": [ {"name":"1:25,000","value":"25000"}, {"name":"1:50,000","value":"50000"}, {"name":"1:100,000","value":"100000"}, {"name":"1:200,000","value":"200000"}, {"name":"1:500,000","value":"500000"}, {"name":"1:1,000,000","value":"1000000"}, {"name":"1:2,000,000","value":"2000000"}, {"name":"1:4,000,000","value":"4000000"} ], "dpis": [ {"name":"75","value":"75"}, {"name":"150","value":"150"}, {"name":"300","value":"300"} ], "layouts": [ {"name":"A4 portrait","map":{"width":440,"height":483},"rotation":true}, {"name":"Legal","map":{"width":440,"height":483},"rotation":false} ], "printURL": "http://localhost:8080/geoserver/pdf/print.pdf", "createURL":"http://localhost:8080/geoserver/pdf/create.json" }
次に、GeoServer Web admin pageから左のメニューからDemosを開くと、
な感じでメニューが表示されます。
MapFish printをclickすると、
でprint moduleが動いていることが確認できます。
次に、sample pageを開いてみます。
GeoServer Printing Moduleのsample pageをclickしても、sampleは開く事ができません。
な感じで表示され、 http://dev.geoext.org/extensions/geoext.ux/ux/SimplePrint/examples/SimplePrint.jsもsouce codeが無いと怒られてしまいます。
とりあえずは、GeoServerとPrint moduleもinstallできているようです。
印刷実行にむけて
GeoExtで印刷するには、GeoServer Printing Moduleのsample pageを動かして見なければなりませんが、これは次回挑戦してみます。
また、その後に、GeoExt Web Siteを参考にprintを行ってみます。
なかなかprintがすんなりといきませんが、なんとか動かして見ましょう。
最近のコメント