PostGIS tablosunu yeniden adlandırın ve GeoServer güncelleniyor mu?


9

PostGIS tablolarımdan birini yeniden adlandırmak istiyorum. Ancak, bunu basit bir uygulayarak

ALTER TABLE old_name RENAME TO new_name;

Uzamsal veriler, anladığım kadarıyla, yeni adla güncellenmiyor. İlk olarak, bu referanslar fonksiyon çalıştırılarak düzeltilebilir mi?

SELECT probe_geometry_columns()

Bundan sonra masanın kendisi iyi mi? Yoksa başka önlemler de alınmalı mı? İkinci olarak, GeoServer'ı bu yeni tabloyu bulabilmesi için nasıl güncelleyebilirim? Yukarıdaki komutları çalıştırırsanız Bugün itibarıyla, ve yeni isme noktaya GeoServer üzerinde düzenleme katman bilgi ... Hala (GeoServer hala eski adla bulmaya çalışır) bir hata alıyorum. Tam olarak, GeoServer'da katman adı nerede değiştirilmelidir?

Yanıtlar:


4

Tabloyu yeniden adlandırmak için, iki yerin meta verilerindeki adı değiştirmeniz gerekir. Önce PostGIS'te, sonra Geoserver yapılandırmasında.

PostGIS olanını değiştirmek için geometry_columns öğesini doğrudan güncelleyebilirsiniz. Probe_geometries bu girdiyi geometri sütunlarına ekleme etkisine sahip olsa da, aynı zamanda tüm tabloların şemasını TANIMLAMA ve eksik geometri sütun girişlerini ekleme etkisi de olacaktır. Çok fazla tablonuz varsa bu pahalı olabilir, neden geometry_columns tablosunu doğrudan güncellemiyorsunuz?

Geoserver'ı güncellemek için çeşitli seçenekleriniz vardır. Kesinlikle GUI üzerinden manuel olarak yapabilirsiniz, ancak otomatikleştirmek istediğiniz bir duygu var. Geoserver kurulum klasöründeki yapılandırma dosyalarını düzenleyen ve geoserver'ı yeniden başlatan bir kabuk betiği yazmak, ancak aynı zamanda bir şeyler yapmanın uzun yolu. RESTful çağrıları ile katman yapılandırmalarını değiştirmenizi sağlayan geoserver REST yapılandırma API'sini kullanmanızı tavsiye ederim .

Güncelleme:

"Güncelleme geometrisi sütunları" açık değilse aşağıdakileri yapın:

UPDATE geometry_columns set f_table_name = 'my_new_table_name' where f_table_name = 'my_old_table_name';

Güncelleme 8 yıl (!!!) sonra (2018):

Aşağıda bahsedilen bazı insanlar gibi, PostGIS 2.0'dan sonra, meta veri tabloları ALTER ifadesinden sonra otomatik olarak güncellenir.


Cehaletimi affedin, ama PostGIS'te çok yeni olduğum için. Geometry_columns'ı tam olarak nasıl güncellerim? Probe_ fonksiyonunu çalıştırmanın (parametresiz) aynı şeyi yaptığını doğru anladım mı?
Mimo

1
Probe_geometry_columns trac.osgeo.org/postgis/changeset/7548 adresinden uygulamaya bakın , şemanın "geometri türü" dizesine sahip olup olmadığını bulmak ve gerekli girdi yoksa yeni bir kayıt eklemek geometri_ sütunlarında. Yine de yetim kayıtları oldukları gibi bırakılır. Öyleyse neden sadece yapmıyoruz: UPDATE geometry_columns SET f_table_name = 'new_table_name' burada f_table_name = 'old_table_name'
Ragi Yaser Burhum

Bu gösterileriNot Found The requested URL /latest/en/user/restconfig/rest-config-api.html was not found on this server.
Scaramouche


7

PostGIS 2.0 ve sonraki sürümlerinde yapmanız gereken tek şey normal

ALTER TABLE old_name RENAME TO new_name;

Geometry_columns görünümündeki (veya geography_columns) giriş de güncellenecektir.


3
SELECT Probe_Geometry_Columns();

kullanışlı bir yardımcı programdır.

İlk olarak, mevcut bir tabloya bir geometri sütunu eklediğimizde

SELECT AddGeometryColumn('my_table', 'geo_column', 1234, 'MULTIPOINT', 2);

fonksiyonu geometri türü (geo_column) sütununa yapıştırmak için gereken her şeyi belirtilen tabloya (my_table) besliyoruz ve SRID (1234), geometri türü (MULTIPOINT) ve boyut sayısı (2) gibi önemli ayrıntıları yazıyoruz. geometry_columns tablosu. Özünde, bir ALTER ve üç GÜNCELLEME.

Başka yollarla geometri sütunları oluşturmak (şekil dosyasından yüklenir, CREATE TABLE AS, vb. İle seçilir), veritabanında iyi çalışmasına rağmen, harici uygulamalara görünmeyen uzamsal tablolara yol açabilir. Geometry_columns içinde doğru ayrıntılar saklanmadan, gerçek geometri değerleri, yansıtılan noktaları, çizgileri veya çokgenleri arayan uygulamalara saçma karakter dizeleri olarak görünür.

Prob işlevinin çağrılması, geometri_ sütunlarına yeni değerler ekleyerek ve çakışmaları bildirerek tür geometrisinin her sütununu kontrol eder.

Sorunuza geri dönersek, GeoServer, ad değişikliği geometri_ sütunlarına yansıtılmazsa, yeniden adlandırılan tablonun uzamsal veriler içerdiğine inanmaz. Dikkate alınması gereken başka bir şey, prob işlevinin yeni tablo adını yansıtan yinelenen bir kayıt oluşturması, ancak orijinal kayıttan kurtulmamasıdır - GeoServer için başka bir potansiyel askıya alma.

Bütün bunlar, size şunu öneririm: 1) sondayı çalıştırın ve hemen eski kaydı silin; veya 2) f_table_name değerini değiştirmek için geometri_columns üzerinde bir ALTER ile ad değişikliğinizi takip edin.

Kelime için özür dilerim, ama umarım yardımcı olur.


Cevabın için teşekkürler. PostGIS'i şimdi daha iyi anlamaya başlıyorum. Yine de, atılması gereken adımlar konusunda biraz emin değilim. İlk olarak isim değişikliğini yapmalı mıyım, sonra prob ()? Geometry_columns'u nasıl değiştirebilirim?
Mimo

Geometry_columns'ta değişiklik yapmanın en basit yolu pgAdmin'i açmak, tabloya sağ tıklamak, verileri görüntülemek, tüm satırları görüntülemek, eski tablo adını içeren hücreye tıklamak ve yeni tablo adını yazmaktır. veya UPDATE geometry_columns SET f_table_name = 'new_table_name' NEREDE f_schema_name = 'şema_adı' AND f_table_name = 'old_table_name'
rec.thegeom 13:11

1

SELECT probe_geometry_columns () işlevinin ne yaptığından emin değilim, ancak yeni tablo adınızın orada olup olmadığını veya hala eskisine işaret edip etmediğini görmek için geometry_columns tablosunu kolayca kontrol edebilirsiniz.

Değişiklikleri "fark ettiğinden" emin olmak için GeoServer deposunu yeniden yüklemeniz gerektiğinden şüpheleniyorum. Alternatif olarak, bir durdurma ve başlatma bunu yapacaktır.


"GeoServer mağazasını yeniden yükle" ile ne demek istiyorsun?
Mimo

Durum sayfasında ( docs.geoserver.org/latest/en/user/webadmin/server/status.html ) bir yeniden yükle düğmesi vardır.
Ian Turton

Teşekkürler. Ancak, yeniden yükleme işe yaramadı. Yine de yeniden adlandırılmış katmanı bulma konusunda şikayet bir GeoServer hatası alıyorum. Hala eski ismin altında bulmaya çalışıyor.
Mimo

yeni tablo adını gösterecek şekilde katman tanımını değiştirdiniz mi?
Ian Turton
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.