ArcMap'te aynı geometriye sahip yinelenen özellikler kaldırılsın mı?


15

Bir özellik katmanındaki her bir geometriyi benzersiz bir şekilde tanımlamak mümkün müdür?

Aslında, aynı geometri tarafından temsil edilen birçok veri satırı içeren bir çokgen özellik katmanım var. Her benzersiz geometri için 1 satır istiyorum. Bu yüzden, geometrinin şekline göre nitelikleri birleştirmek için kutudan çıkmış bir yöntem arıyorum.

Bir Postgres dünyasından geliyorum ve bu sorunu orada çözebilirim, ancak ESRI araçlarıyla programsız olarak nasıl yapılacağını (veya mümkünse) bilmiyorum.


Yani özdeş geometrinin birden fazla kaydının olduğunu ve özdeş olanları birleştirmek istediğinizi mi söylüyorsunuz ? Eğer durum buysa ... sadece bölgeye veya buna benzer bir şeye göre çözebilir misiniz? Belki burada sorunuzu kaçırıyorum.
Clickinaway

Bu doğru, tek paylaşılan doğal özniteliğin geometrinin kendisi olduğu özdeş geometriler. Alan olabilir çalışır, ancak iki farklı geometriler aynı alanı yok bir garanti yoktur.
Dylan Hettinger

Yayına bakın. Çözmeyi birden çok alanda çalıştırabilirsiniz.
Paul

@ Paul .... Girdimi yansıtmak için yanıtınızı düzenlediğinizi görüyorum. Umarım yardımcı olmuştur.
Clickinaway

Yanıtlar:


22

Gelişmiş bir lisansınız varsa, Aynı Bul veya Aynı Sil'i kullanabilirsiniz .

Her ikisi de özdeş özniteliklere sahip özellikleri bulmak / silmek veya Şekil alanı belirtilirse özdeş geometrileri bulmak için kullanılabilir.

Gelişmiş lisansınız yoksa, bu yayın faydalı olacaktır.

Kısacası, öznitelik tablonuza X, Y için iki alan eklersiniz ve söz konusu alanlarda bir Erime çalıştırırsınız .

Aynı sentroidi paylaşan ancak geometrik olarak özdeş olmayan çokgenleriniz varsa, başka iki alan daha ekleyebilirsiniz (Çevre ve Alan). Neredeyse tüm normal durumlar için özdeş geometrileri tanımlamak için yeterli olmalıdır. Aşağıdaki @ whuber'ın yorumlarına bakın.


Puan verilerinin doğru olduğu varsayılıyor mu? İlk önce centroid oluşturmayı önermiştim. Hala aynı geometrinin birçok sırası olduğunu söylüyor ... Neredeyse bir dönüm sınıfına / aralığına göre sınıflandırma gibi geliyor mu? Ama aynı zamanda geometrinin şeklini de söylüyor ... bu yüzden alan veya çevre (veya bir oran elde etmek için ikisinin bir kombinasyonu) temelinde çözünmeye doğru eğildim.
Clickinaway

1
Aslında, bağlandığım yazı çokgenler içindi. Aynı sentroid ile özdeş olmayan iki çokgen olması ihtimaline karşı, alan ve sentroid üzerinde çözülebilir.
Paul

+1 Bu tam olarak doğru cevap. Prensip olarak, sentroid, çevre ve alan hala bir çokgeni benzersiz olarak tanımlamayabilir, ancak karşı örnekler biraz daha anlaşılır. Düzensiz veya doğal veya manuel olarak sayısallaştırılmış nesneleri benzersiz kimliklere ayırmak için bu dört değer güvenilir olmalıdır. Daha kolay elde edilen bazı değerler istiyorsanız, özelliğin sınırlayıcı kutusunun koordinatlarını ve tepe noktası sayısını kullanın.
whuber

@whuber Tüm köşelerin koordinatlarını karşılaştırmak, aynı geometriyi belirlemenin tek kesin yolu olabilir mi? Geometrideki geçmişim oldukça zayıf, bu yüzden hepsini oldukça büyüleyici buluyorum.
Paul

Sorunuzun cevabı "özdeş" ile ne demek istediğinize bağlıdır: örneğin, bir çokgenin kenarı boyunca yeni bir köşe noktası ekleyecekseniz, bu "özdeş" bir çokgen mi değil mi? Köşeler farklı olsa da tartışmasız dünyada aynı özelliği temsil etme anlamındadır . Bu tek bakış açısından, iki çokgenin (set teorik) farkının boş olup olmadığı konusunda kesin bir test vardır. Ancak, kimliğin bir köşe-köşe eşleşmesi anlamına geldiğine dair daha katı bir görüşe sahip olursanız, yine de zor, çünkü bir çokgen köşe listesine farklı bir noktada başlayabilir.
whuber

1

Anket verilerine dayanan bir veri setim var. Benim sorunum, yeni anket çekimleri içe aktarılmadan önce eski özelliklerin her zaman kaldırılmamasıdır. Bu nedenle farklı geometriye sahip 'kopyalarımız' var: IE anket çekimleri birbirinden 1/4 ft ayrı olabilir. 12000 özellikli bir veri kümesinde, her birini yakınlaştırıp tanımlamak zordur. ArcMap Basic 10.2'yi kullanarak: işte geldiğim hileli bir model.

  1. Orijinal katmandaki her bir özelliği (Seçili veya Seçilmez) arabelleğe alır (giriş yarıçapı ile)
  2. Tampon katmanındaki her özellik üzerinde yineleme
  3. İlişkiye dayalı orijinal katmandan seçim (Özellikte Centroid)
  4. "Satır sayısı" seçili özellikler
  5. Alan Tampon katmanına Satır sayısı değerini hesapla = Orijinal özellik yarıçapında kaç özellik var

Tekerleği yeniden icat ettim. Ayrıca, Model oluşturucu ile sinirli oldum ve temelde her şeyi bulldogged. Daha zarif bir çözüm olmalı. Eleştirileri ve önerileri memnuniyetle kabul edeceğim.

Ayrıca, bu sadece Model Builder içinden düzgün çalışıyor gibi görünüyor, bir araç kutusundan çalıştırıyorum ve arabellek katmanını kaydetmiyor.

Yinelenen Özellikleri Bul


1

Çakışan tampon çokgenler sorununu düzleştirmenin üstesinden gelmek ve aynı zamanda sağlam bir çözüm bulduğunu düşünmek için bir süredir aynı soruya bir cevap arıyorum. Aslında @ Whuber'ın yorumu,

Prensip olarak, sentroid, çevre ve alan hala bir çokgeni benzersiz olarak tanımlamayabilir, ancak karşı örnekler biraz daha anlaşılır.

@ Paul'un cevabı denemeye devam etmemin ana nedeniydi. Spatial Join aracının ARE_IDENTICAL_TO operatörünü kullanır , çünkü bu diğer özdeş dedektörler arasında en verimlidir. İşte adımlar:

  • Tüm şekilleri birbirinden farklı tutmak için girdinizi Öz Birleştirin;
  • Satırların orijinal OBJECTID'lerini (yani, OID alan türü) tutmak / kopyalamak için sahte bir alan oluşturun, örneğin EX_OID ;
    • Hem hedef hem de birleştirme özellik parametreleri olarak işlenmek istenen özellik sınıfında Uzamsal Birleştir'i çalıştırın. Daha önce oluşturulan kukla alanların alan eşlemelerinin (iki kez görünür) FIRST birleştirme kuralına sahip olduğundan emin olun (varsayılan veya LAST'i seçin, diğerleri üst üste binmelerin bir özetini kullandıkları için istenen çıktıyı vermeyebilir). Bu adım, üst üste binenlerin (yani, İLK) üstünde oturan ortak şekil OBJECTID'i seçer;

Aşağıdaki adımlar Python İLE veya OLMADAN iki şekilde yapılabilir:

PİTON İLE

  • Bulmak istediğimiz benzersiz kimlikleri çıkarmak için aşağıdaki kodu kullanın:

print tuple(set([row.getValue("EX_OID_1") for row in arcpy.SearchCursor("Output_of_the_Spatial_Join_Operation")])).

Benim durumumda EX_OID_1 olan kukla OID alanının ikinci kopyasını kullandığımı unutmayın;

  • Bu kodun çıktısını kopyalayın ve olarak işlenen orijinal özellik sınıfının Tanım Sorgusuna yapıştırın OBJECTID IN (<PASTE_COPIED_VALUES_HERE>). Sonuç, çakışan parçaların birleşik özelliklerini gösterecektir. Yine de burada 30.000 karakter boyut sınırlaması var. Bu sorunun üstesinden gelmek için "python olmadan" adımlarını izlemeniz gerekir.

PİTON OLMADAN

  • Benim durumumda EX_OID_1 olan kukla OID alanının ikinci kopyasındaki benzersiz değerleri listelemek için Frekans aracını kullanın;

  • Son olarak katıl NesneKimliği Frekans aracının çıkışı ile orijinal özellik sınıfının alanını EX_OID_1 "yalnızca eşleşen kayıtları tutun" seçeneklerini seçerek.

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.