Python 은 바 이 두 지 도 를 이용 하여 두 곳 의 거 리 를 얻 습 니 다(데모 첨부)
바 이 두 맵 오픈플랫폼 에 들 어간 후에 사용자 에 게 로그 인 하고 위의콘 솔를 클릭 하여 안내 에 따라 활성화 한 후에 서버 유형의 응용 을 만 들 고 이름 을 임의로 설정 합 니 다.그 중에서 화이트 리스트 검 사 는 어떠한 제한 도 하지 않 고 작성 할 수 있 습 니 다
0.0.0.0/0
.생 성 에 성공 한 후 화면 은 다음 그림 과 같 아야 합 니 다.그 중에서 방문 애플 리 케 이 션(AK)즉 도중에 빨간색 사각형 으로 둘러싸 인 부분 은 함부로 누설 되 지 않도록 주의해 야 합 니 다.뒤에 사용 해 야 합 니 다.이것 은 뒤에 방문 할 때 필요 한 암호 입 니 다.필요 한 API 소개
이 항목 에 사 용 된 모든 API 는 웹 서비스 API공식 개발 문서입 니 다.
1.장소 검색 서비스
장소 검색 서비스(Place API 라 고도 함)는 웹 API 인터페이스 서비스 이다.
서 비 스 는 다양한 장면 의 장소(POI)검색 기능 을 제공 하 는데 도시 검색,원형 지역 검색,사각형 지역 검색 을 포함한다.개발 자 는 인 터 페 이 스 를 통 해 장소(POI)의 기초 나 상세 한 지리 정 보 를 얻 을 수 있 습 니 다.
우 리 는 이 API 를 이용 하여 지 정 된 장소의 경위도(lat,lg)두 개의 인 자 를 얻 습 니 다.
2.대량 계산 서비스
일괄 산정 로 서비스(일명 RouteMatrix API)는 HTTP/HTTPS 형식 으로 제공 되 는 경량급 일괄 산정 로 인터페이스 로 사용 자 는 이 서 비 스 를 통 해 기점 과 종점 좌표 에 따라 노선 계획 거리 와 주 행 시간 을 계산 할 수 있 으 며 RouteMatrix API V 2.0 은 중국 대륙 지역 을 지원 한다.
우 리 는 이 API 를 이용 하여 두 지점(경위도 로 제시)간 의 노선 계획 거 리 를 얻 습 니 다.
Python 프로그램 작성
0.필요 한 모듈
들 어 오 는
address
장소 검색 서 비 스 를 통 해 경위도,반환 값 은 경위도 에 대응 하 는 문자열 값 으로 중간 에 쉼표 로 구분 한 다음 에 하나의 조회 와 상 태 를 되 돌려 줍 니 다.조회 에 실패 하면 상태 값 은 0 이 아 닙 니 다.코드 에 있 는 AK 를 처음부터 캡 처 한 AK 코드 로 바 꾸 는 것 을 주의 하 세 요.
def getPosition(address):
url = r"http://api.map.baidu.com/place/v2/search?query={}®ion= &output=json&ak={}".format(
address,
AK #
)
res = requests.get(url)
json_data = json.loads(res.text)
if json_data['status'] == 0:
lat = json_data["results"][0]["location"]["lat"] #
lng = json_data["results"][0]["location"]["lng"] #
else:
print("[ERROR] Can not find {}.".format(address))
return "0,0", json_data["status"]
return str(lat) + "," + str(lng), json_data["status"]
2.두 곳 사이 의 거리 확보들 어 오 는 두 지점(경위도 설명)을 대량 계산 서 비 스 를 통 해 얻 을 수 있 는 노선 계획 거리 입 니 다.이 범례 는 운전 운전 운전(대응 매개 변 수 는'driving')방식 으로 계산 된다.
코드 에 있 는 AK 를 처음부터 캡 처 한 AK 코드 로 바 꾸 는 것 도 마찬가지 입 니 다.
def getDistance(start, end):
url = "http://api.map.baidu.com/routematrix/v2/driving?output=json&origins={}&destinations={}&ak={}".format(
start,
end,
AK #
)
res = requests.get(url)
content = res.content
jsonv = json.loads(str(content, "utf-8"))
dist = jsonv["result"][0]["distance"]["value"]
return dist
3.통합 함수 호출두 지점 의 이름 을 입력 하고 두 지점 의 거 리 를 되 돌려 줍 니 다.특정한 지점 에서 조회 할 수 없 을 때 되 돌아 오 는 결 과 는-1 로 설정 합 니 다.
def calcDistance(startName, endName):
start, status1 = getPosition(startName)
end, status2 = getPosition(endName)
if status1 == 0 and status2 == 0:
return getDistance(start, end)
else:
return -1
4.간단 한 기능 테스트 진행운행 코드 는 베 이 징 과 청 두 사이 의 거 리 를 출력 하 는데 그 단 위 는 미터 이다.
5.엑셀 의 대량 장소 에 대해 거 리 를 계산한다.
data.xlsx
파일 의 장 소 를 모두 읽 고 거 리 를 계산 하여 결 과 를 로 컬result.xlsx
파일 에 저장 합 니 다.그 중에서 우 리 는 거리의 단 위 를 천 미터 로 설정 합 니 다.주 모듈 코드 는 다음 과 같 습 니 다.
if __name__ == "__main__":
data = pd.read_excel("data.xlsx")
res = []
for i in range(0, len(data)):
startName = data.iloc[i, 0]
endName = data.iloc[i, 1]
dist = calcDistance(startName, endName)
res.append([startName, endName, dist / 1000])
pd.DataFrame(res).to_excel(
"result.xlsx",
header=[" ", " ", " "],
index=None,
encoding="utf-8"
)
그 중data.xlsx
파일 의 내용 은 다음 과 같다.대응 하 는 출력
result.xlsx
파일 의 내용 은 다음 과 같 습 니 다.부록
#
AK = " AK "
import pandas as pd
import requests
import json
def getPosition(address):
url = r"http://api.map.baidu.com/place/v2/search?query={}®ion= &output=json&ak={}".format(
address,
AK #
)
res = requests.get(url)
json_data = json.loads(res.text)
if json_data['status'] == 0:
lat = json_data["results"][0]["location"]["lat"] #
lng = json_data["results"][0]["location"]["lng"] #
else:
print("[ERROR] Can not find {}.".format(address))
return "0,0", json_data["status"]
return str(lat) + "," + str(lng), json_data["status"]
def getDistance(start, end):
url = "http://api.map.baidu.com/routematrix/v2/driving?output=json&origins={}&destinations={}&ak={}".format(
start,
end,
AK #
)
res = requests.get(url)
content = res.content
jsonv = json.loads(str(content, "utf-8"))
dist = jsonv["result"][0]["distance"]["value"]
return dist
def calcDistance(startName, endName):
start, status1 = getPosition(startName)
end, status2 = getPosition(endName)
if status1 == 0 and status2 == 0:
return getDistance(start, end)
else:
return -1
if __name__ == "__main__":
data = pd.read_excel("data.xlsx")
res = []
for i in range(0, len(data)):
startName = data.iloc[i, 0]
endName = data.iloc[i, 1]
dist = calcDistance(startName, endName)
res.append([startName, endName, dist / 1000])
pd.DataFrame(res).to_excel(
"result.xlsx",
header=[" ", " ", " "],
index=None,
encoding="utf-8"
)
파 이 썬 이 바 이 두 지 도 를 이용 하여 두 곳 의 거 리 를 얻 는 것 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 파 이 썬 바 이 두 지 도 를 통 해 두 곳 의 거리 내용 을 얻 을 수 있 습 니 다.우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.