PostGIS’te mekansal bakış açısı kazandırmak ve QGIS’te katman olarak eklemek?


49

PostGIS 2.0'da QGIS'de görülebilen mekansal olarak etkinleştirilmiş bir görünüm oluşturmak için etkili bir yol arıyorum.

@Mike Toews'ın 2. Bölümünün içeriğini postgis DB'de varolan tablolardan (yeni şemalar uygulayarak) nasıl tablo oluşturacağımı sorusuna yanıtladım. ve görünüm "PostGIS Katmanları Ekle" iletişim kutusunda (benim durumumda) bir nokta katmanı olarak görünüyor. Ancak görünümü oluşturduktan ve mekansal olarak etkinleştirdikten sonra, görünümü QGIS'e eklemeye çalışırken aşağıdaki hatayı aldım:

Katman eklemek için bir tablo seçmelisiniz

Birisi mekansal görüşün neden QGIS'e yüklenmeyeceğini ve QGIS'de bir katman olarak yüklenebilir hale getirmek için ne yapmam gerektiğini açıklayabilir mi?

Şu anda OSGEO yükleyicisinden QGIS v1.8 kullanıyorum

Görünüm geonames veritabanından inşa edilmiş, PostGIS yüklü. Geoname tablosu / mekansal veriler QGIS'te seçilebilir / görüntülenebilir.

" Mt_view " u seçmeye çalıştığımda , QGIS iletişim kutusundaki görünümü görüyor, ancak seçmeme izin vermiyor. Alanın etrafında noktalı bir kutu verir, ancak görünümü vurgulamaz ve seçmez.

QGIS mt_view'i katman olarak seçemez


İlk sorgumu çalıştırdığımda şunu fark ettim:

CREATE OR REPLACE VIEW data.test AS
SELECT * FROM data.geoname
WHERE admin1='MT'

QGIS Katman Ekle İletişim Kutusunda görünüm görünür, ancak seçilemez. Sonra kaçtığımda:

SELECT Populate_Geometry_Columns('data.test'::regclass);

"0" sonucunu elde ediyorum, belgelere göre , "1" i vermesi gerektiğini düşünüyorum.


1
Sorunu onaylıyorum. QGIS 1.8, PostGIS 2.0 ve birincil anahtar içeren bir tablodan oluşturulan görünümde, görünüm mevcut katmanlar halinde listelenir ancak "Katman eklemek için bir tablo seçmelisiniz" hata mesajı çıkar.
giohappy

2
Görünümlerle çalışırken Postgis Katman Ekleme penceresinde otomatik olarak birincil anahtarı ayarlamanın başka bir yolu var mı? Normal bir GIS kullanıcısı hayal ediyorsanız ve bir görünümün çok sayıda tamsayı alanı varsa, herhangi bir katman / görünüm için bu ekranda bir birincil anahtar alan seçmek çok zor bir iştir.

@Pgimenez, yukarıda belirttiğinizle yeni bir soru başlatmanızı öneririm ve sonra bu soruları kendi adresinize bildirin. Bu daha geniş bir görünürlük sağlayacaktır.
RyanDalton

Qgis 1.8 lisboa'da bir dışbükey görselleştirmek için bir yolu yoktur? Postgis 1.5'teki başarıları takip etmeyi denedim. Qgis'te yayınlamak için bir kimlik sütunu kullanmam söylendi. Bir kimlik sütunu kullanmazsanız, bir hata nedeniyle yine de yükleyemezsiniz. 1. '0', ST_ConvexHull (ST_Collect (geom)) baeume’den seçilen con_hull_baeume3 (bid) görünümünü yaratın veya değiştirin; 2. teklif seç olarak con_hull_baeume4 (teklif), teklife göre baeume grubundan ST_ConvexHull (ST_Collect (geom)) görünümü oluşturun veya değiştirin; ancak bu, her geometri noktasında bir dışbükey kılar. Sadece 'select ST_ConvexHull (ST_Collect (geom)) FROM baeume;' çalışır
ulan

1
Hoşgeldiniz! Lütfen bunu yeni bir soru olarak gönderin, aslına cevap vermiyor gibi görünüyor. En azından bir soru ise, çünkü son ifade başarılı olup olmadığınızı açık değildir.
lynxlynxlynx

Yanıtlar:


54

Listelenen bir görünümü seçmenin mümkün olmadığını onaylayabilirim.

Önce "birincil anahtar sütunu" nu seçmek gerekli görünüyor. Sonra masa seçilebilir hale gelir:

görüntü tanımını buraya girin


1
Vay, bunu hiç görmedim. Çok teşekkürler! Meseleyi PostGIS'in görüşüne göre değil QGIS'e yansıtmak için değiştirdim.
RyanDalton,

Görünüşe göre bu QGIS 1.8 (henüz kullanmadım). Bu adımlar 1.7 için gerekli değildir.
Mike T

Bu doğru, 1.7 birincil anahtarı tahmin etmeye çalıştı. Ama iyi çalışmadı.
underdark

Yan notta, @underdark, QGIS diğer tip PK'ları kabul ediyor mu?
George Silva,

1
QGIS3'te sütun, "birincil anahtar sütun" değil "özellik kimliği" başlıklı ve (en azından benim için), varsayılan pencerenin dışında (yani görünmez) ve daha fazla sütun olduğuna dair bir gösterge yok! Sanırım seçimden sonra (gerekirse) bu detaylar için istenecek bir özellik isteği kaydedeceğim. Geliştiricilerin, insanların ilk sütunda benzersiz bir anahtar bulunduğundan emin olacaklarını varsaydıkları anlaşılmaktadır.
Russell Fulton

5

(Cevabımı biraz güncelleme)

NESNE KİMLİĞİ (row_number) alanı görünümün sütun tanımında birinci olduğu sürece , QGIS sizden 'vektör katmanı ekle' menüsünden eklemenizi istemeden onu seçer.

CREATE OR REPLACE VIEW dqmt.addressverify AS 
 SELECT row_number() OVER (ORDER BY newaddresses.addressid) AS objectid,
    newaddresses.addressid
  , geom
   FROM dqmt.newaddresses;

Ben sadece orijinal soruya göre kırılmış bazı eski görüşleri düzelttim, ancak NESNE alanını görünümün başlangıcına taşımak sorunu düzeltti!


Ben de birçok satır için "row_number () over ()" sözdizimini kullandım. Genellikle birincil anahtar alanım için "gid" kullandım. Diğer tüm görünümleriniz birincil anahtarı olarak "objectid" kullanıyor mu?
RyanDalton

genellikle yukarıdaki örnekte işe yarayan objektif - ama gidecekti ... QGIS'in başka herhangi bir 'id' alanından önce tanıdığı bir şey mi?
DPSSpatial


Sadece olasılıkları hayal ediyorum. teşekkürler denetimi için
RyanDalton

(Buna geç, ama ...) sanırım, yüklenen bir masanın PRIMARY KEYtanımlanmış olması durumunda, QGIS rutin olarak toplar: bence o benim masalarımın hiçbirinde PK’yı 'seçemez'. PK, neredeyse bütün PK'larım olmasına rağmen VARCHAR. VIEWPostgreSQL'in sahip olamayacağı bir durum VIEWolamaz CONSTRAINT. Bu nedenle VIEW, 'PostGIS Katmanları Ekle' butonu ile QGIS'e aktarırken PK'yi elle seçmek için bu yüzden gerekliydi , bu yüzden onları Python betiği kullanarak içe aktarıyorum.
GT.

4

Görüşün geometry_columnsmasada gösteriliyor mu? Kılavuza göre görüntü otomatik olarak 2.0'da görünmelidir ancak denemedim.

Kontrol etmek için aşağıdakileri çalıştırmayı deneyin:

SELECT f_geometry_column As col_name, type, srid, coord_dimension As ndims 
FROM geometry_columns
WHERE f_table_name = 'my_spatial_table' AND f_table_schema = 'my_schema';

Evet, bu çekimi benim görüşüme göre çalıştırıyorum: the_geom, Puan, 4269,2
RyanDalton

3

Görünümünüz, görünümünüzdeki tablolardan birine eşdeğer bir "gid" veya PK gibi benzersiz bir tam sayı alanı kullanıyor mu?

QGIS'in önceki sürümlerinde, benzersiz bir tamsayı alanı olmadığında, haritaya eklenmiş görünümlerle ilgili sorunlar yaşadığımı biliyorum. Ancak bu konuyu işaret eden farklı bir hata mesajı aldım, ancak tüm tabanları kapatmak için kontrol etmeye değer olabilir.


Evet, geonames tablosu benzersiz bir kimliği olan ve bu alanda ayarlanmış bir PRIMARY KEY kısıtlaması olan "geonameid" e sahiptir.
RyanDalton
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.