Cắt bộ dữ liệu đa giác rất lớn trong ArcGIS?


8

Tôi đang cố gắng cắt một tập dữ liệu đa giác lớn (~ 5gb, hàng nghìn tính năng) bằng một tập dữ liệu đa giác nhỏ hơn nhiều (~ 40 tính năng). Có một thực tiễn tốt nhất hoặc tuyến đường hiệu quả nhất để thực hiện nhiệm vụ này?

Clip công cụ địa lý tiêu chuẩn chạy vô thời hạn trên bộ dữ liệu có kích thước này. Một số hình thức lựa chọn không gian và xuất khẩu sẽ hiệu quả hơn?

EDIT : Một số câu trả lời tuyệt vời dưới đây. Tôi đã chọn những gì tôi xem là phản hồi thấu đáo nhất, nhưng mỗi câu trả lời cung cấp cái nhìn sâu sắc độc đáo về vấn đề này. Cảm ơn!


4
Làm thế nào mức độ của bộ dữ liệu nhỏ hơn so với dữ liệu lớn hơn? Nếu các phạm vi rất khác nhau, bạn đã xem xét việc cắt đầu tiên (hoặc chỉ chọn qua giao lộ) tập dữ liệu lớn với phạm vi của tập nhỏ hơn để giảm kích thước của vấn đề?
whuber

2
Cắt bộ dữ liệu đa giác rất lớn trong ArcGIS? Đừng làm điều đó. Sau nhiều năm thử điều này, chúng tôi đã kết thúc việc sử dụng cơ sở dữ liệu và nhận SQL công việc, thời gian là tiền bạc.
Mapperz

@whuber - +1 Các phạm vi khá giống nhau, mặc dù trước đây tôi đã sử dụng phương pháp được đề xuất của bạn.
Radar

Quá tệ ... Tôi đồng ý chân thành với Mapperz. Tôi cũng thấy @dmahr đã đăng một bài trả lời rất hay giúp bạn lén lút tìm giải pháp hoặc giải quyết công việc, nếu có thể. Nó cung cấp một chiến lược tốt để xử lý bất kỳ tập dữ liệu lớn nào bằng bất kỳ phần mềm nào.
whuber

Từ blog này có vẻ như khá có vấn đề trong ArcGIS. donmeltz.com/blog/index.php/2011/06/11/ từ
Nicklas Avén

Câu trả lời:


13

Như mọi khi khi xử lý các vấn đề về khả năng mở rộng, tốt nhất là bắt đầu nhỏ và đơn giản và ổn định theo cách của bạn để trở nên lớn và phức tạp.

Trong trường hợp của clip, nó phải đủ thông minh để xử lý các bộ dữ liệu lớn vì nó xếp chúng trong nội bộ . Nhưng vì nó không hoạt động, hãy thử chạy Clip với tập dữ liệu đầu vào (dữ liệu được cắt) và tập dữ liệu clip (dữ liệu mà clip được thực hiện) với nhiều, nhiều tính năng ít hơn . Giống như một tính năng clip, chỉ có khu vực xung quanh nó trong tập dữ liệu đầu vào (sử dụng truy vấn định nghĩa để thu nhỏ chúng). Đảm bảo rằng nó chạy ổn, và sau đó tăng dần phạm vi của hoạt động xử lý địa lý cho đến khi hiệu suất giảm.

Một vài ý tưởng cụ thể:

  • Hòa tan các tính năng clip thành một lớp tính năng đơn, nhiều phần.

  • Giảm kích thước tệp của các tính năng đầu vào bằng Đơn giản hóa Đa giác . Một bộ dữ liệu vectơ 5 GB là rất lớn - thậm chí một shapefile của tất cả 250.000 nhóm khối Điều tra dân số Hoa Kỳ chỉ khoảng 1GB.

  • Chia các tính năng đầu vào thành các phần. Về mặt lý thuyết, các thói quen ốp lát bên trong công cụ xử lý địa lý nên thực hiện điều này, nhưng bạn không bao giờ biết. Có thể có một số vấn đề giới hạn kích thước tệp 32 bit trong đó bạn không thể có shapefile lớn hơn 2 32 byte = 4,29GB.

Một số mẹo hiệu suất địa lý khác, tổng quát hơn:

  • Đảm bảo cả hai tập dữ liệu có cùng hệ tọa độ. Nếu có thể, sẽ nhanh hơn khi có cả hai trong một hệ tọa độ địa lý không có hình chiếu.

  • Hãy chắc chắn rằng bạn không chạy khỏi ổ đĩa mạng. Sử dụng ổ cứng cục bộ nhanh nhất hoặc, nếu có thể, SSD.

  • Tải tập dữ liệu clip vào bộ nhớ .

  • Xóa các trường thuộc tính không cần thiết (và tham gia lại sau nếu cần).

  • Lời khuyên hiệu suất địa lý khác .


5
+1 Rất đẹp. Tôi có thể đề nghị tiếp cận vấn đề một cách định lượng hơn một chút không? Thay vì chỉ chờ đợi sự suy giảm hiệu suất, hãy tận dụng cơ hội để tính thời gian cho các hoạt động. Ngay cả một cái gì đó thô thiển như xem đồng hồ hệ thống có thể hữu ích. Vẽ thời gian theo kích thước của vấn đề có thể chỉ ra mức độ của nó, cung cấp cho bạn cách ngoại suy nỗ lực cho toàn bộ vấn đề và thậm chí tiết lộ những nơi thay đổi tỷ lệ (ví dụ, bạn nhấn vào tường tài nguyên hoặc thay đổi thuật toán bên trong) . Đó là thông tin dễ dàng để có được và có thể rất hữu ích.
whuber

Tôi hoàn toàn đồng ý với Whuber về điều này. Tôi luôn theo dõi thời gian thực hiện xử lý địa lý, đặc biệt là với các đối tượng timedelta trong Python (khi tôi đang viết kịch bản với ArcPy). Một mẹo khác là sử dụng trình giám sát hệ thống đầy đủ tính năng hơn, như Process Explorer . Điều này có thể cung cấp cho bạn nhiều thông tin hơn về hiệu suất và giúp bạn xác định các tắc nghẽn.
dmahr

7

Một số chức năng ArcGIS như Union và Intersect sử dụng xử lý phân chia thích ứng như được mô tả trong Xử lý lát gạch các bộ dữ liệu lớn . Thật không may, nó xuất hiện như thể Clip không có công cụ xử lý địa lý lớn.

Có vẻ như bạn có thể sao chép khái niệm này thông qua tập lệnh ModelBuilder hoặc Python sử dụng công cụ Split (ArcInfo) để giúp xử lý các bộ dữ liệu quá khổ.


7

Hoặc, bạn có thể từ bỏ ArcGIS và thử thực hiện clip trong OGR. Xem một lời giải thích ở đây . Tôi đã tìm thấy điều này hoạt động khi không có gì khác làm!


1
ogr2ogr -clipsrc clipping_polygon.shp output.shp input.shp Chết tiệt, thật là đẹp.
RK

3

Tôi nghĩ thậm chí chọn theo vị trí sẽ phù hợp với bạn, đầu tiên bạn chọn tất cả các đa giác giao với shapefile nhỏ hơn của bạn và sau đó xóa chúng. hy vọng điều này có thể nhanh hơn. Tôi biết nếu nó làm việc cho bạn. Cảm ơn.


Nói chung không phải là một ý tưởng tồi - nhưng bạn đã đọc các bình luận cho câu hỏi ban đầu chưa? Truy vấn sơ bộ sẽ không làm giảm kích thước của vấn đề nhiều.
whuber

2
Điều này thực sự làm việc cho tôi. Và, nhân tiện, điều này khá khác so với cắt đến mức. Tôi có hai tệp vectơ (một có> 7 triệu tính năng và một tệp khác có ~ 5000) với cùng mức độ, nhưng với ít hơn 1% trong số 7 triệu tính năng đó giao với các tính năng của clip. Tôi đã đợi hơn 8 giờ để clip hoạt động trên bộ dữ liệu đầy đủ ... nó chưa bao giờ kết thúc trước khi tôi từ bỏ. Thay vào đó, tôi đã chọn theo vị trí các tính năng giao nhau, xuất lựa chọn sang lớp tính năng của riêng nó và sau đó chạy clip. Tổng thời gian cho việc này (bao gồm cả lựa chọn): khoảng 1,5 phút.
Tom

Đó là một lựa chọn tốt để cắt điểm theo đa giác như trong trường hợp của tôi. Tôi đã cố gắng cắt khoảng 1 triệu điểm bằng 1 triệu đa giác - hãy để nó chạy trong hai ngày và nó không bao giờ kết thúc. Chọn theo vị trí và xuất được thực hiện trong ít hơn 5 phút. Tôi không biết tại sao tôi không nghĩ đến tùy chọn này ở nơi đầu tiên :-)
Janina
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.