REST kullanarak GeoServer'da bir katman oluşturma


16

Bu soruya olası bir çözümün bir parçası olarak bir kullanıcı kimliği ile birlikte bir SQL deyimi sağlayan REST yoluyla GeoServer'da bir katman oluşturmak istiyorum.

Okuma Bence bir özellik türü oluşturmak ve yayınlamak? Tüm bunları REST'te yapmam gerekiyor. Kod örneği olan var mı?


Dinlenme arayüzü ile bir katman eklemek mümkün değil gibi görünüyor, sonunda çözdünüz mü? Hatayı alıyorum: HTTP Durumu 405 - İstenen kaynak için belirtilen HTTP yöntemine izin verilmiyor
a1an

Yanıtlar:


41

GeoServer REST API ile özel olarak belgelenmemiş ve kod örnekleri bulunmayan birçok şey vardır. İşte bunlarla mücadele stratejisi.

İlk olarak, belgelerdeki örneklerle başlayın . XML veya JSON ile bir HTTP POST kullanarak basit bir yeni katman veya çalışma alanı nasıl oluşturabileceğinizi bildiğinizden emin olun.

Ardından, GeoServer UI aracılığıyla, dokümantasyonu olmayan ihtiyacınız olan nesneyi manuel olarak oluşturun (bu durumda, bir özellik tipi).

Son olarak, GeoServer REST dizinine ( http://your-server/restveya http://your-server/geoserver/rest) manuel olarak göz atın . Yeni oluşturduğunuz özellik türünü bulana kadar dizine göz atın. Bu kaynağın URL'sine ".xml" veya ".json" ekleyin; XML veya JSON temsilini göreceksiniz.

Bu gösterim, API aracılığıyla özellik türünü oluşturmak için POST yapmak için ihtiyaç duyacağınız şeydir. Temsili URL'si POST yapmak için ihtiyaç duyacağınız URL'dir (örneğin http://your-server/geoserver/rest/..../myFeatureTypeName.json).

GeoServer'da herhangi bir kaynağın programlı olarak nasıl oluşturulacağını veya yapılandırılacağını bulmak için bu stratejiyi kullanabilirsiniz.


2
TEŞEKKÜR EDERİM! Kolay cevap ve sadece 2 saat daha alay etrafında kurtardı
Ragi Yaser Burhum

4
Ek olarak, birçok parametre atlanabilir ve GeoServer bunları (kullanıcı arayüzünde olduğu gibi) çözer. Örneğin. sınırlayıcı kutular
rcoup

1
Vay canına - bu gördüğüm en iyi açıklama.
Kieveli

3
GeoServer 2.10.2 kullanarak featuretypes, mağazanın son noktasına POST için gerekli olduğunu buldum , örneğingeoserver/rest/workspaces/<workspacename>/datastores/<storename>/featuretypes/
Stephen Lead

Açık iş akışı açıklaması, ilgili bağlantılar dahil. UPVOTED! :)
tony gil

10

Bunun eski bir soru olduğunu biliyorum, ama başkalarının benim gibi kafam karışması durumunda. Önemli kısmı bir tabaka oluşturmasını edemezler // geoserver / dinlenme / katmanları: http bitiş noktası.

Bir vektör katmanı eklemek istiyorsanız, bu özellik özellik kaynağı aracılığıyla yapılır:

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

Şuna bir POST:

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

özellik türünün altında yaşamasını istediğiniz çalışma alanı nerede ve kullanılacak veri kaynağı yeni bir vektör özellik türü (ör. katman) oluşturur.

Neleri POST yapabileceğinizi merak ediyorsanız, @Rohan doğrudur, en kolay yol var olan bir özellik türünü (IE http:

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

varolan bir özellik türünü json olarak döndürür.



0

Java'yı anlarsanız, GeoServer'da her türlü işlemi yapmak için REST kullanan bu basit koda bir göz atmak isteyebilirsiniz .


0

Katman eklemek için bir veri deposu ve bir özellik türü tanımlanmalıdır. Zaten bir stil ile birlikte tanımlandıklarını varsayarsak ( bir PUT katmanı eklemek için http://boundlessgeo.com/2012/10/adding-layers-to-geoserver-using-the-rest-api/ adresindeki kılavuzda açıklandığı gibi isteğin coğrafi sunucuya gönderilmesi gerekiyor:

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

Aşağıdaki gibi bir veri içeriğiyle:

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

Bu blog, mevcut bir katmana bir stil eklemekten bahsediyor, bu da PUT için tasarlandığı şey gibi geliyor. Bu şekilde yeni bir katman oluşturamazsınız. İşte dokümanlar: docs.geoserver.org/stable/en/user/rest/api/layers.html , dinlenme / katmanlara PUT değeri 405 döndürür. / Rest / layers / <existing_layer> için bir PUT, yeni bir katman oluşturmaz.
lostintranslation
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.