Ekstrak batas dari lapisan terperinci di ArcGIS Desktop atau QGIS?

10

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?

dassouki
sumber
Jadi dalam contoh kasus AS, maksud Anda benar-benar mendapatkan garis besar negara bagian, BUKAN kotak pembatas, kan? Jika demikian, bagaimana dengan pelarutan lapisan kabupaten?
Chad Cooper
@ Chad Cooper - ketika saya membubarkan lapisan, saya masih mendapatkan beberapa garis muncul untuk negara dan negara.
dassouki

Jawaban:

6

Anda hanya dapat melakukan pelarutan pada layer county (pastikan untuk hanya memilih kabupaten yang ingin dibubarkan).

Tac194
sumber
Saya mendapatkan beberapa garis internal masih muncul di larut.
dassouki
3
Bisakah Anda buffer dua kali untuk menghilangkan garis internal? Keluar, untuk "makan" garis, lalu kembali, untuk mengembalikan ukuran aslinya.
mwalker
untuk beberapa alasan ini berhasil. Saya tahu ini adalah solusi yang "paling membingungkan", tetapi ini adalah satu-satunya solusi yang menghilangkan garis
dassouki
1
+1 Ini sebenarnya solusi hebat. Ia bekerja dengan mengakomodasi irisan kecil dan tumpang tindih dalam poligon komponen (dan juga mengatasi banyak bug yang melekat dalam perangkat lunak, juga).
whuber
1
Saya menggunakan saran mwalker untuk menyangga saat itu. Saya harap Anda bisa memasukkan itu dalam jawaban Anda.
dassouki
4

Anda dapat menggunakan modul GRASS: v.dissolve Anda hanya perlu mengimpor data Anda ke GRASS. Berikut ini adalah screen-cast untuk mentransfer data Anda ke Grass dari dalam QGis.

dimitris
sumber
3

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!

Dan S.
sumber
2
 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;
        }

    }
patrick
sumber
2

Anda mendapatkan garis ketika Anda melakukan pembubaran karena batas-batasnya tidak mulus.

Terlepas dari produk perangkat lunak, lakukan hal berikut:

Lakukan integrasi . teks alternatif

Kemudian lakukan pembubaran . teks alternatif

Simon
sumber
Saya mencoba ini beberapa kali, dan itu tidak berhasil :(, saya terus kehilangan beberapa poligon, saya menggunakan toleransi yang sangat kecil dan yang sangat besar juga
dassouki
1

Kedengarannya seperti sampel Bounding Containers yang diposting di arcgis.com akan sesuai dengan yang Anda inginkan.

Derek Swingley
sumber
Ini pemikiran yang bagus, tetapi solusi itu tidak mungkin berhasil dalam fasi ini. Ini dimaksudkan untuk memberikan informasi geometris tambahan tentang fitur dengan menemukan anggota terkecil dari kelas bentuk yang berisi fitur, seperti persegi panjang, lingkaran, elips, atau poligon cembung. Hasilnya selalu salah satu yang mengandung bentuk. Secara umum itu tidak akan bertepatan persis dengan bentuk aslinya kecuali batas itu sudah memiliki bentuk yang diinginkan.
whuber
1

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.

Eldan Goldenberg
sumber
0

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.

PolyGeo
sumber
0

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

sampai
sumber