사용한 텍스쳐 : https://ambientcg.com/view?id=Plastic001
또 다른 예
공간정보시스템 / 3차원 시각화 / 딥러닝 기반 기술 연구소 @지오서비스(GEOSERVICE)
사용한 텍스쳐 : https://ambientcg.com/view?id=Plastic001
또 다른 예
GIS 시스템을 개발하거나 이용할때 고객으로부터 제공받은 SHP 공간 데이터를 사용하게 되는데.. 가끔씩 제공받는 SHP 데이터의 지오메트리의 정점이 잘못 구성된 경우가 있습니다. 지오메트리가 잘못될 경우 공간 연산 기능에 대한 결과가 잘못되거나 실행 중에 시스템이 멈춰버립니다. 아예 시스템이 멈춰버리면 다행인데 에러 없이 잘못된 결과를 사용자에게 제공하는 것이 더 큰 문제입니다.
잘못된 지오메트를 가진 SHP 데이터는 의외로 상당히 많습니다. 국가에서 제공하는 공간 데이터 중 상당수가 잘못된 지오메트리를 포함하고 있습니다. 흔히 알려진 잘못된 지오메트리의 경우는 다음과 같습니다.
이런 잘못된 지오메트리를 웹에서 간단하게 고칠 수 있는 기능을 GeoService-Web에서 제공합니다. 아래의 화면은 지적도가 포함하고 있는 지오메트리를 검수해서 잘못된 지오메트리를 고치는 기능입니다.
앞서 말씀 드렸듯 처음 SHP 파일을 받게 되면 잘못된 지오메트리를 포함하고 있는 데이터인지 반드시 확인 하셔야 합니다. 이런 확인을 위해 별도의 프로그램을 설치할 필요 없이 웹에서 바로 실행해 그 결과를 얻을 수 있는 GeoService-Web의 “잘못된 지오메트리 고치기” 기능을 사용해 보시기 바랍니다. 웹에서 한번의 가입 만으로 사용하실 수 있습니다.
GeoService-Web은 아래의 링크를 통해 확인하실 수 있습니다.
웹 UI 라이브러리인 GWC에서 제공하는 Grid 컴포넌트에서 셀 내용을 사용자정의 형태로 표현하는 예제 코드입니다.
먼저 DOM 구성은 다음과 같습니다.
그리고 CSS 구성은 다음과 같구요.
.center { display: flex; width: 100%; height: 100%; justify-content: center; align-items: center; gap: 1em; } #grid { width: 500px; height: 250px; }
js 코드는 다음과 같습니다.
window.onload = () => { grid.columns = [ { name: "NO", width: "20px" }, { name: "색상" }, { name: "범위" }, ]; const columnIndex = 1 grid.setCustomDrawMethod(columnIndex, (item, parentDom) => { const dom = document.createElement("div") dom.style.width = "100%" dom.style.height = "10px" dom.style.backgroundColor = item parentDom.style.width = "90px" return dom }) grid.data = [ { values: ["1", "#ff0000", "100-200"] }, { values: ["2", "#ffff00", "200-300"] }, { values: ["3", "#ff00ff", "300-400"] }, { values: ["4", "#00ffff", "400-500"] }, { values: ["5", "#9f9f9f", "500-600"] }, { values: ["6", "#ff0000", "600-700"] }, { values: ["7", "#ffff00", "800-900"] }, { values: ["8", "#ff00ff", "1000-1100"] }, { values: ["9", "#00ffff", "1100-1200"] }, { values: ["10", "#9f9f9f", "1300-1400"] }, ]; // grid의 data를 먼저 지정하고 setCustomDrawMethod를 그 다음에 호출할 경우 아래의 코드가 필요함 //grid.update() grid.fixFirstColumn = true; grid.addEventListener("columnclick", (event) => { const v = grid.getColumn(event.detail.index).name; gwcMessage(`컬럼명: ${v}`); }); grid.addEventListener("dataclick", (event) => { const v = grid.getData(event.detail.row, event.detail.column); gwcMessage(`데이터: ${v}`); }); };
실행 결과는 다음과 같습니다.
보기만 해두 시원한 얼음~ 어르미 와써요~!