utils_constants.js - hiro-nyon/cesium-heatbox GitHub Wiki

Source: utils/constants.js

日本語 | English

English

See also: Class: constants

/**
 * Constant definitions for CesiumJS Heatbox library.
 * CesiumJS Heatbox ライブラリの定数定義。
 */

/**
 * Default option values.
 * デフォルト設定値。
 */
export const DEFAULT_OPTIONS = {
  voxelSize: 20,
  opacity: 0.8,
  emptyOpacity: 0.03,
  showOutline: true,
  showEmptyVoxels: false,
  wireframeOnly: false,
  heightBased: false,
  outlineWidth: 2,
  minColor: [0, 32, 255],
  maxColor: [255, 64, 0],
  maxRenderVoxels: 50000,
  batchMode: 'auto',
  debug: false, // ログ制御(false で本番モード、true で開発モード、またはオブジェクト)
  autoVoxelSize: false, // v0.1.4: 自動ボクセルサイズ決定(既存互換性のためfalse)
  // v0.1.5: 新機能
  colorMap: 'custom', // 'custom', 'viridis', 'inferno'
  diverging: false, // 二極性データ対応
  divergingPivot: 0, // 二極性配色のピボット値
  highlightTopN: null, // トップN強調表示(null: 無効)
  highlightStyle: {
    outlineWidth: 4,
    boostOpacity: 0.2
  },
  // v0.1.6: 枠線重なり対策・柔軟化
  voxelGap: 0, // ボクセル間ギャップ(メートル)
  outlineOpacity: 1.0, // 枠線透明度(0-1)
  outlineWidthResolver: null, // 関数: (params) => number で動的太さ制御
  // 実質的な太さ表現のための代替描画(WebGLの線幅制限回避用)
  /**
   * @deprecated v0.1.12 — Use `outlineRenderMode` and `emulationScope` instead.
   * 'off' | 'topn' | 'non-topn' | 'all'
   */
  outlineEmulation: 'off',
  // v0.1.6.1: インセット枠線(ADR-0004)
  outlineInset: 0, // インセット枠線のオフセット距離(メートル、0で無効)
  outlineInsetMode: 'all', // インセット枠線の適用範囲:'all'(全体) | 'topn'(TopNのみ)
  enableThickFrames: false, // 厚い枠線表示(インセット枠線とメイン枠線の間をフレームで埋める)
  
  // v0.1.7: 適応的枠線制御とエミュレーション専用表示モード(ADR-0005)
  outlineRenderMode: 'standard', // 'standard' | 'inset' | 'emulation-only' 表示モード
  emulationScope: 'off', // v0.1.12: 'off' | 'topn' | 'non-topn' | 'all' - emulation scope
  adaptiveOutlines: false, // 適応的枠線制御を有効化(オプトイン)
  outlineWidthPreset: 'medium', // v0.1.12: 'thin' | 'medium' | 'thick' | 'adaptive' プリセット
  
  // v0.1.7: 透明度resolver
  boxOpacityResolver: null, // 関数: (ctx) => number(0-1) でボックス透明度制御
  outlineOpacityResolver: null, // 関数: (ctx) => number(0-1) で枠線透明度制御
  
  // v0.1.7: 適応的制御パラメータ
  // v0.1.15: Phase 0 - デフォルト値更新と新オプション追加(ADR-0011)
  adaptiveParams: {
    neighborhoodRadius: 30, // 近傍密度計算の半径(メートル)- v0.1.15: 50→30
    densityThreshold: 3, // 密度しきい値(エンティティ数/ボクセル)- v0.1.15: 5→3
    cameraDistanceFactor: 0.8, // カメラ距離補正係数 - v0.1.15: 1.0→0.8
    overlapRiskFactor: 0.4, // 重なりリスク補正係数 - v0.1.15: 0.3→0.4
    // v0.1.15: 新規追加オプション
    minOutlineWidth: 1.0, // 最小アウトライン幅の保証(ピクセル)
    maxOutlineWidth: 5.0, // 最大アウトライン幅の制限(ピクセル)
    outlineWidthRange: null, // [min, max] アウトライン幅範囲(nullで無効)
    boxOpacityRange: null, // [min, max] ボックス透明度範囲(nullで無効)
    outlineOpacityRange: null, // [min, max] アウトライン透明度範囲(nullで無効)
    adaptiveOpacityEnabled: false, // 透明度適応制御有効化(v0.1.15はno-op、v1.0.0で実装)
    zScaleCompensation: true, // Z軸スケール補正の有効化
    overlapDetection: false // 重なり検出機能(オプトイン)
  },
  
  // v0.1.9: 適応的レンダリング制限とスマート視覚化支援(ADR-0006 Phase 1)
  renderLimitStrategy: 'density', // 'density' | 'coverage' | 'hybrid' 選択戦略
  minCoverageRatio: 0.2, // hybrid戦略での層化抽出最小比率(0-1)
  coverageBinsXY: 'auto', // 層化抽出用格子分割数('auto' | number)
  
  // 自動ボクセルサイズ決定の強化
  autoVoxelSizeMode: 'basic', // 'basic' | 'occupancy' 自動サイズ計算方式
  autoVoxelTargetFill: 0.6, // 目標占有率(0-1, occupancyモード用)
  
  // Auto Render Budget
  renderBudgetMode: 'manual', // 'manual' | 'auto' 描画上限制御
  
  // 自動視点調整
  autoView: false, // 自動視点調整有効化
  fitViewOptions: {
    paddingPercent: 0.1, // データ範囲の10%パディング
    pitchDegrees: -30, // ピッチ角度(度)- v0.1.12: unified naming
    headingDegrees: 0, // ヘディング角度(度)- v0.1.12: unified naming
    altitudeStrategy: 'auto' // 'auto' | 'manual' 高度計算戦略
  },
  
  // v0.1.17: 空間ID対応(ADR-0013)
  spatialId: {
    enabled: false, // 空間IDモード有効化(デフォルト: 従来の一様グリッド)
    mode: 'tile-grid', // 'tile-grid' - v0.1.17では tile-grid のみサポート
    provider: 'ouranos-gex', // 'ouranos-gex' - 空間IDプロバイダー
    zoom: 25, // ズームレベル(0-35)または 'auto'
    zoomControl: 'auto', // 'auto' | 'manual' - ズーム制御モード
    zoomTolerancePct: 10 // 自動ズーム選択時の許容誤差パーセンテージ
  },
  
  // v0.1.18: レイヤ別集約(ADR-0014)
  aggregation: {
    enabled: false, // レイヤ別集約を有効化(デフォルト: 無効)
    byProperty: null, // エンティティプロパティキーをレイヤキーとして使用(例: 'buildingType')
    keyResolver: null, // カスタム関数 (entity) => layerKey(byPropertyより優先)
    showInDescription: true, // ボクセル説明文にレイヤ内訳を表示
    topN: 10 // 統計情報で返す上位レイヤ数(デフォルト: 10)
  },

  // v1.0.0: Classification engine (color only for initial release)
  classification: {
    enabled: false,
    scheme: 'linear',
    classes: 5,
    thresholds: null,
    colorMap: null,
    domain: null,
    classificationTargets: {
      color: true,
      opacity: false,
      width: false
    }
  }
};

/**
 * Performance limits.
 * パフォーマンス制限値。
 */
export const PERFORMANCE_LIMITS = {
  maxEntities: 5000,
  maxVoxels: 50000,
  maxEmptyVoxelsRendered: 10000,
  minVoxelSize: 5,
  maxVoxelSize: 1000,
  warningThreshold: 30000
};

/**
 * Coordinate-related constants.
 * 座標変換定数。
 */
export const COORDINATE_CONSTANTS = {
  EARTH_RADIUS: 6378137,
  EARTH_CIRCUMFERENCE_EQUATOR: 40075016.68557849,
  DEGREES_TO_METERS_LAT: 111000,
  DEGREES_TO_RADIANS: Math.PI / 180
};

/**
 * Error message strings.
 * エラーメッセージ。
 */
export const ERROR_MESSAGES = {
  NO_ENTITIES: '対象エンティティがありません',
  NO_VIEWER: 'CesiumJS Viewerが初期化されていません',
  INVALID_VIEWER: 'CesiumJS Viewerが無効です',
  VOXEL_LIMIT_EXCEEDED: 'ボクセル数が上限を超えています',
  MEMORY_WARNING: '推定メモリ使用量が警告値を超えています',
  WEBGL_NOT_SUPPORTED: 'WebGLがサポートされていません',
  INVALID_VOXEL_SIZE: 'ボクセルサイズが無効です'
};

/**
 * Default statistics values.
 * 統計情報のデフォルト値。
 */
export const DEFAULT_STATISTICS = {
  totalVoxels: 0,
  renderedVoxels: 0,
  nonEmptyVoxels: 0,
  emptyVoxels: 0,
  totalEntities: 0,
  minCount: 0,
  maxCount: 0,
  averageCount: 0
};

/**
 * Color-related constants.
 * 色分け関連定数。
 */
export const COLOR_CONSTANTS = {
  MIN_HUE: 240, // 青
  MAX_HUE: 0,   // 赤
  SATURATION: 0.8,
  BRIGHTNESS: 0.7,
  SATURATION_RANGE: 0.2,
  BRIGHTNESS_RANGE: 0.3
};

日本語

関連: constantsクラス

/**
 * Constant definitions for CesiumJS Heatbox library.
 * CesiumJS Heatbox ライブラリの定数定義。
 */

/**
 * Default option values.
 * デフォルト設定値。
 */
export const DEFAULT_OPTIONS = {
  voxelSize: 20,
  opacity: 0.8,
  emptyOpacity: 0.03,
  showOutline: true,
  showEmptyVoxels: false,
  wireframeOnly: false,
  heightBased: false,
  outlineWidth: 2,
  minColor: [0, 32, 255],
  maxColor: [255, 64, 0],
  maxRenderVoxels: 50000,
  batchMode: 'auto',
  debug: false, // ログ制御(false で本番モード、true で開発モード、またはオブジェクト)
  autoVoxelSize: false, // v0.1.4: 自動ボクセルサイズ決定(既存互換性のためfalse)
  // v0.1.5: 新機能
  colorMap: 'custom', // 'custom', 'viridis', 'inferno'
  diverging: false, // 二極性データ対応
  divergingPivot: 0, // 二極性配色のピボット値
  highlightTopN: null, // トップN強調表示(null: 無効)
  highlightStyle: {
    outlineWidth: 4,
    boostOpacity: 0.2
  },
  // v0.1.6: 枠線重なり対策・柔軟化
  voxelGap: 0, // ボクセル間ギャップ(メートル)
  outlineOpacity: 1.0, // 枠線透明度(0-1)
  outlineWidthResolver: null, // 関数: (params) => number で動的太さ制御
  // 実質的な太さ表現のための代替描画(WebGLの線幅制限回避用)
  /**
   * @deprecated v0.1.12 — Use `outlineRenderMode` and `emulationScope` instead.
   * 'off' | 'topn' | 'non-topn' | 'all'
   */
  outlineEmulation: 'off',
  // v0.1.6.1: インセット枠線(ADR-0004)
  outlineInset: 0, // インセット枠線のオフセット距離(メートル、0で無効)
  outlineInsetMode: 'all', // インセット枠線の適用範囲:'all'(全体) | 'topn'(TopNのみ)
  enableThickFrames: false, // 厚い枠線表示(インセット枠線とメイン枠線の間をフレームで埋める)
  
  // v0.1.7: 適応的枠線制御とエミュレーション専用表示モード(ADR-0005)
  outlineRenderMode: 'standard', // 'standard' | 'inset' | 'emulation-only' 表示モード
  emulationScope: 'off', // v0.1.12: 'off' | 'topn' | 'non-topn' | 'all' - emulation scope
  adaptiveOutlines: false, // 適応的枠線制御を有効化(オプトイン)
  outlineWidthPreset: 'medium', // v0.1.12: 'thin' | 'medium' | 'thick' | 'adaptive' プリセット
  
  // v0.1.7: 透明度resolver
  boxOpacityResolver: null, // 関数: (ctx) => number(0-1) でボックス透明度制御
  outlineOpacityResolver: null, // 関数: (ctx) => number(0-1) で枠線透明度制御
  
  // v0.1.7: 適応的制御パラメータ
  // v0.1.15: Phase 0 - デフォルト値更新と新オプション追加(ADR-0011)
  adaptiveParams: {
    neighborhoodRadius: 30, // 近傍密度計算の半径(メートル)- v0.1.15: 50→30
    densityThreshold: 3, // 密度しきい値(エンティティ数/ボクセル)- v0.1.15: 5→3
    cameraDistanceFactor: 0.8, // カメラ距離補正係数 - v0.1.15: 1.0→0.8
    overlapRiskFactor: 0.4, // 重なりリスク補正係数 - v0.1.15: 0.3→0.4
    // v0.1.15: 新規追加オプション
    minOutlineWidth: 1.0, // 最小アウトライン幅の保証(ピクセル)
    maxOutlineWidth: 5.0, // 最大アウトライン幅の制限(ピクセル)
    outlineWidthRange: null, // [min, max] アウトライン幅範囲(nullで無効)
    boxOpacityRange: null, // [min, max] ボックス透明度範囲(nullで無効)
    outlineOpacityRange: null, // [min, max] アウトライン透明度範囲(nullで無効)
    adaptiveOpacityEnabled: false, // 透明度適応制御有効化(v0.1.15はno-op、v1.0.0で実装)
    zScaleCompensation: true, // Z軸スケール補正の有効化
    overlapDetection: false // 重なり検出機能(オプトイン)
  },
  
  // v0.1.9: 適応的レンダリング制限とスマート視覚化支援(ADR-0006 Phase 1)
  renderLimitStrategy: 'density', // 'density' | 'coverage' | 'hybrid' 選択戦略
  minCoverageRatio: 0.2, // hybrid戦略での層化抽出最小比率(0-1)
  coverageBinsXY: 'auto', // 層化抽出用格子分割数('auto' | number)
  
  // 自動ボクセルサイズ決定の強化
  autoVoxelSizeMode: 'basic', // 'basic' | 'occupancy' 自動サイズ計算方式
  autoVoxelTargetFill: 0.6, // 目標占有率(0-1, occupancyモード用)
  
  // Auto Render Budget
  renderBudgetMode: 'manual', // 'manual' | 'auto' 描画上限制御
  
  // 自動視点調整
  autoView: false, // 自動視点調整有効化
  fitViewOptions: {
    paddingPercent: 0.1, // データ範囲の10%パディング
    pitchDegrees: -30, // ピッチ角度(度)- v0.1.12: unified naming
    headingDegrees: 0, // ヘディング角度(度)- v0.1.12: unified naming
    altitudeStrategy: 'auto' // 'auto' | 'manual' 高度計算戦略
  },
  
  // v0.1.17: 空間ID対応(ADR-0013)
  spatialId: {
    enabled: false, // 空間IDモード有効化(デフォルト: 従来の一様グリッド)
    mode: 'tile-grid', // 'tile-grid' - v0.1.17では tile-grid のみサポート
    provider: 'ouranos-gex', // 'ouranos-gex' - 空間IDプロバイダー
    zoom: 25, // ズームレベル(0-35)または 'auto'
    zoomControl: 'auto', // 'auto' | 'manual' - ズーム制御モード
    zoomTolerancePct: 10 // 自動ズーム選択時の許容誤差パーセンテージ
  },
  
  // v0.1.18: レイヤ別集約(ADR-0014)
  aggregation: {
    enabled: false, // レイヤ別集約を有効化(デフォルト: 無効)
    byProperty: null, // エンティティプロパティキーをレイヤキーとして使用(例: 'buildingType')
    keyResolver: null, // カスタム関数 (entity) => layerKey(byPropertyより優先)
    showInDescription: true, // ボクセル説明文にレイヤ内訳を表示
    topN: 10 // 統計情報で返す上位レイヤ数(デフォルト: 10)
  },

  // v1.0.0: Classification engine (color only for initial release)
  classification: {
    enabled: false,
    scheme: 'linear',
    classes: 5,
    thresholds: null,
    colorMap: null,
    domain: null,
    classificationTargets: {
      color: true,
      opacity: false,
      width: false
    }
  }
};

/**
 * Performance limits.
 * パフォーマンス制限値。
 */
export const PERFORMANCE_LIMITS = {
  maxEntities: 5000,
  maxVoxels: 50000,
  maxEmptyVoxelsRendered: 10000,
  minVoxelSize: 5,
  maxVoxelSize: 1000,
  warningThreshold: 30000
};

/**
 * Coordinate-related constants.
 * 座標変換定数。
 */
export const COORDINATE_CONSTANTS = {
  EARTH_RADIUS: 6378137,
  EARTH_CIRCUMFERENCE_EQUATOR: 40075016.68557849,
  DEGREES_TO_METERS_LAT: 111000,
  DEGREES_TO_RADIANS: Math.PI / 180
};

/**
 * Error message strings.
 * エラーメッセージ。
 */
export const ERROR_MESSAGES = {
  NO_ENTITIES: '対象エンティティがありません',
  NO_VIEWER: 'CesiumJS Viewerが初期化されていません',
  INVALID_VIEWER: 'CesiumJS Viewerが無効です',
  VOXEL_LIMIT_EXCEEDED: 'ボクセル数が上限を超えています',
  MEMORY_WARNING: '推定メモリ使用量が警告値を超えています',
  WEBGL_NOT_SUPPORTED: 'WebGLがサポートされていません',
  INVALID_VOXEL_SIZE: 'ボクセルサイズが無効です'
};

/**
 * Default statistics values.
 * 統計情報のデフォルト値。
 */
export const DEFAULT_STATISTICS = {
  totalVoxels: 0,
  renderedVoxels: 0,
  nonEmptyVoxels: 0,
  emptyVoxels: 0,
  totalEntities: 0,
  minCount: 0,
  maxCount: 0,
  averageCount: 0
};

/**
 * Color-related constants.
 * 色分け関連定数。
 */
export const COLOR_CONSTANTS = {
  MIN_HUE: 240, // 青
  MAX_HUE: 0,   // 赤
  SATURATION: 0.8,
  BRIGHTNESS: 0.7,
  SATURATION_RANGE: 0.2,
  BRIGHTNESS_RANGE: 0.3
};