Ok, tôi phải thừa nhận, tôi không thực sự đi sâu vào ngữ nghĩa của danh sách các nhà khai thác không gian bên dưới, tôi là người dùng nhiều hơn, tôi viết phần mềm để điều khiển SQL hầu hết thời gian và không thực sự nghĩ về nó quá nhiều
Tuy nhiên, tôi có một tình huống mà một hoạt động không gian tôi đang làm là làm chậm con chó, trên một cái bàn có các chỉ số tuyệt vời và chưa bao giờ gây ra vấn đề trước đây.
Kết quả là, tôi đang cố gắng tìm ra cách nào sau đây là cách tốt nhất để sử dụng, điều đó sẽ mang lại cho tôi hiệu suất tốt nhất, tuy nhiên, đôi khi tôi thấy các tìm kiếm của mình không trả về bất cứ điều gì khi tôi biết, và đôi khi trả lại công cụ khi họ không nên.
Vì tôi đang tiếp cận, để hỏi xem ai đó có thể cho tôi định nghĩa thực tế không, chẳng hạn như tiêu chí phù hợp, hoàn toàn trong hình học kèm theo, hoặc trong vòng ngoài, v.v. của từng thao tác sau:
Equals(Geom1, Geom2):int
Disjoint(Geom1, Geom2):int
Touches(Geom1, Geom2):int
Within(Geom1, Geom2):int
Overlaps(Geom1, Geom2):int
Crosses(Geom1, Geom2):int
Intersects(Geom1, Geom2):int
Contains(Geom1, Geom2):int
Relate(Geom1, Geom2):int
Nếu bạn có thể đưa ra một ví dụ cụ thể về thời điểm họ sẽ và sẽ không khớp nhau, điều đó sẽ rất tuyệt.
Để tham khảo, tôi đang tìm kiếm trên bảng Linestrings, sử dụng đa giác hình chữ nhật, được xoay để chỉ theo hướng di chuyển (Đây là một phần của ứng dụng quản lý giao thông)
Để tham khảo thêm, đây là một mẫu SQL mà ứng dụng tạo ra để thực hiện tìm kiếm:
SELECT recordID,AsBinary(geometry) AS geometry,Distance(GeomFromText('POINT(-1.84101 54.85078)',4326), geometry) AS distanceFromGps FROM linegrid WHERE Intersects(GeomFromText('POLYGON ((-1.8413149820810311 54.850782468607292, -1.8409507853094111 54.850952257034713, -1.8408279009723911 54.850864894077496, -1.8411920982612455 54.850695105650068, -1.8413149820810311 54.850782468607292))'), geometry)
Bạn có thể thấy trong ví dụ này, tôi đang sử dụng các giao điểm đang thử những cái khác như đã đề cập không hoàn toàn cho kết quả mà tôi mong đợi, do đó tôi đang đặt câu hỏi.
Xin lưu ý, hiện tại tôi không bận tâm lắm về cách thực hiện nhanh hơn / các cách khác để thực hiện việc này, NHƯNG nếu bạn tình cờ phát hiện ra một cách tốt hơn, hãy thoải mái hét lên :-)
Hiện tại, tất cả những gì tôi đang cố gắng hiểu là sự khác biệt giữa mỗi hoạt động.
Để làm điều đó nhanh hơn / tốt hơn, tôi dự định sẽ mở một câu hỏi khác cho câu hỏi đó vào một ngày sau đó.
Để tham khảo thêm, công cụ Spatial mà nó đang hoạt động là Spatilite 2.3.0 và tôi không thể nâng cấp nó do các thiết bị đang chạy không có bản dựng cập nhật hơn cho nó (Windows CE)
Tôi sẽ chọn câu trả lời của mintix ở đây vì nó cung cấp một lưới siêu dễ hiểu và mô tả về tất cả các hoạt động khác nhau, đã trả lời câu hỏi của tôi.
Tôi vẫn phải đối mặt với việc đạt được hiệu suất theo thói quen, nhưng hiện tại tôi có một vài chiến lược để thử nó, tôi vẫn có thể tìm kiếm lời khuyên ở đây từ nhóm liên quan đến điều đó.
@Vince cũng xứng đáng nhận được một số tín dụng, vì tờ giấy trắng đó chắc chắn là câu trả lời dứt khoát, nhưng nó cũng khá khó đọc (tôi đã phải đọc qua nó nhiều lần), đối với bất kỳ ai muốn tôi thực sự trong các hoạt động này Giấy Clementini là Cách đi, nếu bạn cần một cái nhìn tổng quan dễ hiểu trong khi phát triển các giải pháp, tuy nhiên, liên kết FME sẽ được mở trong một tab trình duyệt khác.