용의자 위치 추적 시스템 - 가장 가까운 도시 3개 찾기
2024. 12. 2. 20:11ㆍPython Flask & Database
기존 지도에는 78개의 도시의 위치가 전부 표시되어 있다.
용의자의 위치와 가장 가까운 3개의 도시만 지도에 표시하도록 하겠다.
우선 용의자의 위치와 가장 가까운 3개의 도시를 선별하는 함수는 다음과 같다.
distance.euclidean을 사용하여 유클리디언 거리를 측정한 후, 거리를 기준으로 sort하여 3개의 도시만 따로 뽑았다.
@with_transaction
def get_closest_regions(cur, latitude, longitude):
cur.execute(f"select region_name, country_name, latitude, longitude from region")
region_data = cur.fetchall()
region_dist = []
for region_name, country_name, lat, long in region_data:
dist = distance.euclidean([latitude, longitude], [lat, long])
region_dist.append((region_name, country_name, lat, long, dist))
sorted_region_dist = sorted(region_dist, key=lambda x: x[4])
closest_3_regions = sorted_region_dist[:3]
return closest_3_regions
다음으로 3개의 지역을 CircleMarker로 표시해주는데 이전과 달리 도시가 3개밖에 없으며 모두 중요한 단서이기 때문에 색을 red로 설정하고 radius를 50으로 설정하여 범위를 넓게 설정해주었다.
closest_3_regions = get_closest_regions(latitude, longitude)
for region_name, country_name, latitude, longitude, dist in closest_3_regions:
folium.CircleMarker(
location=[latitude, longitude],
popup=f"{region_name}, {country_name}",
radius=50,
color="red",
fill=True,
fill_color="white"
).add_to(m)
이제 용의자의 위치와 가장 가까운 도시 3개만 표시된 것을 확인할 수 있다.
'Python Flask & Database' 카테고리의 다른 글
범죄 관리 시스템 - 통계 자료 시각화 (0) | 2024.12.03 |
---|---|
범죄 관리 시스템 - 통계 자료를 SweetAlert 하기 (0) | 2024.12.03 |
용의자 위치 추적 시스템 - window.open() 지도를 새로운 창으로 띄우기 (0) | 2024.12.02 |
용의자 위치 추적 시스템 - folium으로 위치 표시 (0) | 2024.12.02 |
용의자 위치 추적 시스템 - 예측값 지도에 표시 (0) | 2024.11.28 |