Contenu connexe Plus de Ayutthaya GIS (11) 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
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