Tôi có một lớp tính năng điểm khá lớn trong cơ sở dữ liệu địa lý tệp (~ 4 000 000 bản ghi). Đây là một lưới điểm thông thường với độ phân giải 100m.
Tôi cần phải thực hiện một loại khái quát trên lớp này. Đối với điều này, tôi tạo một lưới mới trong đó mỗi điểm nằm ở giữa 4 điểm "cũ":
* * * *
o o o
* * * *
o o o
* * * *
[*] = điểm của lưới ban đầu - [o] = điểm của lưới mới
Giá trị thuộc tính của mỗi điểm mới được tính dựa trên các giá trị trọng số của 4 lân cận của nó trong lưới cũ. Do đó, tôi lặp trên tất cả các điểm của lưới mới của mình và đối với mỗi điểm trong số chúng, tôi lặp trên tất cả các điểm của lưới cũ của mình để tìm hàng xóm (bằng cách so sánh các giá trị của X và Y trong bảng thuộc tính). Khi 4 hàng xóm đã được tìm thấy, chúng tôi ra khỏi vòng lặp.
Không có sự phức tạp về phương pháp ở đây nhưng vấn đề của tôi là, dựa trên các thử nghiệm đầu tiên của tôi, kịch bản này sẽ kéo dài trong nhiều tuần để hoàn thành ...
Bạn có thấy bất kỳ khả năng để làm cho nó hiệu quả hơn? Một vài ý tưởng trên đỉnh đầu của tôi:
- Lập chỉ mục các trường X và Y => Tôi đã làm điều đó nhưng không nhận thấy bất kỳ thay đổi hiệu suất đáng kể nào
- Thực hiện một truy vấn không gian để tìm hàng xóm thay vì truy vấn dựa trên thuộc tính. Điều đó thực sự sẽ giúp? Chức năng không gian nào trong ArcGIS nên thực hiện công việc? Tôi nghi ngờ rằng, ví dụ, đệm từng điểm mới sẽ chứng minh hiệu quả hơn
- Chuyển đổi lớp tính năng thành một NumPy Array. Điều đó sẽ giúp? Tôi đã không làm việc nhiều với NumPy cho đến nay và tôi không muốn đi sâu vào nó trừ khi có ai đó nói với tôi rằng nó thực sự có thể giúp giảm thời gian xử lý
- Còn gì nữa không?