ArcGIS DesktopまたはQGISの詳細なレイヤーから境界を抽出しますか?


10

ポリゴンレイヤーの境界(外側)境界を返すことはできますか?

簡単にするために、郡レベルに分解した米国の地図があるとしましょう。その地図から国全体の境界地図を返すことはできますか?


つまり、米国の例では、境界ボックスではなく、実際に州の概要を取得するということですか?もしそうなら、郡レイヤーのディゾルブはどうですか?
Chad Cooper

@チャドクーパー-レイヤーを解散しても、郡と州の行が表示されます。
dassouki、2010年

回答:


6

郡レイヤーでディゾルブを実行できます(ディゾルブする郡だけを選択してください)。


いくつかの内部行がまだディゾルブに表示されています。
dassouki 2010年

3
内部ラインを削除するために2回バッファリングできますか?外に出て線を「食べ」、次に元に戻して元のサイズに戻します。
mwalker 2010年

何らかの理由でこれはうまくいきました。私はそれがソリューションの「最もハッキリした」ものであることを知っていますが、これは線を取り除く唯一のソリューションでした
dassouki

1
+1これは実際には素晴らしいソリューションです。これは、コンポーネントポリゴンの小さなスライバーとオーバーラップに対応することで機能します(ソフトウェアの多くの固有のバグも克服します)。
whuber

1
私はmwalkerのアドバイスを使用して、その後バッファリングしました。それを回答に含めることができれば幸いです。
dassouki、2010年

4

GRASSモジュールを使用できますv.dissolve 。データをGRASSにインポートするだけです。これは、QGis内からGrassにデータを転送する画面キャストです。


3

自分のプロジェクトを接続できるようにします... 境界ジェネレーターは、すべてのポリゴンの外部境界と内部境界の両方を(ラインフィーチャとして)提供します。

内部境界は、その境界を共有する2つのポリゴンそれぞれのFIDに起因します。外部境界は、これら2つのうちの1つについてFIDがゼロであるべきであり、その結果、完全な結果から簡単に選択できます。

ディゾルブを実行するのと比較して良い点は、精度を上げるためにいくつかのノブを追加したので、完全ではないデータを処理できることです。(2つのポリゴン境界線を共有境界線と見なすにはどのくらい離れている必要がありますか?どれくらいの角度偏差が必要ですか?)

まだアルファ版であり、アップデートに取り組んでからしばらく経ちました。どれだけ効果があるか聞いてみたい!


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

境界がシームレスではないため、ディゾルブを実行するときに線が表示されます。

ソフトウェア製品に関係なく、以下を実行します。

でください統合します代替テキスト

次に、溶解を行います。 代替テキスト


私はこれを数回試しましたが、うまくいきませんでした:(、いくつかのポリゴンを失い続け、非常に小さな許容値と非常に大きな許容値も使用しました
dassouki

1

これは良い考えですが、その解決策はこのような方法ではうまくいかないでしょう。これは、長方形、円、楕円、凸多角形など、フィーチャを含む形状のクラスの最小のメンバーを見つけることにより、フィーチャに関する追加の幾何学的情報を提供することを目的としています。結果は常に形状を含むものの1つです。一般に、その境界に目的の形状がすでにない限り、元の形状と正確には一致しません。
whuber

1

これは古い質問であることはわかっていますが、今見つけた答えは前回の質問以降に導入されたものだと思いますので、検索で見つけた人のために共有します。

QGIS(少なくともバージョン2.14以降)では、QGIS地理アルゴリズム>ベクトルジオメトリツールの下の[処理]ツールボックスに「穴を埋める」機能があります。図形をディゾルブしてから、最大領域パラメータを非常に高く設定して穴埋めを実行すると、この問題が解決することがわかりました。


0

以前はDROPLINE機能と呼ばれていたものを探している場合もあります。

これは、ArcInfo WorkstationからArcGIS Desktopへの移行後も存続しませんでしたが、現在、ArcGISのアイデアにより、復元することができます。

指定されたフィールドに同じ値を持つポリゴン間のラインをドロップするオプションがあると便利です。この機能は、以前はArcPlotでDROPLINEコマンドとして利用可能でしたが、dissolveコマンドで新しいデータセットを作成しないようにする方法として広く使用されていました。


0

ST_UNIONQGIS DBマネージャーからPostGIS の関数を使用して、レイヤー内のすべてのポリゴン(または多くのポリゴングループをより大きなポリゴンに)を集約できます。ドキュメントから:

バリアント2は、一連の形状を取り、それらを単一のST_Geometryに結合して、交差する領域がない集約関数です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.