Nhập KML và thông tin kiểu vào Geoserver


9

Vì vậy, tôi đang làm việc trong một dự án đã được phát triển trong hơn một năm, nhưng tôi chỉ mới tham gia gần đây. Nhiệm vụ của tôi liên quan đến việc chuyển đổi khoảng 2.500 tệp KML sang định dạng khác, nhập các tệp này vào Geoserver và sau đó sao chép thông tin kiểu được liên kết cho mỗi tệp. Tôi nhận ra rằng Geoserver cho phép bạn nhập trực tiếp các tệp KML, tuy nhiên, các tệp của chúng tôi dường như không bao giờ hiển thị chính xác và ông chủ của tôi muốn chuyển khỏi định dạng KML vì lý do triết học.

Sử dụng ogr2ogr, tôi đã cố gắng chuyển đổi các tệp này thành ESRI Shapefiles, tuy nhiên quá trình chuyển đổi chỉ hoạt động trên khoảng một phần ba các tệp và xóa một số siêu dữ liệu được gọi trong thông tin kiểu. Các tệp không chuyển đổi mã cho đa giác và điểm mà tôi đã đọc có thể là một lỗi đối với các chương trình khác như QGIS.

Tôi cũng đã cố gắng đưa tất cả các tệp KML vào cơ sở dữ liệu PostGIS và chuyển đổi chúng như thế. Tuy nhiên, điều đó dường như xóa tất cả dữ liệu để lại các bảng trống để nhập.

TL; DR Tôi cần tìm cách chuyển đổi 2.500 tệp KML thành định dạng có thể sử dụng được bởi Geoserver và sẽ hoạt động với thông tin kiểu XML. Tôi là một người hoàn toàn về GIS và đây là lần đầu tiên tôi đăng bài, vì vậy tôi rất tiếc nếu điều này có vẻ hơi vô lý.


Kiểu cơ bản giống nhau cho tất cả các tệp KML hay chúng hoàn toàn khác nhau? Nếu trước đây bạn có thể thấy rằng bạn có thể chỉ cần cuộn một tệp kiểu (hoặc bộ tệp) cho GeoServer sử dụng SLD (định dạng dựa trên XML).
nmtoken


Tôi không biết tôi có thể hỏi câu hỏi này ở đâu nhưng tôi chắc chắn bạn biết câu trả lời của tôi. Đây có phải là cách tải lên KML dưới dạng nguồn dữ liệu mới trên GeoServer không? @samane
Mostafa Fallah

Câu trả lời:


1

Trong dữ liệu và kiểu dáng GeoServer được phân tách, không có cách nào để trộn chúng. Bạn có thể tự động tạo SLD. Cho đến nay, tôi không biết nếu một trình chuyển đổi tồn tại cho kiểu kml sang kiểu máy chủ địa lý.


1

Đầu tiên, kiểu Geoserver (SLD) và dữ liệu (KML) hoàn toàn khác nhau. Nhập tệp KML trong Geoserver trở lên, tạo tệp SLD trong trình chỉnh sửa kiểu hoặc tạo kiểu trong trình xem (như Mapfishapp) và tiếp theo, lưu tệp .sld để lấy sld dễ dàng mà không cần ghi trong XML (khó nhận biết hơn về phân loại hoặc phong cách cụ thể khác khi một số hệ thống nhận ra nó dễ dàng).

Sau đó, tôi đã sử dụng các tệp KML để lưu dữ liệu GIS và mọi lúc, tôi bị mất thuộc tính (= mất dữ liệu). KML chỉ giữ thông tin hình học. Tốt hơn là lưu dữ liệu nativ của bạn sang định dạng khác (thuộc tính giữ CSV) hoặc chỉ tạo bảng dữ liệu và sau đó, cung cấp thông tin địa lý hoặc trực tiếp tạo lớp. (shapefile, Csv ...).

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


1

Thông tin bổ sung trong tệp kml mà bạn muốn sử dụng và bạn gọi là "siêu dữ liệu", có thể có trong biệt ngữ KML:

  1. Kiểu và Kiểu dáng
  2. ExtendedData
  3. Thông tin tùy chỉnh trong trường Mô tả của Dấu vị trí, thường ở dạng bảng html

Vì mỗi tệp kml là một tệp ASCII, nên nó có thể được xử lý thông qua tập lệnh xử lý văn bản. Theo hiểu biết của tôi, một "lớp" riêng biệt phải được tạo cho từng loại đối tượng mà bạn muốn trình bày và tạo kiểu trong Geoserver. Điều này có nghĩa là từ mỗi tệp kml, bạn sẽ kết thúc với một số tệp tùy thuộc vào việc phân loại các loại đối tượng.

Không phải là một công việc đơn giản cho các công cụ có sẵn. Hy vọng, nếu tất cả các tệp 2.500 kml được tạo ra với cùng một ứng dụng, chúng sẽ có cùng cấu trúc. Trong trường hợp đó, bạn sẽ cần một phân tích chi tiết về cấu trúc này và rất nhiều kịch bản tùy chỉnh.


1

Mở kml và nhìn vào bên trong có vẻ như tất cả những gì bạn thực sự muốn là dữ liệu vì các áp phích khác đã đề xuất các kiểu không có trên thẻ nên vấn đề của bạn là chuyển đổi tất cả các tệp mà về cơ bản chỉ là tệp văn bản tìm hiểu một số python

sau đó hack một cái gì đó như thế này thành hình: https://gist.github.com/linwoodc3/0306734dfe17076dfd34e09660c198c0

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.