Bir özellik sınıfında bir çoktan tabloya birleştirme


10

ArcMap 10.2.2'yi Gelişmiş lisansla kullanıyorum. ArcMap'ı diğer temel analizler için kullandım, ancak program için oldukça yeniyim ve sadece temel kodlama becerilerine sahibim, ArcMap'te SQL kod oluşturucularını kullanan çok temel sorguların dışında SQL deneyimi yok .

Türlerin coğrafi aralıklarının çokgenleri var ve bu türlerin taşıdığı patojenlerin / hastalıkların bir listesini içeren bir tablom var. Bazı türler birden fazla patojen taşır. İdeal bir dünyada, aralıkların çokgenlerine türlerin + patojenlerin tablosuna katılıyorum ve çokgen / uzamsal verileri saklıyordum, ancak bunu yapmak için bir CBS aracı gibi görünmüyor (yapacağım daha sonra üst üste binen patojenleri sayın, bu nedenle her tür-patojen kombinasyonunun, birden fazla patojen için bilgi içeren bir özellik yerine kendi özelliğine sahip olması önemlidir). Bunlar benim verilerim gibi görünüyor (# 1 & # 2, # 3 daha sonra içindir):

Uzamsal özellikler için nitelik tablosu:

mekansal özellikler için nitelik tablosu

Uzamsal veri bulunmayan tablo:

uzamsal veri içermeyen tablo

(Lütfen bunların gerçek veri olmadığını ve patojen-tür kombinasyonlarının gerçek olmayabileceğini unutmayın. Aslında 115 çokgen ve 519 tablo satırım var. Türler 1-40 patojen arasında herhangi bir yere taşınır ve bu nedenle türler 1-40 sıra arasında herhangi bir yere sahiptir. benim masam)

Ek bir bonus olarak, yapmam gereken gelecekteki analizler nedeniyle, ideal olarak bu bire-birleştirme yapabilmek istiyorum, böylece tablodan fazladan bir veri sütunu tutabilirim (bir örnek için aşağıya bakın) bu nasıl görünebilir). Bununla birlikte, bu daha az önemlidir, çünkü birleşimin nasıl yapılacağını anlayabilirsem, analizi tekrar yapabilirim.

uzamsal veri içermeyen, ekstra alanlı tablo

Bu soruna bulduğum birkaç çözüm var, ancak aşağıda listelenen nedenlerden dolayı benim için çalışmadılar:

1.Çözüm : David Aalbers'ın blogu - Yeni betiğin nasıl düzenleneceğini ve ArcMap'e nasıl aktarılacağını anlayamayacak kadar acemi oldum . Eski betiği denedim ve test, test_1, test_1_1, test_1_1_1 gibi bir ton boş çokgen oluşturdu.

Çözüm 2: Bir-Çok Katıl - Sorgu Tablosu Yap aracını kullanmaya çalıştım (ve ifade oluşturucuyu kullanmama rağmen SQL bilgim yok) ve ERROR 000383: Bir tablo ile ilgili sorun, çalışma alanını bulamıyorum & (MakeQueryTable) yürütülemedi. Tüm dosyalarım aynı klasörde, ancak bir coğrafi veritabanında değil.


1
Sorgu Tablosu yalnızca veritabanı ile çalışır
FelixIP

1
Sorgu Tablosu Yap, aynı fgdb'deki tüm verileri gerektirir.
klewis

Yanıtlar:


22

Özellikleri çoğaltmak için bunu yapın (ArcGIS 10.1 veya üstü olanlar için geçerlidir).

  1. Özellikleri ve tabloyu aynı coğrafi coğrafi veritabanına yerleştirin (bunun çalışması için Shapefiles / Excel / DBF dosyalarını coğrafi veritabanına dönüştürmeniz gerekir).
  2. Çokgenlerinizin korunacak benzersiz bir kimlik alanına sahip olduğundan emin olun (bir Long alanı oluşturabilir ve ObjectID değerini kaybetmeyecek şekilde ObjectID değerini hesaplayabilirsiniz).
  3. Eşleşen alandaki özelliklere (uzamsal veriler) standart bir tablo birleşimi (öznitelikler, uzamsal veri yok) yapın. Özelliklerin öznitelik tablosunun (uzamsal veriler) daha önce olduğu gibi aynı sayıda özelliğe sahip olacağını unutmayın, ancak bunun için endişelenmeyin, hepsi bir sonraki adımda görünür.
  4. Özellikleri yeni bir özellik sınıfıyla aynı coğrafi veritabanına aktarın (içindekiler tablosundan katmanı sağ tıklayın ve dışa aktar'ı seçin). Dışa aktarılan özelliklerin öznitelik tablosundaki özellik sayısının artık orijinal tabloyla aynı olan (özniteliklerle, uzamsal veriler olmadan) veya çoktan çoğa birleştirme durumunda tam bir sete sahip doğru sayıda özelliğe sahip olduğunu unutmayın. tüm özellik kombinasyonları ve ilgili kayıtlar için özellikler.

Özellikler, her özelliğin mevcut olacağı (tabloda bir eşleşme olmasa bile) ve daha önce 1: M eşleşmenin olduğu yeni bir özellik sınıfında çarpılacaktır, özellikler 1: 1 yapmak için çarpılacaktır. her özelliğin tüm tablo girişleriyle eşleştirilmesi. 2. adımda oluşturduğunuz Benzersiz Kimlik alanı, çarpılan çokgenleri orijinal tek çokgen kümesiyle ilişkilendirmenize olanak tanır. Çarpılan özelliklerin yeni özellik sınıfı ile tablo alanları, özetler, Uzamsal Birleştirmeler vb. Üzerinde seçim yapabilirsiniz.

Her bir benzersiz türü ve hastalık kombinasyonunu temsil eden benzersiz bir kimlik değeri oluşturmak istiyorsanız, bu Blog gönderisinde açıklanan aracın 10.2 sürümünü kullanabilirsiniz . Bu tür bir anahtara sahip olmak, bunu Sorgu Tablosu Oluştur ayarını kullanarak gerçek bir çok alanlı ilişki oluşturmanın yerine çok alanlı bir ilişkiye dayanan özet tablolara ve istatistiklere standart birleşimler yapmak için kullanmanızı sağlar.

İşte esri'den iyi bir referans: https://support.esri.com/en/technical-article/000001228


Coğrafi veritabanına dışa aktarıldığında mükemmel çalışır!
MooseGirl

1
Dışa aktarma orijinal verilerle aynı coğrafi veritabanındaki yeni bir özellik sınıfına olması gerektiğini belirtmek için 4. adımımı değiştirdim. Bu prosedürü takip etmek her zaman işe yarayacaktır, ancak kaynak ve çıktı verilerinin saklandığı yerdeki bazı değişikliklere de izin verilebilir.
Richard Fairhurst

Daha önce açıktı (her ne kadar gelecekteki umutsuz insanlar kesinlikle yazıldığını takdir edecekler), ama başlangıçta geodatabase klasörüne (veya bir şeye) düzgün bir şekilde bağlanmamıştım çünkü geodatabase'e ihracat yapmama izin vermedi. Yeniden başladım ve iyi çalıştı.
MooseGirl

1
Birleştirilen özelliklerin doğru sayıda özelliğe sahip olmayacağını ve dışa aktarılan özelliklerin ekleneceğini ekledim. Bunu denediğimde, tüm adımlardan geçene kadar bu beni çok sinirlendirdi.
nittyjee

Görünüşe göre # 3'te eksik bir 'değil' var, "... notaynı sayıda özelliğe sahip olacak ..."
matt wilkie

-2

SQL sorgusu:

SELECT spp, disease, type
FROM table1, table2
WHERE table1.bimonial = table2.spp;
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.