feat: initialize sunrise with 100-player shared rooms

This commit is contained in:
2026-10-30 16:36:35 +09:00
commit 31d6eac4c2
257 changed files with 66063 additions and 0 deletions
File diff suppressed because one or more lines are too long
Binary file not shown.
+132
View File
@@ -0,0 +1,132 @@
{
"version": 1,
"dataset": "Copernicus GLO-30 + OSM gisamun coast",
"surfaceType": "Resampled Copernicus DSM; no OSM height correction",
"sourceResolution": "1 arc-second (~30m); interpolated to 10m",
"verticalDatum": "EGM2008 orthometric height (m); sea level approximated as 0m",
"origin": {
"latitude": 38.00555,
"longitude": 128.73195
},
"projection": "+proj=aeqd +lat_0=38.00555 +lon_0=128.73195 +datum=WGS84 +units=m +no_defs",
"width": 301,
"height": 301,
"spacingMeters": 10,
"radiusMeters": 1500,
"observerSurfaceElevation": 0.0,
"minElevation": -0.37622588872909546,
"maxElevation": 145.99964904785156,
"missingSamples": 0,
"geographicCorners": [
[
128.7148738783932,
37.99203481488981
],
[
128.7490261216068,
37.99203481488981
],
[
128.7490323912247,
38.0190626735617
],
[
128.71486760877534,
38.0190626735617
]
],
"sources": [
{
"file": "data/raw/hajodae/Copernicus_DSM_COG_10_N37_00_E128_00_DEM.tif",
"url": "https://copernicus-dem-30m.s3.amazonaws.com/Copernicus_DSM_COG_10_N37_00_E128_00_DEM/Copernicus_DSM_COG_10_N37_00_E128_00_DEM.tif",
"bytes": 45141829,
"sha256": "69036070795162395dcea060375abba2d448dc2a5b74949844784466191b707c",
"crs": "EPSG:4326",
"bounds": [
127.99986111111112,
37.00013888888889,
128.9998611111111,
38.00013888888889
],
"shape": [
3600,
3600
],
"resolutionDegrees": [
0.0002777777777777778,
0.0002777777777777778
],
"nodata": null,
"min": -3.7442760467529297,
"max": 1574.278564453125,
"maskedSamples": 0,
"nonfiniteSamples": 0
},
{
"file": "data/raw/hajodae/Copernicus_DSM_COG_10_N38_00_E128_00_DEM.tif",
"url": "https://copernicus-dem-30m.s3.amazonaws.com/Copernicus_DSM_COG_10_N38_00_E128_00_DEM/Copernicus_DSM_COG_10_N38_00_E128_00_DEM.tif",
"bytes": 18904152,
"sha256": "ef70790d1e4c889f6a0965b7f39fb8627e5682ddad7cc893cf61084af8c7c012",
"crs": "EPSG:4326",
"bounds": [
127.99986111111112,
38.00013888888889,
128.9998611111111,
39.00013888888889
],
"shape": [
3600,
3600
],
"resolutionDegrees": [
0.0002777777777777778,
0.0002777777777777778
],
"nodata": null,
"min": -0.680739164352417,
"max": 1703.6204833984375,
"maskedSamples": 0,
"nonfiniteSamples": 0
},
{
"file": "data/raw/gisamun/coast.osm",
"url": "https://www.openstreetmap.org/api/0.6/map?bbox=128.720,37.975,128.770,38.025",
"bytes": 2680764,
"sha256": "0b59c2383c6ebfa5e6bc95dfcd21d0a7bce2406fecbb7e2a8d245d35a45e1bb4"
}
],
"attribution": "produced using Copernicus WorldDEM-30 © DLR e.V. 2010-2014 and © Airbus Defence and Space GmbH 2014-2018 provided under COPERNICUS by the European Union and ESA; all rights reserved; © OpenStreetMap contributors (ODbL-1.0)",
"corrections": {
"osmHeightCorrection": false,
"note": "Heights use Copernicus reprojection and bilinear resampling only. OSM masks affect rendering and movement, not stored elevations. Offshore values are not bathymetry. No tide model."
},
"files": {
"heights.f32": {
"source": "Copernicus GLO-30",
"processing": "AEQD projection and bilinear resampling only; no OSM height adjustment",
"licenseUrl": "https://dataspace.copernicus.eu/sites/default/files/media/files/2025-06/copernicus_contributing_mission_data_access_v2_cop_dem_licenses.pdf",
"licenseSection": "GLO-30-F, Articles 4 and 6",
"notice": "source.html"
},
"coast.json": {
"license": "ODbL-1.0",
"licenseUrl": "https://opendatacommons.org/licenses/odbl/1-0/",
"attribution": "© OpenStreetMap contributors",
"sourceUrl": "https://www.openstreetmap.org/copyright",
"processing": "Projected coastline and beach polygons; estimated beach strip for Gisamun"
},
"surface.png": {
"license": "ODbL-1.0",
"licenseUrl": "https://opendatacommons.org/licenses/odbl/1-0/",
"attribution": "© OpenStreetMap contributors",
"sourceUrl": "https://www.openstreetmap.org/copyright",
"processing": "R: land mask; G: sand mask; B: signed coast distance; contains no Copernicus elevations"
}
},
"sandApproximation": {
"sandLatitudeMin": 38.0043299,
"sandLatitudeMax": 38.0064958,
"sandWidthMeters": 35,
"note": "OSM beach polygon absent. Visual strip west of OSM shoreline; not surveyed beach limits."
}
}
+33
View File
@@ -0,0 +1,33 @@
<!doctype html>
<html lang="ko"><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1">
<title>기사문 해변 — 데이터 출처와 표현 범위</title>
<style>body{max-width:850px;margin:48px auto;padding:0 24px;font:16px/1.8 system-ui,sans-serif;color:#e3eaf0;background:#101b25}a{color:#9ed4ef}h1,h2{line-height:1.3}li{margin:10px 0}</style>
<h1>기사문 해변의 데이터와 표현 범위</h1>
<p>2026-10-29 가공. 관측점은 기사문항 남쪽 해변의 위도 38.00555°, 경도 128.73195° 임시값입니다. 현장 측량 좌표가 아닙니다.</p>
<h2>확보 자료와 가공</h2>
<ul>
<li>Copernicus GLO-30 N37/E128, N38/E128 두 타일을 병합하고 관측점 중심 3×3km를 추출했습니다. 30m급 원본을 10m 간격으로 보간한 높이 격자는 362,404 bytes입니다. 원본 정확도가 높아지는 것은 아닙니다.</li>
<li>OSM 해안선 두 구간을 공유 끝점으로 연결하고 주변 섬을 보존했습니다. 표면 마스크는 2m 간격이며 실제 측량 정확도를 의미하지 않습니다.</li>
<li><strong>기사문 모래사장 영역은 OSM에 누락되어 있습니다.</strong> 위도 38.0043299–38.0064958의 해안선 구간을 서쪽으로 35m 넓혀 모래색 영역으로 근사했습니다. 실제 모래 경계나 폭으로 해석하면 안 됩니다.</li>
<li>높이·해안선·표면 마스크·메타데이터 합계 약 416KB입니다. 약 64MB의 원본은 브라우저로 보내지 않습니다.</li>
</ul>
<h2>일출 관측과 한계</h2>
<p>2026-10-30 기본 관측점을 북쪽 방파제 진입부의 임시 위치(데이터 원점에서 서쪽 30m, 북쪽 350m)로 옮기고 조도를 바라보도록 설정했습니다. 기존 해변 좌표는 지형 데이터 원점으로 유지합니다. 카메라는 추정 부두 상부 해발 3m에 눈높이를 더해 배치합니다. 날짜별 태양 위치는 그대로 계산하므로 항상 조도와 겹치는 것은 아닙니다.</p>
<p>2026-10-29 06:52, 06:55, 07:00 KST의 태양 중심 방향이 이 지형 모델에 가리지 않는 것을 검사했습니다. 06:55에는 브라우저에서 원반을 확인했습니다. 이는 모델 검증이며 현장 일출의 실측 검증이나 모든 날짜의 무차폐 보장이 아닙니다.</p>
<ul>
<li>높이 격자는 Copernicus 자료를 좌표 변환·보간한 값입니다. OSM 해안선을 이용한 높이 낮추기, 최소 육지 높이 적용, 바다 칸의 0m 덮어쓰기를 하지 않습니다. OSM 경계와 DSM 높이가 맞지 않아 해안에 단차가 나타날 수 있습니다.</li>
<li>2026-10-30 기사문항에 OSM way/583161999의 해안 윤곽을 따르는 콘크리트 방파제·안벽·포장면을 추가했습니다. 해당 구간은 DSM 지형 대신 별도 메시로 표현합니다. 상부 해발 3m, 수면 아래 2m까지의 벽, 외측 난간벽 0.7m와 내륙 포장 경계는 시각적 추정값이며 실측 설계가 아닙니다. 건물·등대·선박·소파블록은 포함하지 않습니다.</li>
<li>방파제 안쪽 물결은 외해의 25% 강도로 근사하고 항구 입구에서 18m에 걸쳐 연결합니다. 파랑 해석이나 실제 항만 정온도 자료가 아닙니다. DSM은 수목·건물을 포함하며 작은 섬·절벽의 세부 높이까지 재현하지 못합니다.</li>
<li>바다 칸도 Copernicus 보간값을 유지하며 수심이 아닙니다. OSM 마스크는 화면 표시·재질·이동 경계에 사용하며 높이 격자를 수정하지 않습니다. 물결·거품·반사는 시각 효과이고 실제 조석·파고·날씨는 반영하지 않습니다.</li>
<li>3×3km 바깥은 육지를 표현하지 않고 바다 표면을 연장합니다. 먼 육지의 조망·차폐는 추가 자료가 필요합니다.</li>
</ul>
<h2>출처</h2>
<p><a href="metadata.json">가공 설정·원본 URL·SHA256</a> · <a href="coast.json">가공 해안선</a></p>
<p>© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>, ODbL-1.0. <a href="https://www.openstreetmap.org/api/0.6/map?bbox=128.720,37.975,128.770,38.025">OSM 원본 요청</a></p>
<p><a href="https://copernicus-dem-30m.s3.amazonaws.com/readme.html">Copernicus 공개 배포·이용조건</a></p>
<p>produced using Copernicus WorldDEM-30 © DLR e.V. 2010-2014 and © Airbus Defence and Space GmbH 2014-2018 provided under COPERNICUS by the European Union and ESA; all rights reserved</p>
<p>The organisations in charge of the Copernicus programme by law or by delegation do not incur any liability for any use of the Copernicus WorldDEM-30.</p>
<p><a href="https://dataspace.copernicus.eu/sites/default/files/media/files/2025-06/copernicus_contributing_mission_data_access_v2_cop_dem_licenses.pdf">Copernicus 원문 라이선스 (GLO-30-F, 22~24쪽)</a>. 가공 지형을 재배포할 때에도 지정 출처·면책 고지와 제6조의 의무를 유지해야 합니다.</p>
<p><a href="https://tour.yangyang.go.kr/pub/yysea?mode=v&amp;seq=151">양양군 38해변(기사문해변) 안내</a></p>
<p><a href="/?site=gisamun">기사문 시뮬레이터로 돌아가기</a></p>
<p><a href="/data-sources.html">자료별 라이선스·가공 데이터 다운로드</a></p></html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.
+88
View File
@@ -0,0 +1,88 @@
{
"version": 1,
"dataset": "Copernicus DEM GLO-30 Public (2021 release)",
"surfaceType": "DSM",
"sourceResolution": "1 arc-second (~30m)",
"verticalDatum": "EGM2008 orthometric height (m)",
"origin": {
"latitude": 37.445,
"longitude": 126.964
},
"projection": "+proj=aeqd +lat_0=37.445 +lon_0=126.964 +datum=WGS84 +units=m +no_defs",
"projectionWkt": "PROJCRS[\"unknown\",BASEGEOGCRS[\"unknown\",DATUM[\"World Geodetic System 1984\",ELLIPSOID[\"WGS 84\",6378137,298.257223563,LENGTHUNIT[\"metre\",1]],ID[\"EPSG\",6326]],PRIMEM[\"Greenwich\",0,ANGLEUNIT[\"degree\",0.0174532925199433],ID[\"EPSG\",8901]]],CONVERSION[\"unknown\",METHOD[\"Azimuthal Equidistant\",ID[\"EPSG\",1125]],PARAMETER[\"Latitude of natural origin\",37.445,ANGLEUNIT[\"degree\",0.0174532925199433],ID[\"EPSG\",8801]],PARAMETER[\"Longitude of natural origin\",126.964,ANGLEUNIT[\"degree\",0.0174532925199433],ID[\"EPSG\",8802]],PARAMETER[\"False easting\",0,LENGTHUNIT[\"metre\",1],ID[\"EPSG\",8806]],PARAMETER[\"False northing\",0,LENGTHUNIT[\"metre\",1],ID[\"EPSG\",8807]]],CS[Cartesian,2],AXIS[\"(E)\",east,ORDER[1],LENGTHUNIT[\"metre\",1,ID[\"EPSG\",9001]]],AXIS[\"(N)\",north,ORDER[2],LENGTHUNIT[\"metre\",1,ID[\"EPSG\",9001]]]]",
"width": 801,
"height": 801,
"spacingMeters": 30,
"radiusMeters": 12000,
"layout": "row-major north-to-south, west-to-east, float32 little-endian",
"heightFile": "gwanaksan.f32",
"geographicCorners": [
[
126.82858665147765,
37.336799644387234
],
[
127.09941334852236,
37.336799644387234
],
[
127.09980363427715,
37.55304278295426
],
[
126.82819636572286,
37.55304278295426
]
],
"observerSurfaceElevation": 606.9063720703125,
"minElevation": 1.314314842224121,
"maxElevation": 618.474609375,
"missingSamples": 0,
"sources": [
{
"file": "Copernicus_DSM_COG_10_N37_00_E126_00_DEM.tif",
"url": "https://copernicus-dem-30m.s3.amazonaws.com/Copernicus_DSM_COG_10_N37_00_E126_00_DEM/Copernicus_DSM_COG_10_N37_00_E126_00_DEM.tif",
"bytes": 29862574,
"sha256": "f530dd28308ecd6c5ceb0405dc1ffb7113bcafdec30d023de50f16dc433a274f",
"crs": "EPSG:4326",
"bounds": [
125.99986111111112,
37.00013888888889,
126.99986111111112,
38.00013888888889
],
"shape": [
3600,
3600
],
"pixelSizeDegrees": [
0.0002777777777777778,
0.0002777777777777778
],
"nodata": null
},
{
"file": "Copernicus_DSM_COG_10_N37_00_E127_00_DEM.tif",
"url": "https://copernicus-dem-30m.s3.amazonaws.com/Copernicus_DSM_COG_10_N37_00_E127_00_DEM/Copernicus_DSM_COG_10_N37_00_E127_00_DEM.tif",
"bytes": 49403795,
"sha256": "4f8fef79da8c18ed9a9a0fb97b3d2695c4681181e013e039d87044e5479f7df6",
"crs": "EPSG:4326",
"bounds": [
126.99986111111112,
37.00013888888889,
127.99986111111112,
38.00013888888889
],
"shape": [
3600,
3600
],
"pixelSizeDegrees": [
0.0002777777777777778,
0.0002777777777777778
],
"nodata": null
}
],
"attribution": "produced using Copernicus WorldDEM-30 © DLR e.V. 2010-2014 and © Airbus Defence and Space GmbH 2014-2018 provided under COPERNICUS by the European Union and ESA; all rights reserved"
}
File diff suppressed because one or more lines are too long
Binary file not shown.
+100
View File
@@ -0,0 +1,100 @@
{
"version": 1,
"dataset": "Copernicus GLO-30 + OSM hajodae coast",
"surfaceType": "Resampled Copernicus DSM; no OSM height correction",
"sourceResolution": "1 arc-second (~30m); interpolated to 10m",
"verticalDatum": "EGM2008 orthometric height (m); sea level approximated as 0m",
"origin": {
"latitude": 38.020813,
"longitude": 128.7352564
},
"projection": "+proj=aeqd +lat_0=38.020813 +lon_0=128.7352564 +datum=WGS84 +units=m +no_defs",
"width": 301,
"height": 301,
"spacingMeters": 10,
"radiusMeters": 1500,
"observerSurfaceElevation": 31.851652145385742,
"minElevation": 0.0,
"maxElevation": 123.29191589355469,
"missingSamples": 0,
"geographicCorners": [
[
128.71817673888106,
38.00729784938007
],
[
128.7523360611189,
38.00729784938007
],
[
128.75234233547536,
38.03432563771381
],
[
128.7181704645246,
38.03432563771381
]
],
"sources": [
{
"file": "data/raw/hajodae/coast.osm",
"url": "https://www.openstreetmap.org/api/0.6/map?bbox=128.700,38.005,128.750,38.045",
"bytes": 2249397,
"sha256": "b6bdbd87e466d5e726f755cd9f9bfc91a01c1a2f2f3fd9db06bcc609d7b22079"
},
{
"file": "data/raw/hajodae/Copernicus_DSM_COG_10_N38_00_E128_00_DEM.tif",
"url": "https://copernicus-dem-30m.s3.amazonaws.com/Copernicus_DSM_COG_10_N38_00_E128_00_DEM/Copernicus_DSM_COG_10_N38_00_E128_00_DEM.tif",
"bytes": 18904152,
"sha256": "ef70790d1e4c889f6a0965b7f39fb8627e5682ddad7cc893cf61084af8c7c012",
"crs": "EPSG:4326",
"bounds": [
127.99986111111112,
38.00013888888889,
128.9998611111111,
39.00013888888889
],
"shape": [
3600,
3600
],
"resolutionDegrees": [
0.0002777777777777778,
0.0002777777777777778
],
"nodata": null,
"min": -0.680739164352417,
"max": 1703.6204833984375,
"maskedSamples": 0,
"nonfiniteSamples": 0
}
],
"attribution": "produced using Copernicus WorldDEM-30 © DLR e.V. 2010-2014 and © Airbus Defence and Space GmbH 2014-2018 provided under COPERNICUS by the European Union and ESA; all rights reserved; © OpenStreetMap contributors (ODbL-1.0)",
"corrections": {
"osmHeightCorrection": false,
"note": "Heights use Copernicus reprojection and bilinear resampling only. OSM masks affect rendering and movement, not stored elevations. Offshore values are not bathymetry. No tide model."
},
"files": {
"heights.f32": {
"source": "Copernicus GLO-30",
"processing": "AEQD projection and bilinear resampling only; no OSM height adjustment",
"licenseUrl": "https://dataspace.copernicus.eu/sites/default/files/media/files/2025-06/copernicus_contributing_mission_data_access_v2_cop_dem_licenses.pdf",
"licenseSection": "GLO-30-F, Articles 4 and 6",
"notice": "source.html"
},
"coast.json": {
"license": "ODbL-1.0",
"licenseUrl": "https://opendatacommons.org/licenses/odbl/1-0/",
"attribution": "© OpenStreetMap contributors",
"sourceUrl": "https://www.openstreetmap.org/copyright",
"processing": "Projected coastline and beach polygons; estimated beach strip for Gisamun"
},
"surface.png": {
"license": "ODbL-1.0",
"licenseUrl": "https://opendatacommons.org/licenses/odbl/1-0/",
"attribution": "© OpenStreetMap contributors",
"sourceUrl": "https://www.openstreetmap.org/copyright",
"processing": "R: land mask; G: sand mask; B: signed coast distance; contains no Copernicus elevations"
}
}
}
+32
View File
@@ -0,0 +1,32 @@
<!doctype html>
<html lang="ko"><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1">
<title>하조대 해안 — 데이터 출처와 표현 범위</title>
<style>body{max-width:850px;margin:48px auto;padding:0 24px;font:16px/1.8 system-ui,sans-serif;color:#e3eaf0;background:#101b25}a{color:#9ed4ef}code{color:#edcda7}h1,h2{line-height:1.3}li{margin:10px 0}</style>
<h1>하조대 해안의 데이터와 표현 범위</h1>
<p>2026-10-30 정자 기준으로 재가공. 관측점은 OSM 하조대 정자(node/12019797394)의 위도 38.020813°, 경도 128.7352564°입니다. 시작·복귀 시 소나무 참고 위치(38°01.252′ N, 128°44.134′ E)를 향하는 약 78° 방위로 수평 시선을 맞춥니다. 좌표와 정자 바닥 높이는 현장 측량으로 검증하지 않았습니다.</p>
<h2>웹용 자료</h2>
<ul>
<li>관측점 주변 3×3km. Copernicus 30m급 DSM을 10m 간격 301×301로 보간했습니다. 높이 파일 362,404 bytes. 보간은 실제 지형 정확도를 높이지 않습니다.</li>
<li>OSM 해안선과 해변 영역을 AEQD 로컬 좌표로 변환했습니다. 원본 해안선을 보존한 육지 판정과 2m 간격 PNG 표면 마스크를 사용합니다. 마스크 간격은 측량 정확도가 아닙니다.</li>
<li>표면 마스크 56,357 bytes, 해안선 JSON 20,003 bytes. 원본 GeoTIFF 약 64MB를 브라우저로 보내지 않습니다.</li>
</ul>
<h2>시각적 보정과 한계</h2>
<ul>
<li>DSM은 수목·건물을 포함하는 표면고도입니다. 높이 격자는 Copernicus 자료를 좌표 변환·보간한 값이며 OSM 경계로 수정하지 않습니다.</li>
<li>해안선 주변 높이 낮추기, 최소 육지 높이 적용, 바다 칸의 0m 덮어쓰기를 하지 않습니다. 정자 좌표의 가공 DSM은 약 31.85m이며 실제 정자 바닥 표고가 아닙니다. 카메라는 렌더링 지면에 눈높이를 더해 배치합니다.</li>
<li>높이 격자는 바다 칸도 Copernicus 보간값을 유지하며 수심으로 해석하지 않습니다. OSM 마스크는 화면에서 바다 영역의 지형을 숨기는 데 사용합니다. 육지·바다 재질은 동일한 마스크를 사용합니다. OSM 경계와 DSM 높이가 맞지 않아 해안에 단차가 나타날 수 있습니다. 해안선의 세부 높이는 10m 격자의 보간값으로 실제 절벽이나 모래턱을 정밀하게 표현하지 못합니다.</li>
<li>바다는 EGM2008 기준 0m로 근사하고 지구 곡률을 적용합니다. 물결·거품·반사는 절차적 시각 효과입니다. 실제 조석·파고·해저 지형·날씨는 반영하지 않습니다.</li>
<li>3×3km 바깥의 육지는 표현하지 않으며 바다 표면만 연장합니다. 먼 해안의 정확한 조망이나 실측 일출 검증용 장면은 아닙니다.</li>
<li>OSM의 작은 섬도 육지 경계로 보존하지만 30m급 높이 원본에 없는 암반 형상·높이는 재현하지 못합니다. 등대·정자·소나무 모델은 포함하지 않습니다. 소나무 참고 좌표는 초기 시선의 방위를 정하는 용도이며 수목의 높이나 모양을 나타내지 않습니다.</li>
<li>바다 진입을 막으며 육지에서만 이동합니다. 일출·일몰 표시는 근사 지면 높이를 사용한 천문 계산으로, 실제 지형 위 첫 태양 관측 시각과 다를 수 있습니다.</li>
</ul>
<h2>출처</h2>
<p>관측점: <a href="https://www.openstreetmap.org/node/12019797394">OSM 하조대 정자</a>. 소나무 방향 참고: <a href="https://files-scs.pstatic.net/2025/10/19/jzjd280prT/%EC%9D%B4%EC%95%BC%EA%B8%B0%EA%B0%80%20%EC%9E%88%EB%8A%94%20%EB%B3%B4%ED%98%B8%EC%88%98_1_2013.pdf">이야기가 있는 보호수(2013) 자료집</a>. 소나무 위치는 참고 좌표이며 현장 재측량값이 아닙니다.</p>
<p><a href="https://copernicus-dem-30m.s3.amazonaws.com/readme.html">Copernicus GLO-30 공개 배포</a> · <a href="https://dataspace.copernicus.eu/explore-data/data-collections/copernicus-contributing-missions/collections-description/COP-DEM">공식 데이터·이용조건</a></p>
<p>produced using Copernicus WorldDEM-30 © DLR e.V. 2010-2014 and © Airbus Defence and Space GmbH 2014-2018 provided under COPERNICUS by the European Union and ESA; all rights reserved</p>
<p>The organisations in charge of the Copernicus programme by law or by delegation do not incur any liability for any use of the Copernicus WorldDEM-30.</p>
<p><a href="https://dataspace.copernicus.eu/sites/default/files/media/files/2025-06/copernicus_contributing_mission_data_access_v2_cop_dem_licenses.pdf">Copernicus 원문 라이선스 (GLO-30-F, 22~24쪽)</a>. 가공 지형을 재배포할 때에도 지정 출처·면책 고지와 제6조의 의무를 유지해야 합니다.</p>
<p>© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap contributors</a>, ODbL-1.0. <a href="coast.json">가공 해안선</a> · <a href="metadata.json">원본 URL·SHA256·가공 설정</a> · <a href="https://www.openstreetmap.org/api/0.6/map?bbox=128.700,38.005,128.750,38.045">OSM 원본 요청</a></p>
<p><a href="https://tour.yangyang.go.kr/pub/yy10view.do?mode=v&amp;seq=120">양양군 하조대해변 안내</a> · <a href="https://tour.yangyang.go.kr/pub/yy10view.do?mode=v&amp;seq=172">하조대 안내</a></p>
<p><a href="/?site=hajodae">하조대 시뮬레이터로 돌아가기</a></p>
<p><a href="/data-sources.html">자료별 라이선스·가공 데이터 다운로드</a></p></html>
Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 428 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 564 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 188 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 713 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 248 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 839 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 784 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 652 KiB

+83
View File
@@ -0,0 +1,83 @@
[
{
"file": "path-color.jpg",
"asset": "dirt",
"source": "https://polyhaven.com/a/dirt",
"url": "https://dl.polyhaven.org/file/ph-assets/Textures/jpg/1k/dirt/dirt_diff_1k.jpg",
"license": "CC0-1.0",
"bytes": 730425,
"md5": "cb37e24797597b1dd1ae3819fa80f076"
},
{
"file": "path-normal.jpg",
"asset": "dirt",
"source": "https://polyhaven.com/a/dirt",
"url": "https://dl.polyhaven.org/file/ph-assets/Textures/jpg/1k/dirt/dirt_nor_gl_1k.jpg",
"license": "CC0-1.0",
"bytes": 1202783,
"md5": "362610edf09fd31735958eecec823a84"
},
{
"file": "path-roughness.jpg",
"asset": "dirt",
"source": "https://polyhaven.com/a/dirt",
"url": "https://dl.polyhaven.org/file/ph-assets/Textures/jpg/1k/dirt/dirt_rough_1k.jpg",
"license": "CC0-1.0",
"bytes": 253549,
"md5": "d936d6760ce0f899b131d30626d52ce9"
},
{
"file": "rock-color.jpg",
"asset": "rock_boulder_dry",
"source": "https://polyhaven.com/a/rock_boulder_dry",
"url": "https://dl.polyhaven.org/file/ph-assets/Textures/jpg/1k/rock_boulder_dry/rock_boulder_dry_diff_1k.jpg",
"license": "CC0-1.0",
"bytes": 859211,
"md5": "da794cd9be3db91e3160cf081109f322"
},
{
"file": "rock-normal.jpg",
"asset": "rock_boulder_dry",
"source": "https://polyhaven.com/a/rock_boulder_dry",
"url": "https://dl.polyhaven.org/file/ph-assets/Textures/jpg/1k/rock_boulder_dry/rock_boulder_dry_nor_gl_1k.jpg",
"license": "CC0-1.0",
"bytes": 802497,
"md5": "6f1c575ceed560ae253f65518cf748e2"
},
{
"file": "rock-roughness.jpg",
"asset": "rock_boulder_dry",
"source": "https://polyhaven.com/a/rock_boulder_dry",
"url": "https://dl.polyhaven.org/file/ph-assets/Textures/jpg/1k/rock_boulder_dry/rock_boulder_dry_rough_1k.jpg",
"license": "CC0-1.0",
"bytes": 668127,
"md5": "0c8b15df3e31c15256da5f8e1b0d0759"
},
{
"file": "forest-color.jpg",
"asset": "forest_leaves_02",
"source": "https://polyhaven.com/a/forest_leaves_02",
"url": "https://dl.polyhaven.org/file/ph-assets/Textures/jpg/1k/forest_leaves_02/forest_leaves_02_diffuse_1k.jpg",
"license": "CC0-1.0",
"bytes": 437891,
"md5": "13e9bfac07cb72ca143e153cc2f589a8"
},
{
"file": "forest-normal.jpg",
"asset": "forest_leaves_02",
"source": "https://polyhaven.com/a/forest_leaves_02",
"url": "https://dl.polyhaven.org/file/ph-assets/Textures/jpg/1k/forest_leaves_02/forest_leaves_02_nor_gl_1k.jpg",
"license": "CC0-1.0",
"bytes": 577163,
"md5": "72002432222467c74cd9980cbddb25a4"
},
{
"file": "forest-roughness.jpg",
"asset": "forest_leaves_02",
"source": "https://polyhaven.com/a/forest_leaves_02",
"url": "https://dl.polyhaven.org/file/ph-assets/Textures/jpg/1k/forest_leaves_02/forest_leaves_02_rough_1k.jpg",
"license": "CC0-1.0",
"bytes": 192523,
"md5": "578e637510d8fdd7acf97afc6f329e9d"
}
]
+17
View File
@@ -0,0 +1,17 @@
<!doctype html>
<html lang="ko"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>관악산 지형 데이터 출처</title>
<style>body{max-width:760px;margin:48px auto;padding:0 24px;background:#101823;color:#e4eaf0;font:16px/1.8 system-ui,sans-serif}a{color:#eec99d}h1{font-size:24px}small{color:#a8bac8}code{overflow-wrap:anywhere}</style></head>
<body><h1>관악산 지형 데이터</h1>
<p>Copernicus DEM GLO-30 Public, AWS 배포 2021 release. 원본 N37 E126 및 N37 E127 타일에서 임시 관측점 37.4450° N, 126.9640° E 중심 24×24km를 추출했습니다.</p>
<ul><li>원본: WGS84 경위도 1 arc-second 격자(명목 30m급), 높이 EGM2008 기준(m).</li>
<li>화면: 관측점 중심 AEQD 투영, 30m 간격으로 bilinear 재표본화한 801×801 격자. 색상은 높이·경사 기반 표현이며 항공사진이 아닙니다.</li>
<li>DSM은 수목과 구조물 높이를 포함할 수 있습니다. 별도 VWorld 건물과 추정 정상 구조물은 각 출처 안내를 따릅니다.</li>
<li>카메라: 이 격자의 관측점 표면 606.906m + 눈높이(기본 1.7m, 1.60~1.95m 조절). 현장 측량값이 아니며 기존 임시 629m와 다릅니다.</li>
<li>지구 곡률은 평균 반지름 6,371,008.8m로 근사하고, 지상 대기굴절은 반영하지 않습니다.</li>
<li>영역 밖은 단순 해수면 기준 지평선으로 표시합니다. 그 너머 실제 능선과 수목·건물의 세부 차폐를 검증한 결과가 아닙니다.</li>
<li>일출·일몰 숫자는 고도 보정 천문 시각입니다. 지형 위로 태양이 처음 보이는 시각을 의미하지 않습니다.</li></ul>
<p>produced using Copernicus WorldDEM-30 © DLR e.V. 2010-2014 and © Airbus Defence and Space GmbH 2014-2018 provided under COPERNICUS by the European Union and ESA; all rights reserved</p>
<p>The organisations in charge of the Copernicus programme by law or by delegation do not incur any liability for any use of the Copernicus WorldDEM-30.</p>
<p>가공 지형을 재배포할 때에도 지정 출처·면책 고지와 원문 라이선스 제6조의 의무를 유지해야 합니다.</p>
<p><a href="https://registry.opendata.aws/copernicus-dem/">공식 배포 안내</a> · <a href="https://copernicus-dem-30m.s3.amazonaws.com/readme.html">COG 파일 명세</a> · <a href="https://dataspace.copernicus.eu/sites/default/files/media/files/2025-06/copernicus_contributing_mission_data_access_v2_cop_dem_licenses.pdf">원문 라이선스 (GLO-30-F, 22~24쪽)</a> · <a href="gwanaksan.json">메타데이터·원본 URL·SHA256</a></p>
<small>다운로드·전처리: 2026-10-29. 원본 파일은 프로젝트 data/raw/copernicus에 보관하며 웹에는 가공 격자만 제공합니다.</small></body><p><a href="/data-sources.html">자료별 라이선스·가공 데이터 다운로드</a></p></html>
Binary file not shown.
Binary file not shown.
+13
View File
@@ -0,0 +1,13 @@
{
"version": 1,
"sourceHash": "8f7306b64c88b4d706c8bd8ecce0385fe1f5f64502123735b13d7affc2cb8ba7",
"bufferHash": "59f836d4ff44c1f047c4165c99672fc9e7a04f9981f15561f4277754577d6e5a",
"byteLength": 15601904,
"gzipBytes": 6138340,
"originalVertices": 1180560,
"vertices": 209224,
"triangles": 393520,
"originalAttributeBytes": 61389120,
"generateMs": 3773.8809,
"decodeMs": 13.8812999999991
}
+33
View File
@@ -0,0 +1,33 @@
<!doctype html><html lang="ko"><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1">
<title>관악산 정상 주변 추정 지형</title>
<style>body{max-width:850px;margin:40px auto;padding:0 24px;font:16px/1.8 system-ui;color:#27332e}a{color:#25654e}table{border-collapse:collapse}td,th{padding:8px;border:1px solid #ccc}</style>
<h1>사진 기반 정상 주변 지형 보정</h1>
<p>2026-10-30. 이것은 정밀 DEM이나 측량 결과가 아닌 시각적 추정 모델입니다. 원본 Copernicus 30m DSM과 원래 좌표 원점은 변경하지 않았습니다.</p>
<h2>촬영 위치 추정</h2>
<p>시작점은 북위 37.44472°, 동경 126.96422° 부근으로 추정했습니다. 레이돔 북동쪽 약 84m의 정상 쪽 암반을 후보로 삼았습니다. 사용자 제공 JINK의 2018년 6월 파노라마에는 레이돔 암봉이 오른쪽 위, 계곡과 시가지가 왼쪽으로 보입니다. 기존 참고사진 photo-09·photo-10에서도 안부를 건너 암봉 위 시설을 보는 관계가 확인됩니다. 이 배치와 남향 시야를 맞춘 후보이며, 실제 촬영 GPS를 복원하거나 오차를 측정한 결과가 아닙니다. 수십 미터 이상의 위치 차이가 남을 수 있습니다.</p>
<p>블로그의 37.4430°, 126.9641°와 629m는 해당 파노라마의 촬영점·표고임이 확인되지 않아 그대로 사용하지 않았습니다. 사용자 등고선 스크린샷은 넓은 능선과 골짜기 배치의 정성적 참고이며, 등고선을 좌표화하거나 고해상도 DEM으로 추출한 것은 아닙니다.</p>
<h2>높이와 범위</h2>
<p>암릉은 Blender MCP에서 실제 앱 지형과 시점을 참조해 별도로 조형한 GLB 모델을 사용합니다. 기운 상부 바위, 오목한 세로 절리면, 돌출부와 하부 암반을 제작하고 풍화 홈을 메시로 표현했습니다. 기존의 반복 구형 암괴 생성은 제거했습니다. 사진의 형상을 참고한 근사 모델이며 사진측량·실측 복원이 아닙니다. 정상 석판 보행 경계는 앞서 확장한 경계를 유지합니다.</p>
<p>추가 사용자 사진을 참고해 레이돔 하부를 좁은 받침과 급한 암벽으로 보정하고, 남향 시야 오른쪽의 바위 첨봉과 시설 연결 계단을 추가했습니다. 바위 형상·계단 치수는 시각적 추정이며 시설 계단은 보행 경로가 아닙니다. 남쪽 송신탑 군집과 북쪽 정상 통신탑은 기존 지도상의 별도 시설 위치를 유지합니다. 첫 사진의 레이돔 옆 철탑은 시기·정체가 확인되지 않아 북쪽 통신탑을 이동시키는 근거로 사용하지 않았습니다. 정상 표지석 사진은 넓은 암반 경사면의 참고이며 인파·적설·매점 천막은 재현하지 않았습니다.</p>
<p>촬영점 지면 620m, 레이돔 아래 암봉 628m, 중간 안부 606m 등을 작업용 높이로 설정했습니다. 이 값들은 사진에서 측정한 수치가 아니라 상대 높이를 구성하기 위한 추정 제어점입니다. 모델 건물·돔의 치수와 위치도 기존 추정값을 사용합니다.</p>
<p>제어점의 원본 대비 높이 차이를 거리 가중 보간해 지형에 더합니다. 시작점 반경 100m 안에서는 보정량을 그대로 적용하고 100~200m 구간에서 부드럽게 줄여 200m 바깥은 원본 메시와 같습니다. 메시의 근거리 세분화는 원본 해상도 향상을 의미하지 않습니다. 보행 지면·구조물 기초·미니맵은 같은 보정 메시를 사용합니다.</p>
<p>‘원본 지형 비교’는 같은 추정 시작점과 시선으로 원본 DSM을 보여줍니다. 전환 시 이동 위치와 선택 시각은 초기화됩니다. 태양 방위 계산과 별개로 지형 차폐는 추정 지형의 영향을 받으며, 표시 일출 시각은 실제 능선 통과 시각이 아닙니다.</p>
<h2>시작점 반경 200m 보행 구역</h2>
<p>정상 석판 보행 범위를 추가 사진과 저장된 2013년 거리뷰로 재검토했습니다. 이전 경계는 시작점 주변에만 면적을 부여해 북쪽 정상 암반에서도 좁은 경로 밖으로 이동할 수 없었습니다. OSM 정상 후보점(node/442878166, 37.4451398°, 126.9642379°)까지 이어지는 넓은 암반 경사면을 하나의 보행 영역으로 연결했습니다. 지도상의 정상점이 표지석의 실측 위치라는 뜻은 아닙니다. 외곽선·약 40m 폭과 75m 길이의 범위는 사진 해석이며 공식 출입 경계가 아닙니다. 서쪽 통신시설과 동쪽 절벽 밖은 제외하고 미니맵·바위 재질·이동 판정에 같은 경계를 적용합니다. 공개 등산 안내도는 정상 접근 경로를 확인하는 용도이며 석판 외곽 치수를 제공하지 않습니다(<a href="https://seoulhiking.or.kr/data/mountain_pdf/note_20250910183805443_01.pdf">서울 등산관광 관악산 코스 지도</a>).</p>
<p>네이버 거리뷰의 정상 암반·난간 옆 하산로·안내판 갈림길을 참고했습니다. 확인한 파노라마는 4GIINusjBpMhkE6lqWL10w와 dusWkUEvILaraw4XtD9-KA이며 화면 촬영일은 2013년 10월입니다. 200m 전 구간의 연속 촬영이나 현재 개방 여부를 확인한 것은 아닙니다.</p>
<p>길 중심선은 OpenStreetMap way/337498789, way/37751526, way/337498787, way/337498788을 사용했습니다. 길 폭(2.2~3.2m), 시작점 암반 경계와 수목 배치는 시각적 추정입니다. 계단 구간도 현재는 기존 보정 지면을 따르는 보행면으로 단순화했습니다. 레이돔 시설 진입 가지길은 제외했습니다.</p>
<p>흙·자갈 재질은 길, 밝은 바위 재질은 암반, 이끼·낙엽 바닥 재질은 길 밖 수목 구역을 표시합니다. 입체 나무는 제거한 상태입니다. 모든 암반이 이동 가능한 것은 아니며 정상 시작점 암반과 연결된 길만 이동할 수 있습니다. 반경 200m 경계와 시설 구역에서 멈춥니다. 미니맵의 금색 선은 경로, 점선 원은 200m 경계, 흰 점은 시작점입니다. 걸은 거리는 수평 이동 누계이며 복귀 버튼으로 초기화됩니다.</p>
<p>이 자료는 시뮬레이터용 근사 모델이며 실측 등산로 또는 현장 길안내 자료가 아닙니다. 거리뷰 이미지는 앱 텍스처로 재배포하지 않습니다. 경로 출처: <a href="https://www.openstreetmap.org/copyright">© OpenStreetMap contributors, ODbL</a>. <a href="https://map.naver.com/p/search/연주대/place/19546172?p=4GIINusjBpMhkE6lqWL10w,178.8,-23.3,80,Float">참고한 네이버 거리뷰</a>.</p>
<h2>지면 재질 (1단계)</h2>
<p>반경 200m에 색상·OpenGL 노멀·거칠기 맵을 적용했습니다. Poly Haven의 <a href="https://polyhaven.com/a/dirt">Dirt</a>, <a href="https://polyhaven.com/a/rock_boulder_dry">Rock Boulder Dry</a>, <a href="https://polyhaven.com/a/forest_leaves_02">Forest Leaves 02</a>를 사용합니다. 모두 CC0이며 관악산 현장을 촬영한 재질은 아닙니다. 암반은 화강암 분위기의 대체 재질이며 실제 암종을 확인한 스캔은 아닙니다. 파일 출처와 해시는 <a href="/terrain/materials/sources.json">재질 목록</a>에 기록했습니다. Powered by Poly Haven.</p>
<p>길·암반 구역과 보행 제한은 기존 모델을 사용합니다. 낙엽 무늬는 먼 거리에서 약해집니다. 흙길과 낙엽 바닥은 길 경계 안쪽 0.5m~바깥쪽 0.4m에서 색상·노멀·거칠기를 함께 혼합합니다. 작은 불규칙성을 더한 시각적 전환이며 보행 경계는 그대로입니다. 암반 경계도 안쪽 0.7m~바깥쪽 0.5m 구간에서 흙·낙엽과 색상·노멀·거칠기를 혼합합니다. 불규칙한 경계는 시각적 표현이며 실측 균열은 아닙니다. 높이 기반 혼합, 절벽용 트라이플래너, 입체 풀 포기는 아직 적용하지 않았습니다. 재질은 지형 실측 해상도나 산의 외곽선을 바꾸지 않습니다.</p>
<h2>지면 로딩 최적화</h2>
<p>정상 지면과 재질 경계 거리는 미리 계산한 파일을 읽습니다. 경계와 시작점 20m 안쪽은 촘촘한 메시를 유지하며, 경계 밖 단일 재질 영역만 최대 약 5.6m 변 길이로 줄였습니다. 기존 지형 삼각형의 평면을 그대로 따릅니다. 내부의 법선·색상 보간은 조금 달라질 수 있습니다. 세분화 수준이 달라지는 접합부는 이웃의 실제 꼭짓점과 속성을 재사용해 연결합니다.</p>
<p>정상 재질 메시의 꼭짓점은 2,333,889개에서 58,513개, 삼각형은 777,963개에서 111,111개로 줄었습니다. 속성·인덱스 버퍼는 약 4.38MB, gzip 전송 파일은 약 1.77MB입니다. 텍스처 원본 9개(약 5.72MB)는 유지합니다. 단일 재질 내부에서는 이웃 재질 샘플을 생략하며 경계에서만 혼합합니다.</p>
<p>지형·경로·생성 상수를 바꾼 뒤 <code>npm run prepare:summit</code>으로 다시 생성합니다. <code>npm run check:summit</code>은 입력 해시와 파일 무결성을 확인하며 정식 빌드 전에도 실행됩니다. <code>?profile=1</code>에서는 콘솔에 지면 구성 시간·첫 장면 시간·90프레임 중 마지막 60프레임 간격을 기록합니다. 첫 장면은 모든 텍스처 로드 완료를 뜻하지 않습니다.</p>
<h2>참고자료</h2><ul>
<li>사용자 제공 Google Maps 파노라마: JINK, 2018년 6월, 사진 ID CIHM0ogKEICAgIDErpDi7AE. 이미지 자체는 앱에 재배포하지 않습니다.</li>
<li>사용자 제공 Google Maps 등고선 스크린샷: 정상·연주대·연주암 주변 능선 배치 참고, 격자 해상도 및 정확도 미확인.</li>
<li>로컬 참고사진: data/references/summit/photos/photo-09.jpg, photo-10.jpg. 파일별 원출처는 photos/verified-index.json.</li>
<li><a href="/terrain/source.html">Copernicus 원본 지형 출처</a> · <a href="/structures.html">구조물 근거·제한</a></li>
</ul><p>이 추정 모델은 사진과 비슷한 공간 관계를 탐색하기 위한 것이며, 현장 GPS·정밀 표고 자료 확보 시 교체해야 합니다.</p><p><a href="/data-sources.html">자료별 라이선스·가공 데이터 다운로드</a></p></html>