Tạo một lớp trong GeoServer bằng REST


16

Là một phần của giải pháp khả thi cho câu hỏi này, tôi muốn tạo một lớp trong GeoServer thông qua REST cung cấp câu lệnh SQL cùng với userid.

Đọc tôi nghĩ rằng tôi sẽ tạo ra một loại tính năng và xuất bản nó? Tôi cần phải làm tất cả điều này trong REST. Có ai có bất kỳ ví dụ mã?


Có vẻ như không thể thêm một lớp thông qua giao diện nghỉ ngơi, cuối cùng bạn đã giải quyết nó chưa? Tôi gặp lỗi: Trạng thái HTTP 405 - Phương thức HTTP được chỉ định không được phép cho tài nguyên được yêu cầu
a1an

Câu trả lời:


41

Có nhiều điều bạn có thể làm với API REST của GeoServer không được ghi lại cụ thể và không có ví dụ mã nào cho. Đây là chiến lược để giải quyết những vấn đề đó.

Đầu tiên, bắt đầu với các ví dụ trong tài liệu . Hãy chắc chắn rằng bạn quen thuộc với cách bạn có thể tạo một lớp hoặc không gian làm việc mới đơn giản bằng cách sử dụng HTTP POST bằng XML hoặc JSON.

Sau đó, thông qua UI GeoServer, tự tạo đối tượng bạn cần mà không có tài liệu (trong trường hợp này là loại tính năng).

Cuối cùng, duyệt thủ công đến chỉ mục GeoServer REST ( http://your-server/resthoặc http://your-server/geoserver/rest). Duyệt qua chỉ mục cho đến khi bạn tìm thấy loại tính năng bạn vừa tạo. Nối ".xml" hoặc ".json" vào URL của tài nguyên này và bạn sẽ thấy biểu diễn XML hoặc JSON của nó.

Đại diện này là những gì bạn cần có để POST để tạo loại tính năng thông qua API. URL của đại diện là URL mà bạn cần phải gửi đến (ví dụ http://your-server/geoserver/rest/..../myFeatureTypeName.json:).

Bạn có thể sử dụng chiến lược này để tìm ra cách lập trình hoặc định cấu hình bất kỳ tài nguyên nào trong GeoServer.


2
CẢM ƠN BẠN! Câu trả lời dễ dàng và chỉ giúp tôi tiết kiệm thêm 2 giờ đồng hồ
Ragi Yaser Burhum

4
Ngoài ra, rất nhiều tham số có thể được bỏ qua và GeoServer sẽ tìm ra chúng (giống như trong UI). ví dụ. hộp giới hạn
RCoup

1
Wow - đây là mô tả tốt nhất về điều này tôi đã thấy.
Kieveli

3
Sử dụng geoserver 2.10.2, tôi thấy rằng tôi cần phải POST để các featuretypesthiết bị đầu cuối của các cửa hàng, ví dụgeoserver/rest/workspaces/<workspacename>/datastores/<storename>/featuretypes/
Stephen Lead

Mô tả quy trình công việc rõ ràng, liên kết có liên quan bao gồm. TĂNG CƯỜNG! :)
tony gil

10

Tôi biết đây là một câu hỏi cũ, nhưng chỉ trong trường hợp có ai đó nhầm lẫn như tôi. Phần quan trọng là bạn không thể tạo một lớp từ điểm cuối http: // geoserver / rest / layer .

Nếu bạn đang tìm cách thêm một lớp vectơ, nó được thực hiện thông qua tài nguyên loại tính năng:

http://docs.geoserver.org/urdy/en/user/rest/api/featuretypes.html

BÀI ĐĂNG:

/workspaces/<ws>/datastores/<ds>/featuretypes

không gian làm việc mà bạn muốn loại tính năng nằm ở đâu và nguồn dữ liệu sẽ sử dụng sẽ tạo ra một loại tính năng vectơ mới, tức là lớp.

Nếu bạn đang tự hỏi về những gì bạn có thể POST, @Rohan là chính xác, cách dễ nhất là truy vấn loại tính năng hiện có, IE một http GET để

/workspaces/<ws>/datastores/<ds>/featuretypes/<ft>.json 

sẽ trả về một loại tính năng hiện có là json.




0

Để thêm một lớp, một kho dữ liệu và một featuretype nên được xác định. Giả sử chúng đã được xác định cùng với một kiểu (như được mô tả trong hướng dẫn tại http://boundlessgeo.com/2012/10/adding-layers-to-geoserver-USE-the-rest-api/ để thêm một lớp PUT yêu cầu phải được gửi đến máy chủ địa lý tại:

http://geoserver.host/geoserver/rest/layers/NEW_LAYER_NAME

Với nội dung dữ liệu như:

<layer>
  <name>NEW_LAYER_NAME</name>
  <type>VECTOR</type>
  <defaultStyle>
    <name>myStyle</name>
  </defaultStyle>
  <resource class="featureType">
    <name>myFeature</name>
  </resource>
</layer>

Blog đó nói về việc thêm một kiểu vào một lớp hiện có, điều này có ý nghĩa vì đó là những gì PUT được thiết kế cho. Bạn không thể tạo một layer mới theo cách này. Dưới đây là các tài liệu: docs.geoserver.org/ sóng / en / user / rest / api / layers.html , một PUT để nghỉ / các lớp sẽ trả về 405. PUT thành / rest / layer / < current_layer > sẽ sửa đổi một lớp cụ thể, không tạo một cái mới.
lostintranslation
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.