WebGIS1. Implement Web GIS with
UMN Map Server
犖犖迦権 犖犖園権犖犖園犖 犢犖犖劇賢犖犖犢犖迦検犖
Email: pk_a1977@hotmail.com , teddybeargis@gmail.com
Blog: http://emap.wordpress.com
犖犖園権犖犖園犖 犢犖犖劇賢犖犖犢犖迦検犖 1
2. Introduction
UMN Map Server 犢犖犢 犖犢犖犖犢犖犖犖 Web GIS Engine 犖犖犖萎犖犖
Open source 犖犖朽犖犢 犖犖犖朽権犖犖÷牽犖園犢犖犖犖迦牽犖犢犖迦検犖迦犖犢犖犖犖犖迦牽犖萎犖犖犖迦牽犖犖犢犖犖
犖
犢 犢 犢
犖犖項検犖巌絹犖迦肩犖犖犢犖犖迦犢犖犖犖 犖犖犖迦権犖犖巌犢犖犖犖犢犢犖犢犖 (Internet GIS) 犢犖犖 犖犖園犖犖迦犖謹犖犖園犢犖犖犖
1994 犖÷元犖犢犖犢犢犖ム鍵犖犖項犖犖犖迦犢犖迦犖о犖÷顕犖犖犖園硯犢犖ム 犖犖 犖犖犖伍犖 UMN Map Server
犖項 犢 犖 犖
犢
犖犖∇弦犖犖迦権犢犖犢犖犖迦牽犖犖犖園犖犖犖伍犖犖犖 OSGEO
犖犖園権犖犖園犖 犢犖犖劇賢犖犖犢犖迦検犖 2
4. Feature
- 犖犖犖犖犖園犖犖迦牽犢犖犖犖犖犖ム犖犖 Thematic mapping
犖 犢
-犖犖犖園犖犖犖伍犖犖迦牽犖犢犖迦犖迦犖犖犖犖 犖犢犖犖犖犖迦牽犖犖園犢犖犖犖犢犖犖÷弦犖ム犖項検犖巌肩犖迦牽犖犖犢犖犖犖犖犖巌
犢 犢
犖犖迦犢 犖犖迦犖犖迦 GDAL/OGR 犖犖園 Vector, Raster 犢犖ム鍵 Spatial Database
犢
- 犖犖犖犖犖園犖犖迦牽犖犢犖迦犖迦犖犖犢犖犖犢犖犖犖犖ム検犖迦犖犖犖迦犖犖犖 OGC 犢犖犖
WMS,WFS,WCS,GML,SLD,FE,SOS,KML
-犖犖犖犖犖園犖犖迦牽犖犢犖迦犖迦犢犖犖 Tiling Image 犖犖迦検犖÷顕犖犖犖犖迦 TMS
-犖犖 犢犖犖犖犢犖犖迦牽犢犖犖犖犖犖ム犖迦牽犖犖 犖犖犢犖犖犢犖犖÷弦犖ム牽犖迦肩犢犖犖犖犢 犖犖迦牽犖犖園犖犖迦牽犖犢犖犖÷弦犖ム犖迦
犖犖迦肩犢犖犖犖犢
犖犖園権犖犖園犖 犢犖犖劇賢犖犖犢犖迦検犖 4
5. Feature
犢
-犖犖犖犖犖園犖犖迦牽犢犖犖犖犖犖 TrueType font 犢犖ム鍵犖犖迦牽 Label 犢犖犖犖犖迦犢
犖 犢
- 犢犖犖÷犖犖迦牽犖犢犖迦犖迦犖犖 CRS 犢犖犖 On the Fly Projection 犖犖迦犖犖迦
犢犖ム犖迦牽犖 犖犖犖 Proj4
- 犖犖犖園犖犖犖伍犖犖迦牽犖犢犖迦犖迦犢犖犖 Cascading Map Service
- 犖犖犖÷犖犖ム犖犖о権 C 犖犢犖迦犖迦犢犖犖 CGI 犖犖犖 犖犖犖萎犖ム厳犖犖犢犖犢犢犖犖 Map Script
犢
犢 犢
犖犖迦県犖迦犖迦犢 犢犖犖 C#, Python ,PHP, Java
- 犖犖劇犢犖犖朽犖÷顕犖犖÷顕犖
犖犖園権犖犖園犖 犢犖犖劇賢犖犖犢犖迦検犖 5
25. Implementation Step
1. Prepare Geospatial Data (犢犖犖犖 犖∇検犖犢犖犖÷弦犖)
2. Manipulate Geospatial Data (Optimize 犖犢犖犖÷弦犖)
3. Setup Mapserver
4. Create Mapfile configuration (犢犖犖朽権犖 code 犖犢犖迦見犖犖園 Mapfile)
5. Test Service (犖犖犖犖犖犖犖迦牽犖犢犖迦犖迦犖犖犖 Mapserver)
6. Develop Web Application (HTML+JavaScript,AJAX)
7. Test Application (Upload 犖犖謹 Server 犖犢犖 load balancing )
犖犖園権犖犖園犖 犢犖犖劇賢犖犖犢犖迦検犖 25
27. Implementation Step 1
犢
- 犖犖 犢 Map Projection 犖犖犖犢犖犖ム鍵犖犖園犖犢犖犖÷弦犖
犢
- 犖犖 犢 BBOX 犖犖犖犢犖犖ム鍵犖犖園犖犢犖犖÷弦犖
- 犖犖犖о犖犖犖犖犖о顕犖÷肩犖÷犖項牽犖犢犖犖犖
犢犖犖ム犖犖犖÷弦犖ム
犖犖園権犖犖園犖 犢犖犖劇賢犖犖犢犖迦検犖 27
28. Implementation Step 1
犖犢 犖犖犖犖萎犖犢 犖 Web GIS 犖犢 犖犖犢犖犢 犖 Desktop GIS
犢犖犖 犖∇犢 犖犖 犢犖犖犖迦鍵犖犖萎犖園犖犖犢犖犖 犖犖÷険犖犖犢 犖о権 QGIS
犖犖園権犖犖園犖 犢犖犖劇賢犖犖犢犖迦検犖 28
30. Implementation Step 2 : Optimize Raster
Color Index
Radio metric Depth
Image Compression
犖犖園権犖犖園犖 犢犖犖劇賢犖犖犢犖迦検犖 30
31. Tiling
External Tiling
Internal Tiling
8 bit
11101001 10101001 10101001 1110100111101001 1110100111101001
10001001 10101001 10101001 1110100100101001
11101001 10101001 10101001
10001001 10101001 10101001
犖犖園権犖犖園犖 犢犖犖劇賢犖犖犢犖迦検犖 31
16 bit
32. Pyramid
犖犖園権犖犖園犖 犢犖犖劇賢犖犖犢犖迦検犖 32
33. GDAL/OGR
犢 犢
GDAL 犢犖犢 犖犢犖ム犖迦牽犖 犖犖朽犖犢犢犖犖犖迦牽犖犖園犖犖迦牽犖犢犖犖÷弦犖ム牽犖迦肩犢犖犖犖犢犢犖犢犖÷犖迦権
犢犖犖犖犖 (Map Server) 犖犢犖迦見犖犖園犖犖迦牽犢犖犖犖犖犖 犖犖迦牽犖犢犖迦犖犖犖犖ム幻犢犖 犖犖ム賢犖犖犖
犖犖迦牽犢犖犖犖犢犖犖÷弦犖ム犖犖∇犖犢 犖犖犖犖犖犢犢犖о牽犢犢犖犖犖ム幻犢犖÷犖犖 Open Source 犖犖 犖
犢
犖犖犖園犖犖犖伍犖犖 犖犢犖犖犢犖犖ム犖犢犖迦犢犖犖園犖犖 JPEG2000, IMG, GeoTiff, DOQ,
ECW
犖犖園権犖犖園犖 犢犖犖劇賢犖犖犢犖迦検犖 33
34. GDAL/OGR
- gdal_translate : Compress, Reformat
- gdaladdo : Add overviews to a file.
- gdalwarp : Warp an image into a new coordinate
system.
- gdaltindex : Build a MapServer raster tileindex
犖犖園権犖犖園犖 犢犖犖劇賢犖犖犢犖迦検犖 34
36. Implementation Step 3 : Setup
Download the Source Code
- http://mapserver.gis.umn.edu/download
Compile the Source Code
- http://mapserver.gis.umn.edu/docs/howto/compiling_on_unix
- http://mapserver.gis.umn.edu/docs/howto/win32_compiling
Download Pre-compiled Binary Packages
- MS4W for Windows
- FGS for Linux
- FWTools: http://fwtools.maptools.org/windows-main.html
犖犖園権犖犖園犖 犢犖犖劇賢犖犖犢犖迦検犖 36
37. Implementation Step 3 : Setup
1. 犖犢犖迦犖迦牽犖犖園犖ム賢犖犢犖犖ム犢犖犖犖犢 MS4W 犢犖犖о顕犖犢犖о犖犖 D:/
2. 犢犖犢犖迦犖犖犖 folder --> D: ms4w Double Click 犖犖 apache-
犢
install.bat 犖犖犖÷犖巌硯犢犖犖犖犢犖犖萎犢犖迦犖迦牽犖犖巌犖犖園犢犖犖犢犖犖犖÷犖迦犢 犖犖迦権犢犖 MS4W
Package
犖犖園権犖犖園犖 犢犖犖劇賢犖犖犢犖迦検犖 37
41. Implementation Step 4 : Find Project Extent
-231930.03916 ,459597.455047, 1673801.76813 ,2365717.07906
犖犖園権犖犖園犖 犢犖犖劇賢犖犖犢犖迦検犖 41
42. # -------------------------------- Start Mapfile -------------------------------------------
MAP
NAME "Thai" # 犖犖犖萎犖迦絹犖犖劇賢 犢犖犖巌検犖犢 犖犖犖犖犖犖迦 Bitmap
STATUS ON # 犖犢犖迦見犖犖犖犖犖迦犖萎犖犢 犖犖迦検犖迦牽犖犖÷賢犖犢犖犢犖犢犖犢
SIZE 600 420 # 犖犢犖迦見犖犖犖犖犖迦犖犖犖犖犖迦 Bitmap
IMAGECOLOR 255 255 255 # 犖犢犖迦見犖犖犖犖 Background 犖犖犖犢犖犖犖犖
FONTSET "Fonts/fonts1.list" # 犖犢犖迦見犖犖 Font
IMAGETYPE PNG # 犖犢犖迦見犖犖犖犖犖巌犖犖犖犖犖迦 Bitmap
EXTENT -231930.03916 459597.455047 1673801.76813 2365717.07906
TEMPLATEPATTERN "printable.html|loader.html # 犖犢犖迦見犖犖犖犖犢犖犖犖犖犖TEMPLATE 犖
SHAPEPATH "data" # 犖犢犖迦見犖犖 Folder 犖犖朽犖犢犖 犖犢 犖犖÷献 Shapefile
犖
犖犖園権犖犖園犖 犢犖犖劇賢犖犖犢犖迦検犖 42
43. # -------------------------------- Start Web object -------------------------------------------
WEB
IMAGEPATH "/ms4w/tmp/ms_tmp/ # 犖犢犖迦見犖犖 Path 犖犖犖 犖犖迦 Bitmap
IMAGEURL "/ms_tmp/" # 犖犢犖迦見犖犖 location 犖犖犖 犖犖迦 Bitmap
TEMPLATE "printable.html" # 犖犢犖迦見犖犖 HTML Template 犖犖朽犖犖犖犢犖犖犖犖
METADATA # 犖犖萎犖 Metadata 犖犖犖犖犢 犖犖÷献犖犖迦検犖÷顕犖犖犖迦犖迦 WMS
犖
WMS_TITLE "ThaiMap"
WMS_ABSTRACT "ThaiMap"
WMS_ACCESSCONSTRAINTS none
WMS_SRS "EPSG:4326"
END
END #WEB
犖犖園権犖犖園犖 犢犖犖劇賢犖犖犢犖迦検犖 43
44. # -------------------------------- Start Projection object -------------------------------------------
PROJECTION
"init=epsg:32647" # Projection UTM Zone 47
END
# -------------------------------- Start Legend object -------------------------------------------
LEGEND
STATUS ON # 犖犢犖迦見犖犖犖犖犖迦犖萎犖迦牽犖÷賢犖犢犖犢犖犖犖犖 LEGEND
POSITION UL # 犖犢犖迦見犖犖犖犢犖迦犖犖犢 犖
KEYSIZE 18 12 # 犖犢犖迦見犖犖犖犖犖迦
LABEL # 犖犢犖迦見犖犖犖犖犢犖犖犖犖園犖犖
犖
TYPE BITMAP
SIZE MEDIUM
COLOR 0 0 89
END
END # Legend
犖犖園権犖犖園犖 犢犖犖劇賢犖犖犢犖迦検犖 44
45. # -------------------------------- Start Reference object -------------------------------------------
REFERENCE
STATUS ON # 犖犢犖迦見犖犖犖犖犖迦犖萎犖迦牽犖÷賢犖犢犖犢犖犖犖犖 Reference
IMAGE graphics/clearmap.gif # 犖犢犖迦見犖犖Path 犖犖迦
SIZE 150 128 # 犖犢犖迦見犖犖犖犖犖迦
Extent -231930.03916 459597.455047 1673801.76813 2365717.07906 # 犖犢犖迦見犖犖 Extent
COLOR -1 -1 -1 # 犖犢犖迦見犖犖犖犖
OUTLINECOLOR 255 0 0 # 犖犢犖迦見犖犖犖犖 犖犖犖犢犖犢 犖犖犖犖
END
# -------------------------------- Query object -------------------------------------------
QUERYMAP
STATUS ON
STYLE SELECTED # 犖犢犖迦見犖犖犖犖犢犖犖犖犖犖犖犖迦牽 Query
犖
COLOR 255 128 0 # 犖犢犖迦見犖犖犖犖 犖犖犖 Feature 犖犖朽犖犖犢犖迦犖迦牽犢犖ム厳犖犖
犖
END
犖犖園権犖犖園犖 犢犖犖劇賢犖犖犢犖迦検犖 45
46. LAYER
NAME "Thai" # 犖犖劇賢犖犖犖 Layer
STATUS DEFAULT # 犖犢犖迦見犖犖犖犖犖迦犖萎犖犖巌検犖犢 犖
DATA 'Thai/thai' # Path 犖犖朽犖犢犖犖犢 犖犖÷献
犖
TYPE LINE # 犖犖犖巌犖犖犖 Layer
UNITS METERS # 犖犖犢 犖о権犖犖犖犖犖萎権犖萎犖迦
PROJECTION # 犢犖犖犢犖犖犖犖園犖犖犖 Layer
"init=epsg:32647"
END
METADATA
WMS_TITLE "Thai Boundary"
WMS_ABSTRACT "Thailand Boundary"
WMS_SRS "EPSG:32647"
END # metadata
CLASS # 犖犖犖巌犖犖犖 Class 犖犖朽犖犖犖犖犢 犖犖÷献犖犖犖迦犖犖 犖
犖
NAME "thai" # 犖犖劇賢犖犖犖 Class
COLOR 255 255 0 # 犖犖
SIZE 2 # 犖犖犖迦犖犖犖犢犖犢 犖
END
END # layer 犖犖園権犖犖園犖 犢犖犖劇賢犖犖犢犖迦検犖 46
END
47. Implementation Step 4 : Add Point Layer
LAYER # Layer village
NAME village
TYPE POINT
STATUS OFF
DATA "Thai/village"
PROJECTION
"init=epsg:32647"
END
METADATA
DESCRIPTION "village"
END # metadata
CLASS #1
NAME "village"
STYLE
SYMBOL 'circle'
COLOR 255 0 200
SIZE 5
END
END # CLASS
END # LayerEND
犖犖園権犖犖園犖 犢犖犖劇賢犖犖犢犖迦検犖 47
48. Implementation Step 4 : Add Raster Layer
LAYER
NAME ortho
TYPE RASTER
DATA 'Ortho_image/bangkok.ecw'
STATUS OFF
PROJECTION
"init=epsg:32647"
END
METADATA
DESCRIPTION "Ortho Pohoto"
END # metadata
END
犖犖園権犖犖園犖 犢犖犖劇賢犖犖犢犖迦検犖 48
49. Implementation Step 4 : Config WMS Service
METADATA
WMS_TITLE "Thai Boundary"
WMS_ABSTRACT "Thailand Boundary"
WMS_SRS "EPSG:32647"
END # metadata
犖犖園権犖犖園犖 犢犖犖劇賢犖犖犢犖迦検犖 49
50. Implementation Step 4 : Add WMS Layer
LAYER # MODIS WMS map from JPL
...
CONNECTIONTYPE WMS
CONNECTION "http://wms.jpl.nasa.gov/wms.cgi?"
METADATA
"wms_srs" "EPSG:4326"
"wms_name" "BMNG"
"wms_server_version" "1.1.1"
"wms_format" "image/jpeg"
"wms_style" "Aug"
END
...
END
犖犖園権犖犖園犖 犢犖犖劇賢犖犖犢犖迦検犖 50
52. Implementation Step 5
http://localhost/cgi-
bin/mapserv.exe?map=../htdocs/mapserv/thai250k.map&SERVICE=WMS
&VERSION=1.1.1&REQUEST=GetMap&layers=province,thai&format=jpeg
犖犖園権犖犖園犖 犢犖犖劇賢犖犖犢犖迦検犖 52
55. Implementation Step 6 : Application
WebGIS Application 犖犖朽犢犖迦犖迦犢犖犖犖犖迦絹犖園権 web browser 犖犖園硯犢犖
犢
犢犖犖朽権犖犖犖∇顕犖犢犖犖朽権犖 犢犖犖∇犖萎賢犖迦絹犖園権犖犖о顕犖÷肩犖迦検犖迦牽犖犢犖犖犖迦牽犖犖犖萎検犖о献犖犖ム犖犖犢犖÷
犢 犢 犢
犖犖迦権犢犖犢 犖犖犖ム険犖 犖犖項犖犢犢犖÷犢犖迦犖犢 犖犖犖朽犖萎犢犖犖犖犖巌犖犖園犢犖犖犢犖犖犖÷見犖犖 犖 plug-in 犢犖
犢 犢
犢犖犖巌検犢犖犖巌検 犖犖 犖犖犖伍犖犖÷元犢犖犢犢犖ム厳犖犖犖犖∇弦犖÷顕犖犖÷顕犖∇犖犖 Ka-map ,P.mapper,
犖
Openlayers 犢犖犖∇牽犖 犖犢犖犖犖犖迦牽犖犢犖迦犖迦犖犖萎犖犢 犖犖ム険犖犖犖犖萎犖犖 AJAX Based
犢 犢 犢
犖犖ム顕犖о犖劇賢犖÷元犖犖迦牽犢犖犖犖犖犖ム犢犖犖÷弦犖ム犖迦犢犖犖犖犖朽犖迦犖犖園硯犢犖÷犖迦権 犢犖ム鍵犖犖迦検犖迦牽犖
犖犖 犖犖犢犖犢犖ム鍵犢犖犖犖犖犢犖犖÷弦犖 attribute 犢犖犢
犖犖園権犖犖園犖 犢犖犖劇賢犖犖犢犖迦検犖 55
56. Implementation Step 6 : P.mapper
犢
P.mapper 犢犖犢 犖 Open source Web Mapping Framework 犖犖朽犖迦犖犢
犖犖迦犖犖朽犖犖園硯犖犖犖謹 犢犖犖∇犖園犖犖迦犖謹犖犖迦犖犖迦県犖 PHP 犖犢犖迦犖迦犢犖犖劇賢犖÷犖犖犖 犢 犖
Mapserver 犢犖犢犖犖÷ PHPMapscript 犖犢犖迦見犖犖園犖犖園硯 Web Application 犢犖犢 犖
AJAX Based 犖犖 Jqury Framework
犢 犢
犖犖迦牽犢犖犢 Web Mapping Feamework 犖÷元犖犖犖犖朽犖劇賢犖犖迦権犖犖犖犖迦牽犖犖園犖犖
犢
犢 犢 犢 犖 犢
犢犖犖犢犖犢犖犖 犖∇犖÷元犢犖÷犖犢犖犖犖犖劇賢犖犖о顕犖÷権犖伍犖∇顕犖犢犖犖犖迦牽犖犖∇顕犖∇見犖犖 犖犖犖園犖犖迦犖園犖犖犖園犢
犢犖犖巌検犢犖犖巌検
犖犖園権犖犖園犖 犢犖犖劇賢犖犖犢犖迦検犖 56
57. Implementation Step 6 : p.mapper features
DHTML (DOM)
zoom/pan interface with mouse wheel, keyboard keys, slider, and reference map
Query functions
identify, select, search
Query results display
with database joins and hyperlinks
Print functions
HTML and PDF
Configuration
functions, behaviour
and layout via xml
犖犖園権犖犖園犖 犢犖犖劇賢犖犖犢犖迦検犖 57
59. Implementation Step 6 : Pmapper
1. 犖犖迦硯犖犢犢犖犖ム Pmapper 犖犖 http://pmapper.sourceforge.net
2. 犢犖犖犢犖犖ム Pmapper 犢犖犖犖 htdoc 犖犖犖 犖 WWW
3. 犖犖犖ム賢犖 run demo application
http://127.0.0.1/pmapper4/pmapper-4/map.phtml
犖犖園権犖犖園犖 犢犖犖劇賢犖犖犢犖迦検犖 59
60. Implementation Step 6 : Pmapper
犢
4. 犢犖犖犖朽犖犢犖犖犖犢 config 犢犖犢 pmapper 犢犖犢犖犢犖犖ム
config_default.xml
犖犖園権犖犖園犖 犢犖犖劇賢犖犖犢犖迦検犖 60
61. Implementation Step 6 : Setup XML Config
犢
犖犖迦見犖犖 mapfile
犢 犢 犢
犖犖迦見犖犖 Layer 犖犖朽犖萎賢犖∇弦犢犖 category 犖犖迦犢
犢
犖犖迦見犖犖 Layer 犖犖園犖犖÷犖犖朽犖萎犖犖ム犢犖犢犖迦検犖迦犖迦 Mapfile
犢
犖犖迦見犖犖 Layer 犖犖園犖犖÷犖犖朽犖萎犖犖犖犖犖ム犖犖犢犖犖 犖
犖犖園権犖犖園犖 犢犖犖劇賢犖犖犢犖迦検犖 61
64. Implementation Step 6 : Setup XML Config
犢
犖犖迦見犖犖犖犖劇賢 Field 犖犖朽犢犖犖犖犖迦牽犖犢犖犖犖
犢
犖犖迦見犖犖犖犖劇賢 Field 犖犖朽犢犖犖犖犖迦牽犖犢犖犖犖
犖犖園権犖犖園犖 犢犖犖劇賢犖犖犢犖迦検犖 64
65. Implementation Step 6 : Pmapper
犢犖犖犖 犖犖犖÷厳犖犖犢犖犖犖迦犢犖犖÷弦犖ム犖犖 Suggest key
犢犖犖犖 犖犖犖÷厳犖犖犢犖犖犖迦犢犖犖÷弦犖ム犖犖犖犖犖犖
犖犖ム献犖園犖犢犢犖犖犖犖迦牽犖迦
犖犖園権犖犖園犖 犢犖犖劇賢犖犖犢犖迦検犖 65
66. Implementation Step 6 : Setup XML Config
犖∇険犖犢犖犖朽権犖犢犖÷ 犖犖
犖犢 犖犖犖犖迦牽犖犖朽犖朽犖о 犖迦犖......
犖犖園権犖犖園犖 犢犖犖劇賢犖犖犢犖迦検犖 66
67. Implementation Step 6 : Pmapper Hack
犢犖÷厳犖犖犢犖犖犖犖迦牽犖犖萎犖犖園犖犖犖 犖犖犖犖 犖犖犖園犖犖迦賢犖萎犖犢犖犖巌検犢犖犖巌検犖犖犖犖犖迦犖犖
Pmapper Frame Work 犢犖犖犖 犖∇検犢犖о犢犖犢犖犖迦検犖迦牽犖犖犢犖迦犖犢犢犖犖犖 犖犢犖犖犖犖迦牽犢犖犖朽権犖
犢 犢
犢犖犖犢犖犖犖÷犖犖÷犖犖 extend Class 犢犖犖巌検犢犖犖巌検犖犖迦 core module 犢犖犖犖 犖犖犖
犖犖萎犢犖犖犖÷元犖犖劇賢
1. 犢犖犖朽権犖犢犖犖犢犖犖犖÷犖犖 PHP OOP 犢犖犢
2. 犢犖犖朽権犖犢犖犖犢犖犖犖 JavaScript 犢犖犖 OOP 犢犖犢
3. 犖犖 犢 AJAX
4. 犢犖犢犖迦犖 XML ,CSS
5. 犖÷元犖犖о顕犖÷賢犖犖犖 犖犖園権犖犖園犖 犢犖犖劇賢犖犖犢犖迦検犖 67
68. BOOK
犖犖園権犖犖園犖 犢犖犖劇賢犖犖犢犖迦検犖 68