-
Notifications
You must be signed in to change notification settings - Fork 0
/
crossroadInSeoul.py
75 lines (57 loc) · 2.2 KB
/
crossroadInSeoul.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import ssl, json, datetime
import pandas as pd
import urllib.request
from pandas import DataFrame
print('서울시 횡단보도 주소 찾기')
filename = 'crossroad_seoul_modi.csv'
df_raw=pd.read_csv(filename,encoding='utf-8')
print(df_raw.head())
print(len(df_raw['longitude']))
def get_request_url(url):
client_id = ""
client_secret = ""
req=urllib.request.Request(url)
req.add_header('X-NCP-APIGW-API-KEY-ID', client_id)
req.add_header('X-NCP-APIGW-API-KEY', client_secret)
try:
context=ssl._create_unverified_context()
response=urllib.request.urlopen(req,context=context)
if response.getcode()==200:
# print('[%s] url request success' % datetime.datetime.now())
return response.read().decode('utf-8')
except Exception as err:
print(err)
print('[%s] error for url : %s' % (datetime.datetime.now(), url))
pass
def getGeoData( address1, address2 ):
url = 'https://naveropenapi.apigw.ntruss.com/map-reversegeocode/v2/gc'
aaa = urllib.parse.quote(address1)
bbb = urllib.parse.quote(address2)
url += '?request=coordsToaddr&coords=%s' % ( aaa + ',' + bbb )
url += '&sourcecrs=epsg:4326&output=json&orders=admcode'
result = get_request_url( url )
if ( result == None ):
print(address1+','+address2)
return None
else :
return json.loads( result ) # dict로 반환
mylist=[]
for idx in range(len(df_raw['longitude'])):
lat=df_raw.iloc[idx]['latitude']
long=df_raw.iloc[idx]['longitude']
address2=str(lat)
address1=str(long)
jsonResult=getGeoData(address1, address2)
# print(address2,address1)
# print(jsonResult)
jsonlist=jsonResult['results'][0]['region']
sido=jsonlist['area1']['name']
gu=jsonlist['area2']['name']
dong=jsonlist['area3']['name']
# print(sido,gu,dong)
mylist.append((address2,address1,sido,gu,dong))
mycolumn=['latitude','longitude','sido','gu','dong']
myframe=DataFrame(mylist,columns=mycolumn)
filename='crossroad.csv'
myframe.to_csv(filename,encoding='cp949')
print(filename+'저장완료')