일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- PointCloud
- Potree
- threejs
- CesiumJS
- publish/subscribe
- WMTS
- pg_notify
- raster2pgsql
- 3D tiles
- 3DTiles
- georeferrencing
- PostgreSQL
- PDAL
- QGIS
- Line Dashed
- VWORLD
- GDAL
- attribute Selector
- extent linestring
- css
- Cesium
- PostGIS
- jupyternotebook
- GIS
- line width
- DXF
- GeoServer
- display:flex
- gdal2tiles
- anotherdxfimporter
- Today
- Total
코드조각 저장소
GDAL WMS Tiles 만들기 본문
위성영상, 고해상도 TopoGraphy(GeoTiff) 데이터가 있다면 이미지 타일을 만드는 법은 여러가지가 있습니다. GDAL 뿐만아니라 QGIS, ArcGIS 등등이 있습니다.
만약 적절한 데이터가 없다면 데이터(GeoTiff)를 만드는 수 밖에 없는데 고해상도 위성영상 사진을 구하고 이미지에 좌료값을 맵핑하는 Georeferencing이란 작업을 통해 이번에 사용하고자 하는 데이터를 만드는 과정이 필요합니다. 저도 이번에 진행해 보았는데 기초지식 없이는 따라하기가 수월하지 않았고, 결과물 또한 만족 스럽지 않았습니다.
www.qgistutorials.com/ko/docs/advanced_georeferencing.html
항공사진 지오레퍼런싱 — QGIS Tutorials and Tips
항공사진 지오레퍼런싱 QGIS 예제 :doc:`Georeferencing Topo Sheets and Scanned Maps`에서 지오레퍼런시 기본 과정을 살펴보았습니다. 거기서는 스캔된 지도에서 좌표를 읽어내고 수작업으로 좌표를 입력하
www.qgistutorials.com
이러한 가운데 OpenTopoGraphy를 알게 되었고 좋은 자료를 수집 할 수 있어서 사용게 되었습니다.
그러면 이제 Tile을 만들어 보겠습니다. Conda 가상환경 또는 GDAL이 설치되어 있는 환경에서 실행해야 합니다.
#activate pdalenv
(base)
conda activate pdalenv
#make wms tiles
#QIGS에서 Export한 hawaii.tiff 파일이 있는 위치에서 wms 폴더로 타일들을 생성합니다.
#좌표계 지정 옵션이 있는데 QGIS 저장시 지정된 EPSG:3857을 사용합니다.
(pdalenv)
python "C:\Anaconda3\envs\pdalenv\Scripts\gdal2tiles.py" hawaii_gm.tif --s_srs EPSG:3857 wms
실행하면서 오류가 발생하지 않는다면 wms 폴더에 타일들이 생성되었습니다. conda환경이 아닌 경우나 정상 실행이 되지 않는 다면 Conda의 가상환경 생성 부터 다시 해보시기 바랍니다.
gdal2tiles에 대한 공식 문서도 참가 하시면 도움이 되실것 같습니다.
gdal.org/programs/gdal2tiles.html
gdal2tiles.py — GDAL documentation
Resampling method (average, near, bilinear, cubic, cubicspline, lanczos, antialias, mode, max, min, med, q1, q3) - default ‘average’.
gdal.org
이렇게 깔끔한 데이터 GeoTiff가 있다면 가단한 명령만으로도 이미지 타일을 생성하는것은 어렵지 않습니다. 이번에는 처음 목표에서 설정한 PointCloud에서 RGB 값을 추출하여 GeoTiff를 생성하는 경우입니다.
PDAL을 이용하여 PointCloud의 자료에 접근하고 GDAL Driver를 사용하여 결과물을 만드는 PipeLine 스크립트를 작성하여 수행하고, PDAL에서 지원하는 GDAL Driver는 한번에 하나의 Band만 생성될 수 있어서 원본 PC에서 R,G,B 채널 파일을 생성하고 gdalmerge를 통해 Multi Band tiff(RGB)로 변환 합니다. 추가적으로는 No Data 값을 처리하기위해 변환이 필요할 수도 있습니다.
https://github.com/PDAL/PDAL/issues/1561
Multiband output in writers.gdal · Issue #1561 · PDAL/PDAL
The writers.gdal driver needs to support multiband output so we can rasterize multiple bands at once. A scenario where this would be immediately useful is the rasterization of Red, Green, and Blue ...
github.com
참고하였던 내용입니다. 원본데이터가 laz 파일 포멧이여서 저는 XYZRGB Text 포멧으로 변경하여 작업 하였습니다.
#pipeline json file
#pdal pipeline -i to_geotiff_c.txt
# 각 색상별 수행 Red, Green, Blue : dimension 변경
{
"pipeline": [
{
"type": "readers.text",
"filename": "data.xyz",
"header" : "X Y Z Red Green Blue"
},
{
"type": "writers.gdal",
"resolution": 1,
"dimension": "Red",
"filename":"outputfileB.tif"
}
]
}
#각 색상병 tif 생성
pdal pipeline -i readXYZ.json --writers.gdal.dimension=Red --writers.gdal.filename=Red.tif
pdal pipeline -i readXYZ.json --writers.gdal.dimension=Green --writers.gdal.filename=Green.tif
pdal pipeline -i readXYZ.json --writers.gdal.dimension=Blue --writers.gdal.filename=Blue.tif
#각 tif를 각 Band channel로 묶기
python "C:\Anaconda3\envs\pdalenv\Scripts\gdal_merge.py" -separate Red.tif Green.tif Blue.tif -o ./combined.tif
#No Data 값 처리(투명도처리) - 생성된 파일 속성에 따라 값 변경 필요
gdalbuildvrt -srcnodata "255 255 255" temp.vrt combined.tiff
gdal_translate -of VRT -ot Byte -scale conbined.tif temp.vrt
어떤 데이터를 쓰던지 GeoTiff 고해상도 이미지로 wms Tiles을 생성하는것은 gdal2tile로 가능합니다. 생성된 샘플페이지입니다.