ホーム » OSGEO
「OSGEO」カテゴリーアーカイブ
spatialiteにイメージをimport(gdal_transfer編)
rasterlite2にこてんぱにやられたので今回はgdal_transferを試す。
参考にしたのはgdal_translateのリファレンスと、Rasterlite – Rasters in SQLite DB。
今回使用したGDAL関連のモジュールはQGISをインストールした際にC:\OSGeo4W\binにインストールしたファイル。
rasterlite2編と同様に「空間データを使うために必要なテーブルを作成」までを実行。
各画像をインポート
[code]
C:\work\pasco>gdal_translate -of Rasterlite 2135.jpg RASTERLITE:work.sqlite,table=source -co DRIVER=JPEG
Input file size is 5000, 3750
0…10…20…30…40…50…60…70…80…90…100 – done.
C:\work\pasco>gdal_translate -of Rasterlite 2136.jpg RASTERLITE:work.sqlite,table=source -co DRIVER=JPEG
Input file size is 5000, 3750
0…10…20…30…40…50…60…70…80…90…100 – done.
C:\work\pasco>gdal_translate -of Rasterlite 2137.jpg RASTERLITE:work.sqlite,table=source -co DRIVER=JPEG
Input file size is 5000, 3750
0…10…20…30…40…50…60…70…80…90…100 – done.
[/code]
Creating internal overviews
[code]
C:\work\pasco>gdaladdo RASTERLITE:work.sqlite,table=source 2 4 8 16
0…10…20…30…40…50…60…70…80…90…100 – done.
0…10…20…30…40…50…60…70…80…90…100 – done.
0…10…20…30…40…50…60…70…80…90…100 – done.
0…10…20…30…40…50…60…70…80…90…100 – done.
[/code]
Creating internal overviewsは以下のほうがよさそうなので改めてGDAL1.10以上バージョンを実行
Creating internal overviews with options (GDAL 1.10 or later):
[code]
C:\work\pasco>gdaladdo RASTERLITE:work.sqlite,table=source 2 4 8 16 –config RASTERLITE_OVR_OPTIONS DRIVER=JPEG,COMPRESS
=JPEG,PHOTOMETRIC=YCbCr
Warning 6: Unexpected option ‘COMPRESS’ for driver ‘JPEG’
Warning 6: Unexpected option ‘PHOTOMETRIC’ for driver ‘JPEG’
0…10…20…30…40…50…60…70…80…90…100 – done.
Warning 6: Unexpected option ‘COMPRESS’ for driver ‘JPEG’
Warning 6: Unexpected option ‘PHOTOMETRIC’ for driver ‘JPEG’
0…10…20…30…40…50…60…70…80…90…100 – done.
Warning 6: Unexpected option ‘COMPRESS’ for driver ‘JPEG’
Warning 6: Unexpected option ‘PHOTOMETRIC’ for driver ‘JPEG’
0…10…20…30…40…50…60…70…80…90…100 – done.
Warning 6: Unexpected option ‘COMPRESS’ for driver ‘JPEG’
Warning 6: Unexpected option ‘PHOTOMETRIC’ for driver ‘JPEG’
0…10…20…30…40…50…60…70…80…90…100 – done.
Creating internal overviews with options (GDAL 1.10 or later):
[/code]
Cleaning internal overviews :
[code]
C:\work\pasco>gdaladdo -clean RASTERLITE:work.sqlite,table=source
[/code]
Creating external overviews in a .ovr file:
[code]
C:\work\pasco>gdaladdo -ro RASTERLITE:work.sqlite,table=source 2 4 8 16
ERROR 6: Cannot add external overviews to a dataset with internal overviews
Overview building failed.
[/code]
「Creating external overviews in a .ovr file:」はエラーが発生したが、QGISで閲覧すると十分なスピードが確保できた。
以上
spatialiteにイメージをimport(rasterlite2 その2 結局失敗編)
前回は「rl2tool CREATE」でエラーが発生した今回はエラーが発生しないようにテーブル「strict_resolution」のNOT NULL制約の付いている項目にdefault 0を設定。
[code]
CREATE TABLE raster_coverages (
coverage_name TEXT NOT NULL PRIMARY KEY,
title TEXT NOT NULL DEFAULT ‘*** missing Title ***’,
abstract TEXT NOT NULL DEFAULT ‘*** missing Abstract ***’,
sample_type TEXT NOT NULL DEFAULT ‘*** undefined ***’,
pixel_type TEXT NOT NULL DEFAULT ‘*** undefined ***’,
num_bands INTEGER NOT NULL DEFAULT 1,
compression TEXT NOT NULL DEFAULT ‘NONE’,
quality INTEGER NOT NULL DEFAULT 100,
tile_width INTEGER NOT NULL DEFAULT 512,
tile_height INTEGER NOT NULL DEFAULT 512,
horz_resolution DOUBLE NOT NULL,
vert_resolution DOUBLE NOT NULL,
srid INTEGER NOT NULL,
nodata_pixel BLOB NOT NULL,
palette BLOB,
statistics BLOB,
geo_minx DOUBLE,
geo_miny DOUBLE,
geo_maxx DOUBLE,
geo_maxy DOUBLE,
extent_minx DOUBLE,
extent_miny DOUBLE,
extent_maxx DOUBLE,
extent_maxy DOUBLE,
strict_resolution INTEGER NOT NULL DEFAULT 0,
mixed_resolutions INTEGER NOT NULL DEFAULT 0,
section_paths INTEGER NOT NULL DEFAULT 0,
section_md5 INTEGER NOT NULL DEFAULT 0,
section_summary INTEGER NOT NULL DEFAULT 0,
is_queryable INTEGER,
red_band_index INTEGER,
green_band_index INTEGER,
blue_band_index INTEGER,
nir_band_index INTEGER,
enable_auto_ndvi INTEGER,
CONSTRAINT fk_rc_srs FOREIGN KEY (srid) REFERENCES spatial_ref_sys (srid))
[/code]
今度はrl2too.を使わずに「Tutorial: building and testing the Planet Earth sample – full SQL」
に従ってインポート。
「空間データを使うために必要なテーブルを作成」までは前回で終了している。
Coverage作成
[code]
sqlite> SELECT RL2_CreateCoverage(‘Test’, ‘UINT8’, ‘RGB’, 3, ‘JPEG’, 80, 512, 512, 2451, 0.0138888889);
1
sqlite> SELECT RL2_LoadRaster(‘Test’, ‘0108.jpg’);
Importing: 0108.jpg
——————
Image Size (pixels): 5000 x 3750
SRID: -1
LowerLeft Corner: X=-63999.92 Y=-36600.08
UpperRight Corner: X=-63199.92 Y=-36000.08
Pixel resolution: X=0.16 Y=0.16
INSERT INTO sections; sqlite3_step() error: Test_sections.geometry violates Geometry constraint [geom-type or SRI
llowed]
0
sqlite> SELECT RL2_LoadRaster(‘Test’, ‘0108.jpg’, 1, 2451);
Importing: 0108.jpg
——————
Image Size (pixels): 5000 x 3750
SRID: 2451
LowerLeft Corner: X=-63999.92 Y=-36600.08
UpperRight Corner: X=-63199.92 Y=-36000.08
Pixel resolution: X=0.16 Y=0.16
———-
Pyramid levels successfully built for: 0108
1
sqlite> select RL2_Pyramidize(‘test’);
1
sqlite> select RL2_SetCoverageInfos(‘test’,’test1′,’hello’);
1
sqlite> .quit
[/code]
とりあえずエラーが発生せずに終了
動作確認のためにwmsliteを実行してみると
[code]
wmslite -db test.sqlite
======================================================
WmsLite server startup
======================================================
SQLite version: 3.8.5
SpatiaLite version: 4.2.0
RasterLite2 version: 1.0.0-rc0
======================================================
the DB "test.sqlite" doesn’t contain any valid Raster Coverage
wmslite server shutdown in progress
wmslite shutdown completed … bye bye
[/code]
「doesn’t contain any valid Raster Coverage」失敗のようだ!
wmsliteのソースを追えば問題箇所が判明するかもしれないが、とりあえず一旦終了して次回はGDALのTOOLで試す。
spatialiteにイメージをimport(rasterlite2 その1 失敗編)
某自治体全域の航空写真をタイル画像にしてGIS上で使用する為にspatialiteにインポートの記録(失敗談)。
当初はブログ「waigani’s diary」を参考にrasterliteを使用する予定だったが、windows版のバイナリがなくなっていたために断念。
※「waigani’s diary」は合同会社MIERUNEの方が書かれているとのことなので朝日さんでしょうか
rasterliteの後継「rasterlite2」を使用。
今回インポート対象の画像はGIOTIFFをJPEGに変換したファイル。(もちろんワールドファイルもあり)
JPEGもGEOTIFFを同様にgdalinfo.exeでファイルの詳細情報を確認できる。
gdalinfo 2135.jpg
[code]
Driver: JPEG/JPEG JFIF
Files: 2135.jpg
2135.jgw
Size is 5000, 3750
Coordinate System is `’
Origin = (-42400.000000000000000,-48000.000000000000000)
Pixel Size = (0.160000000000000,-0.160000000000000)
Metadata:
EXIF_BitsPerSample=8 8 8
EXIF_ColorSpace=65535
EXIF_Compression=1
EXIF_DateTime=2016:02:26 13:56:17
EXIF_Orientation=1
EXIF_PhotometricInterpretation=2
EXIF_PixelXDimension=5000
EXIF_PixelYDimension=3750
EXIF_PlanarConfiguration=1
EXIF_ResolutionUnit=2
EXIF_SamplesPerPixel=3
EXIF_Software=Adobe Photoshop CS5.1 Windows
EXIF_XResolution=(72)
EXIF_YResolution=(72)
Image Structure Metadata:
COMPRESSION=JPEG
INTERLEAVE=PIXEL
SOURCE_COLOR_SPACE=YCbCr
Corner Coordinates:
Upper Left ( -42400.000, -48000.000)
Lower Left ( -42400.000, -48600.000)
Upper Right ( -41600.000, -48000.000)
Lower Right ( -41600.000, -48600.000)
Center ( -42000.000, -48300.000)
Band 1 Block=5000×1 Type=Byte, ColorInterp=Red
Overviews: 2500×1875, 1250×938, 625×469
Image Structure Metadata:
COMPRESSION=JPEG
Band 2 Block=5000×1 Type=Byte, ColorInterp=Green
Overviews: 2500×1875, 1250×938, 625×469
Image Structure Metadata:
COMPRESSION=JPEG
Band 3 Block=5000×1 Type=Byte, ColorInterp=Blue
Overviews: 2500×1875, 1250×938, 625×469
Image Structure Metadata:
COMPRESSION=JPEG
[/code]
rasterlite2のサイトhttps://www.gaia-gis.it/fossil/librasterlite2から以下をダウンロード。
- mod_rasterlite2.dll
- rl2tool.exe
http://www.gaia-gis.it/gaia-sins/rasterlite2-win-x86/mod_rasterlite2-1.0.0-rc0-win-x86.7z
mod_rasterlite2.dllはsqliteにラスタ機能を追加する拡張モジュール。
※SQLITEは関数:sqlite3_create_functionを利用してSQLから呼べる関数を登録できる。
例)SQLITE内にCoverageを作成する「SELECT RL2_CreateCoverage(): 」の「RL2_CreateCoverage」はmod_rasterlite2.dllが提供する。
http://www.gaia-gis.it/gaia-sins/rasterlite2-win-x86/rl2tool-1.0.0-rc0-win-x86.7z
rl2tool.exeはラスタファイルをDBに追加するためのツール。
※rl2tool.exeはmod_rasterlite2.dllが提供する関数をコールするためのラッパー。
作業用のディレクトリにmod_rasterlite2.dllとその関連dll、rl2tool.exe、sqlite3.exe、mod_spatialite.dllを配置。
環境変数に「SPATIALITE_SECURITY=relaxed」を設定
以降はRasterlite2のドキュメント「Tutorial: building and testing the Planet Earth sample」を参考に作業
インポート対象のDB「test.sqlite」を作成してsqliteを起動
[code]
sqlite3 work.sqlite
[/code]
拡張DLLを呼び出し
[code]
sqlite> select load_extension(‘mod_rasterlite2’);
sqlite> select load_extension(‘mod_spatialite’);
[/code]
空間データを使うために必要なテーブルを作成
[code]
sqlite> select initSpatialMetadata(1);
1
sqlite> select CreaterasterCoveragesTable();
1
sqlite> select CreateStylingTables();
[/code]
Coverage作成
[code]
C:\work\pasco>rl2tool CREATE -db work.sqlite -src 2135.jpg -ext .jpg -cov test -srid 2451 -smp UINT8 -pxl RGB -cpr JPEG -res 0.0138888889
rl2_tool: request is CREATE
===========================================================
DB path: raster.sqlite
Coverage: test
Sample Type: UINT8
Pixel Type: RGB
Number of Bands: 3
Compression: JPEG (lossy)
Compression Quality: 80
Tile size (pixels): 512 x 512
Srid: 2451
Pixel base resolution: X=0.0138888889 Y=0.0138888889
===========================================================
SQLite version: 3.8.5
SpatiaLite version: 4.2.0
RasterLite2 version: 1.0.0-rc0
sqlite3_step() error: INSERT INTO raster_coverages "NOT NULL constraint failed: raster_coverages.strict_resolution"
restoring the DB to its previous state (ROLLBACK)
[/code]
※上記で指定した解像度は間違っている
raster_coveragesテーブルの項目「strict_resolution」にはnullは設定できないとエラーが発生。
raster_coveragesの定義を確認すると、確かにstrict_resolutionはNOT NULLになっている。
※raster_coveragesテーブルは先ほど実行したCreaterasterCoveragesTableで作成しており、mod_spatialite.dllが提供する関数
※「rl2tool CREATE」は内部では mod_rasterlite2.dllのRL2_CreateCoverageを呼んでいる。
関数RL2_CreateCoverageの実装を確認すると確かにstrict_resolutionには何も設定していない。
よってエラーは避けられない
GeoTIFFのExtentを表示
GeoTIFFのExtentはGDALのユーティリティgdalinfoで表示可能。
gdalinfoのサイト
Windows上で動作するコンパイル済みのGDALモジュールはOsgeoのwikiのダウンロードサイトにあるリンクからたどった
Gisinternalsよりダウンロード
今回は1.9.2 vc2008 32bit版(release-1500-gdal-1-9-2-mapserver-6-2-0.zip)をダウンロード
圧縮ファイル内のbinディレクトリにあるdllとbin\gdal\appsにあるgdalinfo.exeをドイツのディレクトリにおいてコマンドからGEOTIFFのパスを渡すとgeotiffのExtenを含めて各種の情報を表示
google map の距離計測機能についての再考
以前、googlemapとopenlayersの距離計測について投稿。
googlemap APIもV3になり距離計算のAPIも変更されたようなので弊社の距離計算ツールとgooglemapの距離計算機能の差についてあらためて再考。
西武池袋線の清瀬駅とひばりが丘駅の距離をベースに調査。
清瀬駅の座標
139.51989499999999111、35.77196299999999951
ひばりが丘駅の座標
139.54577000000000453、35.75142900000000168
※座標は国土数値情報より入手
googlemapの距離測定機能で測ると3.26kmと表示される。
※googlemapの地図はAPIを介して表示しないと著作権的に問題があるのでぼやかして表示
地図上のポイントをクリックして距離計測を行なうので誤差の発生を考慮して、google map apiでも計測。
[code]
var from = new google.maps.LatLng( 35.77196299999999951,139.51989499999999111);
var to = new google.maps.LatLng( 35.75142900000000168,139.54577000000000453);
var distance = google.maps.geometry.spherical.computeDistanceBetween(from, to);
[/code]
やはりこちらも3269mと表示される。
弊社のの距離計測TOOLで計算すると3265mになる。
[code]
コード,緯度,経度,名称,名称,コード,緯度,経度,名称,名称,距離,円半径
1,35.77196299999999951,139.51989499999999111,清瀬駅,清瀬駅,2,35.75142900000000168,139.54577000000000453,ひばりが丘,ひばりが丘,3265,10000
2,35.75142900000000168,139.54577000000000453,ひばりが丘,ひばりが丘,1,35.77196299999999951,139.51989499999999111,清瀬駅,清瀬駅,3265,10000
[/code]
その差は4m、約0.1%の差が発生する。
国土地理院の距離と方位角の計算でもやはり3269mとなる。
google.maps.geometry.spherical.computeDistanceBetweenは3番目の引数に半径を渡すことができる。
つまり地球を楕円体ではなく球体として計算をしていることが分かる。
※デファルトでは半径を6378137mとしているようだ。
その為、誤差が発生している。
GeoServer上のラインをOpenLayersに色分け表示
GeoServer上に鉄道のデータをインポート
これを鉄道会社の種別(1~5)ごとに色分けしてOpenLayers上に表示
当初はOpenLayersのスタイルで対応を行おうとしたが、どうもこれはOpenLayers.Layer.WMSには使えないみたい
結局、GeoServerの機能でスタイルを作成してレイヤにスタイルを設定して解決
以下のスタイルを作成
[code]
<?xml version="1.0" encoding="ISO-8859-1"?>
<StyledLayerDescriptor version="1.0.0"
xsi:schemaLocation="http://www.opengis.net/sld StyledLayerDescriptor.xsd"
xmlns="http://www.opengis.net/sld"
xmlns:ogc="http://www.opengis.net/ogc"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<NamedLayer>
<Name>railroad ex</Name>
<UserStyle>
<Title>SLD Cook Book: railroad ex</Title>
<FeatureTypeStyle>
<Rule>
<Name>rail-1</Name>
<ogc:Filter>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>n02_002</ogc:PropertyName>
<ogc:Literal>1</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
<LineSymbolizer>
<Stroke>
<CssParameter name="stroke">#009933</CssParameter>
<CssParameter name="stroke-width">2</CssParameter>
</Stroke>
</LineSymbolizer>
</Rule>
</FeatureTypeStyle>
<FeatureTypeStyle>
<Rule>
<Name>rail-2</Name>
<ogc:Filter>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>n02_002</ogc:PropertyName>
<ogc:Literal>2</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
<LineSymbolizer>
<Stroke>
<CssParameter name="stroke">#0055CC</CssParameter>
<CssParameter name="stroke-width">3</CssParameter>
</Stroke>
</LineSymbolizer>
</Rule>
</FeatureTypeStyle>
<FeatureTypeStyle>
<Rule>
<Name>rail-3</Name>
<ogc:Filter>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>n02_002</ogc:PropertyName>
<ogc:Literal>3</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
<LineSymbolizer>
<Stroke>
<CssParameter name="stroke">#FF0000</CssParameter>
<CssParameter name="stroke-width">6</CssParameter>
</Stroke>
</LineSymbolizer>
</Rule>
</FeatureTypeStyle>
<FeatureTypeStyle>
<Rule>
<Name>rail-4</Name>
<ogc:Filter>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>n02_002</ogc:PropertyName>
<ogc:Literal>4</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
<LineSymbolizer>
<Stroke>
<CssParameter name="stroke">#FF0000</CssParameter>
<CssParameter name="stroke-width">6</CssParameter>
</Stroke>
</LineSymbolizer>
</Rule>
</FeatureTypeStyle>
<FeatureTypeStyle>
<Rule>
<Name>rail-5</Name>
<ogc:Filter>
<ogc:PropertyIsEqualTo>
<ogc:PropertyName>n02_002</ogc:PropertyName>
<ogc:Literal>5</ogc:Literal>
</ogc:PropertyIsEqualTo>
</ogc:Filter>
<LineSymbolizer>
<Stroke>
<CssParameter name="stroke">#FF0000</CssParameter>
<CssParameter name="stroke-width">6</CssParameter>
</Stroke>
</LineSymbolizer>
</Rule>
</FeatureTypeStyle>
</UserStyle>
</NamedLayer>
</StyledLayerDescriptor>
[/code]
上記のスタイルをレイヤに関連付けて対応
念の為、OpenLayersのスタイルについて
[code]
new OpenLayers.StyleMap({
"default": new OpenLayers.Style({
strokeColor: "white",
strokeWidth: 1
}, {
rules: [
new OpenLayers.Rule({
filter: new OpenLayers.Filter.Comparison({
type: OpenLayers.Filter.Comparison.LESS_THAN,
property: "shape_area",
value: 3000
}),
symbolizer: {
fillColor: "olive"
}
}),
new OpenLayers.Rule({
elseFilter: true,
symbolizer: {
fillColor: "navy"
}
})
]
})
})
[/code]
スタイルの変更
スタイルはGeoServer上で予めレイヤに設定する。
以下の書式でJavaScript側からも変更が可能
※GeoServer上でrailroad2というスタイルを作成済み
[code]
railroad = new OpenLayers.Layer.WMS(
"Tokyo:railroad", "../geoserver/Tokyo/wms",
{
STYLES: ‘railroad2’,
LAYERS: ‘Tokyo:VIEW_RAILROAD’,
format: ‘image/png’,
transparent: true,
viewparams: ‘road_type:2’
},
{
singleTile: true,
ratio: 1,
isBaseLayer: false,
yx : {‘EPSG:4326’ : true}
}
);
[/code]
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が追加されている
GeoServerを創める
とりあえずGeoServer関連の資料のリンク
http://blog.godo-tys.jp/category/geoserver/
http://live.osgeo.org/ja/overview/geoserver_overview.html
http://www.ibm.com/developerworks/jp/opensource/library/os-geoserver/
http://blog.godo-tys.jp/2013/06/09/2220/
http://docs.geoserver.org/latest/en/user/installation/windows/index.html