6

Tôi đã thấy nhiều thư viện "mã hóa địa lý đảo ngược" bằng nhiều ngôn ngữ khác nhau; tất cả phụ thuộc vào việc gọi một nhà cung cấp bên ngoài thông qua REST hoặc một số phương pháp tương tự. Tuy nhiên, bạn không thể gọi nhà cung cấp REST nếu bạn phải xử lý hàng nghìn yêu cầu mỗi giây.Có thư viện Java hiện có nào cho phép bạn thực hiện tra cứu nhanh chóng, trong bộ nhớ mã zip (tiền thưởng, tiểu bang và thành phố) từ vĩ độ/kinh độ không?

Mặt khác, sự cố phải đơn giản để giải quyết - Cơ sở dữ liệu dựa trên CSV có sẵn miễn phí với thông tin này. Vấn đề là thời gian và chi phí của việc viết một thực hiện tìm kiếm trong bộ nhớ hiệu quả và được thử nghiệm tốt, so với việc tải xuống hoặc mua một cái hiện có.

Tôi không thể tìm thấy bất kỳ nội dung nào sau nhiều lần tìm kiếm nhưng tôi không thể tin rằng không thể có. Có thư viện được viết trước nào thực hiện điều này không?

Câu hỏi này:

Fastest way to find the location(zip, city, state) given latitude/longitude

đến gần nhất, nhưng về cơ bản chỉ ra làm thế nào để ghi các giải pháp, không phải là có điều gì có sẵn khỏi kệ. Nhưng phải có một số thư viện tất cả mọi người sử dụng cho việc này. Hàng chục người mỗi ngày phải có vấn đề này.

+0

@birryree, nhận xét dành cho nhận xét. Nếu bạn muốn đánh dấu câu hỏi, hãy sử dụng tính năng câu hỏi yêu thích (nhấp vào dấu sao). –

Trả lời

3

Cơ sở dữ liệu không gian (ví dụ: Postgresql với PostGis) sử dụng thuật toán nhanh chóng tìm kiếm dữ liệu cho thông tin vĩ độ/kinh độ đã cho. Khi bạn muốn sử dụng một thư viện Java và có nó trong bộ nhớ, bạn có thể xem H2 Spatial database. Tôi chưa bao giờ sử dụng nó, vì vậy tôi không thể bình luận về hiệu suất của nó.

Chỉnh sửa: Hm, nhìn kỹ hơn vào liên kết tôi đã cung cấp cho thấy đây là tính năng được lên kế hoạch ... Cá nhân tôi chỉ đơn giản sử dụng Postgresql/PostGis (có hoặc không có Java làm giao diện người dùng) và được thực hiện với nó . Nếu máy chủ của bạn có đủ bộ nhớ, máy chủ sẽ vẫn đáp ứng yêu cầu "trong bộ nhớ". Đương nhiên nó không phù hợp với yêu cầu của thư viện Java. Tuy nhiên có JSI, có thể được sử dụng trong bộ nhớ và với Java.

+0

Thiết lập và duy trì postgres chỉ để giải quyết vấn đề này sẽ là không thể trong tình huống của tôi. :( JSI trông khá hứa hẹn! Mọi người đều có sẵn danh sách ZIP/city/state/etc miễn phí với tọa độ vĩ độ/dài của chúng, chứ không phải là hình chữ nhật, vì vậy tìm kiếm điểm-tới-điểm thay vì tìm kiếm hình chữ nhật Nó có thể thích nghi ... nhưng vẫn ... phải thích ứng với một thứ như vậy, tạo ra hàng nghìn hình chữ nhật nhỏ xíu? Có thực sự là không có giải pháp đóng gói sẵn có trên thị trường không? –

+1

Vâng, thư viện JSI hoạt động hoàn toàn tốt với các điểm, chỉ cần sử dụng một hình chữ nhật có kích thước bằng không (tức là đặt minY = maxY và minX = maxX). Trên thực tế, ban đầu nó được dự định để thêm hỗ trợ 'nguyên gốc' cho điểm, nhưng hiệu suất là đủ tốt bằng cách sử dụng hình chữ nhật mà nó là không bao giờ cần thiết – Aled

+0

cảm ơn đã chỉ cho tôi để JSI.bạn cũng có thể tìm kiếm quadtree hoặc rtree và java + Tôi đã thực hiện một số công việc nhưng bây giờ tôi biết rằng tôi có thể đã làm tốt hơn và chưa có thời gian để thực hiện các thủ thuật này: https://karussell.wordpress.com/2012/05/29/tricks-to-speed-up-neighbor-searches-of-quadtrees-geo-spatial -java / – Karussell

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