Làm cách nào để nhập tệp KML, với dữ liệu tùy chỉnh, vào cơ sở dữ liệu Postgres / PostGIS?


18

Theo tùy chỉnh, tôi không có nghĩa là một cấu trúc khác nhau của tệp KML, nhưng trong <description></description>phần, tôi có dữ liệu với các thẻ HTML loại này:

<?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>

Tôi muốn dễ dàng nhập tất cả dữ liệu này, cho mỗi dấu vị trí, vào một bảng có các cột tương ứng trong cơ sở dữ liệu, làm thế nào để làm điều này?


3
Có nhiều cách để thực hiện điều này. Bạn có thể cho chúng tôi biết thêm về những công cụ mà bạn quen thuộc? Bạn đang tìm kiếm một giải pháp định hướng lập trình (bạn thích ngôn ngữ nào?) Hoặc giải pháp dựa trên công cụ (ví dụ: ArgGIS, QGIS)?
katahdin

Câu trả lời:


19

bạn có thể sử dụng ST_GeomFromKML làm trang này .

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

hoặc bạn có thể sử dụng ogr2ogr như sau để xử lý toàn bộ tệp KML;

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

Tôi hy vọng nó sẽ giúp bạn...


1
ogr2ogr: bạn đang nói chuyển từ KML sang SHP sau đó đến PG. Tại sao anh ta không thể sử dụng từ KML đến PG với một bước?
biệt danh

Nó hoạt động! và để tham khảo, tôi muốn thêm một số nhận xét: Tôi đã tìm thấy ogr2ogr trong / L Library / Frameworks / GALAL.framework / Programs / (trên máy Mac) và có cảnh báo nếu nội dung của phần <description> chứa hơn 80 ký tự. Cảm ơn bạn!
elbaid

1

Đối với những người hạnh phúc hơn trong QGIS, hãy kéo tệp KML của bạn đến QGIS. Sau đó kết nối với cơ sở dữ liệu Postgres của bạn như được ghi lại ở đây, sau đó thêm các lớp bạn muốn từ QGIS làm bảng mới trong lược đồ của bạn


Đó là những gì tôi sẽ làm!
DPSSpatial
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.