AppforMap Application

Standard

วันนี้จะทำการลง Mapserver Client ใหม่ อะนะครับ

AppforMap Application

การลงก็ไม่ยากอะไรเป็นแค่ Web Map Client Application ก็ extract ไว้ใน htdocs path

จากนั้นต้องทำการแก้ไข้ไฟล์

maplinkconfig.php ซี่งอยู่ใน conf/ directory

โดยค่าที่สำคัญคงเป็นค่า

workingDirworkingDir and imageUrl

$workingDir=”C:/ms4w/tmp/ms_tmp/”;
$imageUrl=”http://localhost/ms_tmp/”;//url to the map image.

อีกทั้งต้องทำการแก้ไข IMAGEURL ใน mapfile ให้เป็นในลักษณะ http:// เช่นเดียวกันด้วย

แล้วยังต้องมีการไปแก้ไขไฟล์

browserconfig.xml

เพื่อทำให้สามารถใช้ควบคุมการกำหนดการเปิด ปิด Layer ได้

แต่ทั้งนี้ทั้งนั้นจำเป็นต้องทำการแก้ไข php.ini ให้เปลี่ยนแค่ register_globals=on ด้วยไม่เช่นนั้นก็ใช้ไม่ได้

และหากยังต้องทำการปรับแก้ไขไฟล์
refmapconfig.php

ที่เป็นตัวควบคุมของ Reference map ด้วย โดยต้องแก้ไข Extent ของภาพที่้ใชได้

ข้อแนะนำ

ส่วนใหญ่ การอ้างอิงถึงในตัวแปรให้ใช้ค่า Actual path

การ Recomplie RPM Package

Standard

วันนี้อาจจะนอกเรื่องด้าน Mapserver นิดหน่อยแต่ก็มีส่วนสำคัญในการทำงานที่เกี่ยวกับ Mapserver

คือการ Recomplie RPM Package โดยหากเราได้ทำการ install RPM แล้วหากมันไม่ประสบความสำเร็จ เราอาจจะทำการ Recomplie มันได้ใหม่ ทั้งนี้เราจำเป็นต้องมี SRPM มาด้วย ก็คือ src ของมันนั้นเอง ทำการ install โดยคำสั่ง

rpm -ivh “package name”

จากนั้นเข้าไปใน directory

/usr/src/RPM/SPECS/

ก็จะพบกับไฟล์ .spec

เราจะทำการ Recomplie โดยคำสั่ง

rpm -ba “spec name”

ผลการ Complie จะสร้าง rpm ใน directory

/usr/src/RPM/RPMS/

และ src rpm ใน directory ซึ่งหากมีการเปลี่ยน spec ก็สามารถใช้ SRPM แทนต้นฉบับได้

/usr/src/RPM/SRPMS/

จากนั้นก็ลอง install แล้วทดสอบดู อาจจะใช้คำสั่ง

urpmi –test “package name”

บางทีหากการ Recomplie มีปัญหาลองตรวจสอบดู เพราะมีการเปลี่ยน นิดหน่อย

จาก

CopyRight:

เป็น

License:

แถวท้าย คำสั่งในการ แสดง content ทั้งหมดใน rpm คือ

rpm -qil

การเพิ่ม WMS layer เข้าไปใน PrimaiGIS demo

Standard

จริงโดยหลักแล้วก็คล้ายกับการเพิ่ม layer ธรรมดาที่จะต้อง เพิ่มเข้าไปใน ZCO->rawdata ก่อนโดยเลือกชนิดเป็นแบบ Web Map Service (Raster)

และใส่ URL ที่เราจะใช้และ version

ยกตังอย่างเช่น

url =htpp://127.0.0.1/cgi-bin/hanoiwms?
version =1.1.1

และในช่อง incoming ให้เว้นว่างเอา้ไว้

แต่ในกรณีนี้นั้นไม่จำเป็นต้องเพิ่มในส่วนของ Symbol เพราะมันเป็นข้อมูลแบบ Raster

จากนั้นก็เพิ่มเข้าไปในส่วนของ ZCO Layer โดยอ้างอ้างถึง rawdata

ข้อสำคัญคือ

typename นั้นหมายถึง Layer name หรือ Layer Group Name ที่เราจะร้องขอข้อมูลจาก WMS server นั้นๆ

และเมื่อเพิ่มข้อมูแล้วไปตรวจดูในส่วนของ Edit จาก layer ที่เราเพิ่ง add อาจจะไม่เห็นภาพที่เราเพิ่งเพิ่มเข้าไป
เพราะมีอีักสองส่วนที่ำจำเป็นต้องเพิ่มเข้าไปคือ

ows_srs คือ ข้อมูล SRS Projection ที่เราจะใช้เช่น ESPG:4326

ows_format คือ ข้อมูล ImageType ที่เี่ราจะใช้ image/jpeg

โดยหากข้อมูลดังกล่าวข้างต้นไม่มีให้เพิ่มใน “Properties”โดย parameter ข้างบนทั้งสอง เป็นชนิด string

bbox คือ ข้อมูล Lat Long Bounding Box 105.2926 20.5698 106.8591 21.5
ข้อมูล bbox นั้นเป็นแบบ tokens

เท่านี้แล้วน่าจะทำให้ทุกอย่างสำเร็จเสร็จสิ้นไปได้ด้วยดี แต่จริง ๆ แล้วในส่วนของ typename นั้นอาจเพิ่มการเลือก style เข้าไปได้ด้วย

รายละเอียดเพิ่มเติมติดต่อได้ทาง howto นะครับ

Edit View and Default for Prima GIS

Standard

เราสามารถทำการแก้ไข ค่า Default และ Name View ได้ตั้งแต่ครั้งแรกที่ Customize PrimaGIS demo instance

แต่อย่างไรก็ตามเราก็ยังสามารถมาแก้ไขภายหลังได้เช่นกัน

โดยอาจะเข้ามาที่หน้า Plone ด้วย Admin level
และในส่วนของ

Administer map views

ที่อยู่ล่างจาก Map และ Layers Selection

โดยเมื่อกดปุ่ม

Created Named View

ก็จะทำการสร้าง Zoom View จาก BBox ปัจจุบันที่แสดงบนแผนที่

และหากเรากด ปุ่ม Default View ทีอยู่บน Map Control Toolbox (Zoom In, Zoom Out ,…) ก็จะทำการบันทึกค่า BBox ให้แสดงเป็น Default view เช่นกัน

ทั้งนี้เรายังสามารถระุบุ ค่า BBox จาก ค่า Lat,Lon โดยการเพิ่ม

primagis view

object ได้เช่นกัน

Adding new SHP and Raster to PrimaGIS Demo

Standard

ก่อนนี้เราได้ทำการ ติดตั้ง PrimaGIS Demo ไปแล้วคราวนี้เรามาเริ่มนำข้อมูล GIS และ Raster File เพิ่มเข้าไปใน Demo Instance

ก่อนอื่นเลยต้องทำการสร้าง ไฟล์ ovf สำหรับ กรณีเป็น GIS

$ python shpconfig.py -c world_borders.ovf
$ python shpconfig.py -a world_borders.shp –a_srs “EPSG:4326″ world_borders.ovf

และทำการสร้างไฟล์ vrt สำหรับในกรณีที่เป็น Raster

$ gdal_translate -of VRT -a_srs “EPSG:4326″ file.jpg file.vrt

รายละเอียด ตาม link ว่าทำไมต้องสร้างนะครับ

จากนั้นก็ ทำตามกระบวนการโดยละเอียดจาก link ข้างบน โดยสรุปก็คือ

1. ทำการเพิ่มข้อมูล ใน Data Store ในส่วนของ Raw data (โดยใส่ id และ physical file path)
2. จากนั้นเพิ่ม Zco Layer ในส่วนของ layers (โดยใส่ id และ relative path ของ raw data ที่เราต้องการใช้)
3. เมื่อทำการ เลือกที่ Edit ก็น่าจะเห็นภาพแผนที่
4. จากนั้นไปเพิ่ม Zco Symbolizers ในส่วนของ Symbolizers โดยมีการแยกส่วนออกเป็น point,line,polygon และ Text
5. ต่อมาคือการสร้าง Zco Style โดยสามารถสร้าง Thermatic map ได้จาก symbolizers ที่มีและกำหนด rules ได้
ุ6. จากนั้นต้องทำการเข้าูสู่หน้า Plone โดยใช้ admin ให้ทำการเพิ่ม “Prima GISLayer” object โดยการใช้ปุ่ม Add new item

ส่วนการเพิ่มข้อมูล Raster นั้นทำเช่นเดียวกับข้างบน

โดยไม่จำเป็นต้องทำขั้นตอน 4 และ 5

Creates a PrimaGIS demo instance

Standard

วันนี้เราจะมาพูดถึงการสร้าง PrimaGIS Demo instance ก่อนนะครับ ส่วนการติดตั้ง เดี๋ยวเรียบเรียงอีักที

ข้างล่างก็เป็น link ไปสู่การอธิบายโดยละเอียด โดยใน Blog นี้จะไม่เ้น้นการอธิบายซ้ำกระบวนการหลักหากมันมีอยู่แล้ว แต่จะเป็นการ สรุป และบอกในบางส่วนปลีกย่อยสะมากกว่า โดยใช้ประสบการณ์หลักของผมเองนะครับ หากผู้ใดอ่านแล้วบางทีอาจไม่เข้าใจ ยังไงลอง mail ถามดูนะครับ

http://www.primagis.fi/documentation/install_linux

ก็จะมีวิธีการ Setup และ ติดตั้ง demo ของมันอยู่

หลัก ๆ เลยให้เข้าไป run script ใน

Plone -> portal_skins -> PrimgaGIS-> createPrimaGISDemo (Create a PrimaGIS demo instance)

มันจะมีให้ Customize หรือ Test ต้องทำการแก้ไข path สำหรับ mapdata,tmp และ font จากนั้นก็ลอง run สะ

หาก run แล้ว error ให้ลองแก้ไขค่า oid ซึงมันอาจจะซ้ำ
ในที่นี้สมมุติว่า oid = demo

จากนั้นก็จะมี directory ตามชื่อ oid ที่ระบุข้างบน ให้ลองเข้า

demo>zco>layers->world_borders

ให้เลือกที่ tab “Edit” ก็น่าจะเห็นรูปภาพของ แผนที่ด้านล่างหากไม่ได้ลองกด link ที่มันจะอธิบายรายละเอียดของการ error โดยส่วนใหญ่อาจะเป็น font, tmp path, gif support หรือ projection

ก้อทำตามขั้นตอนข้างบนก็น่าจะผ่าน ฉลุย

โดยอีกจุดหนึ่งที่บางครั้งสร้างเสร้จแ่ต่ user บางคนเปิดแล้วไม่เห็นข้อมูลใดนั้น จำเป็นต้องทำการเปลี่ยน Status Content จาก “public draft” ให้เป็น “publish” ก่อนนะคร้าบ