작성
·
1.9K
3
강사님 안녕하세요
[7/9] Geo JSON 값 이해하고 choropleth 그려보기
강의 보면서 choropleth 실습하고 있습니다. 여기서 key_on은 데이터 구조를 따라서 지정하는 줄 알았습니다.
그래서 features.properties.SIG_KOR_NM 이렇게 했는데
{'type': 'FeatureCollection', 'features': [{'type': 'Feature', 'properties': {'SIG_CD': '11320', 'SIG_KOR_NM': '도봉구', 'SIG_ENG_NM': 'Dobong-gu', 'ESRI_PK': 0, 'SHAPE_AREA': 0.00211, 'SHAPE_LEN': 0.239901},
아래와 같은 에러가 발생하더군요.
AttributeError: 'NoneType' object has no attribute 'get'
그래서 여러가지 시도해보던 결과
features에서 s를 빼고 하니까 되던데. feature(지정값).properties.SIG_KOR_NM (실제경로) 이렇게 되나요?
답변 6
2
안녕하세요.
제가 질문의 내용을 제대로 이해 못 했었네요.
아래 내용은 folium 공식문서 입니다. 여기에서 features 로 되어 있더라도 아래와 같은 표기법을 갖도록 하고 있습니다.
foilum 내부에서 아래와 같은 형식을 사용하고 있기 때문에 형식을 맞춰 써달라는 것인데요.
key_on: string, default None Variable in the `geo_data` GeoJSON file to bind the data to. Must start with 'feature' and be in JavaScript objection notation. Ex: 'feature.id' or 'feature.properties.statename'.
그래서 json 문법에 맞지 않는다고 좋은 의문을 가져주신거 같습니다.
개별 지역의 값을 가져오기 위해서는 feautures 에서 인덱싱으로 값을 가져오는게 맞으나 내부에서 위와 같은 표기법을 써달라고 하고 있습니다.
2
빠른 답변 감사합니다.
아래 값을 이렇게 설정해봤는데 역시 안되네요.
key_on='features.0.properties.name',
이건 강사님이 제공해주신 json파일입니다.
강동구를 호출하려면 geo_json["features"][0]['properties']["name"] 이렇게 호출하는게 맞습니다.
강사님 강의영상에서 제공해주신 답안을 보면 여기도 feature (복수가 아닌 단수)로 설정을 하셨습니다.
말씀하신데로 key_on이 JSON 경로가 들어간다면 강동구는 0번째니
["features"][0]['properties']["name"]
나머지도 그려주기 위해 for문을 사용하여 이런식으로 Choropleth를 매번 호출해야 하지 않나요?
for i in range(0, len(geo_json)):
folium.Choropleth(
geo_data=geo_json,
name='choropleth',
data=df_vs,
columns=['구', '매장수비교'],
key_on='features.' + i + '.properties.name',
fill_color='BuGn',
fill_opacity=0.7,
line_opacity=0.2,
legend_name='매장수 비교'
).add_to(m)
잘 이해가 안됩니다. ㅠㅠ
1
감사합니다. 그래서 그런거였군요^^
수업영상을 혹시 개선하실 생각이시면 key_on은 json문법으로 트래킹하는 것으로 설명이 되어 있어 잘못이해할 소지가 있네요.
항상 좋은 영상!! 그리고 빠른 질의응대 감사합니다.
좋은 하루 되세요~
1
안녕하세요.
수업에서 제공한 json 파일을 사용하셨다면 아래와 같이 불러와야 합니다.
features[0].properties.SIG_KOR_NM
왜냐면 아래와 같이 features 항목에 대괄호가 있는데요.
'features': [{'type': 'Feature',
파이썬에서는 [ ] 안의 값을 인덱싱으로 가져올 수 있습니다.
[ ]안에 값을 바로 key 값으로 접근할 수 없습니다.
feature 로 사용하신건 아마도 인덱싱 후 해당 값을 feature 로 받아서 사용하신것 같습니다.
0
0