ArcPy का उपयोग करके फ़ाइल जियोडेटाबेस में वास्तविक वक्र अण्डाकार बहुभुज बनाना?


9

पृष्ठभूमि के रूप में, यह सवाल टेबल टू एलिप्से टूल से लाइनों के आउटपुट से ओवरलैपिंग बहुभुज उत्पन्न करने के सवाल पर जवाब देने की कोशिश करने से उत्पन्न हुआ?

ArcMap 10.1 जीयूआई यह बहुत आसान है एक फ़ाइल geodatabase सुविधा का उपयोग कर वर्ग में सच वक्र बहुभुज डिजिटाइज़ करने के लिए उपयोग करना दीर्घवृत्त निर्माण उपकरण लेकिन ...

क्या केंद्र के बिंदु, प्रमुख अक्ष, लघु अक्ष और प्रत्येक के लिए azimuth युक्त तालिका से पंक्तियों (arcpy.da.SearchCursor) को पढ़ते हुए सही वक्र अण्डाकार बहुभुज लिखना संभव है?

मुझे उम्मीद थी कि ऐसा करने के लिए arcpy.da.InsertCursor के साथ एक टोकन उपलब्ध हो सकता है , लेकिन SHAPE@ऐसा लगता है कि ज्योमेट्री ऑब्जेक्ट का समर्थन करता है, और यह सही घटता को शामिल नहीं करता है।


1
मैं चारों ओर खोज है, और केवल बात यह है कि मैंने पाया है कि थोड़ा उपयोगी हो सकता है है इस
पॉल

1
और उसके लिए, यह Q & A सहायक हो सकता है: gis.stackexchange.com/questions/80/…
blord-castillo

यदि आप इस पर एक उत्तर लिखना चाहते हैं तो मैं ख़ुशी से बढ़ जाऊंगा, लेकिन मैं शायद ArcObjects के उत्तर के बिना एक ArcPy के लिए स्वीकृति छोड़ दूंगा (जो कि अगर कोई नहीं करता है तो मैं एक ArcGIS आइडिया से लिंक करके प्रदान करूंगा)।
PolyGeo

मुझे पता है कि यह एक पुरानी पोस्ट है, लेकिन मुझे आर्कपी के साथ ऐसा करने का एक तरीका मिला है। इसके लिए कुछ गणित की आवश्यकता होती है, लेकिन नीचे मेरा उत्तर देखें।
crmackey

जवाबों:


11

जबकि चापी ज्यामिति ऑब्जेक्ट 10.3 पर सच्चे वक्रों का समर्थन नहीं करते हैं, एसेरी ने REST API में ट्रू कर्व्स लागू किया, और इसलिए फ़ीचरसेट्स में उनके लिए JSON समर्थन लागू करना पड़ा। यदि आप JSON संरचना में एक वक्र बनाते हैं, तो आप इसे करने के लिए "ट्रिक" कर सकते हैं ।

यहाँ एक उदाहरण है: सच्चे घटता के साथ एक JSON फ़ाइल बनाएँ (यह एक परिपत्र चाप और एक बेजियर वक्र का उपयोग करता है), कुछ इस तरह से:

{   'fieldAliases': {
        'Id': 'Id',
        'FID': 'FID'
    },
    'fields': [{
        'alias': 'FID',
        'type': 'esriFieldTypeOID',
        'name': 'FID'
    }, {
        'alias': 'Id',
        'type': 'esriFieldTypeInteger',
        'name': 'Id'
    }],
    'displayFieldName': '',
    'spatialReference': {
        'wkid': 103734,
        'latestWkid': 103734
    },
    'geometryType': 'esriGeometryPolyline'
    'features': [{
        'geometry': {
                      "curvePaths":[[
                        [6,3],[5,3],
                        {"b":[[3,2],[6,1],[2,4]]},
                        [1,2],
                        {"a":[[0,2],[0,3],0,0,2.094395102393195,1.83,0.33333333]}
                      ]]
                    },
        'attributes': {
            'Id': 0,
            'FID': 0
        }
    }],
}

फिर, उसे एक फीचर सेट में लोड करें और उसे एक फीचर क्लास में सेव करें।

fs = arcpy.FeatureSet()
fs.load(r'C:\path_to_your_json_file.json')
arcpy.management.CopyFeatures(fs, r'in_memory\test_curve')

और उछाल, तुम सच घटता है! यह वही है जो इसे ArcMap में बनाया गया है:

यहां छवि विवरण दर्ज करें

तो आपके मामले में, शायद आप एक जैसन संरचना का निर्माण या तो एक फीचर सेट में मूल सुविधाओं को कास्टिंग करके और JSON के साथ खेलकर कर सकते हैं, या जैसा कि आप एक खोज कर्सर में पंक्तियों के माध्यम से पुनरावृति करते हैं। गणित जो आप चाहते हैं उसे पाने के लिए थोड़ा मुश्किल हो सकता है, लेकिन निश्चित रूप से संभव है।


मुझे यह भी उल्लेख करना चाहिए कि आपको एक पूर्ण सुविधा सेट बनाने की आवश्यकता नहीं है, आप केवल JSON ज्यामिति को सीधे arcpy.AsShape(geojson, True)एक ज्यामिति ऑब्जेक्ट को वापस पाने के लिए पास कर सकते हैं ।


1

हम उसी समस्या में भागे जब हमें कानूनी विवरणों से सैकड़ों पार्सल को भू-स्थिति में खींचना पड़ा। COGO उपकरण एकमात्र ऐसी चीज थी जो हमें वास्तविक घटता को खींचने और बनाए रखने की अनुमति देती थी। दुर्भाग्य से, COGO उपकरण स्क्रिप्ट योग्य नहीं हैं।

हालाँकि, हम कानूनी विवरणों को txt प्रारूप में परिवर्तित करने में सक्षम थे, जिससे हम अपनी आकृतियाँ बनाने के लिए उन्हें अनुप्रस्थ विंडो में लोड कर सकते थे । तालिका प्रारूप के आधार पर, आप (पायथन का उपयोग करके) अपनी तालिकाओं को txt में बदल सकते हैं और फिर उन्हें ट्रैवर्स विंडो में लोड कर सकते हैं।


आज मैं एक FGDB में सही वक्र आकृति आयात करने की कोशिश कर रहा हूं और वक्र रूपांतरण ऐड-इन में भाग गया । यकीन नहीं होता अगर यह मदद करता है, लेकिन यह सही घटता में हेरफेर करने के लिए उपयोगी है।

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