2010-06-04 14 views
6

Tôi đang làm việc với một điểm địa lý sử dụng lat/long và cần tìm các điểm khác trong cơ sở dữ liệu của chúng tôi trong bán kính 8 dặm của điểm đó. Tuy nhiên, tôi dường như không thể tìm ra những gì các "đơn vị" là dành cho STBuffer, nó dường như không phù hợp với bộ, dặm, mét, kilômét vv Các tài liệu chỉ đề cập đến họ là "đơn vị", bất cứ đề nghị ? Cảm ơnCác đơn vị đo khoảng cách .STBuffer() của SQL Server 2008

[...] từ địa lý :: STGeomFromText ('POINT (xy)', 4326) .STBuffer (z) .STIntersects (địa lý :: STGeomFromText ('POINT (' + CAST (v.Longitude as varchar (tối đa)) + '' + CAST (v.Lỗi là varchar (max)) + ')', 4326)) = 1

Trả lời

5

STBuffer tính bằng mét. More info here.

Để chuyển đổi, dặm đến mét, chia đối với số dặm bằng 0,0006213712

(tức là từ 5 dặm/0,0006213712 = 8,046.72 mét)

+2

Weird thuật ngữ "mét" chỉ xuất hiện trong các * dụ *, và không có trong mô tả của 'tham số distance'. –

+0

Khoảng cách tất cả arround thế giới được tính bằng Mét/Kilômét/etc. Tôi nghĩ rằng chỉ có Mỹ vẫn sử dụng hệ thống đế quốc (inch/chân/dặm). – Nordes

9

Đơn vị đo lường phụ thuộc vào hệ thống tham chiếu không gian sử dụng. Xem xem hệ thống này để biết chi tiết:

SELECT * FROM sys.spatial_reference_systems;

+2

Mặc dù câu hỏi ban đầu được chỉ định địa lý, tôi đến đây nhìn chung cho đơn vị đo lường của STBuffer (hình học hoặc địa lý). Để lưu người khác tìm kiếm thêm, đối với hình học, đơn vị đo là hệ tọa độ của hình học. Vì vậy, nếu bạn đang sử dụng Lat/Long, geometry.STBuffer (1) sẽ là 1 mức độ toàn bộ, không phải là 1 mét. 1 độ là rất lớn so - khoảng 69 dặm. –

+0

Chỉ cho bạn thấy rằng nếu bạn đang cố gắng đại diện cho các điểm trên địa cầu, địa lý là loại dữ liệu chính xác để sử dụng (không phải hình học)! –

Các vấn đề liên quan