2012-11-18 47 views
8

Tôi muốn biết khoảng cách một toạ độ địa lý cụ thể từ danh sách thành phố ('xa' có nghĩa là khoảng cách euclide giữa tọa độ và thành phố, không tính đến đường). Vì điều này tôi cần phải tìm một hộp giới hạn cho mỗi thành phố - tất cả đều nằm ở Israel.Nhận hộp giới hạn của thành phố

This post thảo luận các hộp giới hạn quốc gia, nhưng tôi cần chúng ở cấp thành phố.

Có cách nào để lấy thông tin này cho một danh sách dài các thành phố, ngoài việc vẽ hình chữ nhật bằng tay trên bản đồ và trích xuất tọa độ không?

Trả lời

10

Bạn có thể tìm hộp giới hạn của các thành phố đó tại www.mapdevelopers.com/geocode_bounding_box.php. Nhập một thành phố sẽ hiển thị một hộp trên bản đồ và cung cấp cho các vĩ độ và kinh độ của mỗi bên. Hy vọng rằng sẽ cung cấp cho bạn những thông tin bạn cần.

1

Tôi nghĩ rằng, bạn không cần phải bao quanh hộp, nhưng ranh giới thành phố. Bởi vì với các hộp giới hạn, phân tích của bạn sẽ rất thô, và để có được một hộp giới hạn bạn trước hết cần một ranh giới.

Nếu bây giờ bạn chỉ cần danh sách các thành phố, bạn cần lấy dữ liệu không gian, ranh giới của tất cả các thành phố của bạn. Để tìm dữ liệu này, bạn có thể thử this links. Tôi sẽ đề nghị kiểm tra Open Street Maps. Sau đó, bạn có thể sử dụng bất kỳ phần mềm GIS nào (ví dụ, GIS lượng tử nguồn mở) và tính toán khoảng cách euclide giữa điểm của bạn và ranh giới thành phố.

Hy vọng điều này sẽ hữu ích.

3

Để biết danh sách dài các thành phố, hãy sử dụng Google Geocoding service. Khi bạn đã thiết lập xong, bạn có thể sử dụng bất kỳ ngôn ngữ nào để truy cập REST API. Ví dụ: bạn có thể sử dụng thư viện tiêu chuẩn phổ biến requests cho Python.

Hoặc bạn có thể sử dụng Google Maps riêng của Google Java API, Python API hoặc JavaScript API. Bất kỳ dịch vụ nào trong số này đều chứa dịch vụ Mã hóa địa lý của Google.

Xem một số ví dụ đơn giản về thư viện Python và Java tại đây: https://developers.google.com/maps/documentation/webservices/client-library.

Dưới đây là giản đồ cho kết quả Geocoding:

results[]: { 
types[]: string, 
formatted_address: string, 
address_components[]: { 
    short_name: string, 
    long_name: string, 
    postcode_localities[]: string, 
    types[]: string 
}, 
partial_match: boolean, 
place_id: string, 
postcode_localities[]: string, 
geometry: { 
    location: LatLng, 
    location_type: GeocoderLocationType 
    viewport: LatLngBounds, 
    bounds: LatLngBounds 
} 
} 

Hộp bounding nằm trong biến geometry>viewport và trông như thế này

"viewport" : { 
      "northeast" : { 
       "lat" : 37.4238253802915, 
       "lng" : -122.0829009197085 
      }, 
      "southwest" : { 
       "lat" : 37.4211274197085, 
       "lng" : -122.0855988802915 
      } 
     } 
Các vấn đề liên quan