Có, luôn luôn dự đoán tọa độ để dao động.
Mặc dù việc xây dựng không phải là khả năng thay đổi trên bề mặt trái đất, sử dụng tọa độ như định danh / phím cho các địa chỉ là một ý tưởng tồi vì tập dữ liệu là sẽ di chuyển từ bên dưới bạn:
Độ chính xác một vấn đề của định nghĩa. Là một địa chỉ được ghim chính xác nhất vào hộp thư của nó, hoặc cấu trúc lớn nhất của nó, hoặc cửa trước? Cửa trước nào? Có lẽ đường lái xe?
Độ chính xác thập phân là một mối quan tâm khác. Có 33.754208
giống như 33.754209
? Điều này có thể được khắc phục bằng cách làm tròn, nhưng sau đó bạn mất độ chính xác. Thêm độ chính xác thập phân là một xa xỉ bạn có thể không có. Cho dù số thập phân của bạn chính xác đến mức nào, chúng vẫn có thể khác nhau (đặc biệt là xem xét cách máy tính so sánh các loại float) ngay cả khi chúng "giống nhau". Tại thời điểm này, bạn hoàn toàn phụ thuộc vào chi tiết triển khai cấp thấp.
Khi bạn không kiểm soát tập dữ liệu và bạn đang sử dụng thuộc tính vật lý để khóa thứ gì đó, bạn không thể đảm bảo rằng khóa sẽ không thay đổi. Nhưng đó là một vấn đề bởi vì cơ sở dữ liệu của bạn hy vọng định danh là duy nhất và không đổi. Ngay cả khi bạn cập nhật nó, những gì về va chạm với một điểm dữ liệu khác?
Ngay cả khi bạn sở hữu tập dữ liệu, bạn vẫn phải chịu hai vấn đề đầu tiên. Định nghĩa và thực hiện thay đổi. Bạn không bao giờ có thể cập nhật dữ liệu tọa độ của mình, thậm chí để có "độ chính xác" tốt hơn, nhưng địa chỉ vẫn thay đổi dù bạn có thích hay không, làm mất hiệu lực bộ đệm của bạn.
Những gì bạn có thể làm, mặc dù, là sở hữu chìa khóa . Đừng sử dụng tọa độ làm định danh; thay vào đó, chỉ định một khóa được đảm bảo là duy nhất trên ứng dụng của bạn ( hoặc có thể là thế giới ) và đừng bao giờ để nó thay đổi.
Tại SmartyStreets, tôi xử lý rất nhiều địa chỉ mã hóa địa lý. Ví dụ, địa chỉ đó là một mặc định của tòa nhà. Nó thiếu một số thứ cấp (căn hộ / bộ). Mặc dù dữ liệu của chúng tôi ở cấp độ khối (gần tầng thượng), nhưng nếu chúng tôi có thể nhận được chính xác nhất có thể, thì tọa độ của nó sẽ là gì? Ngay bây giờ, chúng tôi chỉ định nó 33.75425, -84.38721
chỉ cách nơi Google Maps đặt nó vài bước chân. Nó có nên là một tọa độ khác nếu nó là sảnh so với một đơn vị trong tòa nhà đó? Câu trả lời cho câu hỏi đó có thể thay đổi, do đó thay đổi tập dữ liệu cơ bản. Và những gì về các đơn vị ở ngay trên nhau (bạn có thể ghim một điểm trong tòa nhà, nhưng ý bạn là tầng nào)? Google rõ ràng đi qua chính xác các câu hỏi và nếu câu trả lời thay đổi, thì tọa độ cũng vậy.
Vì vậy, chúng tôi luôn khuyên mọi người nên cung cấp cho địa chỉ một khóa mà họ kiểm soát để xác định duy nhất địa chỉ đó và không bao giờ thay đổi địa chỉ đó.
Tại sao?
Địa chỉ là một mớ hỗn độn. Họ cũng có thể thay đổi, đặc biệt nếu bạn bắt đầu hỏi những câu hỏi triết học về "Địa chỉ thực sự có ý nghĩa gì? Nó có đại diện cho một tòa nhà hoặc cư dân không? Hoặc một hộp thư?" và khi bạn bắt đầu coi địa chỉ đó là tạm thời, nghĩa là chúng thay đổi theo thời gian, nó thậm chí còn xấu hơn.
Chúng tôi cũng nghe thấy những người cố gắng băm địa chỉ hoặc sử dụng mã vạch điểm giao hàng làm định danh. Đừng làm điều đó, bởi vì ngay cả trong một định dạng chuẩn, các địa chỉ vẫn có thể thay đổi và vẫn là địa chỉ "giống nhau". Và mã vạch điểm giao hàng, được cho là nhầm lẫn là duy nhất cho một địa chỉ, đôi khi có lỗi: nó thay đổi và không nhất thiết phải là duy nhất. Thật tuyệt phải không?
tl; dr Làm cho cơ sở dữ liệu của bạn dựa ít nhất có thể vào địa chỉ và tọa độ thực tế.