Trích xuất ranh giới từ các lớp chi tiết trong ArcGIS Desktop hoặc QGIS?


10

Có thể trả về chu vi ranh giới (bên ngoài) của một lớp đa giác không?

Giả sử bạn có bản đồ của Hoa Kỳ, vì đơn giản, được chia thành cấp quận, có thể trả lại bản đồ ranh giới của cả nước từ bản đồ đó không?


Vì vậy, trong trường hợp ví dụ của Hoa Kỳ, bạn có nghĩa là thực sự có được phác thảo của các tiểu bang, KHÔNG phải là hộp giới hạn, phải không? Nếu vậy, làm thế nào về một sự hòa tan của lớp hạt?
Chad Cooper

@Chad Cooper - khi tôi hòa tan lớp này, tôi vẫn nhận được một số dòng hiển thị cho các hạt và tiểu bang.
dassouki

Câu trả lời:


6

Bạn chỉ có thể thực hiện hòa tan trên lớp quận (hãy chắc chắn chỉ có các hạt bạn muốn giải thể được chọn).


Tôi đang nhận được một số dòng nội bộ vẫn hiển thị trong hòa tan.
dassouki

3
Bạn có thể đệm hai lần để loại bỏ các dòng nội bộ? Ra ngoài, để "ăn" các dòng, sau đó quay lại, để khôi phục kích thước ban đầu.
mwalker

vì một số lý do, điều này đã làm việc Tôi biết đó là giải pháp "khó tin" nhất, nhưng đây là giải pháp duy nhất thoát khỏi giới hạn
dassouki

1
+1 Đây thực sự là một giải pháp tuyệt vời. Nó hoạt động bằng cách cung cấp các phần tử nhỏ và chồng chéo trong các đa giác thành phần (và cũng khắc phục được nhiều lỗi cố hữu trong phần mềm).
whuber

1
Tôi đã sử dụng lời khuyên của mwalker để đệm ra. Tôi hy vọng bạn có thể đưa nó vào câu trả lời của bạn.
dassouki

4

Bạn có thể sử dụng mô-đun GRASS: v.dissolve Bạn chỉ cần nhập dữ liệu của mình vào GRASS. Đây là một màn hình chuyển dữ liệu của bạn sang Grass từ bên trong QGis.


3

Cho phép tôi cắm dự án của riêng mình ... Trình tạo ranh giới sẽ cung cấp cho bạn cả ranh giới bên ngoài và bên trong của mọi đa giác (dưới dạng các tính năng đường).

Các ranh giới bên trong được quy cho FID cho mỗi trong số hai đa giác có chung đường viền đó. Các ranh giới bên ngoài nên có FID bằng 0 cho một trong hai, vì vậy chúng dễ dàng được chọn trong số kết quả đầy đủ.

Điều hay ho của nó so với việc làm tan biến là tôi đã thêm một vài nút trên độ chính xác để nó có thể xử lý dữ liệu không hoàn hảo. (Hai đường viền đa giác nên cách nhau bao xa để được coi là đường viền chung? Cần bao nhiêu độ lệch góc?)

Nó vẫn ở dạng alpha và đã được một thời gian kể từ khi tôi xử lý một bản cập nhật; Tôi muốn nghe làm thế nào nó hoạt động tốt cho bạn!


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

Dòng nhận của bạn khi bạn thực hiện hòa tan vì các ranh giới không liền mạch.

Bất kể sản phẩm phần mềm, hãy làm như sau:

Làm một tích hợp . văn bản thay thế

Sau đó làm một giải thể . văn bản thay thế


Tôi đã thử điều này nhiều lần và nó không hoạt động :(, tôi liên tục mất một số đa giác, tôi đã sử dụng một dung sai rất nhỏ và cũng rất lớn
dassouki

1

Có vẻ như mẫu Bounding Container được đăng trên arcgis.com sẽ hoạt động cho những gì bạn muốn.


Đây là một suy nghĩ tốt, nhưng giải pháp đó khó có thể hoạt động trong sự hợp nhất này. Nó được dự định cung cấp thêm thông tin hình học về các tính năng bằng cách tìm thành viên nhỏ nhất của một lớp hình có chứa các tính năng, chẳng hạn như hình chữ nhật, hình tròn, hình elip hoặc đa giác lồi. Kết quả luôn là một trong những hình chứa. Nói chung, nó sẽ không trùng khớp chính xác với hình dạng ban đầu trừ khi ranh giới đó đã có hình dạng mong muốn.
whuber

1

Tôi biết đây là một câu hỏi cũ, nhưng tôi nghĩ rằng câu trả lời tôi vừa tìm được đã được giới thiệu từ những câu hỏi trước ở đây, vì vậy tôi đang chia sẻ nó cho những người tìm thấy câu hỏi này trong một tìm kiếm.

QGIS (ít nhất là phiên bản 2.14), có "Fill Holes" trong hộp công cụ Xử lý, dưới thuật toán địa lý của QGIS> Công cụ hình học Vectory. Tôi thấy rằng các hình dạng hòa tan và sau đó chạy Fill Holes với tham số vùng Max được đặt rất cao sẽ giải quyết vấn đề này.


0

Bạn cũng có thể đang tìm kiếm cái được gọi là chức năng DROPLINE.

Mặc dù nó không tồn tại trong quá trình chuyển đổi ArcInfo Workstation sang ArcGIS Desktop, nhưng hiện tại có một ý tưởng ArcGIS để khôi phục nó:

Sẽ thật tuyệt nếu có tùy chọn thả các dòng giữa các đa giác có cùng giá trị cho một trường được chỉ định. Chức năng này từng có sẵn trong ArcPlot dưới dạng lệnh DROPLINE và được sử dụng rộng rãi như một cách để tránh tạo bộ dữ liệu mới bằng lệnh hòa tan.


0

Bạn có thể sử dụng ST_UNIONhàm trong PostGIS từ QGIS DB Manager để tổng hợp tất cả các đa giác trong lớp (hoặc nhiều nhóm đa giác thành đa giác lớn hơn). Từ tài liệu:

Biến thể 2 là một hàm tổng hợp lấy một tập hợp các hình học và hợp nhất chúng thành một ST_Geometry duy nhất dẫn đến không có các vùng giao nhau

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.