본문 바로가기
카테고리 없음

python Study (a cloud guru)

by 책읽는구리 2020. 2. 12.
반응형

https://github.com/seulseul627/python-study.git

import math
import requests

def calc_dist(lat1, lon1, lat2, lon2):
    lat1 = math.radians(lat1)
    lon1 = math.radians(lon1)
    lat2 = math.radians(lat2)
    lon2 = math.radians(lon2)

    h = math.sin( (lat2 - lat1) / 2 ) ** 2 + \
      math.cos(lat1) * \
      math.cos(lat2) * \
      math.sin( (lon2 - lon1) / 2 ) ** 2

    return 6372.8 * 2 * math.asin(math.sqrt(h))

def get_dist(meteor):
    return meteor.get('distance', math.inf)

if __name__ == '__main__':
    my_loc = (29.424122, -98.493628)

    meteor_resp = requests.get('https://data.nasa.gov/resource/y77d-th95.json')
    meteor_data = meteor_resp.json()

    for meteor in meteor_data:
        if not ('reclat' in meteor and 'reclong' in meteor): continue
        meteor['distance'] = calc_dist(float(meteor['reclat']),
                                       float(meteor['reclong']),
                                       my_loc[0],
                                       my_loc[1])

    meteor_data.sort(key=get_dist)

    print(meteor_data[0:10])

 

=> ipython 설치 및 접속

pipenv install -d ipython 

ipython

 

=> meteors 디렉토리에서 "find_meteors.py" 를 import

In [1]: from meteors import find_meteors

In [2]: find_meteors.calc_dist(0,0,5,5)
Out[2]: 785.9892238241357

 

if __name__ == '__main__':

아래 블록이 없으면

`from meteors import find_meteors` 명령어 실행시 코드 맨 마지막 줄 `print(meteor_data[0:10])` 에 의해 화면에 데이터가 출력된다.

import 할 때에는 로직이 실행되지 않게 하기 위해 위에 조건문을 추가하며,

아래와 같이 실행시에는 `print(meteor_data[0:10])` 구문이 정상적으로 출력된다.

`pipenv run python meteors/find_meteors.py`

반응형

댓글