क्या बहुभुज परत की सीमा (बाहर) परिधि को वापस करना संभव है?
मान लीजिए कि आपके पास यूएसए का मानचित्र है, जो सादगी के लिए, काउंटी स्तर तक टूट गया है, क्या उस नक्शे से पूरे देश के सीमा मानचित्र को वापस करना संभव है?
क्या बहुभुज परत की सीमा (बाहर) परिधि को वापस करना संभव है?
मान लीजिए कि आपके पास यूएसए का मानचित्र है, जो सादगी के लिए, काउंटी स्तर तक टूट गया है, क्या उस नक्शे से पूरे देश के सीमा मानचित्र को वापस करना संभव है?
जवाबों:
आप बस काउंटी लेयर पर एक विघटन कर सकते हैं (सुनिश्चित करें कि आपके पास केवल उन काउंटी हैं जो आपके द्वारा चयनित भंग करना चाहते हैं)।
मुझे अपनी खुद की परियोजना को प्लग करने की अनुमति दें ... सीमा जनरेटर आपको प्रत्येक बहुभुज की बाहरी और आंतरिक सीमाएं प्रदान करेगा (जैसा कि लाइन की विशेषताएं हैं)।
आंतरिक सीमाएं उस सीमा को साझा करने वाले दो बहुभुजों में से प्रत्येक के लिए एफआईडी के साथ जिम्मेदार हैं। बाहरी सीमाओं में उन दो में से एक के लिए शून्य की एफआईडी होनी चाहिए, इसलिए वे पूर्ण परिणाम से बाहर का चयन करना आसान है।
इसके बारे में अच्छी बात यह है कि बनाम घुलने की बात यह है कि मैंने सटीकता के साथ कुछ नॉब्स जोड़े हैं, ताकि यह बिलकुल सही डेटा से न निपट सके। (साझा सीमा पर विचार करने के लिए दो बहुभुज सीमाओं को कितना दूर रखना चाहिए? कितना कोण विचलन आवश्यक है?)
यह अभी भी अल्फा में है और जब से मैंने अपडेट अपडेट किया है, तब तक यह थोड़ी देर हो चुकी है; मुझे यह सुनकर अच्छा लगेगा कि यह आपके लिए कितना कारगर है!
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;
}
}
जब आप भंग करते हैं तो आपकी पंक्तियाँ प्राप्त होती हैं क्योंकि सीमाएं निर्बाध नहीं होती हैं।
सॉफ़्टवेयर उत्पाद के बावजूद, निम्न कार्य करें:
एक एकीकृत करें ।
फिर एक विलयन करें ।
ऐसा लगता है कि आर्कगिस.कॉम पर पोस्ट किए गए बाउंडिंग कंटेनर का नमूना आपको जो चाहिए, उसके लिए काम करेगा।
मुझे पता है कि यह एक पुराना प्रश्न है, लेकिन मुझे लगता है कि मुझे जो उत्तर मिला था वह पिछले लोगों के यहाँ से लाया गया था, इसलिए मैं इसे उन लोगों के लिए साझा कर रहा हूँ जो इसे खोज में पाते हैं।
QGIS (संस्करण 2.14 के रूप में कम से कम), प्रसंस्करण टूलबॉक्स में एक "भरें छेद" है, QGIS जियो-एल्गोरिदम> वेक्टोरी ज्यामिति उपकरण के तहत। मुझे लगता है कि घुलती हुई आकृतियाँ और फिर मैक्स क्षेत्र पैरामीटर के साथ भरण छेद को चलाना इस समस्या को हल करता है।
तुम भी DROPLINE कार्यक्षमता कहा जाता है के लिए देख रहे हो सकता है।
हालांकि यह आर्कगिस्क डेस्कटॉप संक्रमण के लिए आर्कइन्फो वर्कस्टेशन से बच नहीं पाया, वर्तमान में आराम करने के लिए एक आर्कगैस आइडिया है:
ऐसे पॉलीगनों के बीच की रेखाओं को गिराने का विकल्प रखना अच्छा होगा जो एक निर्दिष्ट क्षेत्र के लिए समान मान रखते हैं। यह कार्यक्षमता आर्कप्लॉट में DROPLINE कमांड के रूप में उपलब्ध थी और इसे विघटित कमांड के साथ एक नया डेटासेट बनाने से बचने के लिए व्यापक रूप से उपयोग किया गया था।
आप ST_UNION
QGIS DB प्रबंधक से PostGIS में फ़ंक्शन का उपयोग परत के सभी बहुभुजों (या बहुभुजों के कई समूहों को बड़े बहुभुजों में) को एकत्र करने के लिए कर सकते हैं। प्रलेखन से:
वेरिएंट 2 एक कुल कार्य है जो ज्यामिति का एक सेट लेता है और उन्हें एक एकल ST_Geometry में एकजुट करता है जिसके परिणामस्वरूप कोई प्रतिच्छेद क्षेत्र नहीं होता है