Django/개인 프로젝트1(안전한 보행길 지도) 10

[Django Map] Folium polygon

hex point 와 Cost를 Key 와 Value로 가지고 있는 딕셔너리를 이용하여 Folium map 에 polygon 과 그 안에 툴팁(팝업 ?, 설명?) 을 추가 하려 한다. 방법은 folium.polygon 플러그인을 사용한다. 1. 딕셔너리를 리스트로 예를 들어 딕셔너리는 {Hex(q=1,r=-4) : 1} -> type : hex, cost 를 가진다. hex 좌표의 각 모서리 (정육각형의 모서리)를 Point 좌표로 변환하고, 리스트에 담느다. Folium Polygon 플러그인을 이용할 때 좌표의 모음을 리스트 형시으로 알려주어야한다. 리스트 안에 좌표는(위도lat, 경도lon) 순서로 보내야한다. for hex, cost in Hexlist.items() : hexPointlist =..

[Django] "python requsets" HTTP 모듈

카카오 주소검색 api를 사용하다가, requests 라는 모듈을 사용하길래 이게 무엇인지 궁금해서 공부해 보았다. 해당 코드 def getLatLng(addr): url = 'https://dapi.kakao.com/v2/local/search/address.json?query='+addr headers = {"Authorization": "KakaoAK kakao_http_key"} result = json.loads(str(requests.get(url,headers=headers).text)) match_first = result['documents'][0]['address'] return float(match_first['y']),float(match_first['x']) Python Reque..

[Django Map] folium plugins 패키지 옵션 사용하기

Folium plugins 사용하기 1. folium 을 install 해주었다면 folium 안에있는 plugins을 import 해줍니다. from folium import plugins Locate control (사용자 현재 위치로 반환) 버튼을 클릭하면 현재위치로 지도를 매빕하은 컨트롤 버튼을 추가합니다. https://github.com/python-visualization/folium/blob/master/examples/Plugins.ipynb GitHub - python-visualization/folium: Python Data. Leaflet.js Maps. Python Data. Leaflet.js Maps. . Contribute to python-visualization/foli..

Django 지도 라이브러리 Folium Map 이용하기

https://thalals.tistory.com/103?category=499919 Django Leaflet.js 지도 라이브러리 불러오기 1. Leaflet.js 라이브러리 호출하기 먼저 head 부분에 leaflat.js css와 js 링크를 추가해, leaflet 라이브러리 사용할 수 있도록 합니다. 2. Map 설정 1) 크기 설정 div의 크기를 설정해준다. 2) map 생성하고 타.. thalals.tistory.com 이전 게시물에서 Leaflet 라이브러리를 이용해서 지도를 불러왔는데, Django는 Python 기반이므로 데이터를 조작하기 더 편한 Folium 오픈소스 라이브러리를 사용하기로 했다. 1. Folium 설치 folium을 이용하기 위해서 먼저 install 해준다 pip..

[Django] Python 지도라이브러리 Folium 과 leaflet 차이점(Folium VS Leaflet.js)

저번 게시물에서 leaflet 지도 라이브러리의 사용방법으로 간단하게 호출을 해보았는데, 또 다른 지도 라이브러리로 Folium 이라는 오픈소스가 있어서 Leaflet과의 차이점을 알아보았다. 1. Leaflet 리플렛은 공식문서의 소개 그대로 an open-source JavaScript library for mobile-friendly interactive maps 즉, 자바스크립트 라이브러리이다. 말 그대로 Javascript를 이용하여 가볍게 지도 객체를 호출하여 맵핑할 수 있는 웹 지도화 라이브러리이다. 그럼 Folium은 무엇일까? 2. Folium folium 공식문서를 보면 " Make beautiful maps with Leaflet.js & Python " 라고 나와있다. 한마디로, l..

Django Leaflet.js 지도 라이브러리 불러오기

1. Leaflet.js 라이브러리 호출하기 먼저 head 부분에 leaflat.js css와 js 링크를 추가해, leaflet 라이브러리 사용할 수 있도록 합니다. 2. Map 설정 1) 크기 설정 div의 크기를 설정해준다. 2) map 생성하고 타일레이어에 추가하기 leaflet map의 타일레이어 형식은 일반적으로 URL템플릿의 세팅을 포함하고 있다. 이 URL템플릿 세팅이란 우리도 'Mapbox'에서 얻을 수 있다. 이 글에서는 예제에서 사용된 URL템플릿을 그대로 적용하기로하자. 이 URL템플릿에는 속성값이 부여된 텍스트, 최대 줌 레벨 등과 같은 옵션들이 포함되어 있다. ● 참고 d3.js 튜토리얼 티스토리 : https://visualize.tistory.com/360 Leaflet.js..

Django Templates 폴더 App 폴더 바깥쪽으로 빼서 한번에 관리하기

Django는 MTV 모델로 Model Teplate View 3가지로 나누어서 진행하는데, 각각의 앱 폴더안에서 관리하는 templates 폴더를 바깥쪽, 앱과 프로젝트와 같은 라인에서관리하기로 했다. 먼저 해야할 건 1. Templates 폴더 만들기 App과 같은라인에 Templates 폴더를 만든다. 2. 그 후, Settings.py에서 TEMPLATE Default 경로를 수정해준다. 'DIRS' : [] -> 수정 'DIRS': [os.path.join(BASE_DIR, "templates")], # 폴더 바깥으로 templates 통합 3. 그 다음 App 안에 Views.py에서 연결하려는 html파일 경로를 잘 적으면 된다.

1. Django 프로젝트 생성

장고 프로젝트 진행 순서는 아래의 순서를 참고 진행하려 한다. (파이참 x -> VScode) https://thalals.tistory.com/40?category=479867 [Django] 장고 입문 1. 가상환경 설정( 장고 시작 ) 1. 장고 실행 - 장고는 VsCode로 실행 합니다. - 장고를 실행 할 폴더에 git bash창을 킵니다. - CLI 창에 "code . "을 입력하면 간단하게 VsCode를 실행할 수 있습니다. ​ ​ 2. 가상환경 설정 - 장고를 실행 thalals.tistory.com 1) 가상환경 설치 python -m venv myvenv 2) 가상환경 활성화 source myvenv/Scripts/activate 3) 장고 다운로드 pip install django h..

[Django] Python hexagon grid (Map 공간 일정 간격으로 규격화 하기, hexgrid)

졸업작품으로 안전한 보행길 경로를 찾아주는 지도 프로젝트를 만들고 있는데.. 우리 세상은 알고리즘처럼 2차원 배열이나 노드의 집합이 아니기때문에.. 지도를 일정한 간격으로 규격화해야했다. 이 부분이 굉장히 힘들었는데 기록으로 남겨놓으려한다. 방법 1. 출발지와 목적지의 좌표를 계산하여 사각형 범위를 구한다. ( = Map Size ) 2. 범위를 2차원 배열처럼 규격화한다(?) 3. 해당 범위내에서 적합한 경로를 찾는다(??) ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 2번 방법을하기위해 많은 고민을 했는데 첫번째. 2차원 배열처럼 정사각형으로 해당 범위를 규격화하기. → 실제 지도는 이동가능한 공간이 뒤죽박죽 삐뚤빼뚤이기 때문에 적합하지 않다고 생각했다. 두번째. 육각형의 hexgon grid로 규격화하기 ..

[Leaflet] Django에 Leaflet Marker 표시하기(Point Array)

졸업작품으로 Leaflet.js를 이용해서 map을 만드는 중 DB에 저장된 가로등 좌표를 Point로 받아와 지도위에 marker 표시를 해줄려고 한다. 1. DB에 저장된 좌표 중 범위 설정해서 가져오기 lamp = Lamp.objects.filter(lon__range=(endx,startx),lat__range=(endy,starty)).order_by('lat') # lamp.order_by('lon') print("가로등 개수 : ",len(lamp)) plist=[] for l in lamp : # print(l.lon) point=[float(l.lon),float(l.lat)] plist.append(point) Django의 filter 템플릿을 이용해서 DB에 저장된 좌표중 필요한 데..