กันยายน 2009
วัตถุประสงค์
บทแนะนํานี้จะแนะนําพื้นฐานการแปลงข้อมูลเวกเตอร์ GIS เป็น KML โดยใช้ไลบรารีโอเพนซอร์ส OGR แม้ว่าไลบรารีเหล่านี้สามารถนําไปใช้กับไฟล์ GIS ส่วนใหญ่ได้ แต่บทแนะนํานี้จะเน้นที่การทํางานกับรูปร่างไฟล์ ESRI
บทนำ
ข้อมูลทางภูมิศาสตร์มีหลายรูปแบบบนเว็บ KML เป็นรูปแบบไฟล์ที่แพร่หลายที่สุดรูปแบบหนึ่ง แต่ก็ใช้ประเภทไฟล์อื่นๆ อีกหลายประเภท บริษัท รัฐบาล และองค์กร NGO ขนาดใหญ่ใช้ระบบข้อมูลทางภูมิศาสตร์ในการสร้างแผนที่พร้อมรูปแบบไฟล์พิเศษ แอปพลิเคชันเหล่านี้มักจะต้องมีการฝึกอบรมเฉพาะด้าน หรืออย่างน้อยต้องใช้เวลาอย่างมากในการเรียนรู้ ราคาที่เป็นกรรมสิทธิ์อาจมีราคาค่อนข้างสูง ในทางกลับกัน เครื่องมือเหล่านี้ทรงพลังมากและมีชุดเครื่องมือการแมปมากมายสําหรับนักแผนที่มืออาชีพ
หน่วยงานรัฐหลายแห่งเผยแพร่ข้อมูล GIS บางส่วนต่อสาธารณะ พอร์ทัลอย่าง Data.gov, Massachusetts Geographic Information System และ DataSF ช่วยให้ค้นหาข้อมูลของชุมชนได้ง่ายขึ้น บทความนี้อธิบายวิธีแปลงข้อมูลเวกเตอร์ ซึ่งเป็นข้อมูลที่ประกอบด้วยรูปเรขาคณิตง่ายๆ เช่น จุด เส้น และรูปหลายเหลี่ยม ในรูปแบบ KML วิธีนี้จะช่วยให้คุณเข้าถึงข้อมูลประเภทต่างๆ ได้ เช่น
- ข้อมูลพัสดุที่กําหนดขอบเขตอาณาเขตของอาคาร
- ข้อมูลเหตุการณ์ เช่น รายงานอาชญากรรม
- ข้อมูลขอบเขตสําหรับเขตเทศบาล รัฐ เคาน์ตี จังหวัด เป็นต้น
- ข้อมูลถนน ซึ่งรวมถึงถนนที่วางแผนไว้และถนนที่มีอยู่
- ใบอนุญาตก่อสร้าง ซึ่งระบุว่าออกใบอนุญาตที่ใด
- ข้อมูลสุขภาพ เช่น การอธิบายว่าเกิดการระบาดของไข้หวัดใหญ่ที่ไหน
มีแอปพลิเคชันที่ยอดเยี่ยมหลายโปรแกรมสําหรับการแปลงข้อมูล เช่น Google Earth Pro, shp2 KML, KML2KML, Arc2Earth และอื่นๆ อีกมากมาย บทความนี้จะเน้นที่การแปลงข้อมูลเวกเตอร์เป็น KML เพื่อใช้ใน Google Earth หรือ Google Maps โดยใช้ยูทิลิตี Geospatial Data Abstraction Library (GDAL) แบบโอเพนซอร์สจากบรรทัดคําสั่ง และอาจสร้างแรงบันดาลใจให้คุณรวมไลบรารีเหล่านั้นเข้ากับแอปพลิเคชันของคุณเอง
หมายเหตุเกี่ยวกับประเภทไฟล์
แม้ว่าบทความนี้จะแนะนําขั้นตอนในการแปลง ESRI shapefile เป็น KML ระบบรองรับข้อมูลรูปแบบส่วนใหญ่ที่คุณจะพบ หากเห็นรูปแบบที่ไม่รองรับ คุณสามารถเขียนไดรเวอร์สําหรับ OGR เนื่องจากเป็นไลบรารีโอเพนซอร์ส
ไฟล์รูปร่าง
รูปแบบไฟล์รูปร่างยอดนิยมของ ESRI เป็นหนึ่งในรูปแบบข้อมูล GIS ที่พบบ่อยที่สุด ในทางเทคนิคแล้ว คุณสามารถใช้ไฟล์รูปร่างเป็นไฟล์เดียวที่มีนามสกุล .shp แต่ไฟล์ .shp จะเปิดเองไม่ได้ ต้องมีไฟล์ .dbf และ .shx เป็นอย่างน้อย และต้องมีไฟล์อื่นๆ ที่หลากหลายเพื่อวัตถุประสงค์ที่หลากหลาย ดังนั้นเมื่อคุณเห็นการอ้างอิงไปยัง formfile ก็มักจะหมายถึงการรวบรวมไฟล์ต่างๆ ซึ่งมักจะเป็นไฟล์เก็บถาวรที่ไฟล์ ZIP บางประเภทเพื่อเก็บรักษาร่วมกัน และนั่นคือวิธีที่เราจะใช้คําว่า shapefile สําหรับส่วนที่เหลือของบทความนี้
ไฟล์รูปร่างมีข้อมูลมากมายเกี่ยวกับพื้นที่ทางภูมิศาสตร์ที่เป็นคําอธิบาย เทคโนโลยีดังกล่าวอธิบายรูปเรขาคณิตจริง ข้อมูลเมตาเกี่ยวกับเรขาคณิต และข้อมูลเกี่ยวกับระบบอ้างอิงเชิงพื้นที่ที่ใช้ ตลอดจนข้อมูลอื่นๆ อีกหลายอย่าง สําหรับจุดประสงค์ของบทความนี้ เราจะให้ความสําคัญมากที่สุดกับเรขาคณิต ข้อมูลเมตา และระบบอ้างอิงเชิงพื้นที่
เรขาคณิตและข้อมูลเมตาเป็นแนวคิดง่ายๆ เรขาคณิตคือจุด เส้น และรูปหลายเหลี่ยม และสามารถแสดงใน KML ได้โดยง่าย ข้อมูลเมตาคือรายละเอียดเกี่ยวกับข้อมูล มักใช้สําหรับการกรองหรือสืบค้น เช่น เส้นที่อธิบายถนนอาจมีข้อมูลเมตาเกี่ยวกับประเภทของถนน (ถนนเทศบาล ทางหลวงแผ่นดิน จุดเลี้ยว ฯลฯ) ขีดจํากัดความเร็ว ใครเป็นผู้จ่าย ขนาดถนน เป็นต้น
ระบบอ้างอิงเชิงพื้นที่ (SRS) จะใช้เพื่อระบุระบบพิกัดและการคาดการณ์ที่ใช้ในการสร้างข้อมูลเวกเตอร์ ใน KML ใช้ละติจูดและลองจิจูดในระบบพิกัด WGS84 แต่ก็มีวิธีอื่นๆ ในการระบุพิกัดบนแผนที่ได้ รายการยอดนิยม ได้แก่ Universal Transverse Mercator, British National Grid และ State Plane หากต้องการแปลงข้อมูลเป็น KML อาจกําหนดให้คุณต้องระบุข้อมูลนั้น KML รองรับเฉพาะ WGS84 โดยทั่วไปแล้วรูปร่างรูปร่างจะนําข้อมูลดังกล่าวไปพร้อมกับไฟล์ ซึ่งมักจะอยู่ในไฟล์ .prj และ OGR จะตรวจพบข้อมูลดังกล่าวได้ แต่ในบางครั้งก็ต้องระบุ SRS บางครั้งแหล่งข้อมูลนี้ให้ข้อมูลในรูปแบบใดรูปแบบหนึ่งจากแหล่งข้อมูล ไม่ว่าจะเป็นในหน้าที่คุณดาวน์โหลดมา หรือในเอกสารแบบอ่านที่มีการดาวน์โหลด หรือรูปแบบอื่นๆ โดยทั่วไปแล้ว วิธีนี้ถือว่าเพียงพอแล้ว เว็บไซต์ข้อมูลอ้างอิงด้านพื้นที่มีข้อมูลเพิ่มเติมเกี่ยวกับ SRS และมีข้อมูลอ้างอิงที่ให้คุณค้นหาระบบอ้างอิงแต่ละระบบ
Ogr2ogr
GDAL มีคลังที่มีประสิทธิภาพสําหรับการทํางานกับข้อมูลเวกเตอร์ โดยเฉพาะอย่างยิ่ง ogr2ogr
เป็นยูทิลิตีที่มีประสิทธิภาพสําหรับการแปลงข้อมูล แอปพลิเคชันจํานวนมาก ซึ่งรวมถึงแอปพลิเคชันที่กล่าวถึงข้างต้นมี GDAL/OGR รวมอยู่ด้วย
เริ่มต้นใช้งานโดยดาวน์โหลดและติดตั้ง GDAL จากนั้นคุณจะต้องใช้รูปทรงของไฟล์ ดูบทแนะนํานี้ได้จากบทแนะนํานี้จาก DataSF ตัวอย่างด้านล่างใช้ คุณสามารถใช้รูปร่าง realtor_neighborhoods
ของไฟล์ได้ หลังจากยอมรับใบอนุญาตแล้วที่นี่ เมื่อดาวน์โหลดไฟล์แล้ว ให้แตกไฟล์นั้นเป็นไดเรกทอรีที่คุณจะจดจําได้ เปิดบรรทัดคําสั่งแล้วไปยังไดเรกทอรีที่คุณใส่ข้อมูลไว้ มาถึงส่วนที่สนุกแล้ว
สามารถใช้ ogr2ogr
จากบรรทัดคําสั่งได้อย่างง่ายดาย วิธีแปลง realtor_neighborhoods
จากเชปไฟล์เป็น KML มีดังนี้
ogr2ogr -f "KML" -where "NBRHOOD='Telegraph Hill'" realtor_neighborhoods.kml realtor_neighborhoods.shp
รายละเอียดเกี่ยวกับคําสั่งดังกล่าวมีดังนี้
ogr2ogr
: นี่คือคําสั่งหลัก-f "KML
: การดําเนินการนี้จะตั้งค่ารูปแบบเอาต์พุตเป็น KML-where "NBRHOOD='Telegraph Hill'"
: นี่คือข้อกําหนดwhere
ที่ไม่บังคับ เช่น ใน SQL โดยทั่วไปแล้ว ช่วยให้คุณค้นหาข้อมูลตามข้อมูลเมตาได้ โดยจะใช้ได้กับรูปร่างไฟล์และประเภทไฟล์อื่นๆ ที่รองรับการค้นหา ในกรณีนี้จะเป็นการค้นหาช่อง NBRHOOD และเลือกเฉพาะฟีเจอร์ที่มี NBRHOOD ของ Telegraph Hill หากคุณปิดพารามิเตอร์ดังกล่าวogr2ogr
จะแสดงรูปหลายเหลี่ยมของละแวกใกล้เคียงทุกรายการrealtor_neighborhoods.kml
: นี่คือชื่อไฟล์เอาต์พุต ชื่อของไฟล์เอาต์พุตต้องมาก่อนrealtor_neighborhoods.shp
: นี่คือชื่อไฟล์อินพุต ไฟล์ .shp แสดงถึงไฟล์ทั้งหมด
ง่ายๆ เท่านี้เลย คําสั่งนี้จะเขียนไฟล์ KML ที่มีลักษณะดังนี้
<?xml version="1.0" encoding="utf-8" ?> <kml xmlns="http://www.opengis.net/kml/2.2"> <Document><Folder><name>realtor_neighborhoods</name> <Schema name="realtor_neighborhoods" id="realtor_neighborhoods"> <SimpleField name="Name" type="string"></SimpleField> <SimpleField name="Description" type="string"></SimpleField> <SimpleField name="OBJECTID" type="float"></SimpleField> <SimpleField name="NBRHOOD" type="string"></SimpleField> <SimpleField name="SFAR_DISTR" type="string"></SimpleField> </Schema> <Placemark> <ExtendedData><SchemaData schemaUrl="#realtor_neighborhoods"> <SimpleData name="OBJECTID">81</SimpleData> <SimpleData name="NBRHOOD">Telegraph Hill</SimpleData> <SimpleData name="SFAR_DISTR">District 8 - Northeast</SimpleData> </SchemaData></ExtendedData> <Polygon><outerBoundaryIs><LinearRing><coordinates>-122.41041847319012,37.805924016582715,0 -122.407203813674,37.806324902060979,0 -122.40667792852096,37.803710121958744,0 -122.40348255423899,37.804117462290641,0 -122.40237202127015,37.798540648764529,0 -122.40876046662795,37.797723222540775,0 -122.41041847319012,37.805924016582715,0</coordinates></LinearRing></outerBoundaryIs></Polygon> <Style><LineStyle><color>ff0000ff</color></LineStyle> <PolyStyle><fill>0</fill></PolyStyle></Style> </Placemark> </Folder></Document></kml>
คุณจะเห็นได้ว่าข้อมูลเมตาจากรูปร่างของไฟล์ได้รับการเก็บรักษาไว้ในองค์ประกอบ Schema
และ SimpleData
ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ ExtendedData และการเก็บรักษาข้อมูลที่กําหนดเองได้ที่ส่วนคู่มือสําหรับนักพัฒนาซอฟต์แวร์ KML เกี่ยวกับการเพิ่มข้อมูลที่กําหนดเอง
ขั้นตอนถัดไปคือ
GDAL/OGR ให้กําลังใจมหาศาล ในการดําเนินการที่ง่ายที่สุด ตอนนี้คุณสามารถแปลงข้อมูลทั้งหมดเป็น KML เพื่อใช้ใน Google Earth, Maps หรือเบราว์เซอร์ทางภูมิศาสตร์อื่นๆ ที่รองรับ KML ได้แล้ว และที่ดีกว่านั้นคือ คุณสามารถรวมไลบรารี GDAL/OGR ไว้ในแอปพลิเคชันของคุณ ซึ่งจะทําให้สามารถแปลงข้อมูล GIS เป็น KML โดยอัตโนมัติ และควบคุมเอาต์พุตของ Conversion นั้นได้ ลองรวมกับ lib KML เพื่อการควบคุมแบบเป็นโปรแกรมสําหรับการสร้าง KML มากยิ่งขึ้น