Lấy mã zip từ vĩ độ và kinh độ python

Viết chương trình Python để tìm thông tin chi tiết của một mã zip nhất định bằng API Nominatim và gói GeoPy

Giải pháp mẫu

Mã Python

from geopy.geocoders import Nominatim
geolocator = Nominatim[user_agent="geoapiExercises"]
zipcode1 = "99501"
print["\nZipcode:",zipcode1]
location = geolocator.geocode[zipcode1]
print["Details of the said pincode:"]
print[location.address] 
zipcode2 = "CA9 3HX"
print["\nZipcode:",zipcode2]
location = geolocator.geocode[zipcode2]
print["Details of the said pincode:"]
print[location.address] 
zipcode3 = "61000"
print["\nZipcode:",zipcode3]
location = geolocator.geocode[zipcode3]
print["Details of the said pincode:"]
print[location.address] 
zipcode4 = "713101"
print["\nZipcode:",zipcode4]
location = geolocator.geocode[zipcode4]
print["Details of the said pincode:"]
print[location.address]

Đầu ra mẫu

Zipcode: 99501
Details of the said pincode:
Anchorage, Alaska, 99501, USA

Zipcode: CA9 3HX
Details of the said pincode:
Alston Moor, CA9 3HX, UK

Zipcode: 61000
Details of the said pincode:
Alençon, Normandie, France métropolitaine, 61000, France

Zipcode: 713101
Details of the said pincode:
Purba Bardhaman, West Bengal, 713101, India

Trình chỉnh sửa mã Python


Có một cách khác để giải quyết giải pháp này?

Trước. Viết chương trình Python để tìm kiếm tên quốc gia từ tên tiểu bang đã cho bằng API Nominatim và gói GeoPy.
Tiếp theo. Viết chương trình Python để tìm vĩ độ và kinh độ của một vị trí nhất định bằng API Nominatim và gói Geopy.

Mức độ khó của bài tập này là gì?

Dễ dàng trung bình khó

Kiểm tra kỹ năng Lập trình của bạn với bài kiểm tra của w3resource



Chia sẻ Hướng dẫn / Bài tập này trên. FacebookTwitter

con trăn. Lời khuyên trong ngày

Đơn giản hóa cách bạn thu gọn các danh sách lồng nhau

x = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]
x

đầu ra

[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
result = []
for sublist in x:
    for item in sublist:
        result.append[item]
result

đầu ra

[1, 2, 3, 4, 5, 6, 7, 8, 9]
[item for sublist in x for item in sublist]

đầu ra

[1, 2, 3, 4, 5, 6, 7, 8, 9]
import itertools
itertools.chain[*x]

đầu ra

Zipcode: 99501
Details of the said pincode:
Anchorage, Alaska, 99501, USA

Zipcode: CA9 3HX
Details of the said pincode:
Alston Moor, CA9 3HX, UK

Zipcode: 61000
Details of the said pincode:
Alençon, Normandie, France métropolitaine, 61000, France

Zipcode: 713101
Details of the said pincode:
Purba Bardhaman, West Bengal, 713101, India
0

đầu ra

[1, 2, 3, 4, 5, 6, 7, 8, 9]
Đang tải

  • bài tập. Top 16 chủ đề phổ biến nhất hàng tuần
  • Bài tập SQL, Thực hành, Lời giải - THAM GIA
  • Bài tập, Thực hành, Giải pháp SQL - SUBQUERIES
  • JavaScript cơ bản - Bài tập, Thực hành, Lời giải
  • Mảng Java. Bài tập, Luyện tập, Lời giải
  • Bài Tập Lập Trình C, Thực Hành, Lời Giải. Tuyên bố có điều kiện
  • Cơ sở dữ liệu nhân sự - SORT FILTER. Bài tập, Thực hành, Lời giải
  • Bài Tập Lập Trình C, Thực Hành, Lời Giải. Sợi dây
  • Kiểu dữ liệu Python. Từ điển - Bài tập, Thực hành, Lời giải
  • Câu đố lập trình Python - Bài tập, Thực hành, Giải pháp
  • Mảng C++. Bài tập, Luyện tập, Lời giải
  • Câu lệnh điều kiện và vòng lặp JavaScript - Bài tập, Thực hành, Lời giải
  • Thuật toán cơ bản C# Sharp. Bài tập, Luyện tập, Lời giải
  • Python Lambda - Bài tập, Thực hành, Giải pháp
  • Khung dữ liệu Python Pandas. Bài tập, Thực hành, Lời giải
  • Công cụ chuyển đổi
  • JavaScript. Xác thực biểu mẫu HTML

Kinh độ và vĩ độ là những thước đo tuyệt vời để có được vị trí tương đối chính xác của các quan sát, nhưng đôi khi những tọa độ này không đủ để nói lên những câu chuyện. Làm thế nào chúng ta có thể dễ dàng chuyển đổi các biện pháp này thành một cái gì đó có ý nghĩa hơn?

địa lý

Chúng ta có thể làm nhiều thứ với các tọa độ này bằng thư viện Geopy. Geopy có thể tính toán khoảng cách giữa các điểm khác nhau, nó cũng có thể thay mặt chúng tôi thực hiện lệnh gọi API để lấy thông tin về các tọa độ này

Lấy thông tin địa chỉ

Đầu tiên, chúng ta sẽ nói về việc lấy các thông tin như mã bưu chính [zip code], thành phố, vùng lân cận, v.v. Geopy có thể thực hiện các yêu cầu API tới Nominatim [một phần mềm mã hóa địa lý được sử dụng cho OpenStreetMap], Google Maps, Bing Maps và nhiều phần mềm khác. Một điều cần lưu ý là Geopy không cung cấp thông tin này mà chỉ giúp người dùng kết nối với họ, vì vậy điều quan trọng là người dùng phải hiểu các điều khoản, giá cả và giới hạn của từng API. Nominatim, phổ biến cho các dự án quy mô nhỏ, là một tùy chọn miễn phí cho phép một số lượng yêu cầu hạn chế. Vui lòng xem tại đây để biết chính sách sử dụng API của Nominatim

Nếu bạn cần sử dụng các API khác, có thể bạn sẽ cần lấy khóa API trực tiếp từ nhà cung cấp API

Cài đặt Geopy

Điều đầu tiên cần làm là cài đặt Geopy

Zipcode: 99501
Details of the said pincode:
Anchorage, Alaska, 99501, USA

Zipcode: CA9 3HX
Details of the said pincode:
Alston Moor, CA9 3HX, UK

Zipcode: 61000
Details of the said pincode:
Alençon, Normandie, France métropolitaine, 61000, France

Zipcode: 713101
Details of the said pincode:
Purba Bardhaman, West Bengal, 713101, India
2

Thiết lập kết nối

Chúng tôi cần thiết lập kết nối với API bằng cách thiết lập bộ mã hóa địa lý. Trước tiên hãy nhập trình mã hóa địa lý bạn muốn sử dụng và khởi tạo nó

Zipcode: 99501
Details of the said pincode:
Anchorage, Alaska, 99501, USA

Zipcode: CA9 3HX
Details of the said pincode:
Alston Moor, CA9 3HX, UK

Zipcode: 61000
Details of the said pincode:
Alençon, Normandie, France métropolitaine, 61000, France

Zipcode: 713101
Details of the said pincode:
Purba Bardhaman, West Bengal, 713101, India
3

Đối với các API khác, bạn có thể cần nhập các tham số khác như tên người dùng/mật khẩu, khóa API, v.v. Mời các bạn tham khảo tài liệu

Bộ giới hạn tốc độ [tùy chọn]

Giống như khi chúng tôi trực tiếp thực hiện lệnh gọi API, chúng tôi muốn đảm bảo rằng chúng tôi không làm quá tải phía máy chủ với các yêu cầu của chúng tôi. Bộ giới hạn tốc độ cho phép bạn thêm một số độ trễ giữa các cuộc gọi

Zipcode: 99501
Details of the said pincode:
Anchorage, Alaska, 99501, USA

Zipcode: CA9 3HX
Details of the said pincode:
Alston Moor, CA9 3HX, UK

Zipcode: 61000
Details of the said pincode:
Alençon, Normandie, France métropolitaine, 61000, France

Zipcode: 713101
Details of the said pincode:
Purba Bardhaman, West Bengal, 713101, India
4

Lấy thông tin địa chỉ

Bây giờ chúng ta đã thiết lập kết nối, hãy thử truy xuất thông tin bằng tọa độ

Zipcode: 99501
Details of the said pincode:
Anchorage, Alaska, 99501, USA

Zipcode: CA9 3HX
Details of the said pincode:
Alston Moor, CA9 3HX, UK

Zipcode: 61000
Details of the said pincode:
Alençon, Normandie, France métropolitaine, 61000, France

Zipcode: 713101
Details of the said pincode:
Purba Bardhaman, West Bengal, 713101, India
5

Các đối tượng vị trí có các thể hiện của địa chỉ, độ cao, vĩ độ, kinh độ, điểm.

x = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]
x
1 trả về một chuỗi nối của tất cả thông tin thuộc về địa chỉ. Điều này có thể bao gồm hoặc không bao gồm thông tin như tiện nghi, đường, khu phố, khối thành phố, vùng ngoại ô, quận, thành phố, tiểu bang, mã bưu điện, quốc gia, mã quốc gia. Chúng ta có thể xem xét trực tiếp hơn cấu trúc thông tin bằng cách sử dụng ví dụ
x = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]
x
2

Zipcode: 99501
Details of the said pincode:
Anchorage, Alaska, 99501, USA

Zipcode: CA9 3HX
Details of the said pincode:
Alston Moor, CA9 3HX, UK

Zipcode: 61000
Details of the said pincode:
Alençon, Normandie, France métropolitaine, 61000, France

Zipcode: 713101
Details of the said pincode:
Purba Bardhaman, West Bengal, 713101, India
6

Một lần nữa, mỗi API sẽ có một kiến ​​trúc khác nhau, vì vậy bạn nên luôn kiểm tra phiên bản thô. Từ từ điển thô này, chúng tôi có thể lấy thông tin chúng tôi muốn. Trong trường hợp này, hãy trích xuất mã bưu chính, được lồng trong

x = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]
x
1

Zipcode: 99501
Details of the said pincode:
Anchorage, Alaska, 99501, USA

Zipcode: CA9 3HX
Details of the said pincode:
Alston Moor, CA9 3HX, UK

Zipcode: 61000
Details of the said pincode:
Alençon, Normandie, France métropolitaine, 61000, France

Zipcode: 713101
Details of the said pincode:
Purba Bardhaman, West Bengal, 713101, India
7Lấy Vĩ độ và Kinh độ

Ở trên, chúng tôi đã nhận thấy rằng chúng tôi đang sử dụng chức năng the

Zipcode: 99501
Details of the said pincode:
Anchorage, Alaska, 99501, USA

Zipcode: CA9 3HX
Details of the said pincode:
Alston Moor, CA9 3HX, UK

Zipcode: 61000
Details of the said pincode:
Alençon, Normandie, France métropolitaine, 61000, France

Zipcode: 713101
Details of the said pincode:
Purba Bardhaman, West Bengal, 713101, India
31 của đối tượng mã hóa địa lý của chúng tôi. Đó là bởi vì mục đích sử dụng chung, không đảo ngược của bộ mã hóa địa lý này là lấy tọa độ thực tế từ địa chỉ. Điều này có thể hữu ích nếu chúng ta muốn đánh giá tác động địa lý hoặc định lượng các vị trí phân loại

Zipcode: 99501
Details of the said pincode:
Anchorage, Alaska, 99501, USA

Zipcode: CA9 3HX
Details of the said pincode:
Alston Moor, CA9 3HX, UK

Zipcode: 61000
Details of the said pincode:
Alençon, Normandie, France métropolitaine, 61000, France

Zipcode: 713101
Details of the said pincode:
Purba Bardhaman, West Bengal, 713101, India
9Nhận khoảng cách

Một biến quan trọng khác mà chúng ta có thể trích xuất từ ​​tọa độ là khoảng cách giữa các vị trí khác nhau. Đây là một nhiệm vụ đơn giản sử dụng Geopy. Geopy cung cấp cả khoảng cách vòng tròn lớn và khoảng cách trắc địa

x = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]
x
0

Sự kết luận

Chúng tôi đã xem xét một số cách sử dụng Geopy để chuyển đổi tọa độ thành các biến khác có thể hữu ích hơn. Các tọa độ có thể thêm nhiều thông tin hơn khi nó được phân loại một cách thích hợp. Ví dụ: mặc dù chỉ riêng kinh độ và vĩ độ có vẻ không có mối quan hệ trực tiếp với nhân khẩu học, nhưng một khi nó được nhóm thành các quốc gia, tiểu bang, thành phố và vùng lân cận, chúng ta có thể bắt đầu thấy các xu hướng khác nhau giữa các địa điểm. Bạn cũng nên thử trực quan hóa các tọa độ này để hiểu rõ hơn về các phép biến đổi đó. Đây là cách bắt đầu nhanh để trực quan hóa dữ liệu vị trí của Paul Torres

Sử dụng GeoPandas để trực quan hóa không gian

Đưa dữ liệu của bạn vào thế giới thực

hướng tới khoa học dữ liệu. com

Nếu bạn quan tâm đến cách dữ liệu vị trí, Geopy và Geopanda được sử dụng trong một dự án, vui lòng xem blog khác của tôi về phân loại điểm nước Tanzania

Chủ Đề