บังคับใช้ SRID ในมุมมองใน Postgis 2.0


9

ฉันมีปัญหาที่ยุ่งยากมาก: ฉันมีฐานข้อมูล Postgis 2.0 ใช้เป็นที่เก็บข้อมูลสำหรับ Geoserver 2.1.3

ฉันมีตารางที่มีคอลัมน์รูปทรงเรขาคณิต (ชื่อรูปร่าง) ด้วย SRID 4326

ฉันได้สร้างมุมมองเช่นนี้:

CREATE VIEW pippo AS SELECT st_geometryn(shape,1) as geom FROM events

จากนั้นฉันก็เผยแพร่มุมมองโดยใช้ geoserver ทุกอย่างทำงานได้ยกเว้นการร้องขอ GetFeatureInfo ที่ล้มเหลวด้วยข้อผิดพลาด 'การดำเนินการกับรูปแบบ SRID ผสมแบบง่าย

select * from geometry_columns

ส่งคืนว่า SRID ของ pippo.geom เป็น 0 (แต่ควรเป็น 4326)

ฉันพยายามด้วยคำจำกัดความนี้สำหรับมุมมอง

CREATE VIEW pippo AS SELECT st_setsrid(st_geometryn(shape,1), 4326) as geom FROM events

แต่ฉันยังมี SRID = 0 ใน geometry_columns .... ความช่วยเหลือใด ๆ

นี่คือวิธีการกำหนดเลเยอร์ใน Geoserver: ป้อนคำอธิบายรูปภาพที่นี่

วิธีแก้ปัญหา

ฉันพบวิธีแก้ปัญหาในการแก้ไขไม่ใช่ปัญหา แต่เพื่อให้ Geoserver ทำการค้นหาเชิงพื้นที่ในการร้องขอของ GetFeatureInfo:

แทนที่จะสร้างมุมมองและเผยแพร่มุมมองฉันเผยแพร่ SQL-layer ที่กำหนดโดยตรงใน geoserver ในรูปแบบเลเยอร์คำจำกัดความอนุญาตให้ฉันเลือกประเภท gemoetry ที่ถูกต้องและ SRID และทุกอย่างทำงานได้ทันที!

คำตอบ:


8

คุณสามารถใช้ typmod เพื่อระบุ srid ในgeometry_columnsมุมมองบางอย่างเช่น

CREATE VIEW pippo AS
SELECT st_geometryn(shape,1)::geometry(Geometry, 4326) as geom
FROM events

คู่มือมีข้อมูลเพิ่มเติม


0

เมื่ออยู่ในเลเยอร์คุณสามารถเห็น CRS (ระบบพิกัดอ้างอิง)

ป้อนคำอธิบายรูปภาพที่นี่

คุณสามารถบังคับให้ CRS ใน Geoserver

http://docs.geoserver.org/2.1.3/user/webadmin/data/layers.html#webadmin-layers

ป้อนคำอธิบายรูปภาพที่นี่


Geoserver ดูใน geometry_columns สำหรับ CRS ดั้งเดิมของเลเยอร์ซึ่งในกรณีของฉันคือ 0 ฉันได้แก้ไขคำตอบที่แนบคำจำกัดความเลเยอร์ใน Geoserver
Tommaso
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.