เป็นส่วนหนึ่งของการแก้ปัญหาที่เป็นไปได้สำหรับคำถามนี้ฉันต้องการสร้างเลเยอร์ใน GeoServer ผ่าน REST ที่ระบุคำสั่ง SQL พร้อมกับหมายเลขผู้ใช้
กำลังอ่านฉันคิดว่าฉันจะสร้างประเภทสถานที่และเผยแพร่หรือไม่ ฉันต้องทำทั้งหมดใน REST ใครบ้างมีตัวอย่างรหัส?
เป็นส่วนหนึ่งของการแก้ปัญหาที่เป็นไปได้สำหรับคำถามนี้ฉันต้องการสร้างเลเยอร์ใน GeoServer ผ่าน REST ที่ระบุคำสั่ง SQL พร้อมกับหมายเลขผู้ใช้
กำลังอ่านฉันคิดว่าฉันจะสร้างประเภทสถานที่และเผยแพร่หรือไม่ ฉันต้องทำทั้งหมดใน REST ใครบ้างมีตัวอย่างรหัส?
คำตอบ:
มีหลายสิ่งที่คุณสามารถทำได้กับ GeoServer REST API ที่ไม่ได้จัดทำเป็นเอกสารโดยเฉพาะและไม่มีตัวอย่างโค้ดสำหรับ นี่คือกลยุทธ์ในการแก้ปัญหาเหล่านั้น
แรกเริ่มต้นด้วยตัวอย่างในเอกสาร ตรวจสอบให้แน่ใจว่าคุณคุ้นเคยกับวิธีการสร้างเลเยอร์ใหม่หรือพื้นที่ทำงานอย่างง่ายโดยใช้ HTTP POST ด้วย XML หรือ JSON
จากนั้นผ่าน GeoServer UI สร้างวัตถุที่คุณต้องการด้วยตนเองโดยไม่มีเอกสารประกอบ (ในกรณีนี้คือประเภทสถานที่)
สุดท้ายเรียกดูดัชนี GeoServer REST ( http://your-server/rest
หรือhttp://your-server/geoserver/rest
) ด้วยตนเอง เรียกดูดัชนีจนกว่าคุณจะพบประเภทสถานที่ที่คุณเพิ่งสร้างขึ้น ผนวก ".xml" หรือ ".json" เข้ากับ URL ของทรัพยากรนี้และคุณจะเห็นการแสดง XML หรือ JSON
การเป็นตัวแทนนี้เป็นสิ่งที่คุณต้องมีเพื่อ POST เพื่อสร้างประเภทคุณลักษณะผ่าน API URL ของการเป็นตัวแทนคือ URL ที่คุณต้องการเพื่อ POST to (ตัวอย่างเช่นhttp://your-server/geoserver/rest/..../myFeatureTypeName.json
)
คุณสามารถใช้กลยุทธ์นี้เพื่อหาวิธีสร้างหรือกำหนดค่าทรัพยากรใด ๆ ใน GeoServer โดยทางโปรแกรม
featuretypes
จุดสิ้นสุดของร้านค้าเช่นgeoserver/rest/workspaces/<workspacename>/datastores/<storename>/featuretypes/
ฉันรู้ว่านี่เป็นคำถามเก่า แต่ในกรณีที่คนอื่นสับสนเหมือนฉัน สำคัญส่วนหนึ่งคือการที่คุณไม่สามารถสร้างชั้นจากhttp: // geoserver / ส่วนที่เหลือ / ชั้นปลายทาง
หากคุณต้องการเพิ่มเลเยอร์เวกเตอร์ก็จะทำผ่านทรัพยากรประเภทคุณสมบัติ:
http://docs.geoserver.org/stable/en/user/rest/api/featuretypes.html
โพสต์ไปที่:
/workspaces/<ws>/datastores/<ds>/featuretypes
โดยที่เวิร์กสเปซที่คุณต้องการให้อยู่ในประเภทสถานที่และแหล่งข้อมูลที่จะใช้จะสร้างประเภทคุณลักษณะเวกเตอร์ใหม่เช่นเลเยอร์
หากคุณสงสัยเกี่ยวกับสิ่งที่คุณสามารถโพสต์ @Rohan ถูกต้องวิธีที่ง่ายที่สุดคือการค้นหาประเภทฟีเจอร์ที่มีอยู่ IE และ http GET ไปที่
/workspaces/<ws>/datastores/<ds>/featuretypes/<ft>.json
ซึ่งจะส่งคืนประเภทสถานที่ที่มีอยู่เป็น json
ข้อมูลอ้างอิงที่ดีที่สุดของคุณอยู่ในคู่มือผู้ใช้ http://docs.geoserver.org/stable/en/user/rest/examples/index.html
หากคุณเข้าใจ Java คุณอาจต้องการดูรหัสง่ายๆนี้ที่ใช้ REST เพื่อดำเนินการทุกอย่างกับ GeoServer
ในการเพิ่มเลเยอร์ควรกำหนด datastore และ featuretype สมมติว่าพวกเขาจะถูกกำหนดไว้แล้วพร้อมกับสไตล์ (ตามที่อธิบายไว้ในคู่มือที่http://boundlessgeo.com/2012/10/adding-layers-to-geoserver-using-the-rest-api/เพื่อเพิ่มชั้นที่PUTจะต้องส่งคำขอไปยัง geoserver ที่:
http://geoserver.host/geoserver/rest/layers/NEW_LAYER_NAME
ด้วยเนื้อหาข้อมูลเช่น:
<layer>
<name>NEW_LAYER_NAME</name>
<type>VECTOR</type>
<defaultStyle>
<name>myStyle</name>
</defaultStyle>
<resource class="featureType">
<name>myFeature</name>
</resource>
</layer>