xymap(지도를 위한 것)
xymap(기초) - 기본적인 openstreetmap의 지도 형식들
작성자
sjpark
작성일
2025-02-25 19:58
조회
58
기초 : 기본적인 openstreetmap의 지도 형식들
아래의 코드를 주석처리하면서 실행해 보시면, 어떤것이 어떤 style인지 아실수 있으실 것입니다# -*- coding: utf-8 -*-
import folium, webbrowser
from folium import plugins
base_map = folium.Map(location=[37.39434998313918, 126.9639149003046], zoom_start=13, tiles = 'OpenStreetMap')
#base_map = folium.Map(location=[37.39434998313918, 126.9639149003046], zoom_start=13, tiles = 'Stamen Terrain')
#base_map = folium.Map(location=[37.39434998313918, 126.9639149003046], zoom_start=13, tiles = 'Stamen Toner')
#base_map = folium.Map(location=[37.39434998313918, 126.9639149003046], zoom_start=13, tiles = 'Stamen Watercolor')
#base_map = folium.Map(location=[37.39434998313918, 126.9639149003046], zoom_start=13, tiles = 'CartoDB Positron')
#base_map = folium.Map(location=[37.39434998313918, 126.9639149003046], zoom_start=13, tiles = 'CartoDBdark_matter')
file_name = 'D:/index.html'
base_map.save(file_name)
webbrowser.open_new(file_name)


기초 : 자바스크립트의 캔바스에 대하여
자바스크립트는 html을 좀더 다른 형태로 편하게 사용하기 위해서 만든 것입니다일반적인 코딩 => 화면에 표시 => 다시 코딩 => 새로운 것이 나타남
이런식으로 우리가 중간에 조그마한 부분만 바꿔지지 않는다는 것입니다
모든 실행중인 프로그램은 서버기능을 실행하고 있는것입니다. 여기서 말하는 서버 기능이란, 무한루프를 이용해서 이벤트를 확인하고 그에 해당하는 것을 실행한다는 의미입니다
웹브라우져또한 무한으로 돌아가면서 계속 확인을 하면서 이루어지고 있습니다. 일반적인 프로그램은 무한으로 돌아가면서 이벤트를 처리하는 것을 만들어야 하지만, 웹이란것은 이러저런 기능을 하는 공통의 프로그램을 모두 갖추고있는것과 같습니다
다른 비유를 하자면, 파이선 파일을 실행시키고 싶으면 파이썬을 설치해야하는데, 자바스크립트를 실행하려면, 웹
을 갖고있으면되고, 그것은 대부분의 모든 기기에 기본으로 깔려있다는 것입니다
아주 오래전에 캔바스라는 태그를 새로이 만들었는데, 상당기간 동안은 모든 웹에서 사용을 할 수 있는 것이 아니어서, 사용을 못하다가, 왠만한 웹의 대부분이 사용이 가능하게 되었으며, 지금은 거의모든 웹이 가능합니다
이것의 기능은 글자에서 유추할수있는것처럼 그림을 그릴수있는 도화지 같은 개념입니다. 물론, 기존의 태그들 사
이에 넣을 수 있는 형태이기도 한것입니다
근본 원리를 본다면, 다른 태그들도 마찬가지처럼, 결국 모든 태그나 그런것들은 사람이 볼수있는 형태로 되기 때
문에 원리는 그림을 그려주는 것과 동일합니다. 단지 세밀한 부분까지 우리가 맘대로 조절할수 있느냐/없느냐의 문 제로 귀결되고, 캔바스는 그런것에 좀더 자유롭기도 하지만, 사용가능한 함수나 속성이 있다는 말입니다
그래서 folium은 이 캔바스에 그림을 그리는 기능들을 넣은 것입니다
html에서 캔버스를 여러 개 사용하는 것이 바로 layer이다
참고로 자바스크립트와 자바는 완전히 다른 언어이다. 그냥 단순히 자바를 웹에서 대체가 가능한 언어라는 형태를 위해 그렇게 이름지은 이유이며, 햄과 햄스터가 연관이 없는것처럼 비유되어 집니다
기초 : json의 형태
- 사전 형식을 한다
- 나타내고싶은 자료가 어떤 자료의 하위로 나타내고싶다면, 리스트안에 사전형식을 만들어서 넣으면 된다
- 단, 지도에서 이해하는 형식을 만드는 것은 아래와 같은 형태를 이용해야 하는것이다
- 배열의 자료는 []을 이용해서 자료를 넣으면 된다
{"type":"FeatureCollection",
"features":[
{"type":"Feature",
"properties":
{"code":"39020",
"name":"서귀포시",
"name_eng":"Seogwipo-si",
"base_year":"2013"},
"geometry":
{"type":"Polygon",
"coordinates":
[[[좌표들….]]}},
기초 : json스타일이란 무엇인가
python의 사전형식으로 자료를 저장하는 것입니다여러가지 형태가 가능하지만, 아래와 같은 구조가 있읍니다

자료 : json자료 (우리나라 주요도시)
skorea_municipalities_geo_simple다운로드우리나라의 주요도시에 대한 자료입니다
다른 folium을 연습하기위한 자료입니다

기초 : GeoJson에 대하여
GeoJSON 형식을 간략히 보이면, 아래와 같읍니다{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [125.6, 10.1]
},
"properties": {
"name": "Dinagat Islands"
}
}
type의 요소 : Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon, GeometryCollection
용어 | 설명 |
key_on | 국가 이름이 포함 된 json 파일을 입력합니다
(geojson, geopandas.DataFrame) |
geo_data | json 파일을 불러오는 거고 data에는 csv파일을 불러와 매핑한다 |
zoom_start | 기본 지도를 얼마나 크게 보일지 정하는 것 |
geo_data | json 파일의 이름 |
fill_color | 'BuGn', 'BuPu', 'GnBu', 'OrRd', 'PuBu', 'PuBuGn', 'PuRd', 'RdPu', 'YlGn', 'YlGnBu', 'YlOrBr', 'YlOrRd'
색 구성표 |
fill_opacity | 영역의 색에대한 불투명도, 범위 0–1 (0은 색없음, 기본값 0.6) |
line_opacity | 선의 불투명도, 범위 0–1 (0은 없음, 기본값 1). |
legend_name | 컬러 범례 제목 |
smooth_factor | 확대 / 축소때 폴리 라인을 단순화 할 정도 |
data | geojson형식의 자료를 사용, 시각화 하고자 하는 데이터파일
(pandas.DataFrame) |
columns | 두가지의 변수가 사용
1 - key_on 값과 매핑할 변수, 지도 데이터와 매핑할 값 2 - 시각화 하고자하는 변수 |
m.choropleth(
geo_data=state_geo, name='choropleth', data=state_data, columns=['Code', 'Population'], key_on='feature.properties.SIG_CD', fill_color='YlGn', fill_opacity=0.5, line_opacity=0.5, legend_name='Population Rate (%)' ) |
기본설명 : geojson의 형태
빈 geson의 형태를 보면 아래와 같습니다{
"type": "FeatureCollection",
"features": []
}
그리고 하나의 자료는 features안에 아래의 형태로 나타내는 방법입니다
{
"type": "Feature",
"geometry": {},
"properties": {}
}
json의 하나중 geo의 형식에 사용되는 형태는 다음과 같은 형식을 따라야 합니다
- type, properties, geometery의 형식을 따른다
- type은 항상 Feature를 넣는다
- properties에는 우리가 원하는 속성의 이름과 값을 넣으면 됩니다
- geometery는 좌표에 대한 정보를 넣는데, type은 나타낼 자료의 형식, coordinates는 좌표값들
그리고 삼각형의형식처럼 닫힌 형태를 만들려면 [a, b, c]의 형식이 아닌 [a, b, c, a]로 해야 한다는 것입니다