এটি আরকিপির মাধ্যমে আরও অ্যাক্সেসযোগ্য হওয়া উচিত তবে এর মধ্যে আমরা উত্তরটি খুঁজতে এসডিই রেজিস্ট্রি টেবিলগুলির সুবিধা নিতে পারি। SDE.GEOMETRY_COLUMNS
টেবিল বৈশিষ্ট্য ক্লাস নাম ধারণ করে F_TABLE_NAME
, তাদের স্কিমা মালিক F_TABLE_SCHEMA
, আর তাদের সংশ্লিষ্ট জ্যামিতি সারণী নাম G_TABLE_NAME
।
যদি বৈশিষ্ট্য এবং জ্যামিতি সারণীর নাম একই হয় তবে বৈশিষ্ট্য বর্গের জ্যামিতি বৈশিষ্ট্য হিসাবে একই টেবিলে সংরক্ষণ করা হয়; অন্যথায় জ্যামিতি একটি পৃথক বৈশিষ্ট্য সারণীতে (ওরফে "এফ" টেবিল) সঞ্চিত থাকে।
সুতরাং আমাদের এসকিউএল কোয়েরি কিছু হবে:
SELECT COUNT(*) AS GEOMETRY_IN_FEATURE_TABLE
FROM SDE.GEOMETRY_COLUMNS
WHERE F_TABLE_SCHEMA || '.' || G_TABLE_NAME = :featureClassName
আর্কপাইয়ের জন্য, ধরে নিন যে "জিওডিটিএবিএসইএসডি" একটি এসডিই সংযোগ ফাইলের নাম এবং "জিআইএস.টিএক্সএপিএসসিএআরএলসিপিএলওয়াই" "জিআইএস" স্কিমাতে সঞ্চিত বৈশিষ্ট্য শ্রেণীর নাম:
import arcpy, os
dstFeatureClass = "sde/DC_LISDBA (GIS).sde/GIS.PARCEL_PARCELS_POLY"
#open a connection to the geodatabase
wks = arcpy.ArcSDESQLExecute(os.path.dirname(dstFeatureClass))
#create the SQL query statement
sql = \
"SELECT COUNT(*) AS GEOMETRY_IN_FEATURE_TABLE " \
"FROM SDE.GEOMETRY_COLUMNS " \
"WHERE F_TABLE_SCHEMA || '.' || G_TABLE_NAME = " + \
"'" + os.path.basename(dstFeatureClass) + "'"
#execute the query and return the geometry type
print "ST_Geometry" if wks.execute(sql) else "SDEBINARY"
#delete the geodatabase connection
del [wks, sql]
নোট করুন এই সমাধানটি কেবল আপনাকে জানায় যে জ্যামিতিটি বৈশিষ্ট্য শ্রেণীর মতো একই টেবিলের মধ্যে সঞ্চয় করা আছে এবং প্রকৃত কলামের ধরণের নয় (যেমন SDEBINARY, SDELOB, ST_Geometry) যদিও আমি বিশ্বাস করি যে এসডিই টেবিল বা ওরাকলে অন্য কোথাও পাওয়া যাবে।
এটি ওরাকল ফাংশন তৈরি করে এবং / বা SDE.GEOEMTRY_COLUMNS
টেবিলে একটি ভিউ তৈরি করে আরও অনুকূলিত করা যেতে পারে ।
* ওরাকল 11 জি (-৪-বিট) এ আর্কএসডিই 10.2.2 দিয়ে পরীক্ষিত।