QGIS kullanarak birden fazla kaydın tek bir özelliğe katılması?


25

QGIS'te bir yapıya sahip olduğum ve her binada çalışan insanları içeren mekansal olmayan bir masaya (.csv) katılmak istediğim bir birleşme / ilişki kurmaya çalışıyorum. Bu yüzden masamda, form dosyamdaki tek özelliklerime katılabilmek istediğim birden fazla kayıt var. QGIS'de yalnızca ilk kaydın shapefile özelliğine (yani binaya) eklendiği ancak sonraki kayıtların kaldırıldığı bir birleştirme çalıştırabilirim.

Birisi QGIS’de bu birleşme / ilişkinin nasıl tamamlanacağını bana söyleyebilir mi?


Burada benzer bir sorum vardı gis.stackexchange.com/questions/5797/… RT SQL Katman eklentisi ve eVis eklentileri önerildi. EVis fişini kullandım ama bu ideal bir çözüm değildi.
Ando

2
Aynı problemi yaşıyorum ve gerçekten masalara katılmak işe yarıyor. İşin püf noktası, birden fazla değere sahip tabloları, tek değere sahip tabloya (burada, başka bir yoldan ziyade kişiden binaya) birleştirmektir. Sorun, yaşadığım kadarıyla, bunu yaparak, sonucu daha sonra bir hata olan (en azından benim için) coğrafi referanslı bir dosya olarak arayamaz ve veremezsiniz. Bu sorunu atlamanın bir yolu var mı? marc

Ulaşmak istediğiniz sonuç nedir? Katılmayı başarsanız bile, haritada göstermek ister misiniz? İstatistik mi? Buna bağlı olarak, farklı iş akışları izlenebilir, ancak katılmak istiyorsanız, bir veritabanı kullanmak genellikle iyi bir fikirdir.
johanvdw

Yanıtlar:


15

Bu sorunu ilk önce vektör katmanını virgülle ayrılmış değerler (CSV) tablosu olarak kaydederek geometri alanı iyi bilinen metne dönüştürülmüş olarak çözerek çözdüm. Bunu yapmak için, "Vektör katmanını farklı kaydet ..." iletişim kutusunun katman alanı, geometrinin iyi bilinen bir metin alanını oluşturmak için WKT adlı sütunu içeren GEOMETRY = AS_WKT değerini okumalıdır.

CSV geometri dosyası daha sonra geometri olmayan öznitelik tablosunun öznitelikler sekmesi altında bir-çok-birleştirmede geometri olmayan öznitelik tablosuna birleştirildi.

Elde edilen birleşme başka bir geometri CSV dosyası olarak kaydedildi.

Bu tablo QGIS'de açıldığında, her bir özellik kaydı uygun vektör geometrisi ile temsil edildi.

Tüm bunları yaparken, sınırlayıcılar virgül ve WKT geometri alanı WKT olarak adlandırılmışsa, CSV geometri dosyasını açmak için Sınırlandırılmış Metin Eklentisine gerek olmadığını keşfettim.

Bunun nasıl yapıldığı hakkında ayrıntılı bilgi için lütfen http://georgiawildlife.com/node/2849 adresindeki eğitimime bakın .


İyi bir yaklaşım, sadece ogr2ogrShapefiles CSV dosyaları oluşturmak için kullanarak benzer bir şey yaptım . Ardından ortak alandaki dosyaları birleştirmek için basit bir R betiği istedim ve tekrar CSV'ye yazdım. Sonra ogr2ogrtekrar birleştirilmiş şekil dosyası oluşturmak için.
vpipkt

1
Buna en yüksek puan verilebilir, ancak bunun için kastedilen işlem aşağıda @underdark tarafından cevaplanmıştır. Bu bir kesmek ve en iyi seçenek değil, yavaş ve verimsiz ve daha büyük dosyalar ve daha fazla adımla sonuçlanır.
nittyjee

10

Katman ürünlerinde oluşturulan birleştirmeler, yalnızca varolan özelliklere sütun ekler. Vektör katmanının yalnızca 160 özelliği varsa, bir birleşim özelliklerin sayısını artıramaz!

Bunun yerine sanal katman özelliğini kullanın. Gerçek SQL / veritabanı benzeri bağlantılar sunar. Bir örnek için son gönderime bakın: Sanal katmanları kullanan OD akış haritaları için küçük katlar

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


7

QGIS 1.7'de Joins için yeni bir motor var (bunu vektör özelliklerinde bulabilirsiniz).

Artık başka herhangi bir (vektör) katman gibi bir projeye geometrisiz tablolar eklenebilir.


7

2.2 sürümünden itibaren QGIS bire çok ilişkiyi desteklemektedir. Bunları Vektör Özellikleri'nde değil, Proje Özellikleri'nde tanımlayın. Daha sonra ilgili kayıtlar, katmanın Özellik Tablosunda görünecek veya form aracılığıyla Sonuçları Belirleyecektir.

Cevaplara bakın ve burada iyi rehbere bakın .


4

LibreOffice Base'e katılın.

1 ile birçok ilişkiyi yönetmeye çalıştığınız gerçeğinin üstesinden gelemezsiniz.

Mekansal olmayanlar için mekansal olmayanlar için öğrenme çabalarına değer. En büyük numara, join niteliğinin alanların aynı terimlere sahip olmasını sağlamak.

Konumsal veriyi QGIS'te bir katman olarak açın, ardından QGIS'deki özellik tablosundaki tüm kayıtları seçin (seçimi temizle, seçimi ters çevir) ve bunları LibreOffice Calc'ta yeni bir sayfaya kopyalayın. İlk alanı, GIS'te evrensel olarak kullanılabilecek özelliğin bir tanımı olan WKT bulacaksınız. Calc, yapıştırılan tabloyu içe aktarmanız için bir iletişim kutusu açacaktır, sekmeyle ayrılmış sekmeyi seçin, virgülün işaretlenmemesini sağlayın, çünkü WKT alanını bitlere böler. Ardından Calc'ta bu tabloyu vurgulayın, Base'e geçin, soldaki Tablolar simgesini vurgulayın ve yapıştırın. Tablonun içe aktarılması için bir iletişim kutusu açılacaktır. WKT alanı birleştirme yoluyla korunabilir ve dosya bir .csv olarak QGIS'e geri aktarıldığında bunlar özelliklerin yerini değiştirmek için kullanılır. Sadece projeksiyonu hatırla.

Bu şekilde birleştirmeyi tam olarak kontrol edersiniz ve bunu “ters” olarak yapabilirsiniz. Base'de birleştirme yapmak için benzersiz veri alanının (1) birincil anahtar olduğundan emin olun ve ardından 1'den 1'e veya 1'den n'e kadar bir konsepte aşina iseniz, onu "çoğuna" yöneltin. Birleşimler | TOOLS |. Bahsettiğim gibi, birleştirme alanlarının aynı bilgilere sahip olduğunu, ancak onu temsil etmek için farklı bir metin veya sözdizimi kullandığınızı fark ettiğinizde muhtemelen birisini tekmelemek isteyeceksiniz.

hth


2

Bunun, QGIS'deki tabloları 1 ila birçok ilişkiyle ilişkilendirmenin mümkün olduğunu sanmıyorum. Alternatif olarak, gvSIG'yi denemek isteyebilirsiniz. Burada 1 ila birçok bağlantı yapabilirsiniz. Bağlantıyı oluşturduktan sonra, haritada bir özellik seçmek, bağlantılı tablodaki tüm ilgili kayıtları vurgulayacaktır.


1
Sanal katmanların tanıtılmasından bu yana, bu cevap artık doğru değil.
underdark
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.