Hướng dẫn lat long to zip code python - lat long to zip code python

Đối với mã hóa địa lý với ArcGIS, thông tin đăng nhập phải được cung cấp gis = GIS["//www.arcgis.com", "username", "password"].

Về mặt gấu trúc, mã này nên thực hiện công việc [được điều chỉnh từ câu trả lời của @marcelo Villa]

from arcgis.geocoding import reverse_geocode
from arcgis.geometry import Geometry
from arcgis.gis import GIS
import pandas as pd

gis = GIS["//www.arcgis.com", "***", "***"]

def get_zip[df, lon_field, lat_field]:
    location = reverse_geocode[[Geometry[{"x":float[df[lon_field]], "y":float[df[lat_field]], "spatialReference":{"wkid": 4326}}]]]
    return location['address']['Postal']

df = pd.DataFrame[{
    'Lat': [29.39291, 29.39923, 29.40147, 29.38752, 29.39291, 29.39537, 29.39343, 29.39291, 29.39556],
    'Lon': [-98.50925, -98.51256, -98.51123, -98.52372, -98.50925, -98.50402, -98.49707, -98.50925, -98.53148]
}]

zipcodes = df.apply[get_zip, axis=1, lat_field='Lat', lon_field='Lon']

Có lẽ không thông minh như gấu trúc nhưng sử dụng mô -đun nội bộ của Python và API của ArcGIS cho mã hóa địa lý ngược Python.

from arcgis.geocoding import reverse_geocode
from arcgis.geometry import Geometry
from arcgis.gis import GIS
import csv

gis = GIS["//www.arcgis.com", "***", "***"]

coords = [
[29.39291, -98.50925],
[29.39923, -98.51256],
[29.40147, -98.51123],
[29.38752, -98.52372],
[29.39291, -98.50925],
[29.39537, -98.50402],
[29.39343, -98.49707],
[29.39291, -98.50925],
[29.39556, -98.53148]
]

result = []

for lat, lon in coords:
    pt = Geometry[{
        "x": float[lon],
        "y": float[lat],
        "spatialReference": {
            "wkid": 4326
        }
    }]
    try:
        result.append[{'lat': lat, 'lon': lon, 'geocoded': reverse_geocode[pt]}]
    except:
        pass

result_zip = []

for item in result:
    result_item = {
        'lat': item['lat'],
        'lon': item['lon'],
        'zip': item['geocoded']['address']['Postal']
    }
    result_zip.append[result_item]

keys = result_zip[0].keys[]

with open['output.csv', 'w', encoding='utf8', newline=''] as output_file:
    dict_writer = csv.DictWriter[output_file, keys, delimiter=';', quoting=csv.QUOTE_NONE, lineterminator='\r']
    dict_writer.writeheader[]
    dict_writer.writerows[result_zip]

Đầu ra CSV-File trông như sau

Tôi có một khung dữ liệu về tọa độ vĩ độ và kinh độ trên tệp CSV này: Longlat.

Tôi đã sử dụng mã này để cố gắng lấy mã zipcodes:

import copy

def get_zipcode[df, geolocator, lat_field, lon_field]:
    location = geolocator.reverse[[df[lat_field], df[lon_field]]]
    return location.raw['address']['postcode']


geolocator = geopy.Nominatim[user_agent='myusername'] #My OpenMap username

zipcodes = longlat.apply[get_zipcode, axis=1, geolocator=geolocator, lat_field=longlat['LATITUDE_X'], lon_field=longlat['LONGITUDE_X']]

Tôi đã gặp lỗi:

KeyError
"None of [Float64Index[[39.0962320000896, 39.1462010000896, 39.1347670000896,\n 39.1076250000897, 39.0928490000897, 39.1648900000896,\n 39.1846440000895, 39.0970790000897, 39.1491220000896,\n 39.1145560000896,\n ...\n 39.1039560000896,

Làm thế nào để tôi sửa chữa nó?

Mã bưu điện mã hóa và tính toán khoảng cách

Pgeocode là một thư viện Python để truy vấn ngoại tuyến hiệu suất cao của tọa độ GPS, tên khu vực và tên đô thị từ mã bưu chính. Khoảng cách giữa các mã bưu chính cũng như các truy vấn khoảng cách chung cũng được hỗ trợ. Cơ sở dữ liệu Geonames đã qua sử dụng bao gồm mã bưu chính cho 83 quốc gia.

Hiện tại, chỉ có các truy vấn trong cùng một quốc gia được hỗ trợ.

Để biết thêm tài liệu, xem pgeocode.readthedocs.io.

Cài đặt

Pgeocode yêu cầu Python 3.6+ cũng như các gói Numpy và Pandas. Nó có thể được cài đặt với,numpy and pandas packages. It can be installed with,

pip install pgeocode

Bắt đầu nhanh

Truy vấn mã bưu điện

>>> import pgeocode

>>> nomi = pgeocode.Nominatim['fr']
>>> nomi.query_postal_code["75013"]
postal_code               75013
country_code                 FR
place_name             Paris 13
state_name        Île-de-France
state_code                   11
county_name               Paris
county_code                  75
community_name            Paris
community_code              751
latitude                48.8322
longitude                2.3561
accuracy                      5

>>> nomi.query_postal_code[["75013", "69006"]]
      postal_code place_name            state_name  latitude  longitude
0       75013   Paris 13         Île-de-France   48.8322     2.3561
1       69006    Lyon 06  Auvergne-Rhône-Alpes   45.7679     4.8506

Tính toán khoảng cách

>>> dist = pgeocode.GeoDistance['fr']
>>> dist.query_postal_code["75013", "69006"]
389.156
>>> dist.query_postal_code[["75013", "75014", "75015"], ["69006", "69005", "69004"]]
array[[ 389.15648697,  390.12577967,  390.49857655]]

Định dạng mã hóa địa lý

Kết quả của một truy vấn địa lý địa lý là một pandas.dataframe với các cột sau,pandas.DataFrame with the following columns,

  • Country_code: Mã quốc gia ISO, 2 ký tự: iso country code, 2 characters

  • Mã số bưu điện : postal code

  • place_name: Tên địa điểm [ví dụ: thị trấn, thành phố, v.v.] : place name [e.g. town, city etc]

  • State_Name: 1. Đặt hàng phân khu [trạng thái] : 1. order subdivision [state]

  • State_Code: 1. Đơn hàng phân khu [trạng thái] : 1. order subdivision [state]

  • County_name: 2. Đặt hàng phân khu [quận/tỉnh] : 2. order subdivision [county/province]

  • County_code: 2. Đơn đặt hàng phân khu [quận/tỉnh] : 2. order subdivision [county/province]

  • Community_name: 3. Đơn đặt hàng phân khu [cộng đồng] : 3. order subdivision [community]

  • Community_code: 3. Đơn đặt hàng phân khu [cộng đồng] : 3. order subdivision [community]

  • Vĩ độ: Vĩ độ ước tính [WGS84] : estimated latitude [wgs84]

  • Kinh độ: Kinh độ ước tính [WGS84] : estimated longitude [wgs84]

  • Độ chính xác: Độ chính xác của LAT/LNG từ 1 = ước tính đến 6 = Centroid : accuracy of lat/lng from 1=estimated to 6=centroid

Cấu hình và mặc định

Thư mục lưu trữ

Mặc định là ~/pgeocode_data, đó là thư mục nơi dữ liệu được tải xuống để tiêu thụ sau này. Nó có thể được thay đổi bằng cách sử dụng biến môi trường pgeocode_data_dir, tức là xuất pgeocode_data_dir =/tmp/pgeocode_data.~/pgeocode_data, it is the directory where data is downloaded for later consumption. It can be changed using the environment variable PGEOCODE_DATA_DIR, i.e. export PGEOCODE_DATA_DIR=/tmp/pgeocode_data.

Nguồn dữ liệu

Nguồn dữ liệu được cung cấp dưới dạng danh sách trong biến pgeocode.doad_url. Giá trị mặc định là,pgeocode.DOWNLOAD_URL variable. The default value is,

DOWNLOAD_URL = [
    "//download.geonames.org/export/zip/{country}.zip",
    "//symerio.github.io/postal-codes-data/data/geonames/{country}.txt",
]

Nguồn dữ liệu được thử từ đầu đến cuối cho đến khi một hoạt động. Ở đây liên kết thứ hai là một tấm gương của thứ nhất.

Cũng có thể mở rộng biến này với các nguồn dữ liệu của bên thứ ba, miễn là chúng tuân theo cùng một định dạng. Xem ví dụ Kho lưu trữ dữ liệu mã hóa mã bưu điện để biết các ví dụ về các tệp dữ liệu.

Giấy phép

Gói Pgeocode được phân phối theo giấy phép BSD 3 mệnh đề.

Các quốc gia được hỗ trợ

Danh sách các quốc gia có sẵn trong cơ sở dữ liệu Geonames, với các mã quốc gia tương ứng, được đưa ra dưới đây,

Andorra [AD], Argentina [AR], Samoa Mỹ [AS], Áo [AT], Úc [AU], Quần đảo Åland [AX], Bangladesh [BD], Bỉ [BE], Bulgaria [BG], Bermuda [BM ], Brazil [BR], Belarus [bởi], Canada [CA], Thụy Sĩ [CH], Colombia [CO], Costa Rica [CR], Séc [CZ], Đức [DE], Đan Mạch [DK], Cộng hòa Dominican . GG], Greenland [GL], Guadeloupe [GP], Guatemala [GT], Guam [Gu], Croatia [HR], Hungary [HU], Ireland [IE], Isle of Man [IM], Ấn Độ [IN], Iceland [IS], Ý [IT], Jersey [JE], Nhật Bản [JP], Liechtenstein [LI], Sri Lanka [LK], Litva [LT], Luxembourg [Lu], Latvia [LV], Monaco [MC] , Cộng hòa Moldova [MD], Quần đảo Marshall [MH], Cộng hòa Nam Tư cũ của Macedonia [MK], Quần đảo Bắc Mariana [MP], Martinique [MQ], Malta [MT], Mexico [MX], Malaysia [MY] , New Caledonia [NC], Hà Lan [NL], Na Uy [không], N EW Zealand [New Zealand], Philippines [PH], Pakistan [PK], Ba Lan [PL], Saint Pierre và Miquelon [PM], Puerto Rico [PR], Bồ Đào Nha [PT], Réunion [Re], Romania [RO], Liên đoàn Nga [RU], Thụy Điển [SE], Slovenia [SI], Quần đảo Svalbard và Jan Mayen [SJ], Slovakia [SK], San Marino [SM], Thái Lan [TH], Thổ Nhĩ Kỳ [TR], Ukraine [UA] , Hoa Kỳ [Hoa Kỳ], Uruguay [UY], Holy See [VA], Quần đảo Virgin thuộc Hoa Kỳ [VI], Quần đảo Wallis và Futuna [WF], Mayotte [YT], Nam Phi [ZA]

Xem cơ sở dữ liệu Geonames để biết thêm thông tin.

Làm cách nào để tìm mã zip trong Python?

Approach:..
Nhập mô -đun địa lý ..
Khởi tạo API nominatim để nhận vị trí từ chuỗi đầu vào ..
Nhận vị trí với geolocator. mã địa lý [] chức năng ..
Bây giờ trích xuất dữ liệu zip từ thể hiện vị trí ..

Làm thế nào để bạn tìm thấy vĩ độ và kinh độ trong Python?

Các bước -..
Khởi tạo API Nominatium ..
Sử dụng geolocator.Reverse [] hàm và cung cấp tọa độ [vĩ độ và kinh độ] để lấy dữ liệu vị trí ..
Nhận địa chỉ của vị trí bằng vị trí.....
Tạo nhãn bên trong cửa sổ Tkinter để hiển thị dữ liệu ..

Loại dữ liệu nào sẽ sử dụng một cặp tọa độ vĩ độ kinh độ thường được sử dụng trong Python?

Đó là "điểm nổi" vì lý do.floating point" for reason.

Làm thế nào tôi có thể nhận được vĩ độ và kinh độ từ mã zip trong PHP?

Hàm php getzipcode [$ địa chỉ] {// Nhận mã địa lý $ geocode = file_get_contents ["//maps.google.com/maps/api/geocode/json?address=$address"];$ json = json_decode [$ geocode];$ vĩ độ = $ json-> kết quả [0]-> hình học-> vị trí-> lat;$ kinh độ = $ json-> kết quả [0]-> hình học-> vị trí-> lng;// Nhận ZipCode $ Geocode = ...

Bài Viết Liên Quan

Chủ Đề