ลบคุณลักษณะที่ซ้ำกันด้วยเรขาคณิตเดียวกันใน ArcMap หรือไม่


15

เป็นไปได้หรือไม่ที่จะระบุรูปทรงเรขาคณิตแต่ละอันในเลเยอร์คุณลักษณะโดยเฉพาะ?

โดยพื้นฐานแล้วฉันมีเลเยอร์คุณลักษณะรูปหลายเหลี่ยมที่มีข้อมูลหลายแถวที่แสดงด้วยรูปทรงเรขาคณิตเดียวกัน ฉันต้องการ 1 แถวสำหรับรูปทรงเรขาคณิตที่ไม่ซ้ำกัน ดังนั้นฉันกำลังมองหาวิธีการนอกกรอบเพื่อรวมคุณลักษณะตามรูปร่างของเรขาคณิต

ฉันมาจากโลก Postgres และสามารถแก้ไขปัญหานี้ได้ที่นั่น แต่ฉันไม่รู้ว่าจะทำอย่างไร (หรือถ้าเป็นไปได้) เพื่อทำสิ่งนี้โดยไม่ต้องใช้โปรแกรมโดยใช้เครื่องมือ ESRI


ดังนั้นคุณกำลังบอกว่ามีหลายบันทึกของรูปทรงเรขาคณิตที่เหมือนกันและคุณต้องการที่จะรวมสิ่งที่เหมือนกัน? หากเป็นเช่นนั้น ... คุณช่วยละลายตามพื้นที่หรือว่าอย่างนั้นได้ไหม? บางทีฉันอาจจะคิดถึงคำถามของคุณที่นี่
Clickinaway

ถูกต้องมันเป็นรูปทรงเรขาคณิตที่เหมือนกันซึ่งแอตทริบิวต์ธรรมชาติที่ใช้ร่วมกันเท่านั้นคือรูปทรงเรขาคณิต พื้นที่อาจใช้งานได้ แต่ไม่มีการรับประกันว่ารูปทรงที่แตกต่างกันสองแห่งไม่มีพื้นที่เดียวกัน
Dylan Hettinger

ดูโพสต์ของฉัน คุณสามารถเรียกใช้การยุบในหลาย ๆ ฟิลด์
พอล

@Paul .... ฉันเห็นคุณแก้ไขคำตอบของคุณเพื่อสะท้อนถึงการป้อนข้อมูลของฉัน ฉันหวังว่าจะช่วย
Clickinaway

คำตอบ:


22

หากคุณมีใบอนุญาตขั้นสูงคุณสามารถใช้ค้นหาเหมือนกันหรือลบเหมือนกัน

ทั้งสองสามารถใช้เพื่อค้นหา / ลบสถานที่ที่มีแอตทริบิวต์เหมือนกันหรือหากระบุเขตข้อมูลรูปร่างแล้วรูปทรงเรขาคณิตที่เหมือนกัน

หากคุณไม่มีใบอนุญาตขั้นสูงโพสต์นี้จะเป็นประโยชน์

กล่าวโดยย่อคือคุณเพิ่มสองฟิลด์สำหรับ X, Y ในตารางคุณลักษณะของคุณและเรียกใช้การยุบบนฟิลด์ดังกล่าว

หากคุณมีรูปหลายเหลี่ยมที่ใช้เซนทรอยด์เดียวกัน แต่ไม่เหมือนกันในเชิงเรขาคณิตคุณสามารถเพิ่มอีกสองฟิลด์ (ขอบเขตและพื้นที่) นั่นควรจะเพียงพอที่จะระบุรูปทรงที่เหมือนกันสำหรับกรณีปกติเกือบทั้งหมด ดูความคิดเห็น @ whuber ของด้านล่าง


นั่นคือการสันนิษฐานว่าข้อมูลจุดถูกต้องหรือไม่ ฉันคิดว่าจะแนะนำให้สร้างเซนทรอยด์ก่อน เขายังบอกว่ามีเรขาคณิตหลายแถวเหมือนกัน ... มันเกือบจะฟังดูคล้ายกับการจำแนกประเภทตามพื้นที่ / เอเคอร์ แต่มันก็บอกว่ารูปร่างของเรขาคณิต ... ซึ่งเป็นสาเหตุที่ฉันเอนตัวไปละลายตามพื้นที่หรือปริมณฑล (หรือการรวมกันของทั้งสองเพื่อให้ได้อัตราส่วน)
Clickinaway

1
จริงๆแล้วโพสต์ที่ฉันเชื่อมโยงนั้นมีไว้สำหรับรูปหลายเหลี่ยม คุณสามารถละลายในพื้นที่และเซนทรอยด์ในโอกาสที่คุณมีรูปหลายเหลี่ยมที่ไม่เหมือนกันสองตัวที่มีเซนทรอยด์เดียวกัน
พอล

+1 นี่คือคำตอบที่ถูกต้อง โดยหลักการแล้วเซนทรอยด์, ปริมณฑลและพื้นที่อาจยังไม่สามารถระบุรูปหลายเหลี่ยมที่ไม่ซ้ำกันได้ สำหรับการ hashing วัตถุที่ผิดปกติหรือเป็นธรรมชาติหรือดิจิทัลที่ทำด้วยมือไปยังรหัสที่ไม่ซ้ำกันค่าทั้งสี่นั้นควรเชื่อถือได้ หากคุณต้องการค่าที่หาได้ง่ายขึ้นให้ใช้พิกัดของกล่องขอบเขตของสถานที่และจำนวนจุดยอด
whuber

@whuber การเปรียบเทียบพิกัดของจุดยอดทั้งหมดจะเป็นวิธีที่แน่นอนเพียงอย่างเดียวในการกำหนดรูปทรงเรขาคณิตที่เหมือนกันหรือไม่ พื้นหลังของฉันในรูปทรงเรขาคณิตค่อนข้างอ่อนดังนั้นฉันจึงพบว่าสิ่งนี้น่าสนใจทั้งหมด
พอล

คำตอบสำหรับคำถามของคุณขึ้นอยู่กับสิ่งที่คุณหมายถึงโดย "เหมือนกัน": ตัวอย่างเช่นถ้าคุณจะแทรกจุดสุดยอดใหม่ตามขอบของรูปหลายเหลี่ยมนั่นคือรูปหลายเหลี่ยมที่ "เหมือนกัน" หรือไม่? เนื้อหาในแง่ของการแสดงคุณสมบัติเดียวกันในโลกถึงแม้ว่าจุดยอดต่างกัน จากมุมมองนี้เกี่ยวกับการทดสอบที่แน่นอนเพียงอย่างเดียวคือความแตกต่าง (เซตตามหลักวิชา) ของรูปหลายเหลี่ยมทั้งสองนั้นว่างเปล่าหรือไม่ แต่ถ้าคุณใช้มุมมองที่เข้มงวดว่าตัวตนหมายถึงการแข่งขันจุดสุดยอดถึงจุดสุดยอดก็ยังคงมีความยุ่งยากเพราะรูปหลายเหลี่ยมหนึ่งสามารถเริ่มต้นรายการจุดสุดยอดที่จุดที่แตกต่างกัน
whuber

1

ฉันมีชุดข้อมูลตามข้อมูลการสำรวจ ปัญหาของฉันคือฟีเจอร์เก่า ๆ จะไม่ถูกลบออกไปก่อนที่จะมีการนำเข้าภาพสำรวจใหม่ ดังนั้นเราจึงมี 'ข้อมูลซ้ำ' ที่มีรูปทรงต่างกัน: IE ภาพการสำรวจอาจแยกจากกัน 1/4 ฟุต ในชุดข้อมูลคุณลักษณะ 12000 ชุดนี้เป็นการยากที่จะขยายเข้าไปในแต่ละชุดและระบุ การใช้ ArcMap Basic 10.2: นี่เป็นรุ่นแฮ็กที่ฉันคิดขึ้นมา

  1. บัฟเฟอร์ (โดยมีรัศมีอินพุต) แต่ละคุณสมบัติในเลเยอร์ดั้งเดิม (เลือกหรือไม่)
  2. ทำซ้ำแต่ละคุณลักษณะในบัฟเฟอร์เลเยอร์
  3. เลือกจากเลเยอร์ดั้งเดิมตามความสัมพันธ์ (คุณลักษณะ Centroid w / in)
  4. คุณสมบัติที่เลือก "นับแถว"
  5. ฟิลด์คำนวณค่าการนับแถวไปยังเลเยอร์บัฟเฟอร์ = จำนวนคุณลักษณะภายในรัศมีของคุณสมบัติดั้งเดิม

ฉันคิดค้นล้อใหม่ นอกจากนี้ฉันยังหงุดหงิดกับผู้สร้างแบบจำลองและเป็นคนบูลด็อกโดยทั่วไป จะต้องมีทางออกที่หรูหรากว่านี้ ฉันยินดีที่จะยอมรับคำวิจารณ์และข้อเสนอแนะ

นอกจากนี้ดูเหมือนว่าจะทำงานอย่างถูกต้องจากภายในตัวสร้างแบบจำลองเท่านั้นฉันเรียกใช้จากกล่องเครื่องมือและจะไม่บันทึกเลเยอร์บัฟเฟอร์

ค้นหานักสะสมที่ซ้ำกัน


1

ฉันได้มองหาคำตอบสำหรับคำถามเดียวกันเป็นเวลาที่จะเอาชนะปัญหารูปหลายเหลี่ยมบัฟเฟอร์ที่ทับซ้อนกันแบนราบและคิดว่าพบวิธีแก้ปัญหาที่มีประสิทธิภาพ ในความเป็นจริง @ ความเห็นของ Whuber

โดยหลักการแล้วเซนทรอยด์, ปริมณฑลและพื้นที่อาจยังไม่สามารถระบุรูปหลายเหลี่ยมที่ไม่ซ้ำกันได้

คำตอบของ @ Paul คือแรงผลักดันหลักที่ทำให้ฉันพยายามต่อไป มันใช้โอเปอเรเตอร์ARE_IDENTICAL_TOของเครื่องมือ Spatial Join เนื่องจากมีประสิทธิภาพมากที่สุดในบรรดาเครื่องตรวจจับที่เหมือนกัน นี่คือขั้นตอน:

  • ทำการรวบรวมข้อมูลที่คุณป้อนให้มีรูปร่างที่แตกต่างกัน
  • สร้างสนามเพื่อให้หุ่น / คัดลอก (เช่นชนิดของฟิลด์ OID) objectId เดิมแถวพูดEX_OID ;
    • เรียกใช้ Spatial Join ในคลาสคุณลักษณะที่ต้องการประมวลผลเป็นทั้งเป้าหมายและเข้าร่วมพารามิเตอร์คุณสมบัติ ตรวจสอบให้แน่ใจว่าการแมปฟิลด์ของเขตจำลอง (ปรากฏสองครั้ง) ที่สร้างไว้ก่อนหน้านี้มีกฎการผสานของ FIRST (ซึ่งเป็นค่าเริ่มต้นหรือเลือก LAST ส่วนอื่น ๆ อาจไม่ให้ผลลัพธ์ที่ต้องการเนื่องจากใช้การสรุปของการทับซ้อน) ขั้นตอนนี้เลือก OBJECTID รูปทรงทั่วไปที่อยู่ด้านบนของการทับซ้อนกันทั้งหมด (เช่น FIRST);

ขั้นตอนต่อไปนี้สามารถทำได้สองวิธีด้วย Python หรือโดยไม่ต้อง:

ด้วย PYTHON

  • ใช้รหัสด้านล่างเพื่อดึงรหัสเฉพาะที่เราต้องการค้นหา:

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

โปรดระวังว่าฉันกำลังใช้สำเนาที่สองของฟิลด์ OID จำลองซึ่งเป็น EX_OID_1 ในกรณีของฉัน

  • คัดลอกเอาท์พุทของรหัสนี้และวางนี้ลงในนิยาม แบบสอบถามOBJECTID IN (<PASTE_COPIED_VALUES_HERE>)ของชั้นคุณลักษณะเดิมประมวลผลเป็น ผลลัพธ์จะแสดงให้คุณเห็นถึงคุณสมบัติแบบรวมของส่วนที่ทับซ้อนกัน มีข้อ จำกัด ด้านขนาดที่นี่แม้ว่า 30,000 อักขระ ในการเอาชนะปัญหานี้คุณต้องทำตามขั้นตอน "ไม่มีงูเหลือม"

โดยไม่ต้อง PYTHON

  • ใช้เครื่องมือความถี่เพื่อแสดงรายการค่าที่ไม่ซ้ำกันในสำเนาที่สองของเขตข้อมูล OID จำลองซึ่งเป็น EX_OID_1 ในกรณีของฉัน

  • เข้าร่วมฟิลด์OBJECTIDสุดท้ายของคลาสคุณลักษณะดั้งเดิมด้วยผลลัพธ์ของEX_OID_1ของเครื่องมือความถี่โดยเลือกตัวเลือก "เก็บเฉพาะระเบียนที่ตรงกัน"

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.