성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] 제가 큰 실수를 했군요. ^^; Delegate를 통한 Bein...
[정성태] Working with Rust Libraries from C#...
[정성태] Detecting blocking calls using asyn...
[정성태] 아쉽게도, 커뮤니티는 아니고 개인 블로그입니다. ^^
[정성태] 질문이 잘 이해가 안 됩니다. 우선, 해당 소스코드에서 ILis...
[양승조
] var대신 dinamic으로 선언해서 해결은 했습니다. 맞는 해...
[양승조
] 또 막혔습니다. ㅠㅠ var list = props[i].Ge...
[양승조
] 아. 감사합니다. 어제는 안됐던것 같은데....정신을 차려야겠네...
[정성태] "props[i].GetValue(props[i])" 코드에서 ...
[정성태] 저렇게 조각 코드 말고, 실제로 재현이 되는 예제 프로젝트를 압...
글쓰기
제목
이름
암호
전자우편
HTML
홈페이지
유형
제니퍼 .NET
닷넷
COM 개체 관련
스크립트
VC++
VS.NET IDE
Windows
Team Foundation Server
디버깅 기술
오류 유형
개발 환경 구성
웹
기타
Linux
Java
DDK
Math
Phone
Graphics
사물인터넷
부모글 보이기/감추기
내용
<div style='display: inline'> <h1 style='font-family: Malgun Gothic, Consolas; font-size: 20pt; color: #006699; text-align: center; font-weight: bold'>Python - 공개 패키지를 이용한 위성 이미지 생성 (pystac_client, odc.stac)</h1> <p> 아래와 같은 트윗이 있군요. ^^<br /> <br /> <blockquote class="twitter-tweet"><p lang="en" dir="ltr">Did you know that with 2 Python libraries, 6 lines of code and around 15 seconds, you can load satellite data from anywhere in the world?<br><br>This is so much easier than it used to be! <a href="https://t.co/jMLHcjcVzg">pic.twitter.com/jMLHcjcVzg</a></p>— Alex Leith (@alexgleith) <a href="https://twitter.com/alexgleith/status/1743215612221137269?ref_src=twsrc%5Etfw">January 5, 2024</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script><br /> <br /> 쉽게 테스트하기 위해 Jupyer Notebook에서 3개의 패키지를 설치한 후,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > !pip install pystac_client !pip install matplotlib !pip install odc.stac </pre> <br /> 이렇게 코딩하면 됩니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > from pystac_client import Client from odc.stac import load client = Client.open("http://earth-search.aws.element84.com/v1") collection = "sentinel-2-l2a" tas_box = [146.5, -43.6, 146.7, -43.4] search = client.search(collections=[collection], bbox=tas_box, datetime="2023-12") data = load(search.items(), bbox=tas_box, groupby="solar_day", chunks={}) data[["red", "green", "blue"]].isel(time=2).to_array().plot.imshow(robust=True) </pre> <br /> 그 시점의 호출 부하에 따라 다르겠지만 제 경우에 8초 정도 걸려서야 결과가 나왔습니다.<br /> <br /> <hr style='width: 50%' /><br /> <br /> 실습을 위해 순천만 지역을 Google Earth로 방문한 후,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > <a target='tab' href='https://earth.google.com/web/@34.93009968,127.50141682,3.33634054a,3009.47610511d,35y,0.92573167h,5.8516359t,0r/data=OgMKATA'>https://earth.google.com/web/@34.93009968,127.50141682,3.33634054a,3009.47610511d,35y,0.92573167h,5.8516359t,0r/data=OgMKATA</a> </pre> <br /> 대충 위치를 잡았더니 위/경도 데이터가 이렇게 나옵니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > [좌-하] 34°55'21"N 127°29'30"E [우-상] 34°56'08"N 127°31'10"E </pre> <br /> 하지만 이 좌표를 이전의 파이썬 소스코드에 적용하면 안 됩니다. 왜냐하면, 저 구글 어스가 보여주는 좌표계는 DMS (degrees, minutes, seconds) 체계이고, pystac_client 호출 시 넘겨주는 좌표계는 DD (decimal degrees)이기 때문입니다. 따라서, 다음과 같은 페이지를 이용해, (<a target='tab' href='https://jutabi.tistory.com/81'>또는 코드로</a>),<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > GPS Coordinates ; <a target='tab' href='https://www.gps-coordinates.net/'>https://www.gps-coordinates.net/</a> </pre> <br /> 구글 어스의 DMS 값을 DD 값으로 변경해,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > [좌-하] 127.49, 34.92 [우-상] 127.51, 34.93 </pre> <br /> 다음과 같이 바꿔서 호출하면,<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > tas_box = [127.49, 34.92, 127.51, 34.93] </pre> <br /> 아래와 같은 실행 결과가 나옵니다. ^^<br /> <br /> <img onclick='toggle_img(this)' class='imgView' alt='pystac_client_1.png' src='/SysWebRes/bbs/pystac_client_1.png' /><br /> <br /> 보는 바와 같이, 이런 유의 코드 실행은 멋있긴 하지만 정작 써먹으려고 하면 (속도도 무척 느려서) 현실성 있게 사용하기 위한 시나리오가 딱히 떠오르진 않습니다. (사업적 마인드가 없어서 그럴 수도 있지만. ^^;)<br /> </p><br /> <br /><hr /><span style='color: Maroon'>[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]</span> </div>
첨부파일
스팸 방지용 인증 번호
2011
(왼쪽의 숫자를 입력해야 합니다.)