วิธีนำเข้าไฟล์ KML ที่มีข้อมูลที่กำหนดเองไปยังฐานข้อมูล Postgres / PostGIS ได้อย่างไร


18

โดยกำหนดเองฉันไม่ได้หมายถึงโครงสร้างที่แตกต่างของไฟล์ KML แต่ใน<description></description>ส่วนฉันมีข้อมูลที่มีแท็ก HTML ประเภทนี้:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<Placemark>
  <name>New York City</name>
  <description><![CDATA[
    <table>
      <tr><td colspan='2'>Attributes</td></tr>
      <tr><td>CITY_ID</td><td>150335</td></tr>
      <tr><td>POPULATION</td><td>8244910</td></tr>
      <tr><td>AREA</td><td>468.48</td></tr>
    </table>]]>
  </description>
  <Point>
    <coordinates>40.712964,-74.003886,0</coordinates>
  </Point>
</Placemark>
</Document>
</kml>

ฉันต้องการนำเข้าข้อมูลทั้งหมดนี้อย่างง่ายดายสำหรับแต่ละหมุดไปยังตารางที่มีคอลัมน์ที่เกี่ยวข้องในฐานข้อมูลวิธีการทำเช่นนี้?


3
มีหลายวิธีที่จะทำให้สำเร็จ คุณช่วยบอกเราเพิ่มเติมเกี่ยวกับเครื่องมืออะไรที่คุณคุ้นเคย? คุณกำลังมองหาวิธีแก้ปัญหาการเขียนโปรแกรม (ภาษาที่คุณชอบ?) หรือวิธีแก้ปัญหาที่ใช้เครื่องมือ (เช่น ArgGIS, QGIS)?
katahdin

คำตอบ:


19

คุณสามารถใช้ ST_GeomFromKML เป็นหน้านี้ได้

SELECT ST_GeomFromKML('
        <LineString>
            <coordinates>-71.1663,42.2614 
                -71.1667,42.2616</coordinates>
        </LineString>');

หรือคุณสามารถใช้ ogr2ogr ดังต่อไปนี้เพื่อประมวลผลไฟล์ KML ทั้งหมด

ogr2ogr -f "PostgreSQL" PG:"host=yourhost user=youruser dbname=yourdb 
                            password=yourpass" inputfilename.kml

ฉันหวังว่ามันจะช่วยคุณ ...


1
ogr2ogr: คุณกำลังพูดว่าไปจาก KML ถึง SHP แล้วไปที่ PG ทำไมเขาไม่สามารถใช้จาก KML ถึง PG ด้วยขั้นตอนเดียว
nickves

มันได้ผล! และสำหรับการอ้างอิงฉันต้องการเพิ่มความคิดเห็น: ฉันพบ ogr2ogr ใน /Library/Frameworks/GDAL.framework/Programs/ (สำหรับ Mac) และมีคำเตือนหากเนื้อหาของส่วน <description> มีมากกว่า 80 caracters ขอขอบคุณ!
elbaid

1

สำหรับผู้ที่มีความสุขใน QGIS ให้ลากไฟล์ KML ของคุณไปยัง QGIS จากนั้นเชื่อมต่อกับฐานข้อมูล Postgres ของคุณตามเอกสารที่นี่แล้วเพิ่มเลเยอร์ที่คุณต้องการจาก QGIS เป็นตารางใหม่ในสคีมาของคุณ


นั่นคือสิ่งที่ฉันจะทำ!
DPSSpatial
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.