.Mxd फ़ाइलों को बनाने के लिए पायथन स्क्रिप्ट की तलाश है?


11

मैं आर्कगिस और पायथन दोनों के लिए नया हूं। मेरी आवश्यकता नीचे की प्रक्रिया को स्वचालित करने की है:

  1. डेस्कटॉप के लिए आर्कजीआईएस में एक परत बनाना। इसे दूसरे शब्दों में रखने के लिए, एक आर्कपैक दस्तावेज़ (.mxd) बना रहा है।
  2. आर्कगिस सर्वर के लिए एक सेवा के रूप में निर्मित आर्कपैक दस्तावेज़ (चरण 1 में) प्रकाशित करना।

वर्तमान में हम इसे मैन्युअल रूप से कर रहे हैं। मैं पायथन का उपयोग करके चरण 2 को स्वचालित करने के लिए स्क्रिप्ट पर आया हूं।

मैं चरण 1 और चरण 2 को कैसे स्वचालित कर सकता हूं?

जवाबों:


16

यह वास्तव में एक स्टैंडअलोन उत्तर नहीं है, @ PolyGeo के उत्तर के अतिरिक्त है क्योंकि यह अजगर के मामले में 'खरोंच से mxd निर्माण' को संबोधित करता है।

यदि आप ArcObjects का उपयोग करते हैं तो आप अजगर में खरोंच से MXD बना सकते हैं । आपको comtypes पैकेज की आवश्यकता होगी और अगर ArcGIS 10.1 का उपयोग कर रहे हैं, तो आपको एक छोटा सा बदलाव करने की आवश्यकता है automation.py10.1 पर ArcObjects + comtypes देखें

अजगर में खरोंच से एमएक्सडी बनाने के लिए कुछ कोड नीचे दिए गए हैं:

import arcpy
import comtypes,os

def CreateMXD(path):
    GetModule('esriCarto.olb')
    import comtypes.gen.esriCarto as esriCarto
    pMapDocument = CreateObject(esriCarto.MapDocument, esriCarto.IMapDocument)
    pMapDocument.New(path)
    pMapDocument.Save() #probably not required...

def GetLibPath():
    """ Get the ArcObjects library path

        It would be nice to just load the module directly instead of needing the path,
        they are registered after all... But I just don't know enough about COM to do this

    """
    compath=os.path.join(arcpy.GetInstallInfo()['InstallDir'],'com')
    return compath

def GetModule(sModuleName):
    """ Generate (if not already done) wrappers for COM modules
    """
    from comtypes.client import GetModule
    sLibPath = GetLibPath()
    GetModule(os.path.join(sLibPath,sModuleName))

def CreateObject(COMClass, COMInterface):
    """ Creates a new comtypes POINTER object where
        COMClass is the class to be instantiated,
        COMInterface is the interface to be assigned
    """
    ptr = comtypes.client.CreateObject(COMClass, interface=COMInterface)
    return ptr

if __name__=='__main__':
    #testing...
    arcpy.SetProduct('arcview')
    filepath='c:/temp/testing123.mxd'
    if os.path.exists(filepath):os.unlink(filepath)
    CreateMXD(filepath)

14

डेस्कटॉप के लिए ArcGIS में एक परत बनाने के लिए नमूना कोड AddLayer (arcpy.mapping) के लिए ऑनलाइन सहायता पर है ।

सर्वर के लिए ArcGIS के लिए एक सेवा के रूप में एक आर्केप दस्तावेज़ को प्रकाशित करने के चरण पायथन के साथ एक मानचित्र सेवा को प्रकाशित करने के लिए ऑनलाइन सहायता में हैं ।

ध्यान दें कि आर्कपी का उपयोग करके एक एमएक्सडी बनाना संभव नहीं है - आपको एक मौजूदा एमएक्सडी होना चाहिए, जिसमें आप परतें जोड़ सकते हैं। उस डिज़ाइन के निर्णय का वर्णन आर्चीपीपिंग के लिए ऑनलाइन हेल्पलाइन पर दिशानिर्देशों में किया गया है , लेकिन आर्कपीआई में कुछ भी नहीं से एक नया मैप दस्तावेज़ बनाने में सक्षम होना एक आर्किस आइडिया है जिसे मैं कार्यान्वित देखना चाहूंगा।

एक उन्नत पायथन और आर्कोबजेक्ट्स पद्धति के लिए @ ल्यूक का उत्तर देखें जिसे मैंने परीक्षण नहीं किया है, लेकिन आप पायथन स्क्रिप्ट से एमएक्सडी बनाने के लिए वर्कअराउंड प्रदान कर सकते हैं जिसे आर्कपी फिर हेरफेर कर सकता है।

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