ใช้งาน AppforMap กับ Map file ของเราเอง

Standard

วันนี้ก็จะมาต่อกันอีกสำหรับ AppforMap เอาว่าย้ายกันมาให้ได้เลย

ก็ไม่มีไรมาก ต้องทำการแก้ไขไฟล์ส่วนใหญ่ที่อยู่ AppforMap/conf/
ซึ่งประกอบไปด้วยไฟล์ดังนี้

maplinkconfig.conf,refmapconfig.conf,browserconfig.xml และ load_modules.php

1.maplinkconfig.conf

ให้ทำการแก้ไขค่า ดังนี้

$workingDir=”C:/ms4w/tmp/ms_tmp/”;//path to the map image. Better use absolute url, because mapscript module change the workingdir
$imageUrl=”http://localhost/ms_tmp/”;//url to the map image.

if (!$mapfileUrl) $mapfileUrl=”C:/ms4w/apache/htdocs/librarymap/mapfile/library_app.map”;

if (!$layerXml) $layerXml=”http://localhost/appformap2/conf/browserconfig.xml?”;

และอาจต้องมีการปรับเปลี่ยนบ้างในกรณีหากมีการใช้ PostGIS อีกทั้งหน้าตา เมนูต่าง ๆ ให้สำรวจดูว่ามีอะไรที่ให้แสดงไว้บ้าง

2.refmapconfig.conf

แก้ไขทุกค่า ของมันเลยก็ว่าได้ เพราะมัีนมีอยู่แค่ 4 ตัว

3. browserconfig.xml

อันนี้เป็นไฟล์เพื่อแสดง ตัวบังคับการเปิดปิด layer ซึ่งอาจไม่ต้องมีจำนวนเท่ากันกับใน map file ก็ได้
หลักก็มีค่าของ

Title ซึ่งเป็นชื่อที่จะแสดง
Name และ Table ต้องตรงกับชื่อ layer ใน mapfile
Abstract ใช้คำอธิบายเยอะ ๆ ลงไปได้

4. load_modules.php
อาจต้องทำการแก้ไขบ้างในการ load module ของ php โดยเฉพาะเมื่อใช้กับ linux OS.

มาสำหรับขั้นสูงขึ้นในการใ้ช้ PostGIS และใช้ client_classic.phtml ที่ทำการ ค้นหาจุดได้นั้นต้องทำการแก้ไขเพิ่มเติมในไฟล์ search_select.php

ต้องทำการเปลี่ยน ตัวแปรที่เกี่ยวกับการ query มีค่าเหมือนกันกับชื่อ Select tag และ Option tag

และปรับเปลี่ยน SQL query command ให้สามารถดึงข้อมูลมาได้

ส่วนรายละเอียดให้ใช้งานได้อย่างเต็มที่ยังมีรายละเอียดอีกมากมาย โดยจะเอาตัวอย่าง มา post ไว้เต็มเลยดีกว่าเนอะ

แต่มี bug อยู่หนึ่งอย่างในไฟล์ function.php ซึ่งจะมีผลกับ postgis > 1.0 ขึ้นไปโดยจะเ้ข้มงวดกับการแบ่งแยก พิกัดมากขึ้น

จะเห็นว่ามันไม่มี

,

ระหว่างค่าพิกัดหายไปซึ่งใน version 0.8 นั้นจะยอมให้ใช้งานได้จึงต้องทำการแก้ไข code ที่ราว ๆ บรรทัด 2031 จาก

$NewPointArray = $NewPointArray.$geominx.” “.$geominy;

and replace it with;

$NewPointArray = $NewPointArray.”,”.$geominx.” “.$geominy;

เสร้จแหละนะคร้าบบ

เห่อ วันนี้ทำงานได้เยอะ มาก ๆ เลย สงสัยได้รับทราบเค้าดีว่าจะได้กลับไทยและบี visa ผ่านแหละ

shp2pgsql support i18n encod

Standard

วันนี้มีเพียงเกร็ดเล็กมาฝากในกรณีต้องการใช้การ convert shp2pgsql ให้สามารถทำการแปลงระบบการ encode เช่นจาก

Shift_JTS ไปเป็น UTF8

ต้องมีการใช้ option -W ต้องเป็นตัว UpperCase นะเพราะมันมีอีก option หนึ่งด้วย

แต่ก่อนจะทำการแปลงนั้นบางที shp2pgsql ของเราอาจไม่ได้ทำการ complie ให้ support ดังนั้นเราต้องการแก้ไขโดยต้อง complie ใหม่

โดยการทำการแก้ไขไฟล์

Makefile.conf.in

ทำการแก้ไขค่านี้ USE_ICONV=1

จากนั้นต้องทำการ recomplie มันสะคราวนี้ก็ดำเนินการได้เลยด้วยชุดคำสั่งนี้

# shp2pgsql -W SJIS shaperoads myschema.roadstable > roads.sql
# psql -d roadsdb -f roads.sql

หรือ

shp2pgsql -W SJIS shaperoads myschema.roadstable | psql -d roadsdb

แล้วหลังจากเราเอา ข้อมูลเข้าไปใน PostgreSQL แล้วนั้นซึ่ง Encode DB ของเรานั้นเป็น UTF-8

ทำใ้ห้เวลาสั่งให้ mapserver สร้าง label ในการแสดงแผนที่นั้นไม่จำเป็นต้อง ระบุ Encode ให้กับมันก็ได้