python 경위도 계산 관련
2981 단어 python
import requests
def getcode(site):
parameters = { 'address' : site, 'key': '****** ******'}
base = 'http://restapi.amap.com/v3/geocode/geo'
response = requests.get(base, parameters)
info_site = response.json()
lng = info_site['geocodes'][0]['location'].split(',')[0]
lat = info_site['geocodes'][0]['location'].split(',')[1]
return [lng,lat]
2. 경위도 로 거 리 를 계산한다.
from math import *
def Distance1(Lat_A,Lng_A,Lat_B,Lng_B): #
ra=6378.140 #
rb=6356.755 # (km)
flatten=(ra-rb)/ra #
rad_lat_A=radians(Lat_A)
rad_lng_A=radians(Lng_A)
rad_lat_B=radians(Lat_B)
rad_lng_B=radians(Lng_B)
pA=atan(rb/ra*tan(rad_lat_A))
pB=atan(rb/ra*tan(rad_lat_B))
xx=acos(sin(pA)*sin(pB)+cos(pA)*cos(pB)*cos(rad_lng_A-rad_lng_B))
c1=(sin(xx)-xx)*(sin(pA)+sin(pB))**2/cos(xx/2)**2
c2=(sin(xx)+xx)*(sin(pA)-sin(pB))**2/sin(xx/2)**2
dr=flatten/8*(c1-c2)
distance=ra*(xx+dr)
return distance
def Distance2(lat1,lng1,lat2,lng2):#
radlat1=radians(lat1)
radlat2=radians(lat2)
a=radlat1-radlat2
b=radians(lng1)-radians(lng2)
s=2*asin(sqrt(pow(sin(a/2),2)+cos(radlat1)*cos(radlat2)*pow(sin(b/2),2)))
earth_radius=6378.137
s=s*earth_radius
if s<0:
return -s
else:
return s
#
Lat_A=32.060255; Lng_A=118.796877 #
Lat_B=39.904211; Lng_B=116.407395 #
r_id = 'nanjing'; t_id = 'beijing'
distance=Distance(t_id,r_id,lat_a,lng_a,lat_b,lng_b)
Lat_A = [32.060255,31.060255];Lng_A=[118.796877]
Lat_B = [39.060255,39.060255];Lng_B=[116.796877]
print('(Lat_A, Lng_A)=({0:.6f},{1:.6f})'.format(Lat_A,Lng_A))
print('(Lat_B, Lng_B)=({0:.6f},{1:.6f})'.format(Lat_B,Lng_B))
print('Distance1={0:.3f} km'.format(distance))
print('Distance2={0:.3f} km'.format(Distance2(Lat_A,Lng_A,Lat_B,Lng_B)))
3. 경위도 구분 구역 (데 이 터 량 이 많 을 때 데 이 터 를 그 몇 개의 구역 으로 나 눌 수 있 음)
_base32 = '0123456789bcdefghjkmnpqrstuvwxyz'
#10 32 ,32 ailo
_decode_map = {}
_encode_map = {}
for i in range(len(_base32)):
_decode_map[_base32[i]] = i
_encode_map[i]=_base32[i]
del i
def encode(lat,lon,precision=7):
'''
( )
precision = 5 ±2.4km
precision = 6 ±0.61km
precision = 7 ±0.076km
precision = 8 ±0.019km
'''
lat_range, lon_range = [-90.0, 90.0], [-180.0, 180.0]
geohash=[]
code=[]
while len(geohash)=5:
geohash.append(_encode_map[int(''.join(map(str,code[:5])),2)])
code=code[5:]
return ''.join(geohash)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.