Paksa SRID dalam tampilan di Postgis 2.0

9

Saya memiliki masalah yang sangat sulit: Saya memiliki database Postgis 2.0, digunakan sebagai datastore untuk Geoserver 2.1.3

Saya punya meja dengan kolom geometri (bernama bentuk), dengan SRID 4326

Saya telah membuat tampilan seperti ini:

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

Dan kemudian saya menerbitkan tampilan menggunakan geoserver. Semuanya berfungsi, kecuali untuk permintaan GetFeatureInfo, yang gagal dengan kesalahan 'Operasi pada geometri SRID campuran A sederhana

select * from geometry_columns

mengembalikan bahwa SRID dari pippo.geom adalah 0 (tetapi harus 4326)

Saya mencoba juga dengan definisi ini untuk tampilan

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

tapi saya masih punya SRID = 0 di geometry_columns .... ada bantuan?

Berikut adalah bagaimana layer didefinisikan dalam Geoserver: masukkan deskripsi gambar di sini

Penanganan masalah

Saya menemukan solusi untuk memperbaiki bukan masalah itu sendiri, tetapi untuk membiarkan Geoserver melakukan pencarian spasial pada permintaan GetFeatureInfo:

alih-alih membuat tampilan dan menerbitkannya, saya menerbitkan SQL-layer yang didefinisikan langsung di geoserver. Dalam bentuk definisi-lapisan itu memungkinkan saya untuk memilih jenis gemoetry yang tepat dan SRID dan semuanya berfungsi sekarang!

Tommaso
sumber

Jawaban:

8

Anda dapat menggunakan typmod untuk menentukan srid pada geometry_columnstampilan, kira-kira seperti itu

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

The pengguna memiliki info lebih lanjut.

gomatteo
sumber
0

Ketika di Layers Anda dapat melihat CRS (Sistem Referensi Koordinat)

masukkan deskripsi gambar di sini

Anda dapat Memaksa CRS di Geoserver

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

masukkan deskripsi gambar di sini

Mapperz
sumber
Geoserver mencari dalam geometri_kolom untuk CRS asli layer, yang dalam kasus saya adalah 0. Saya mengedit jawaban yang melampirkan definisi layer di Geoserver
Tommaso