বহুভুজ স্তরের সীমানা (বাইরের) ঘেরটি ফেরানো কি সম্ভব?
ধরা যাক আপনার কাছে ইউএসএর মানচিত্র রয়েছে, সরলতার জন্য, কাউন্টি স্তরে বিভক্ত হয়ে, সেই মানচিত্র থেকে কি পুরো দেশের সীমানা মানচিত্রটি ফেরানো সম্ভব?
বহুভুজ স্তরের সীমানা (বাইরের) ঘেরটি ফেরানো কি সম্ভব?
ধরা যাক আপনার কাছে ইউএসএর মানচিত্র রয়েছে, সরলতার জন্য, কাউন্টি স্তরে বিভক্ত হয়ে, সেই মানচিত্র থেকে কি পুরো দেশের সীমানা মানচিত্রটি ফেরানো সম্ভব?
উত্তর:
আপনি কেবল কাউন্টি স্তরটিতে দ্রবীভূত করতে পারেন (আপনি নির্বাচিত দ্রবীভূত করতে চান এমন কাউন্টিগুলি অবশ্যই নিশ্চিত করুন)।
আমাকে আমার নিজের প্রকল্পটি প্লাগ করতে দিন ... বাউন্ডারি জেনারেটর আপনাকে প্রতিটি বহুভুজের বাহ্যিক এবং অভ্যন্তরীণ সীমানা উভয়ই দেবে (লাইন বৈশিষ্ট্য হিসাবে)।
অভ্যন্তরীণ সীমারেখাগুলি এই সীমান্তটি ভাগ করে এমন দুটি বহুভুজের প্রত্যেকটির জন্য এফআইডি দ্বারা দায়ী করা হয়। বাহ্যিক সীমানায় two দুটির মধ্যে একটির জন্য শূন্যের একটি এফআইডি থাকা উচিত, সুতরাং তারা সম্পূর্ণ ফলাফলের বাইরে বাছাই করা সহজ।
এটি বনাম দ্রবীভূত করা সম্পর্কে দুর্দান্ত জিনিসটি হ'ল আমি নির্ভুলতার তুলনায় বেশ কয়েকটি গাঁট যোগ করেছি যাতে এটি একেবারে-নিখুঁত নয় এমন ডেটা নিয়ে কাজ করতে পারে। (দুটি বহুভুজের সীমানা কতগুলি পৃথক করে একটি ভাগ করা সীমানা হিসাবে বিবেচনা করা উচিত? কত কোণে বিচ্যুতি প্রয়োজন?)
এটি এখনও আলফাতে রয়েছে এবং আমি একটি আপডেটকে মোকাবেলা করার পরে অনেকক্ষণ হয়ে গেছে; আমি আপনার জন্য এটি কতটা ভাল কাজ করে তা শুনতে ভালোবাসি!
public static IPolygon getPolygonFromLayer(ILayer layer)
{
IFeatureLayer FLayer = layer as IFeatureLayer;
IFeatureClass FClass = FLayer.FeatureClass;
return polygonMerge(FClass);
}
private static IPolygon polygonMerge(IFeatureClass featureClass)
{
if (featureClass == null) return null;
IGeoDataset geoDataset = featureClass as IGeoDataset;
//You can use a spatial filter to create a subset of features to union together.
//To do that, uncomment the next line, and set the properties of the spatial filter here.
//Also, change the first parameter in the IFeatureCursor.Seach method.
//ISpatialFilter queryFilter = new SpatialFilterClass();
IGeometry geometryBag = new GeometryBagClass();
//Define the spatial reference of the bag before adding geometries to it.
geometryBag.SpatialReference = geoDataset.SpatialReference;
//Use a nonrecycling cursor so each returned geometry is a separate object.
IFeatureCursor featureCursor = featureClass.Search(null, false);
IGeometryCollection geometryCollection = geometryBag as IGeometryCollection;
IFeature currentFeature = featureCursor.NextFeature();
while (currentFeature != null)
{
//Add a reference to this feature's geometry to the bag.
//Since you don't specify the before or after geometry (missing),
//the currentFeature.Shape IGeometry is added to the end of the geometryCollection.
object missing = Type.Missing;
geometryCollection.AddGeometry(currentFeature.Shape, ref missing, ref missing);
currentFeature = featureCursor.NextFeature();
}
// Create the polygon that will be the union of the features returned from the search cursor.
// The spatial reference of this feature does not need to be set ahead of time. The
// ConstructUnion method defines the constructed polygon's spatial reference to be the
// same as the input geometry bag.
ITopologicalOperator unionedPolygon = new PolygonClass();
unionedPolygon.ConstructUnion(geometryBag as IEnumGeometry);
return unionedPolygon as IPolygon;
}
}
সীমানা নির্বিঘ্ন না হওয়ায় আপনি যখন দ্রবীভূত করেন তখন আপনার পাওয়ার লাইনগুলি।
সফ্টওয়্যার পণ্য নির্বিশেষে, নিম্নলিখিতগুলি করুন:
একটি সংহত করুন ।
তারপরে একটি দ্রবীভূত করুন ।
দেখে মনে হচ্ছে আরকিগিস.কম এ পোস্ট করা বাউন্ডিং কনটেইনারগুলির নমুনা আপনার যা ইচ্ছা তা কাজ করবে।
আমি জানি এটি একটি পুরানো প্রশ্ন, তবে আমি মনে করি যে আমি উত্তরটি সবেমাত্র পেয়েছি তা পূর্ববর্তীগুলি এখানে থেকেই প্রবর্তিত হয়েছিল, তাই আমি এটি এমন লোকদের জন্য ভাগ করছি যারা অনুসন্ধানে এটি খুঁজে পায়।
কিউজিআইএস (কমপক্ষে ২.১৪ সংস্করণ হিসাবে), কিউজিআইএস জিওলগোরিদমস> ভেক্টরি জ্যামিতি সরঞ্জামগুলির অধীনে প্রসেসিং টুলবক্সে একটি "ফিল হোল" রয়েছে। আমি দেখতে পেলাম যে আকারগুলি দ্রবীভূত করা এবং তারপরে সর্বোচ্চ উচ্চতা পরামিতি সেট সহ ফিল হোলগুলি চালানো এই সমস্যার সমাধান করে।
আপনি DROPLINE কার্যকারিতা নামে পরিচিত যা সন্ধান করতে পারেন।
যদিও এটি আর্কিআইএনএসফো ওয়ার্কস্টেশন থেকে আরকজিআইএস ডেস্কটপ রূপান্তরে টিকেনি, এটি পুনরুদ্ধার করার জন্য বর্তমানে একটি আর্কজিআইএস আইডিয়া রয়েছে :
নির্দিষ্ট ক্ষেত্রের জন্য সমান মান রয়েছে এমন বহুভুজগুলির মধ্যে রেখাগুলি ফেলে দেওয়ার বিকল্পটি ভাল লাগবে। এই কার্যকারিতাটি ড্রপলাইন কমান্ড হিসাবে আর্কপ্লটে উপলব্ধ ছিল এবং দ্রবীভূত কমান্ড দিয়ে একটি নতুন ডেটাসেট তৈরি এড়ানোর উপায় হিসাবে ব্যাপকভাবে ব্যবহৃত হয়েছিল।
আপনি ST_UNION
লেয়ারের সমস্ত বহুভুজকে (বা বহুভুজের বহু গ্রুপকে বৃহত্তর বহুভুজের মধ্যে) একত্রিত করতে আপনি QGIS DB ম্যানেজারের পোস্টজিআইএস- এ ফাংশনটি ব্যবহার করতে পারেন । ডকুমেন্টেশন থেকে:
ভেরিয়েন্ট 2 একটি সামগ্রিক ফাংশন যা জ্যামিতির একটি সেট নেয় এবং এগুলিকে একটি একক ST_ জ্যামিতিতে পরিণত করে যার ফলস্বরূপ কোনও ছেদকৃত অঞ্চল হয় না