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?
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?
Câu trả lời:
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).
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!
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;
}
}
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 .
Sau đó làm một giải thể .
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.
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.
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.
Bạn có thể sử dụng ST_UNION
hà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