Getting Started with GeoPackage 04

chaipat ncm
Aug 27, 2019 · 3 min read

การเผยแพร่ข้อมูลจาก GeoPackage ผ่าน Web Mapping Application

บทความนี้จะสาธิตการใช้ GeoPackage ทำหน้าที่เป็น Data Container เพื่อเผยแพร่และบริการข้อมูล Spatial data ผ่าน web application

ซึ่งเราสามารถทำได้ 2 ลักษณะ คือ

  1. เชื่อมต่อผ่านตัวกลาง ใช้ GeoPackage เป็น data source ต่อผ่านโปรแกรม Web Mapping Server เช่น Geoserver, Qgis Server หรือ Map Server
  2. เชื่อมต่อผ่านโดยตรง ซึ่งจะใช้ Geopackage Javascript Lib ในการเชื่อมประสานการทำงาน ระหว่าง GeoPackage กับ Web Application วิธีนี้มีข้อดีคือ ความสะดวก หยืดหยุ่นและสามารถ optimize ประสิทธิภาพการแสดงผลข้อมูลในระบบได้ อีกด้วย

บทความนี้ผมจะสาธิตให้เห็นถึง การทำงานทั้งใน 2 รูปแบบนี้ โดยเริ่มต้นจะใช้ข้อมูล demo.gpkg ที่ได้เตรียมข้อมูลไว้จากบทความตอนที่ 2 มาเป็นข้อมูลในการทดสอบ

GeoServer & GeoPackage Data Store

Gerserver เวอร์ชั่น 2.15 ขึ้นไปจะรองรับการทำงานกับ GeoPackage ทั้ง Vector และ Raster โดยการใช้งานไม่ยาก มีขั้นตอนดังนี้

  1. ติดตั้ง GeoServer GeoPackage extension โดยเข้าไปดาวน์โหลด geopkg-plugin.zip ใน server เลือกเวอร์ชั่นให้ตรงกับ Geoserver ที่เราติดตั้ง
  2. แตก zip file นำไฟล์ทั้งหมดไปวางใน WEB-INF/lib บน Geoserver directory ที่เรา install ตัวโปรแกรม

3. ทำการ config เลือกไฟล์ GeoPackage ให้กับชั้น layer ที่ต้องการเผยแพร่ สำคัญต้องระบุ database URI ไปยังที่ตั้งของ geopackage file ให้ถูกต้อง รวมถึง Data Source Name ซึ่งเป็นชื่อ Table ที่เก็บข้อมูล attribute และ geometry

4. กรณี raster เลือก GeoPackage Raster (Mosaic) ทำการกำหนด ได้แก่ database URL และ Data Source Name ซึ่งเป็นชื่อ Table ที่เก็บข้อมูล BLOB

Geopackage -Javascript Lib

วิธีการที่ 2 นี้จะเป็นการสร้าง Web GIS Application ด้วย GeoPackage JS ซึ่งเป็น javascript framework ที่สร้างขึ้นเพื่อรองรับการทำงานกับ OGC GeoPackage โดยเฉพาะ ไม่จำเป็นต้องติดตั้งโปรแกรม web map server ใดๆ

ด้วย Lib นี้จะช่วยทำให้ โปรแกรมเมอร์ สามารถเชื่อมต่อ GeoPackage โดยตรงกับ application เพื่อแสดงผลข้อมูล ได้ทันที โดยเฉพาะลักษณะของ Feature service , รวมไปถึงสามารถรองรับ vector tile เพื่อเพิ่มประสิทธิภาพและความสามารถในการทำงานกับ vactor data ได้อีกด้วย

การใช้งาน GeoPackage JS ไม่ยากสามารถใช้ผ่าน NodeJS หรือจะเรียกใช้ leaflet-geopackage ก็ทำได้เช่นกัน ซึ่งบทความนี่้จะสาธิต วิธีการทำงานกับ GeoPackage tile ผ่าน leaflet

  1. ทำการติดตั้งโปรแกรม
$ npm install @ngageoint/leaflet-geopackage

2. สร้าง GeoPackageTileLayer
- กำหนด geoPackageUrl ไฟล์ geopackage ที่เก็บ GRID กรณีที่เราต้องการสร้าง tile index
- กำหนด layerName ชื่อตาราง GRID Layer
- กำหนด noCache กรณีต้องการเก็บ cache ไม่ต้องการ download ซ้ำ

// Load GeoPackage & Display the tile layer
L.geoPackageTileLayer({
geoPackageUrl: ‘./demo.gpkg',
layerName: ‘vector_tiles’
}).addTo(map);

3. สร้าง GeoPackageFeatureLayer
- กำหนด geoPackageUrl ไฟล์ geopackage ที่เก็บ ข้อมูล
- กำหนด layerName ชื่อตาราง vector Layer

// Load GeoPackage & Display the feature layer
L.geoPackageFeatureLayer([], {
geoPackageUrl: ‘./demo.gpkg',
layerName: ‘park’
}).addTo(map);

4. ทดสอบการทำงาน
- เราสามารถสร้าง ส่วนการทำงานต่างๆบน web application ไม่แตกต่างอะไรจากการทำงานกับ Leaflet JS ทั้วไป ในตัวอย่างสร้าง map และ map control เบิ้องต้น
- เรียก map service จาก OSM มาร่วมเป็น based layer พื้นหลัง

var baseLayer = L.tileLayer(‘https://osm.geointservices.io/tiles/default_pc/{z}/{x}/{y}.png',{attribution: ‘© <a href=”http://www.openstreetmap.org/copyright">OpenStreetMap</a>'});
baseLayer.addTo(map);

- เขียนโปรแกรมสกัด atrribute เพื่อแสดงผล รองรับการ feature selection จากการ click บนแผนที่

  • ทดสอบการทำงาน interactive web map
  • ทดสอบ vector tiles กับข้อมูล จำนวน 3000 feature พร้อมกันพบว่าการใช้ vector tile + caching ช่วยเพิ่มประสิทธิภาพ ของ web application ได้ดีขึ้น

สรุป

ปัจจุบัน Geopackage กลายเป็นรูปแบบการจัดเก็บข้อมูล GIS ที่ได้รับความนิยมมากขึ้น บทความนี้สาธิตให้เห็นความสามารถในการใช้ Geopackage ข้าม platform ต่างๆ ตั้งแต่ mobile gis , desktop gis จนถึง web gis ด้วยความเป็นมาตรฐานของ OGC ทำให้สามารถทำงานข้าม software ที่หลากหลายได้ และยังสามารถเชื่อมกับระบบการแสดงผลข้อมูลสมัยใหม่อย่าง VectorTile ได้อีกด้วย

Geo Data Science

Uses scientific methods, processes, algorithms and systems to extract knowledge and insights from spatial data

chaipat ncm

Written by

GIS Developer , Data Scientist (Machine Learning &Deep Learning) at Ayutthaya-GIS Co., Ltd. ,Contract Me >> chaipat.ayutthaya.gis@gmail.com

Geo Data Science

Uses scientific methods, processes, algorithms and systems to extract knowledge and insights from spatial data

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade