Apakah mungkin untuk mengembalikan batas (luar) batas lapisan poligon?
Katakanlah Anda memiliki peta AS, untuk kesederhanaan, dipecah menjadi tingkat kabupaten, apakah mungkin untuk mengembalikan peta batas seluruh negara dari peta itu?
Apakah mungkin untuk mengembalikan batas (luar) batas lapisan poligon?
Katakanlah Anda memiliki peta AS, untuk kesederhanaan, dipecah menjadi tingkat kabupaten, apakah mungkin untuk mengembalikan peta batas seluruh negara dari peta itu?
Jawaban:
Anda hanya dapat melakukan pelarutan pada layer county (pastikan untuk hanya memilih kabupaten yang ingin dibubarkan).
Izinkan saya untuk menghubungkan proyek saya sendiri ... Boundary Generator akan memberi Anda batas eksternal dan internal setiap poligon (sebagai fitur garis).
Batas internal dikaitkan dengan FID untuk masing-masing dari dua poligon yang berbagi perbatasan itu. Batas eksternal harus memiliki FID nol untuk salah satu dari keduanya, sehingga mereka mudah untuk dipilih dari hasil penuh.
Hal yang baik tentang hal itu vs melakukan larut adalah bahwa saya telah menambahkan beberapa tombol di atas presisi sehingga dapat menangani data yang tidak terlalu sempurna. (Seberapa jauh seharusnya dua perbatasan poligon dianggap sebagai perbatasan bersama? Berapa banyak sudut penyimpangan diperlukan?)
Itu masih dalam alpha dan sudah lama sejak saya menangani pembaruan; Saya ingin mendengar bagaimana ini bekerja untuk Anda!
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;
}
}
Anda mendapatkan garis ketika Anda melakukan pembubaran karena batas-batasnya tidak mulus.
Terlepas dari produk perangkat lunak, lakukan hal berikut:
Lakukan integrasi .

Kemudian lakukan pembubaran .

Kedengarannya seperti sampel Bounding Containers yang diposting di arcgis.com akan sesuai dengan yang Anda inginkan.
Saya tahu ini adalah pertanyaan lama, tetapi saya pikir jawaban yang baru saja saya temukan telah diperkenalkan sejak yang sebelumnya di sini, jadi saya membagikannya kepada orang-orang yang menemukan ini dalam pencarian.
QGIS (paling tidak pada versi 2.14), memiliki "Fill Holes" di kotak peralatan Pemrosesan, di bawah QGIS geoalgorithms> Vectory geometry tools. Saya menemukan bahwa melarutkan bentuk dan menjalankan Fill Holes dengan parameter area Max yang diatur sangat tinggi memecahkan masalah ini.
Anda mungkin juga mencari apa yang dulu disebut fungsionalitas DROPLINE.
Meskipun tidak selamat dari transisi ArcInfo Workstation ke ArcGIS Desktop, saat ini ada Ide ArcGIS untuk mengembalikannya:
Akan lebih baik untuk memiliki opsi untuk menjatuhkan garis antara poligon yang memiliki nilai yang sama untuk bidang yang ditentukan. Fungsionalitas ini dulu tersedia di ArcPlot sebagai perintah DROPLINE dan secara luas digunakan sebagai cara untuk menghindari membuat dataset baru dengan perintah larut.
Anda dapat menggunakan ST_UNIONfungsi dalam PostGIS dari QGIS DB Manager untuk mengagregasi semua poligon dalam layer (atau banyak grup poligon menjadi poligon yang lebih besar). Dari dokumentasi:
Variant 2 adalah fungsi agregat yang mengambil satu set geometri dan menyatukannya ke dalam ST_Geometry tunggal sehingga tidak ada daerah berpotongan