ตรวจเช็คพื้นที่และเฝ้าระวังน้ำท่วมด้วย Google Earth

#ฝนตกต่อเนื่อง ตรวจเช็คพื้นที่และเฝ้าระวังน้ำท่วมด้วย Google Earth มาดูวิธีการเฝ้าระวังพื้นที่บ้านเรา จะเสี่ยงน้ำท่วมไหม? และต้องเฝ้าระวังพื้นที่รอบๆด้วยนะคับ #GoogleEarth #GIS #เฝ้าระวังน้ำท่วม

Read More »

ELK #6 วิธีการติดตั้ง ELK และ Geoserver แบบ Docker ให้ทำงานร่วมกัน

จาก ELK #5 การประยุกต์ใช้ ELK ในงานด้าน GIS และ การสร้าง Web Map Service (WMS) บน Geoserver ก็จะเห็นถึงการนำไปใช้เบื้องต้น >> ขอบคุณ คุณนพัส กังวานตระกูล สถานวิจัยสารสนเทศภูมิศาสตร์ทรัพยากรธรรมชาติและสิ่งแวดล้อม ศูนย์ภูมิภาคเทคโนโลยีอวกาศและภูมิสารสนเทศ (ภาคใต้) สำหรับความรู้มากมายครับ <<   ต่อไปนี้ จะเป็นขั้นตอนการติดตั้ง ELK และ Geoserver แบบ Docker โดยผมได้สร้าง Github Repository เอาไว้ ซึ่งได้แก้ไขให้ระบบสามารถเก็บข้อมูลไว้ภายนอก Prerequisite ถ้าเป็น Windows ก็ต้องติดตั้ง Docker Toolbox หรือ Docker for Windows ให้เรียบร้อย ถ้าเป็น Linux ก็ติดตั้ง docker-ce ให้เรียบร้อย (เรียนรู้เกี่ยวกับ Docker ได้จาก ติดตั้ง docker 17.06.0 CE บน Ubuntu) ขั้นตอนการติดตั้ง สร้าง Folder ชื่อ Docker เอาไว้ในเครื่อง เช่นใน Documents หรือ จะเป็น D:\ หรืออะไรก็แล้วแต่ เปิด Terminal หรือ Docker Quickstart Terminal จากนั้นให้ cd เข้าไปมา Folder “Docker” ที่สร้างไว้ ดึง ELK ลงมา ด้วยคำสั่ง git clone https://github.com/deviantony/docker-elk.git ดึง Geoserver ลงมา ด้วยคำสั่ง (อันนี้ผมทำต่อยอดเค้าอีกทีหนึ่ง ต้นฉบับคือ https://hub.docker.com/r/fiware/gisdataprovider/) git clone https://github.com/nagarindkx/geoserver.git เนื่องจาก ไม่อยากจะไปแก้ไข Git ของต้นฉบับ เราจึงต้องปรับแต่งนิดหน่อยเอง ให้แก้ไขไฟล์ docker-elk/docker-compose.yml โดยจะเพิ่ม Volume  “data” เพื่อไป mount ส่วนของ data directory ของ Elasticsearch ออกมาจาก Containerแก้ไขจาก elasticsearch: build: elasticsearch/ volumes: – ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml เป็น elasticsearch: build: elasticsearch/ volumes: – ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml – ./elasticsearch/data:/usr/share/elasticsearch/data สร้าง docker-elk/elasticsearch/data mkdir docker-elk/elasticsearch/data แก้ไขไฟล์ docker-elk/logstash/pipeline/logstash.conf ตามต้องการ เช่น ใส่ filter filter { csv { separator => “,” columns => [ “cid”,”name”,”lname”,”pid”,”house”,”road”,”diagcode”,”latitude”,”longitude”,”village”,”tambon”,”ampur”,”changwat” ] } if [cid] == “CID” { drop { } } else { # continue processing data mutate { remove_field => [ “message” ] } mutate { convert => { “longitude” => “float” } convert => { “latitude” => “float” } } mutate { rename =>

Read More »

การสร้าง Web Map Service (WMS) บน Geoserver

จากบทความ ELK #5 การประยุกต์ใช้ ELK ในงานด้าน GIS ของคุณคณกรณ์ ถือว่าเป็นอีกช่องทางหนึ่งในการจัดทำแผนที่ GIS ซึ่งอาศัย Web Map Service หรือเรียกย่อๆว่า WMS ก็เลยทำให้คันไม้คันมือ อยากนำเสนอวิธีการสร้าง WMS บน Geoserver เพื่อนำ shape file ที่เราได้จัดทำขึ้น(ไม่ว่าจะเป็น point , line, polygon) มาใช้งานบน GIS Web Application ซึ่งทั่วไปก็จะใช้ UI เป็น Openlayers, Leaflet ฯลฯ **ลองแวะเข้าไปอ่านบทความเก่าๆของผู้เขียน จะมีการนำเสนอวิธีการนำ WMS ไปใช้ อาทิเช่นกับ Google Earth, ArcGIS เป็นต้น ขั้นตอนการสร้าง WMS บน Geoserver สร้างและกำหนด style ของข้อมูลในโปรแกรม QGIS 2. save style เป็น SLD file โดยจัดเก็บไว้ที่เดียวกับ shape file 3. Copy file ทั้งหมด 4. ไปวาง(past) ไว้ที่ root folder ของ Geoserver ซึ่งในที่นี้จะอยู่ที่ C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\geoserver\data\shpfile\slb-gis *** ดาวน์โหลด shape file ตามตัวอย่างได้ที่นี่ 5. เปิด Geoserver manager โดยพิมพ์ url: localhost:8080/geoserver     *** port สามารถปรับเปลี่ยนได้ 6. ทำการสร้าง Workspaces 7. กำหนดชื่อ Workspace และ URI 8. กำหนด properties ของ Workspace ให้เปิดใช้งาน (Enabled) Services ต่างๆ 9. จากนั้นทำการสร้าง Stores ในการเก็บข้อมูล shape file (จากขั้นตอนที่ 4) 10. เลือกชนิดของ data sources ในที่นี้จะเลือก Directory of spatial files (Shapefiles) 11. ทำตามขั้นตอนในรูป 1) เลือก Work space ที่สร้างไว้ในข้อ 7 2) กำหนดชื่อ data 3) กำหนด directory ที่เก็บ shape file 4) เลือกโฟลเดอร์ จากข้อ 4 5) คลิกปุ่ม OK จากนั้นเลืื่อนไปด้านล่างสุดของหน้าจอ เพื่อคลิกปุ่ม Save 12. จะปรากฏหน้าต่างข้อมูล shape file ที่ถูกจัดเก็บไว้ในข้อ 4 ซึ่งในที่นี้มีเพียง 1 shape file คือ slbtamb > จากนั้นคลิกที่ Publish เพื่อเปิดการใช้งานชั้นข้อมูล 13. จะแสดงชั้นข้อมูล slbtamb จากข้อ 12 14. คลิกปุ่ม Find เพื่อกำหนดระบบพิกัดให้กับชั้นข้อมูล ในที่นี้ shape file เป็นระบบ UTM ผู้เขียนจึงใช้รหัส 32647 15. จากนั้น คลิก Compute from native bounds เพื่อให้ระบบ generate พิกัดให้

Read More »

ELK #5 การประยุกต์ใช้ ELK ในงานด้าน GIS

คราวนี้ มาดูการประยุกต์ใช้ ELK ในงานด้าน GIS ต่อจาก ELK #01 > ELK #02 > ELK #03 > ELK #04 ซึ่งเป็นการติดตั้งทั้งหมด คราวนี้มาดูการประยุกต์ใช้งานกันบ้าง โจทย์มีอยู่ว่า มีการไปเก็บข้อมูลในภาคสนาม แล้วมีการบันทึก พิกัดด้วย GPS เป็น Latitude กับ Longitude พร้อมกับค่าบางอย่าง ทั้งหมดถูกเก็บไว้ในฐานข้อมูล MySQL การนำข้อมูลเข้า ELK ก็เลย Export ข้อมูลจาก MySQL มาเป็น CSV File ประกอบด้วย id,LATITUDE,LONGITUDE,something ตัวอย่างข้อมูล มีดังนี้ id,LATITUDE,LONGITUDE,something 1,6.97585,100.448963,100 2,6.975627,100.450841,19 3,6.973472,100.449196,65 4,6.973468,100.449104,53 5,6.973455,100.449135,33 6,6.973252,100.44888,13 7,6.985862,100.45292,85 8,6.993386,100.416214,90 9,7.005465,100.447984,1 นำข้อมูลเข้า ELK ผ่านทาง Logstash ใน  ELK #2 ได้อธิบายขั้นตอนการติดตั้ง Logstash ไว้แล้วนั้น ต่อไปเป็นการนำข้อมูลชนิด CSV เข้าไปใส่ใน Elasticsearch Logstash จะอ่าน “กระบวนการทำงาน” หรือเรียกว่า Pipeline จากไฟล์ Configuration ซึ่งประกอบด้วย 3 ส่วนหลักๆ คือ Input, Filter และ Output input {    stdin { } } ในส่วน input นี้ จะเป็นการอ่าน STDIN หรือ ทาง Terminal filter { csv { separator => “,” columns => [ “id”,”latitude”,”longitude”,”something” ] } if [id] == “id” { drop { } } else { # continue processing data mutate { remove_field => [ “message” ] } mutate { convert => { “something” => “integer” } convert => { “longitude” => “float” } convert => { “latitude” => “float” } } mutate { rename => { “longitude” => “[geoip][location][lon]” “latitude” => “[geoip][location][lat]” } } } } ในส่วนของ filter นี้ เริ่มจาก เลือกใช้ Filter Plugin ชื่อ “csv” เพื่อจัดการไฟล์ CSV โดยกำหนด “separator” เป็น “,” แล้วกำหนดว่ามีชื่อ Column เป็น “id”,”latitude”,”longitude”,”something” จากนั้น ก็ตรวจสอบว่า ถ้าข้อมูลที่อ่านเข้ามา ใน Column “id” มีค่าเป็น “id” (ซึ่งก็คือบรรทัดหัวตารางของไฟล์ csv นั่นเอง) ก้ให้ “drop” ไป แต่หากไม่ใช่ ก็ให้ทำดังนี้ (mutate คือการแก้ไข)

Read More »

การ Import KML / KMZ to Google Earth on Android device

Google Earth on Android ได้มี Feature ใหม่ ซึ่งสามารถนำเข้าหรือเปิด kml/kmz file ได้ และสามารถซ้อนทับชั้นข้อมูลได้หลาย layer เลยทีเดียว ถือว่าสะดวกมากๆ สำหรับคนที่ต้องการเปิดอ่าน kml/kmz file บนมือถือ   ขั้นตอนการทำ 1. ก่อนอื่น ต้องเตรียม kml หรือ kmz ไฟล์ก่อน หากไม่มี ลองเข้าไป download ได้ที่เว็บฐานข้อมูลลุ่มน้ำทะเลสาบสงขลา http://slb-gis.envi.psu.ac.th 2. update Google Earth บน Android device ให้เป็น version ล่าสุด (ตามตัวอย่างนี้ เป็นเวอร์ชั่น 9.0.4.2) หากยังไม่ได้ติดตั้ง คลิกที่นี่ 3. เปิดแอพ Google Earth > คลิกเมนู (ตามรูป) 4. เลือก My Places 5. คลิก Import KML file 6. เลือกไฟล์ kml 7. แอพจะแสดงไฟล์ที่นำเข้า ให้คลิก Fly Here 8. แสดงข้อมูล 9. คลิกที่ point บนแผนที่ จะแสดงรายละเอียดของข้อมูล ซึ่งขึ้นอยู่กับไฟล์ kml ว่ามีข้อมูลอะไรบ้าง 10. สามารถ import kml file ได้มากกว่า 1 ไฟล์ โดยแอพจะแสดงเป็นชั้นข้อมูล(layer) ในตัวอย่างเพิ่มขอบเขตพื้นที่ลุ่มน้ำฯ 11. แสดงข้อมูล 2 layers 12. สามารถ save เป็นรูปภาพ ได้โดยคลิกที่ไอคอน กล้อง 13. นอกจากนั้น ยังสามารถดูแบบ Street View ได้ด้วย โดยคลิกที่ไอคอนรูปคน 14. จะปรากฎเส้นสีฟ้า แสดงจุดที่สามารถคลิกดูแบบ Street View ได้ > จิ้มดูเลยคับ ^^ 15. ลองจิ้มดูหน้า คณะการจัดการสิ่งแวดล้อม มอ. นะคับ ^^ 16. ดูแบบ 3D ก็คลิกที่ไอคอน 3D เลยคับ 17. แสดงเป็นรูป 3มิติ 5. นอกนั้น ก็ลองคลิกเล่นดูนะคับ ^^   ****บริการโหลดฟรี! ชั้นข้อมูลลุ่มน้ำทะเลสาบสงขลาเพิ่มเติมได้ที่ โครงการการพัฒนาฐานข้อมูลสารสนเทศภูมิศาสตร์ลุ่มน้ำทะเลสาบสงขลา โดย สถานวิจัยสารสนเทศภูมิศาสตร์ ทรัพยากรธรรมชาติและสิ่งแวดล้อม คณะการจัดการสิ่งแวดล้อม มหาวิทยาลัยสงขลานครินทร์

Read More »