আমি তাদের মধ্যে পার্থক্য সনাক্ত করার জন্য দুটি পৃথক বৈশিষ্ট্য শ্রেণীর তুলনা করার চেষ্টা করছি (একটি পৃথক ফাংশনের ধরণের)। আমার বেসিক ওয়ার্কফ্লো:
- আমি সার্চকার্সার ব্যবহার করে জ্যামিতিগুলি বের করি
- দুটি বৈশিষ্ট্য শ্রেণীর জ্যামিতিগুলি জিওজেএসএন হিসাবে একটি পরিবর্তিত
__geo_interface__
( ভেলভলন্ডন থেকে পেয়েছেreturn {'type': 'Polygon', 'coordinates': [[((pt.X, pt.Y) if pt else None) for pt in part] for part in self]}
) ব্যবহার করে সংরক্ষণ করুন । এটি ভাগ করা জ্যামিতি অবজেক্টটি এড়ানোর জন্য যা ইএসআরআই কার্সারগুলির সাথে ব্যবহার করে এবং গভীর অনুলিপি তৈরি করতে অক্ষমতা (এটি সম্পর্কে gis.stackex بدل আলোচনা সম্পর্কে এখানে কিছু আলোচনা)। - একটি অনন্য শনাক্তকারীর উপর ভিত্তি করে দুটি বৈশিষ্ট্য বর্গের জ্যামিতিগুলি পরীক্ষা করুন। উদাহরণস্বরূপ, FC1 OID1 জ্যামিতিকে FC2 OID1 জ্যামিতির সাথে তুলনা করুন। ইএসআরআই অবজেক্ট উদাহরণ হিসাবে জ্যামিতিটি পেতে কল করুন
arcpy.AsShape()
( গর্তযুক্ত বহুভুজগুলি পড়ার জন্য সংশোধিত (উপরে পয়েন্ট 2 দেখুন) সাথেreturn cls(Array([map(lambda p: Point(*p) if p is not None else Point(), part) for part in coordinates]))
তুলনাgeom1.equals(geom2)
করুন জ্যামিতি শ্রেণিতে নির্দেশিত হিসাবে কেবল ।
আমি জ্যামিতিতে 140 ডলার পরিবর্তনগুলি খুঁজে পেতে আশা করি, তবে আমার স্ক্রিপ্টটি জোর দিয়ে বলছে 430 রয়েছে I আমি জিওজেএসনের উপস্থাপনাগুলি যাচাই করার চেষ্টা করেছি এবং সেগুলি অভিন্ন, তবুও জ্যামিতি শ্রেণি সমান () তা বলতে অস্বীকার করেছে।
একটি উদাহরণ নীচে:
>>> geom1geoJSON
{'type': 'Polygon', 'coordinates': [[(-122.8423481559999, 47.060497293000083), (-122.84239755599992, 47.059262423000064), (-122.84416913599989, 47.059309693000046), (-122.84416913599989, 47.060497293000083), (-122.8423481559999, 47.060497293000083)]]}
>>> geom2geoJSON
{'type': 'Polygon', 'coordinates': [[(-122.8423481559999, 47.060497293000083), (-122.84239755599992, 47.059262423000064), (-122.84416913599989, 47.059309693000046), (-122.84416913599989, 47.060497293000083), (-122.8423481559999, 47.060497293000083)]]}
>>> geom1 = arcpy.AsShape(geom1geoJSON)
>>> geom2 = arcpy.AsShape(geom2geoJSON)
>>> geom1.equals(geom2)
False
>>> geom2.equals(geom1)
False
এখানে প্রত্যাশিত আচরণটি সত্য হওয়া উচিত (মিথ্যা নয়)।
আমি ogr জ্যামিতিতে স্থানান্তরিত করার আগে কারও কি কোনও পরামর্শ আছে? (আমি ogr.CreateGeometryFromGeoJSON হিসাবে দ্বিধাগ্রস্থ () একটি স্ট্রিং প্রত্যাশা করে এবং আরকি-র __geo_interface__
একটি অভিধান প্রত্যাবর্তন করে এবং আমার মনে হয় যে আমি অতিরিক্ত জটিলতা যুক্ত করছি।
নিম্নলিখিত উত্সগুলি সহায়ক হিসাবে দেখা গেছে, যদিও তারা প্রশ্নের উত্তর দেয় না:
- arcpy.Geometry প্রশ্ন এখানে gis.stackexchange.com এ যা আমার লেখায় উপরে লিঙ্ক করা হয়েছিল।
- আরকিসিস ডটকম ফোরামগুলি থেকে আরপির পলিগন শ্রেণিতে ত্রুটি (স্পষ্টতই আর্কজিআইএস 10.0 এ প্রচুর নির্ভুল ত্রুটি রয়েছে যা তাত্ত্বিকভাবে 10.1 এ স্থির হয়েছে তবে আমি এটি যাচাই করতে পারছি না, 10.0 এসপি 5 এ আপনি এখনও ত্রুটিটি পেয়েছেন)।