📋
XDWorld_WebGL_Manual
  • 소개
    • XDWorld API
    • 시작하기
    • About EGIS
    • Release Note
      • 2.1x 버전 업데이트
      • 2.x 버전 업데이트
      • 1.6x 버전 업데이트
      • 1.5x 버전 업데이트
      • 1.4x 버전 업데이트
      • 1.3x 버전 업데이트
      • 이전 버전 업데이트
    • Tutorial
      • 카메라 설정
      • POI 생성하기
      • 폴리곤 생성하기
      • 라인 생성하기
      • 모델 추가하기
      • 레이어 설정
      • 배경 지도 설정
      • 거리 측정
      • 면적 측정
      • 높이 측정
      • 반경 측정
  • API
    • Module
    • Core
      • Collection
      • JSAABBox3D
      • JSColor
      • JSLine3D
      • JSSize2D
      • JSSize3D
      • JSVector2D
      • JSVector3D
      • JSVec2Array
      • JSVec3Array
      • JSDateTime
    • Analysis
      • JSAnalysis
      • JSAnalysisGridShadow
      • JSEarthquake
      • JSEditTerrain
      • JSFlood
      • JSGridAnal
      • JSSightAnalysis
      • JSSlope
      • JSTransparency
      • JSSolarManager
    • Camera
      • JSCamera
    • Layer
      • JSLayer
      • JSLayerList
      • JSImageryProvider
    • Map
      • JSMap
      • JSTerrain
      • JSIndexMap
    • Object
      • JSObject
      • JSAntenna
      • JSArrow
      • JSBarGraph
      • JSBarGraph3D
      • JSBillboard
      • JSColorGrid
      • JSColorGrid3D
      • JSColorPolygon
      • JSFigure
      • JSFlow
      • JSFlowPolygon
      • JSGhostSymbol
      • JSGhostSymbolMap
      • JSHTMLObject
      • JSIcon
      • JSInstanceObject
      • JSLineString
      • JSMultiCube
      • JSMultiPoint
      • JSPipe
      • JSPoint
      • JSPointGraph
      • JSPolygon
      • JSPolygonStyle
      • JSPolyLineStyle
      • JSReal3D
      • JSSurfaceGraph
      • JSSymbol
      • JSTimeSeriesObject
      • JSTraceTarget
      • JSTyphoon
      • JSVideoObject
      • JSViewFrustum
    • Option
      • JSControl
      • JSNavigationControl
      • JSOption
    • ETC
      • JSMath
      • JSProj
      • ~~JSProjection~~
      • SOPObject
      • EVENT
      • Type List
      • Tag List
Powered by GitBook
On this page
  • Methods
  • setActive(isActive) → void
  • setModuleAngle(useDefault, angle) → void
  • setModuleImage(imageData, width, height) → boolean
  • setProviderMode(isProvider) → void
  • setModuleMargin(include, exclude, moduleSide, moduleTopDown, arraySide, arrayTopDown) → void
  • setDownScale(enable, length) → void
  • getModuleCount() → number
  • setSouthDeploy(enable) → void
  • clearPreview() → void
  • selectRoofByObject(layerName, objectKey) → boolean
  • getAreaPointsOnTerrain() → JSVec3Array
  • getModuleSetWidthGapOnTerrain() → number
  • getModuleSetHeightGapOnTerrain() → number
  • setDirectionOfModuleOnTerrain(isSpecific, direction) → void
  • rebuildModuleOnTerrain() → void
  • setModuleSetWidthGapOnTerrain(gap) → void
  • setModuleSetHeightGapOnTerrain(gap) → void
  • getAlignAreaAngleOnTerrain() → number
  • getCenterOfMassOnTerrain() → CJSVector3D
  • getTerrainModuleCount() → number
  • clearModuleOnTerrain() → void
  • getLayerPannelInfo(layerName) → string
  • SetModuleArray(nSection, nSectionCount, nSectionSet) → boolean

Was this helpful?

  1. API
  2. Analysis

JSSolarManager

태양광 패널 배치 및 분석을 위한 JSSolarManager API 문서입니다.

태양광 패널 배치, 설정, 분석 등을 위한 주요 인터페이스를 제공하는 클래스입니다. 건물 또는 지형 기반의 설치를 모두 지원하며, 다양한 파라미터 설정 및 결과 조회가 가능합니다.

Methods

setActive(isActive) → void

태양광 모듈 편집을 활성화 또는 비활성화합니다.

  • Parameters

    • isActive (boolean): true 시 태양광 배치 활성화

Module.getSolar().setActive(true);

setModuleAngle(useDefault, angle) → void

태양광 패널의 각도를 설정합니다.

  • Parameters

    • useDefault (boolean): 기본값 사용 여부

    • angle (number): 기울기 각도 (degrees)

Module.getSolar().setModuleAngle(true, 30.0);

setModuleImage(imageData, width, height) → boolean

사용자 정의 이미지를 태양광 패널 텍스처로 설정합니다.

Name
Type
Description

imageData

array

이미지 픽셀 데이터 (RGBA).

width

number

이미지의 너비 (pixels).

height

number

이미지의 높이 (pixels).

  • Return

    • true: 설정 성공.

    • false: 설정 실패.

    • 실패 조건

      • imageData가 null이거나 비어 있는 경우

      • width 또는 height가 0 이하인 경우

let image = new Uint8Array([
  255, 0, 0, 255,     // 빨강
  0, 255, 0, 255,     // 초록
  0, 0, 255, 255,     // 파랑
  255, 255, 255, 255  // 흰색
]);
let result = Module.getSolar().setModuleImage(image, 2, 2);

setProviderMode(isProvider) → void

태양광 Provider Mode를 설정합니다.

Name
Type
Description

isProvider

boolean

true: 공급자 모드, false: 소비자 모드

  • Return

    • 없음

Module.getSolar().setProviderMode(true);

setModuleMargin(include, exclude, moduleSide, moduleTopDown, arraySide, arrayTopDown) → void

태양광 모듈 및 어레이 배치 간격을 설정합니다. 음수 값은 자동으로 0으로 처리됩니다.

Name
Type
Description

include

number

전체 배치 경계 포함 여백 (meters)

exclude

number

전체 배치 경계 제외 여백 (meters)

moduleSide

number

모듈 간 좌우 간격 (meters)

moduleTopDown

number

모듈 간 상하 간격 (meters)

arraySide

number

어레이 간 좌우 간격 (meters)

arrayTopDown

number

어레이 간 상하 간격 (meters)

  • Return

    • 없음

Module.getSolar().setModuleMargin(1.0, 0.5, 0.1, 0.1, 0.2, 0.2);

setDownScale(enable, length) → void

태양광 모듈 배치 시 일정 길이 간격으로 스케일 조정 기능을 설정합니다.

Name
Type
Description

enable

boolean

true 시 다운스케일 기능 활성화

length

number

스케일 조정 기준 길이 (양수, meters 단위)

  • Return

    • 없음

Module.getSolar().setDownScale(true, 3.0);

getModuleCount() → number

현재 활성화된 객체 내에 배치된 태양광 모듈의 총 개수를 반환합니다.

  • Return

    • number: 배치된 모듈 수

    • 0: 유효한 객체가 없거나 모듈이 배치되지 않은 경우

let count = Module.getSolar().getModuleCount();

setSouthDeploy(enable) → void

남향 일괄 배치를 설정합니다. 해당 설정이 활성화되면 하나의 섹션으로 모든 모듈이 남향으로 배치됩니다.

  • Parameters

    • enable (boolean): true 시 남향 일괄 배치 적용

Module.getSolar().setSouthDeploy(true);

clearPreview() → void

모든 태양광 패널의 미리보기 상태를 초기화합니다. m_bPreview 값이 false로 설정되어, 화면에서 미리보기 모듈이 제거됩니다.

Module.getSolar().clearPreview();

selectRoofByObject(layerName, objectKey) → boolean

지정한 레이어와 객체 키를 기반으로 해당 지붕을 선택합니다. 선택된 지붕 정보는 이후 태양광 패널 배치 등의 작업에 사용됩니다.

  • Parameters

    • layerName (string): 대상 객체가 속한 레이어 이름

    • objectKey (string): 대상 객체의 고유 키

  • Return

    • true: 지붕 선택 성공

    • false: 지붕 선택 실패

Module.getSolar().selectRoofByObject("building_layer", "object_001");

getAreaPointsOnTerrain() → JSVec3Array

지형에 설정된 태양광 설치 영역의 경계 좌표들을 반환합니다.

  • Return

    • JSVec3Array: 지형에 지정된 영역의 3D 좌표 배열

let areaPoints = Module.getSolar().getAreaPointsOnTerrain();

getModuleSetWidthGapOnTerrain() → number

지형에 배치된 태양광 모듈 배열 간의 가로 간격(m)을 반환합니다.

  • Return

    • number: 모듈 배열 간 가로 간격 (meters)

let widthGap = Module.getSolar().getModuleSetWidthGapOnTerrain();

getModuleSetHeightGapOnTerrain() → number

지형에 배치된 태양광 모듈 배열 간의 세로 간격(m)을 반환합니다.

  • Return

    • number: 모듈 배열 간 세로 간격 (meters)

let heightGap = Module.getSolar().getModuleSetHeightGapOnTerrain();

setDirectionOfModuleOnTerrain(isSpecific, direction) → void

지형에 배치된 태양광 모듈의 방향 각도를 설정합니다. _isSpecific이 true인 경우 입력한 각도(direction)를 적용하며, false인 경우 자동 방향을 사용합니다.

  • Parameters

    • isSpecific (boolean): true 시 사용자가 지정한 각도를 적용

    • direction (number): 모듈 설치 방향 각도 (0~360도, degrees)

Module.getSolar().setDirectionOfModuleOnTerrain(true, 180.0);

rebuildModuleOnTerrain() → void

지형에 배치된 태양광 모듈을 현재 설정값에 따라 다시 배치합니다. 방향, 간격, 여백 등의 변경사항이 반영됩니다.

Module.getSolar().rebuildModuleOnTerrain();

setModuleSetWidthGapOnTerrain(gap) → void

지형에 배치되는 태양광 모듈 세트 간의 가로 간격을 설정합니다.

  • Parameters

    • gap (number): 세트 간 가로 간격 (meters). 0보다 작은 값은 자동으로 0으로 보정됩니다.

Module.getSolar().setModuleSetWidthGapOnTerrain(1.5);

setModuleSetHeightGapOnTerrain(gap) → void

지형에 배치되는 태양광 모듈 세트 간의 세로 간격을 설정합니다.

  • Parameters

    • gap (number): 세트 간 세로 간격 (meters). 0보다 작은 값은 자동으로 0으로 보정됩니다.

Module.getSolar().setModuleSetHeightGapOnTerrain(1.0);

getAlignAreaAngleOnTerrain() → number

지형에 설정된 배치 영역의 정렬 각도를 반환합니다.

  • Return

    • number: 정렬 각도 (degrees 단위). 0 ~ 360 사이의 값이 반환됩니다.

let angle = Module.getSolar().getAlignAreaAngleOnTerrain();

지형 위에 배치된 태양광 패널의 질량 중심 위치를 반환합니다.

반환되는 값은 경도, 위도, 고도 순서의 좌표입니다.

  • Return

let center = Module.getSolar().getCenterOfMassOnTerrain();
console.log(center.lon, center.lat, center.alt);

getTerrainModuleCount() → number

지형에 설치된 태양광 모듈의 개수를 반환합니다.

  • Return

    • number: 설치된 모듈 수

let count = Module.getSolar().getTerrainModuleCount();
console.log("Terrain Module Count:", count);

clearModuleOnTerrain() → void

지형에 설치된 모든 태양광 모듈을 제거합니다.

  • Return

    • 없음

Module.getSolar().clearModuleOnTerrain();

getLayerPannelInfo(layerName) → string

지정한 레이어 내 태양광 패널 객체들의 정보를 JSON 문자열 형태로 반환합니다. 패널 위치(위도/경도/고도), 크기, 방향, 각도 등의 상세 정보가 포함됩니다.

  • Parameters

    • layerName (string): 대상 레이어 이름

  • Return

    • string: JSON 문자열

      [
        {
          "Pos": [경도, 위도, 고도],
          "MWidth": 패널가로길이,
          "MHeight": 패널세로길이,
          "Thickness": 패널두께,
          "MAngle": 수직각,
          "MDirection": 방향각
        },
        ...
      ]
let jsonInfo = Module.getSolar().getLayerPannelInfo("BuildingLayer");
let data = JSON.parse(jsonInfo);
console.log(data);

SetModuleArray(nSection, nSectionCount, nSectionSet) → boolean

태양광 모듈의 배열 구성 정보를 설정합니다.

Name
Type
Description

nSection

int

단일 배열당 섹션 수

nSectionCount

int

배열 전체의 섹션 개수

nSectionSet

int

배열 세트 수

  • Return

    • true: 설정 성공 및 모듈 재배치 완료

    • false: 설정 실패 (엔진 미초기화 또는 내부 오류)

  • Description

    • 태양광 시스템 내 모듈 배열 구성을 설정합니다.

var API = {
    JSSolarManager : Module.getSolarManager()
};

// 예: 각 배열당 5개 섹션, 섹션 총 20개, 세트 2개 구성
var result = API.JSSolarManager.SetModuleArray(5, 20, 2);

if (!result) {
    console.error("모듈 배열 설정 실패");
}
PreviousJSTransparencyNextCamera

Last updated 1 month ago

Was this helpful?

getCenterOfMassOnTerrain() →

: 질량 중심 위치 (longitude, latitude, altitude)

CJSVector3D
CJSVector3D