วิธีการทำงานของ Mapserver
เมื่อก่อนหน้าเราได้พูดถึงหลักเกณฑ์บางประการ MapServer และพื้นฐานของการติดตั้ง ตอนนี้เรามาดูการดำเนินการบางอย่างในแบบฝึกหัดที่มีแผนที่ของ Chiapas cuates
ติดตั้งอยู่ที่ไหน
เมื่อมีการติดตั้ง Apache ไดเร็กทอรีการเผยแพร่ MapServer เริ่มต้นจะเป็นโฟลเดอร์ OSGeo4W โดยตรงเหนือ C: /
ภายในมีโฟลเดอร์ต่าง ๆ พร้อมแอพพลิเคชั่นขึ้นอยู่กับสิ่งที่ติดตั้งไว้ แต่โฟลเดอร์สำหรับสิ่งพิมพ์ต้องอยู่ใน apache ในกรณีนี้เรียกว่าโฟลเดอร์ gis
- จากนั้นภายในโฟลเดอร์ข้อมูลประกอบด้วยเลเยอร์ orthophoto ฯลฯ
- ในโฟลเดอร์ etc มีฟอนต์ประเภทจริงที่ใช้สำหรับเลเบลโดยมีนามสกุล. ttf นี่คือไฟล์ txt ที่ยกขึ้นและอีกไฟล์หนึ่งที่กำหนดสัญลักษณ์
- และสุดท้ายในโฟลเดอร์ httdocs ไปที่หน้าเว็บที่เพิ่มบริการ
หน้าเว็บ
ในตัวอย่างฉันจะใช้กรณีที่แสดงครั้งสุดท้าย โดยทั่วไปจะมีไฟล์ดัชนีที่เปลี่ยนเส้นทางไปยังไฟล์ที่มีนามสกุล phtml และสิ่งนี้จะเพิ่มฟังก์ชันที่สร้างขึ้นบน php และแผนที่ โฟลเดอร์มีรูปภาพที่เชื่อมโยงจากเพจ
ถ้าเราดูมัน phtml เป็นเพียงเชลล์ที่สร้างขึ้นจากตารางและเรียกใช้ฟังก์ชัน mapscript / php คุณควรลุกขึ้นโดยใช้:
http://localhost/gis/gispalenque.phtml
ด้านล่างนี้เป็นผลลัพธ์:
- ไปยังจุดศูนย์กลางของฟังก์ชั่น GMapDrawMap (),
- ทางขวามือเรียก keymap GMapDrawKeyMap (),
- แถบด้านล่าง GMapDrawScaleBar (),
- และในกรณีของฟังก์ชันการปรับใช้เงื่อนไขเกี่ยวกับ listbox ถ้า (! IsHtmlMode ()) echo " กับการตัดสินใจ: ZOOM_IN, ZOOM_OUT, RECENTER, QUERY_POINT
ทำงานอยู่แล้วการใช้งานมีลักษณะดังนี้:
ไฟล์. map
การรวมกันของสิ่งพิมพ์ของ Mapserver คือสิ่งที่ Apache เพิ่มขึ้นซึ่งจะส่งผ่าน PHP MAPscript แล้วมันก็ออกมาจากเปลือกนั้น แต่วิทยาศาสตร์ส่วนใหญ่อยู่ในไฟล์. map เพื่อไม่ให้สับสนกับไฟล์ที่สร้างโดย Mapinfo, Manifold หรือ Mobile Mapper Office ที่มีนามสกุลเดียวกัน
. map เหล่านี้เป็นไฟล์ข้อความซึ่งมีแผนที่ในรูปแบบสคริปต์ สิ่งเหล่านี้สามารถสร้างได้ด้วยโปรแกรมเดสก์ท็อปเช่น Quantum GIS หากคุณดูว่ามีหนึ่งรายการสำหรับแผนที่หลักหนึ่งรายการสำหรับ Keymap และอีกสองรายการสำหรับบริการ OGC wms และ wfs มาดูกันว่า mapscript ทำงานอย่างไร:
แผนที่
NAME PALENQUE_DEMO
STATUS ON
ขนาด 600 450
SYMBOLSET ../etc/symbols.txt
EXTENT 604299 1933386 610503 1939300 # รายการแผนที่ทั้งหมดของ PALENQUE
#EXTENT 605786 1935102 608000 1938800 #SOLO ภาค 01
UNITS METERS
SHAPEPATH "../data"
ตรวจสอบความถูกต้อง
IMAGECOLOR 255 255 255
FONTSET ../etc/fonts.txt
- MAP ระบุว่าเป็นสคริปต์เริ่มต้น
- STATUS ระบุว่าแผนที่เริ่มต้นเปิดอยู่หรือไม่
- ขนาดคือขนาดของจอแสดงผล
- SYMBOLSET แสดงเส้นทางของสัญลักษณ์
- EXTENT คือพิกัดที่แสดง สัญลักษณ์ # ใช้เพื่อสร้างคำอธิบายประกอบ
- UNITS สำหรับหน่วย
- SHAPEPATH เส้นทางที่มีเลเยอร์
- ทุกอย่างที่ท้ายจะลงท้ายด้วยคำสั่ง END
ภายในรหัสเริ่มต้นด้วยบรรทัดคำสั่งและลงท้ายด้วย END ตัวอย่างเช่นสำหรับระดับต่ำสุดและสูงสุด ไดเรกทอรีของภาพชั่วคราว:
เว็บ
MINSCALE 2000000
MAXSCALE 50000000IMAGEPATH "C: \ OSGeo4W / tmp / ms_tmp /"
IMAGEURL "/ ms_tmp /"
END
แถบสเกล:
Scalebar
IMAGECOLOR 255 255 255
LABEL
COLOR 0 0 0
ขนาดเล็ก
END
ขนาด 300 5
COLOR 255 255 255
BACKGROUNDCOLOR 0 0 0
OUTLINECOLOR 0 0 0
UNITS กิโลเมตร
INTERVALS 3
STATUS ON
END
เลเยอร์แรสเตอร์: ที่อยู่ในพื้นหลังพร้อมคำอธิบายในรายการเป็น "Orthophoto" จาก tiff ที่อยู่ในโฟลเดอร์ข้อมูล:
ชั้น
NAME orthophoto
เมตา
"DESCRIPTION" "OrtoFoto"
END
ประเภท RASTER
STATUS OFF
ข้อมูล "C: \ OSGeo4W / apps / gis / data / ortofotoGral.tif"
#OFFSITE 0 0 0
END
ชั้นบรา tematizada รูปหลายเหลี่ยมตามเกณฑ์การเพิ่มข้อมูลบางอย่างเกี่ยวกับแม่แบบ HTML ที่มีตัวอักษรซองฉลากขนาด 6 ขอบสีดำและสีขาว buffer 5 ...
ชั้น
NAME เซ็ก XX02Zone
TYPE POLYGON
STATUS OFF
ความโปร่งใส 50
EXTENT 607852 1935706 610804 1938807 ข้อมูลเมตาดาต้า
"DESCRIPTION" "Theme by Value Sector 02"
"RESULT_FIELDS" "MsLink Cve_Mz Cve_Pred พื้นที่รอบ Perimeter VALUE"
END
DATA PALENQUE_SECTOR01
TEMPLATE "ttt_query.html"
TOLERANCE 5
#TELERANCEUNITS PIXELS
LABELITEM "VALOR"
CLASSITEM "VALOR"
LABELCACHE ON
ชั้น
SYMBOL 1
COLOR 128 128 128
OUTLINECOLOR 0 0 0
NAME "ZonaNULL"
EXPRESSION ([VALUE] = 0)
LABEL
ANGLE AUTO
COLOR 0 0 0
FONT sans
TYPE TRUETYPE
ตำแหน่ง cc
PARTIALS FALSE
BUFFER 5
6 ขนาด
OUTLINECOLOR 200 200 200
END
END #class 0 value
ชั้น
SYMBOL 3
COLOR 255 128 128
#COLOR -1 -1 -1 #SIN FILLING
.... และอื่น ๆ เพื่อปิดด้วย
END
END #Class Value
END # เลเยอร์
เพื่อสรุป
ดังนั้นการทำงานกับ mapserver แม้ว่าจะค่อนข้างง่าย แต่ก็มีความซับซ้อนและมีข้อ จำกัด มากสำหรับงานขนาดใหญ่เพราะทุกอย่างอยู่ใน. map ข้อเสียที่ใหญ่ที่สุดคือทุกอย่างทำได้ด้วยการเดินเท้าเช่นการกำหนดสีแต่ละสีในธีมและด้วยเหตุนี้เครื่องมือเช่น CartoWeb จึงเกิดขึ้นซึ่งทำงานบน Mapserver แต่นำปลั๊กอินและตัวอย่างในตัวพร้อมคุณสมบัติที่ทำให้เวอร์ชันดั้งเดิมนี้ดูเหมือน ที่ readme ก่อน:
- ทำงานแยกเฟรมด้วย AJAX เพื่อรีเฟรชแยกต่างหาก
- แยกวิเคราะห์โค้ดตราบเท่าที่สคริปต์เขียนใหม่ .map ตามเกณฑ์ parametrizable
- เลื่อนกลับแบบไดนามิกโดยไม่ต้องรีเฟรชราวกับว่าเป็นชั้นแฟลช
- การแก้ไขเวกเตอร์ออนไลน์เขียนแคชทันที
- ดาวน์โหลดเลเยอร์ในรูปแบบเวกเตอร์
- ส่งออกไปยัง Google Earth
- สร้าง PDF จากการปรับใช้
ต่อไปเราจะมาดู CartoWeb ที่นี่ฉันจะทิ้งลิงค์ไปยังตัวอย่างหลัก
มีวิธีการที่จะต้องมีเอาต์พุตแบบมาตรฐานของ phtml มาตรฐานขอบคุณ
สวัสดี
ฉันกำลังพยายามเรียกเลเยอร์จาก. map ดังต่อไปนี้
ชั้น
NAME test_houses
TYPE POINT
CONNECTIONTYPE OGR
การเชื่อมต่อ #”virtual.ovf”
"
xxxxx
เอ็กเซ็ค …….
eess_id
wkbPoint
WGS84
"
ปัญหาของฉันคือบริการ DSN ทำให้เกิดปัญหา: เมื่อขอ GetCapabilities มันกำลังส่งคืนรหัสผ่านฐานข้อมูล... ฉันสามารถโทรไปยังไฟล์เพื่อหลีกเลี่ยงการ "แจก" รหัสผ่านหรือเป็นข้อผิดพลาด DSN ได้หรือไม่ ขอบคุณ!
MapServer เป็นโครงการโอเพ่นซอร์สที่ได้รับความนิยมโดยมีวัตถุประสงค์เพื่อแสดงแผนที่เชิงพื้นที่แบบไดนามิกผ่านทางอินเทอร์เน็ต ไดรฟ์ที่เมาท์คือไดรฟ์ที่แมปไปยังโฟลเดอร์ที่ว่างบนไดรฟ์ข้อมูลที่ใช้ระบบไฟล์ NTFS ไดรฟ์ที่ติดตั้งทำงานเป็นไดรฟ์อื่น ๆ แต่ไดรฟ์เหล่านี้จะกำหนดเส้นทางไดรฟ์แทนตัวอักษรของไดรฟ์