Tìm lat lat gần nhất với lat lat đầu vào (SQL Server 2008)


12

Tôi có một đám mây điểm trong cơ sở dữ liệu của mình (không gian SQL Server 2008). Đó là khoảng 6 triệu hồ sơ. Có 3 cột: id, value, geom. Cách tối ưu để nhận được 'giá trị' ở đầu vào lâu là gì ??

Tôi chưa quen với các truy vấn không gian trong SQL Server 2008. Ai đó có thể đăng một ví dụ đơn giản về việc tìm điểm trong cột geom, khớp hoặc gần nhất từ ​​lat đầu vào lâu không?



Tôi đã thử. Nhưng có 6 triệu hồ sơ và tạo chỉ mục thất bại với các lý do khác nhau. Bây giờ tôi đang cố gắng tạo một bảng trống, thêm chỉ mục không gian trên geom và sau đó thêm dữ liệu. có hoạt động không
Shaunak

Bạn đang gặp phải lỗi gì? Một chỉ mục có thể làm chậm quá trình tải xuống rất nhiều, vì nhiều hàng tôi nghĩ rằng việc thêm một chỉ mục sau khi tải sẽ nhanh hơn rất nhiều. Hiệu suất sẽ phụ thuộc rất lớn vào chỉ số, vì vậy nó đáng để làm đúng.
Kirk Kuykendall

Câu trả lời:



4

Điều này sử dụng Địa lý không phải Hình học (nếu dữ liệu là Lat / Lng, dữ liệu của bạn phải là Loại Địa lý không phải Hình học)

"Kiểu dữ liệu địa lý của SQL Server lưu trữ dữ liệu ellipsoidal (trái đất tròn), chẳng hạn như tọa độ vĩ độ và kinh độ GPS."

Để chọn 5 bản ghi gần nhất từ ​​điểm lat / lng (-122.0 37.0) bạn có thể sử dụng.

SELECT   TOP 5
         geography::STGeomFromText('POINT(-122.0 37.0)', 4326).STDistance(p) 
FROM     markers
WHERE    geography::STGeomFromText('POINT(-122.0 37.0)', 4326).STDistance(p) < 25
ORDER BY geography::STGeomFromText('POINT(-122.0 37.0)', 4326).STDistance(p);

P là gì xin lỗi tôi là một bie mới đó là lý do tại sao hỏi
Shax

KHAI THÁC @p địa lý
Andrew Hill
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.