ArcGIS Desktop veya QGIS'teki ayrıntılı katmanlardan sınır çıkar?


10

Bir poligon tabakasının sınır (dış) çevresini döndürmek mümkün müdür?

ABD haritasına sahip olduğunuzu varsayalım, basitlik için, ilçe düzeyine ayrılmış olarak, tüm haritanın sınır haritasını bu haritadan döndürmek mümkün mü?


Yani ABD örneğinde, aslında sınırlayıcı kutu değil, devletlerin ana hatlarını almak demek, değil mi? Eğer öyleyse, ilçeler katmanının çözülmesine ne dersiniz?
Chad Cooper

@Chad Cooper - katmanı çözdüğümde hala ilçeler ve eyaletler için bazı çizgiler görüyorum.
dassouki

Yanıtlar:


6

İlçe katmanında bir erime yapabilirsiniz (sadece eritmek istediğiniz ilçelerin seçili olduğundan emin olun).


Hala çözülmekte olan bazı iç çizgiler görüyorum.
dassouki

3
İç çizgileri ortadan kaldırmak için iki kez arabelleğe alabilir misiniz? Dışarı, hatları "yemek", sonra geri, orijinal boyutunu geri yüklemek için.
mwalker

nedense bu işe yaradı. Bunun "en hacimli" çözüm olduğunu biliyorum, ama bu hatlardan kurtulan tek çözümdü
dassouki

1
+1 Bu gerçekten harika bir çözüm. Bileşen çokgenlerinde küçük şerit ve çakışmalar barındırarak çalışır (ve ayrıca yazılımdaki birçok doğal hatanın üstesinden gelir).
whuber

1
O zaman arabelleklemek için mwalker'ın tavsiyesini kullandım. Umarım bunu cevabınıza dahil edebilirsiniz.
dassouki

4

GRASS modülünü kullanabilirsiniz: v.dissolve Verilerinizi GRASS'a aktarmanız yeterlidir. İşte verilerinizi QGis içinden Grass'a aktarmanın ekran görüntüsü.


3

Kendi projemi takmama izin ver ... Sınır Üreteci size her çokgenin hem iç hem de dış sınırlarını verecektir (çizgi özellikleri olarak).

İç sınırlar, o sınırı paylaşan iki çokgenin her biri için FID ile ilişkilendirilir. Dış sınırlar, bu ikisinden biri için sıfır FID değerine sahip olmalıdır, bu nedenle tüm sonuç arasından seçim yapmak kolaydır.

Çözülmeye karşı iyi bir şey, mükemmel olmayan verilerle başa çıkabilmek için hassasiyet üzerine birkaç düğme ekledim. (İki çokgen kenarlık paylaşılan bir kenarlık olarak ne kadar ayrı düşünülmelidir? Ne kadar açı sapması gerekir?)

Hala alfa ve bir güncellemeyle uğraştığımdan beri bir süre geçti; Senin için ne kadar iyi çalıştığını duymak isterim!


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;
        }

    }

2

Çözüldüğünüzde elde ettiğiniz çizgiler, sınırlar sorunsuz olmadığı için.

Yazılım ürününden bağımsız olarak aşağıdakileri yapın:

Bir entegrasyon yapın . alternatif metin

Sonra çözün . alternatif metin


Bunu birkaç kez denedim ve işe yaramadı :(, Bazı çokgenleri kaybetmeye devam ediyorum, çok küçük bir tolerans ve çok büyük bir de kullandım
dassouki

1

Gibi geliyor Sınırlandırma Konteynerleri örnek arcgis.com yayınlanan istediğini için çalışacaktır.


Bu iyi bir düşüncedir, ancak bu çözümün bu fasionda çalışması pek olası değildir. Dikdörtgen, daire, elips veya dışbükey çokgen gibi özellikleri içeren bir şekil sınıfının en küçük üyesini bularak özellikler hakkında ek geometrik bilgi sağlamak amaçlanmıştır. Sonuç her zaman şekil içerenlerden biridir. Genel olarak, bu sınır zaten istenen şekle sahip olmadığı sürece, orijinal şekliyle tam olarak çakışmayacaktır.
whuber

1

Bunun eski bir soru olduğunu biliyorum, ama sanırım bulduğum cevap burada öncekilerden beri tanıtıldı, bu yüzden bunu bir aramada bulan insanlar için paylaşıyorum.

QGIS (en az 2.14 sürümünden itibaren), İşleme araç kutusunda, QGIS geoalgoritmaları> Vectory geometri araçları altında bir "Dolgu Delikleri" vardır. Şekillerin çözülmesinin ve daha sonra Max area parametresi çok yüksek ayarlanmış olarak Doldurma Deliklerinin çalıştırılmasının bu sorunu çözdüğünü fark ettim.


0

Ayrıca eskiden DROPLINE işlevselliği olarak da biliniyor olabilirsiniz.

ArcInfo İş İstasyonundan ArcGIS Masaüstü geçişine geçemese de, şu anda geri yüklenmesi için bir ArcGIS Fikri var:

Belirtilen bir alan için aynı değerlere sahip çokgenler arasında satır bırakma seçeneğine sahip olmak güzel olurdu. Bu işlevsellik ArcPlot'ta DROPLINE komutu olarak mevcuttu ve dissolve komutuyla yeni bir veri kümesi oluşturmaktan kaçınmanın bir yolu olarak yaygın olarak kullanılıyordu.


0

ST_UNIONKatmandaki tüm çokgenleri (veya birçok çokgen grubunu daha büyük çokgenler halinde) toplamak için QGIS DB Manager'dan PostGIS'deki işlevi kullanabilirsiniz . Belgelerden:

Varyant 2, bir dizi geometri alıp bunları tek bir ST_Geometriye birleştiren ve kesişen bölgelere neden olmayan bir toplama işlevidir

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.