ฉันเห็นภาพรูปร่างเป็นเลเยอร์ใน mapserver ตอนนี้ฉันต้องการที่จะทำการร้องขอบางคลาสของเลเยอร์นี้เท่านั้น ฉันต้องการตัวอย่างหนึ่งคำขอสำหรับคลาสน้ำและต่อมาสำหรับคลาสไม้เท่านั้น ฉันสามารถรับรู้สิ่งนี้ได้ด้วยโปรแกรมแผนที่หรือไม่
ฉันเห็นภาพรูปร่างเป็นเลเยอร์ใน mapserver ตอนนี้ฉันต้องการที่จะทำการร้องขอบางคลาสของเลเยอร์นี้เท่านั้น ฉันต้องการตัวอย่างหนึ่งคำขอสำหรับคลาสน้ำและต่อมาสำหรับคลาสไม้เท่านั้น ฉันสามารถรับรู้สิ่งนี้ได้ด้วยโปรแกรมแผนที่หรือไม่
คำตอบ:
นี่เป็นอีกวิธีที่คุณสามารถทำได้ วิธีนี้เกี่ยวข้องกับการใช้หนึ่งเลเยอร์กับนิพจน์ในแต่ละชั้นเรียน มันแพงกว่านิดหน่อยที่จะทำเช่นนี้เพราะมันเกี่ยวข้องกับการแสดงออกทางตรรกะ แต่คุณอาจไม่เคยสังเกตเห็นความแตกต่างเว้นแต่ว่าคุณจะประสบกับสถานการณ์ที่มีภาระสูงมาก
แต่ละชั้นมีการแสดงออกสองส่วน ทั้งสองส่วนของการแสดงออกจะต้องเป็นจริงสำหรับคุณสมบัติที่จะวาด ส่วนแรกของนิพจน์เลือกคุณลักษณะที่ควรอยู่ในคลาสนั้นตามคุณลักษณะในรูปร่างของคุณ ส่วนที่สองของนิพจน์ประเมินค่าของตัวแปรที่ส่งผ่านเข้าสู่ url ไม่สำคัญว่าคุณจะตั้งชื่อตัวแปรอะไรใน url ของคุณ (อย่าใช้คำสงวนเช่น 'เลเยอร์') แต่ก็ต้องตรงกับชื่อตัวแปรในนิพจน์ของคุณ
นี่คือเลเยอร์ตัวอย่างบางส่วน:
LAYER
NAME "watersheds"
STATUS DEFAULT
DATA 'majclip'
TYPE POLYGON
CLASS
NAME "water"
EXPRESSION ([MAJOR] < 42 AND '%wanted%' = 'water')
STYLE
COLOR 0 0 255
END
END
CLASS
NAME "wood"
EXPRESSION ([MAJOR] >= 42 AND '%wanted%' = 'wood')
STYLE
COLOR 0 255 0
END
END
END
หากต้องการวาดเพียงคุณลักษณะของน้ำคุณจะต้องใช้การร้องขอ URL ดังนี้: http: //localhost/cgi-bin/mapserv.exe? map = / ms4w / apps / mymapfile.map & mode = map & ต้องการ = wood
เนื่องจากนี่เป็นวิธีที่ถูกต้องประการที่สามในการบรรลุเป้าหมายของคุณคุณจึงต้องการคิดเกี่ยวกับวัตถุประสงค์ของคุณ หากข้อมูลของคุณเปลี่ยนแปลงบ่อยคุณอาจต้องใช้ตัวเลือกนี้ หากข้อมูลของคุณไม่เปลี่ยนแปลงบ่อยฉันจะไปสองเลเยอร์ ฉันยังอาจแบ่ง shapefile เป็นหลาย shapefiles ตามประเภทการใช้ที่ดินถ้าประสิทธิภาพนั้นดีขึ้น (อาจไม่ได้ตัวกรองเลเยอร์ค่อนข้างมีประสิทธิภาพ) ด้วยการทำแผนที่เว็บยิ่งคุณเพิ่มประสิทธิภาพข้อมูลของคุณล่วงหน้ามากเท่าไหร่ก็ยิ่งดีเท่านั้น
ในกรณีของคุณควรมีสองชั้นหนึ่งสำหรับไม้และหนึ่งสำหรับน้ำ คุณสามารถมีสองชั้นโดยใช้รูปร่างไฟล์เดียวกัน ..
จากนั้นคุณสามารถเลือกว่าเลเยอร์ใดที่จะเห็นภาพโดยตรงในคำขอโดยพารามิเตอร์ LAYERS คลาสจะแสดงเฉพาะส่วนต่าง ๆ ของข้อมูล (เช่นวิธีการแสดงข้อมูลในเลเยอร์นั้น)
หากคุณต้องการทั้งหมดในชั้นเดียวคุณสามารถใช้ Named Styles เพื่อให้บรรลุสิ่งนี้ ดูที่นี่สำหรับรายละเอียดเพิ่มเติม อย่างไรก็ตามคำแนะนำของปีเตอร์เกี่ยวกับหลายเลเยอร์นั้นเป็นวิธีที่ง่ายกว่ามาก