안녕하세요? 이번 글은 Google Earth Engine에서 주어진 기하 도형 내 균일하게 임의의 점들을 생성하는 방법을 소개해 보겠습니다. ee.FeatureCollection.randomPoints 함수를 사용하시면 됩니다.
import ee
import geemap
# Earth Engine 인증
ee.Authenticate()
# Earth Engine 초기화
ee.Initialize(project='ee-foss4g')
먼저, 랜덤 포인트의 지리적 경계를 제한하기 위한 ee.Geometry 객체를 정의합니다. 여기서는 앞서 행정경계에서 추출한 대한민국 영역을 정의해 보겠습니다.
xmin = 125.0765578311700068
ymin = 33.1124998462386984
xmax = 131.8727812628719960
ymax = 38.4000004985049017
# 랜덤 포인트의 지리적 경계를 제한하기 위한 ee.Geometry 객체
region = ee.Geometry.Rectangle(
coords=[xmin, ymin, xmax, ymax], proj='EPSG:4326', geodesic=False
)
m = geemap.Map(layout={'height':'400px', 'width':'800px'})
m.addLayer(region, {'color': 'yellow'}, "Region")
m.centerObject(region, 6)
m
참고로 geodesic(측지선)이 false로 설정되면 모서리들이 투영에서 직선으로 표시되지만, true로 설정되면 지구 표면에서 최단 경로를 따르도록 곡선으로 표시됩니다. 입력값이 숫자일 경우 true로 설정되므로 직선 표시를 위해서는 false를 지정해 주어야 합니다.
# 랜덤 포인트의 지리적 경계를 제한하기 위한 ee.Geometry 객체
region = ee.Geometry.Rectangle(
coords=[xmin, ymin, xmax, ymax], proj='EPSG:4326', geodesic=True
)
이제 해당 지역 내에서 100개의 랜덤 포인트를 생성해 보겠습니다.
# 해당 지역 내에서 100개의 랜덤 포인트 생성
random_points = ee.FeatureCollection.randomPoints(
region=region, points=100, seed=0, maxError=1
)
m = geemap.Map(layout={'height':'400px', 'width':'800px'})
m.addLayer(region, {'color': 'yellow'}, "Region")
m.add_layer(random_points, {'color': 'black'}, 'Random points')
m.centerObject(region, 6)
m
코드를 재사용해서 변산반도국립공원 지역 내에서 100개의 랜덤 포인트를 생성해 봅니다. 다음과 같이 Google Earth Engine에서 랜덤 포인트를 생성할 때 사용하시면 되겠습니다.
# WDPA 데이터셋 불러오기
wdpa = ee.FeatureCollection("WCMC/WDPA/current/polygons")
region = wdpa.filter(ee.Filter.eq('WDPAID', 30712))
# 해당 지역 내에서 100개의 랜덤 포인트 생성
random_points = ee.FeatureCollection.randomPoints(
region=region, points=100, seed=0, maxError=1
)
m = geemap.Map(layout={'height':'400px', 'width':'800px'})
m.addLayer(region, {'color': 'yellow'}, "Region")
m.add_layer(random_points, {'color': 'black'}, 'Random points')
m.centerObject(region, 11)
m