পাইথনে এসডিই সংযোগের জন্য ওয়ার্কস্পেস নির্ধারণ করুন


14

পাইথন স্ক্রিপ্টিংয়ে ওয়ার্কস্পেসের জন্য আমরা কীভাবে এসডিই সংযোগটি সংজ্ঞায়িত করব?


উত্তর:


17

ডুইর্ট আমাকে কেবল এটিকে মারধর করুন, তিনি ঠিক আছেন, আর্কটাগল্যাজের মতো একটি সংযোগ ব্যবহার করুন। তবে এসকি কানেকশন ফাইলের প্রত্যক্ষ পুরো পথ ব্যবহার করে আর্কম্যাপের পাইথন প্রম্পটে এখানে আমার গ্রহণ করা আছে:

>>> import arcpy
>>> arcpy.env.workspace = "C:\\Users\\chad\\AppData\\Roaming\\ESRI\\Desktop10.0\\ArcCatalog\\anrc_water (anrcuser).sde"
>>> fdlist = arcpy.ListDatasets()
>>> for fd in fdlist:
...     print fd
... 
anrc_water.DBO.ChadTest
anrc_water.DBO.Temp_Data
anrc_water.DBO.Master_Datasets
ANRC_WATER.DBO.ENF_FILL_FACC
ANRC_WATER.DBO.ENF_FILL_FDIR

>>> 

আমার এসডি সংযোগ ফাইলে পাথ পেতে, আমি কেবল ক্যাটালগ ট্রিতে আমার এসডিই ডাটাবেসে ডান ক্লিক করেছি, বৈশিষ্ট্যে গিয়েছিলাম, তারপরে সাধারণ ট্যাবে, নাম ক্ষেত্র থেকে পাথটি অনুলিপি করুন:

এখানে চিত্র বর্ণনা লিখুন


ধন্যবাদ স্যার আমি এখন এটি পেয়েছি। আমি সত্যিই আপনার সাহায্য তারিফ করা. অনেক ধন্যবাদ.
রামকৃষ্ণ বিলকান্তি

5
আপনি যদি স্ক্রিপ্টগুলি তৈরি করতে আর্কিগ্ল্যাজেলে পাইথন উইন্ডোটি ব্যবহার করেন, আপনি পাইথন উইন্ডোতে আপনার সংযোগটি টানতে এবং ফেলে দিতে পারেন এবং এটি সঠিকভাবে ফর্ম্যাট করবে।
টিমোথি মাইকেল

@ টিমোথিমিশেল আপনি কেবলমাত্র আমার জীবন বাঁচিয়েছেন। ধন্যবাদ.
কেতার

21

এই পৃষ্ঠায় 3 থেকে 5 এর উদাহরণগুলি এই সমস্যার জন্য আশ্চর্যজনক: http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//0017000000q7000000

এখানে আমি তৈরি করা একটি সরলীকৃত সংস্করণ যা আমাকে এসকিএল সার্ভারের সরাসরি সংযোগ ব্যবহার করে পাইথনে ফ্লাই সংযোগগুলি করতে দেয়।

"""
Name: sdeconn.py
Description: Utility functions for sde connections
"""

# Import system modules
import arcpy, os, sys

def connect(database, server="<default server>", username="<default user>", password="<default password>", version="SDE.DEFAULT"):
    # Check if value entered for option
    try:
        #Usage parameters for spatial database connection to upgrade
        service = "sde:sqlserver:" + server 
        account_authentication = 'DATABASE_AUTH'
        version = version.upper()
        database = database.lower()

        # Check if direct connection
        if service.find(":") <> -1:  #This is direct connect
            ServiceConnFileName = service.replace(":", "")
            ServiceConnFileName = ServiceConnFileName.replace(";", "")
            ServiceConnFileName = ServiceConnFileName.replace("=", "")
            ServiceConnFileName = ServiceConnFileName.replace("/", "")
            ServiceConnFileName = ServiceConnFileName.replace("\\", "")
        else:
            arcpy.AddMessage("\n+++++++++")
            arcpy.AddMessage("Exiting!!")
            arcpy.AddMessage("+++++++++")
            sys.exit("\nSyntax for a direct connection in the Service parameter is required for geodatabase upgrade.")

        # Local variables
        Conn_File_NameT = server + "_" + ServiceConnFileName + "_" + database + "_" + username    

        if os.environ.get("TEMP") == None:
            temp = "c:\\temp"   
        else:
            temp = os.environ.get("TEMP")

        if os.environ.get("TMP") == None:
            temp = "/usr/tmp"       
        else:
            temp = os.environ.get("TMP")  

        Connection_File_Name = temp + os.sep + Conn_File_NameT + ".sde"
        if os.path.isfile(Connection_File_Name):
            return Connection_File_Name

        # Check for the .sde file and delete it if present
        arcpy.env.overwriteOutput=True


        # Variables defined within the script; other variable options commented out at the end of the line
        saveUserInfo = "SAVE_USERNAME" #DO_NOT_SAVE_USERNAME
        saveVersionInfo = "SAVE_VERSION" #DO_NOT_SAVE_VERSION


        print "\nCreating ArcSDE Connection File...\n"
        # Process: Create ArcSDE Connection File...
        # Usage: out_folder_path, out_name, server, service, database, account_authentication, username, password, save_username_password, version,   save_version_info
        print temp
        print Conn_File_NameT
        print server
        print service
        print database
        print account_authentication
        print username
        print password
        print saveUserInfo
        print version
        print saveVersionInfo
        arcpy.CreateArcSDEConnectionFile_management(temp, Conn_File_NameT, server, service, database, account_authentication, username, password, saveUserInfo, version, saveVersionInfo)
        for i in range(arcpy.GetMessageCount()):
            if "000565" in arcpy.GetMessage(i):   #Check if database connection was successful
                arcpy.AddReturnMessage(i)
                arcpy.AddMessage("\n+++++++++")
                arcpy.AddMessage("Exiting!!")
                arcpy.AddMessage("+++++++++\n")
                sys.exit(3)            
            else:
                arcpy.AddReturnMessage(i)
                arcpy.AddMessage("+++++++++\n")
                return Connection_File_Name
    #Check if no value entered for option   
    except SystemExit as e:
        print e.code
        return

এই স্ক্রিপ্টটি ব্যবহার করে, আমি কেবল কল করে ফ্লাইতে একটি সংযোগ ফাইল তৈরি করতে পারি:

import arcpy, sdeconn
myconnect1 = sdeconn.connect("database1", "server")
myconnect2 = sdeconn.connect("database2", "server")

এটি ডেটাবেস সংযোগ ফাইলগুলির মেশিন থেকে মেশিনে বা ব্যবহারকারী প্রোফাইল থেকে ব্যবহারকারী প্রোফাইলে সংবিধানযুক্ত সমস্যাটি দূর করে in


দুর্দান্ত স্ক্রিপ্ট, তবে আমি আমার বিকাশের সময় এটিতে কয়েকটি ছোট ছোট সমস্যা পেয়েছি। - এটি পাসওয়ার্ডটি সংরক্ষণ করে, তবে ফাইলের নামের অংশ হিসাবে নয়, তাই যখন আমি একটি আলাদা পাসওয়ার্ড সরবরাহ করি তখন কোডটি ডাটাবেসের জন্য একটি সংযোগ ফাইল খুঁজে পেয়েছিল তবে পাসওয়ার্ডটি আলাদা ছিল না। আমি নামটি পরিবর্তন করে রেখেছি md5.new( server + "_" + ServiceConnFileName + "_" + database + "-" + version + "_" + username + password).hexdigest() - ফেরতের জন্য পোস্টিংয়ের ইনডেন্টেশনটি ভুল, তাই আমি জানতাম না যে আমার সংযোগটি ব্যর্থ হয়েছে। - কোডটি সংস্করণটিকে আপার ক্ষেত্রে পরিবর্তিত করে, আমার সংস্করণটি লোয়ার কেস
ব্রায়ান

হ্যাঁ, আমি যদি এখন স্ক্রিপ্টটি তৈরি করি তবে এতে ফাইল তৈরি করতে বাধ্য করা (যেমন আপনি যখন পাসওয়ার্ড পরিবর্তন করবেন) এর জন্য আরও কিছু বিকল্প থাকবে have
blord-castillo

10

আপনি সাধারণত আপনার এসডিই সংযোগ দস্তাবেজটিকে সংজ্ঞায়িত করতে হবে যেমন আপনি সাধারণত অর্কিগ্ল্যাগলজে করেন; তারপরে আপনি পাইথনের স্তরের দিকে পাথ তৈরি করবেন:

DataConnections = "C:\\AGS_GCSS_Tools\\DatabaseConnections\\" 
TCA_Connection = "prod_sde.sde\\prod_SDE.GIS.PropertyTax" + CAPSYear + "\\prod_SDE.GIS.Tca"
TCA_Layer = DataConnections + TCA_Connection

এটি আপনার .SDE ফাইলটি যেখানে বাস করে সেখানে আপনার পথ নির্ধারণ করবে, তবে তারপরে আপনি যে স্তরের সন্ধান করছেন সেটির সাথে আপনি সেই সংযোগের ভিতরে পথটি সেট করলেন। আমার ক্ষেত্রে আমি একটি বছরের পরিবর্তনশীলও সেট করেছিলাম।


হাই রাইট, আপনার প্রতিক্রিয়াটির জন্য ধন্যবাদ আমি সত্যিই বুঝতে পারছি না আপনি কী বলছেন, আমার স্থানীয় ডেস্কটপ থেকে জিওপ্রসেসিং চালানো দরকার অন্য একটি সার্ভারে আমার এসডি সংযোগ অ্যাক্সেস করতে। আমি আর্ক ক্যাটালগে এসডি সার্ভিসের জন্য সংযোগ তৈরি করেছি। এসডি সংযোগ থেকে ডেটা অ্যাক্সেস করতে চাইলে আমার কী করা উচিত।
রামকৃষ্ণ বিলকান্তি

আজকাল Esri .sde সংযোগ ফাইল (sdeworkspace) ভেরিয়েবল এবং বস্তুর নাম যোগদানের জন্য os.path.join ব্যবহার করার পরামর্শ দেয়। সুতরাং এটি ইন্ডাটা = os.path.join (sdeworkspace, "ফিচারক্লাস") হবে।
অ্যালেক্স তেরেশেনকভ

0

আপনি সরাসরি আপনার প্রশ্নের মধ্যে সংযোগের পথটি সংজ্ঞায়িত করতে পারেন।

PathSdeConnection= "C:\\Users\\{Username Of windows}\\AppData\\Roaming\\ESRI\\Desktop10.2\\ArcCatalog\\{name of ConenctionString}.sde

এবং এটি অনুসন্ধান এবং ইত্যাদিতে ব্যবহার করুন

with arcpy.da.SearchCursor(PathSdeConnection,("OBJECTID","SHAPE@","SHAPE@JSON"),{WhereClause})as cursor:
     for row in cursor:
                       .
                       .
                       . 
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.