Files
UtilityPole_Info/VWorldAPIs.py
2025-09-23 20:59:17 +09:00

78 lines
1.9 KiB
Python

import io
import requests
import math
import numpy as np
import json
import folium
from bs4 import BeautifulSoup
from pyproj import Transformer
#위도(latitude), 경도(longitude)
Earth_r = 20037508.34 # meter
def GetJusofromGPS(lat,lon):
ret_juso = ["", "", "", ""]
if lat <= 0.0 or lon <= 0.0:
return ret_juso
apiurl = "https://api.vworld.kr/req/address?"
params = {
"service": "address",
"request": "getaddress",
"crs": "epsg:4326",
"point": f"{lon},{lat}",
"format": "json",
"type": "BOTH",
"key": "7E59C6EC-6BB0-3ED9-ACCC-4158869D7CFD"
}
response = requests.get(apiurl, params=params)
data = None
if response.status_code == 200:
data = response.json()
print(data)
if "OK" == data["response"]["status"]:
for item in data["response"]["result"]:
type = item["type"]
if type.lower() == "parcel":
ret_juso[0] = item["text"]
ret_juso[1] = item["structure"]["level4L"]
elif type.lower() == "road":
ret_juso[2] = item["text"]
ret_juso[3] = item["structure"]["level4L"]
else:
print( f"{data["response"]["status"] } : {data["error"]["code"] }" )
return ret_juso
# VWorld 좌표계 : EPSG:3857
# GPS 좌표계 : EPSG:4326
# 경도는 람다 (\lambda) 위도는 파이 (\phi)
def Transform4326to3857(srcLat, srcLon):
transformer = Transformer.from_crs("EPSG:4326", "EPSG:3857", always_xy=True)
# 좌표 변환 실행
x, y = transformer.transform(srcLon, srcLat)
return y, x
#37.536514,126.977138
#37.541047,126.990966
#37.539324791666665,126.98787990833334
#37.539325,126.987880
#GetJusofromGPS(37.52356569972222,126.9683578)
#"14105383.450839", "3950184.1545913"
#37.36340831688752, 35.48510801650072
#"3950184.1545913", "14105383.450839"