किसी विशेषता तालिका (या परत) के एकल स्तंभ से अलग मानों का चयन करें


16

ArcMap में एक कॉलम से अलग-अलग मानों का चयन करने का एक तरीका है? मेरे पास GDB और SHP दोनों स्वरूपों में डेटा है। मैंने SQL, QueryLayers, ModelBuilder और अलग-अलग टूलबॉक्स का उपयोग करने के तरीकों की खोज की है और यह सभी चयन विकल्पों के रूप में प्रकट होता है * तालिका से हमेशा चुनें *।

एसक्यूएल में मैं SELECT DISTINCT स्तंभ नाम तालिका से नाम लिखूंगा।

जवाबों:


17

या आप आर्कटूलबॉक्स टूल फ़्रीक्वेंसी (विश्लेषण उपकरण >> सांख्यिकी >> फ़्रीक्वेंसी) चला सकते हैं जो अद्वितीय मानों के साथ एक तालिका का उत्पादन करेगा और वे कितने समय में दिखाई देंगे इसकी एक गिनती है।

या आप पाइथन स्क्रिप्ट लिख सकते हैं जो किसी फ़ील्ड पर SearchCursor प्राप्त करता है तो फॉर्म के सभी मूल्यों की एक सूची बनाएं

if value not in myList:
    myList.append(value)

3
आप एक ArcInfo लाइसेंस नहीं है तो यह टूलबॉक्स (केवल शेपफ़ाइलें पर परीक्षण) का उपयोग resources.arcgis.com/gallery/file/geoprocessing/...

3
यह आश्चर्यजनक है कि एक बार एक ArcInfo फ़ंक्शन की आवश्यकता वाले कितने कार्यों को अब कुछ सरल सरल पायथन कोड / मॉड्यूल का उपयोग करके लागू किया जा सकता है। यह बहुत अच्छा है!
रयानकेडलटन

धन्यवाद Dan, कि चाल किया। मेरा लाइसेंस फ़्रीक्वेंसी टूलबॉक्स का समर्थन नहीं करता था।
स्टीव

12

पायथन सूची समझ का उपयोग करें।

import arcpy
fldName = 'val_fld'
fcName = 'feature_class.shp'
#set creates a unique value iterator from the value field
myList = set([row.getValue(fldName) for row in arcpy.SearchCursor(fcName)]) 

बड़े डेटासेट के लिए एक जनरेटर के अभिव्यक्ति का उपयोग करने के लिए एक मेमोरी कुशल विधि होगी ।

myList = set((row.getValue(fldName) for row in arcpy.SearchCursor(fcName,fields=fldName))

1
चूंकि आप केवल एक क्षेत्र में रुचि रखते हैं, बेहतर प्रदर्शन के लिए मैं वैकल्पिक fieldsतर्क निर्दिष्ट करूंगा , जैसेmyList = set([row.getValue(fldName) for row in arcpy.SearchCursor(fcName, fields=fldName)])
blah238

अच्छा विचार। मैं प्रदर्शन अंतर का परीक्षण करने के लिए उत्सुक हूं। एसडीई डेटा स्रोतों के लिए यह महत्वपूर्ण है, लेकिन आकार-प्रकार और फ़ाइल जियोडैट डेटाबेस के लिए मुझे आश्चर्य होगा अगर यह सराहनीय था।
थरेन

यह भी खूब रही। मेरे पास एक लिंक था जिसने इसे अच्छी तरह से दिखाया था लेकिन यह एक दिन टूट गया। आशा है कि se एक अच्छा लंबे समय के लिए यह होगा।
जस्टिन

4

यदि आपका डेटा पीजीडीबी प्रारूप में है, तो आप सब-बिल्डर का उपयोग करके क्वेरी बिल्डर संवाद (परिभाषा क्वेरी, विशेषताओं, टूलबॉक्स अभिव्यक्ति आदि का चयन करें) के भीतर कर सकते हैं:

यहां से तालिका नाम चुनें ...

column_to_test_for_unique_values IN 
(SELECT column_to_test_for_unique_values
FROM table_name
GROUP BY column_to_test_for_unique_values HAVING
Count(column_to_test_for_unique_values)=1)

यह उन अभिलेखों को लौटाएगा, जिनके लिए कॉलम_to_test_for_unique_values ​​में मान अद्वितीय हैं।


1
आप व्यक्तिगत Geodatabase पर DISTINCT का उपयोग कर सकते हैं।
जकुब सिसक जियोग्राफिक्स

4

यदि आपके पास केवल एक बेसिक (जिसे पूर्व में ArcView कहा जाता है) लाइसेंस है, तो आप तालिका दृश्य को खोल सकते हैं, एक कॉलम पर राइट-क्लिक कर सकते हैं, और एक संक्षिप्त विवरण चुन सकते हैं।


धन्यवाद। यह काम किया, लेकिन फिर मैं खिड़की से बाहर सूची की प्रतिलिपि नहीं बना सका!
स्टीव

@ जल्दबाजी में देखें gis.stackexchange.com/questions/58939/…
मैट

1

यदि आपका डेटा एक एसडीई (स्थानिक डेटाबेस इंजन) में है, तो एक अजगर और आर्कपी के आर्कएसडीएसक्यूएलएक्स्यूट ऑब्जेक्ट का उपयोग कर सकता है। कोई इस "विधि" का उपयोग करके जटिल sql पास कर सकता है।

# set up executor for sql
executor = arcpy.ArcSDESQLExecute(sde_connection_sql)

# sql statements
select_max = """select max(LOAD_ID) from SDE.FEATURE_CLASS"""

# get load id
result_max_id = executor.execute(select_max)

0

या CSV को निर्यात करने के लिए अपनी पायथन स्क्रिप्ट का उपयोग करें और फिर csv को पढ़ने के लिए और उसी स्क्रिप्ट के भीतर से उस पर एक उचित SQL क्वेरी करने के लिए किसी अन्य डेटाबेस (जैसे SpatiaLite) के पायथन एपीआई का उपयोग करें। एक बड़ी तालिका के लिए यह आपकी सूची बिल्डर - डननो को रोल करने की तुलना में एक छोटा सा तेज हो सकता है।

हालाँकि आप इसे करते हैं, यह अभी भी आर्कगिस का एक बहुत कष्टप्रद "फीचर" है।


0

distinctएक उपश्रेणी में उपयोग करने के बारे में क्या है (निम्नलिखित एक FGDB फीचरक्लास पर है):

"STATE_NAME" = (select distinct "STATE_NAME" from EsriUsaCountiesDetailed)

नोट से मदद (10.0) कि यह सीमाएँ हैं:

कवरेज, आकार-प्रकार और अन्य nongeodatabase फ़ाइल-आधारित डेटा स्रोत उप-श्रेणियों का समर्थन नहीं करते हैं।


2
"DISTINCT" केवल व्यक्तिगत GDB के साथ काम करता है न कि फ़ाइल GDB के साथ।
याकूब सिसक जियोग्राफिक्स २ub

0

जैसा कि जस्टिन सुझाव देते हैं। मैं आम तौर पर अपने इच्छित क्षेत्र पर एक सारांश करता हूं, फिर प्रत्येक अलग मान को श्रेणीबद्ध करने के लिए dbf पर थोड़ी अलग गणना का चयन करें, फिर उस मूल में शामिल हों।
यह चारों ओर लंबा रास्ता है, और आपको अपने पसंदीदा कैक्ल्यूलेशन तरीकों से फेनागल करना होगा। लेकिन ...
जो भी काम मिलता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.