728x90

 


๋ฌธ์ œ ์š”์•ฝ

GeojsonDataSource.load()๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์™€ polygon๊ณผ ๊ทธ ๊ฒฝ๊ณ„์„ ์„ ๊ทธ๋ฆฌ๋ ค๊ณ  ํ•œ๋‹ค.

1. 3D ์ง€ํ˜• ์œ„์— ๊ฒฝ๊ณ„์„ ์„ ๊ทธ๋ ค์•ผ ํ•จ
2. ๊ฒฝ๊ณ„์„ ์ด ๊ฐ€๋” ์‚ฌ๋ผ์ง€๋Š” ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Œ

 

ํ•ด๊ฒฐ ์š”์•ฝ

1. Polygon์„ ๊ทธ๋ฆฐ ๋’ค, ๊ทธ ์œ„์— Polyline ํƒ€์ž…์œผ๋กœ ๊ฒฝ๊ณ„์„ ์„ ๊ทธ๋ ค์ค€๋‹ค.
2. Polyline(๊ฒฝ๊ณ„์„ )์ด ํ•ญ์ƒ ์นด๋ฉ”๋ผ์— ๊ฐ€๊น๋„๋ก zIndex๋ฅผ ์„ค์ •ํ•œ๋‹ค.

 

์ƒ์„ธ ์„ค๋ช…

1. 3D ์ง€ํ˜•์— ๋ถ€์ฐฉ ๊ฐ€๋Šฅํ•œ ๋ฉด๊ณผ ์„  ๊ทธ๋ฆฌ๊ธฐ

1
2
3
4
5
6
7
8
9
10
11
  viewer.dataSources.add(
    Cesium.GeoJsonDataSource.load(
      "../SampleData/ne_10m_us_states.topojson",
      {
        stroke: Cesium.Color.HOTPINK,
        fill: Cesium.Color.PINK.withAlpha(0.5),
        strokeWidth: 3,
        //clampToGround: true
      }
    )
  );
cs

GeojsonDataSource.load()๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ๊ฒฝ์šฐ, ๋‚ด๋ถ€ ์ƒ‰์ƒ๊ณผ ๊ฒฝ๊ณ„์„ ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋ฐ์ดํ„ฐ๋ฅผ 3D ์ง€ํ˜• ์œ„์— ๋ถ€์ฐฉํ•˜๊ฒŒ ๋˜๋ฉด ์ด๋Ÿฐ ์˜ต์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ 3D ์ง€ํ˜• ์œ„์— ๋‹ฌ๋ผ๋ถ™๊ฒŒ ํ•˜๋Š” ์˜ต์…˜์ธ clampToGround๋ฅผ ์‚ฌ์šฉ(true)ํ•  ๊ฒฝ์šฐ, stroke ์˜ต์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ํ˜„์ƒ์— ๊ด€๋ จ๋œ ๊นƒํ—ˆ๋ธŒ ์ด์Šˆ ์ฐธ๊ณ .

๊ทธ๋ž˜์„œ polygonํƒ€์ž…๊ณผ polylineํƒ€์ž…์˜ entity๋ฅผ ๊ฐ๊ฐ ์ถ”๊ฐ€ํ•ด ์ฃผ์—ˆ๋‹ค. json์„ DataSource ํƒ€์ž…์œผ๋กœ ๋กœ๋“œํ•˜๊ณ , ์†์„ฑ์„ ๊ทธ๋Œ€๋กœ entity ์ƒ์„ฑ option์— ๋„ฃ์–ด์ค€๋‹ค.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
GeoJsonDataSource.load( "../SampleData/ne_10m_us_states.topojson")
.then(dataSource => { dataSource.entities.values.forEach(element => {
    const entity = viewer.entities.add({
            polygon: {
                hierarchy: element.polygon.hierarchy.getValue(),
                material: Cesium.Color.PINK.withAlpha(0.5),
            },
            polyline: {
                positions: element.polygon.hierarchy.getValue().positions,
                width: 2,
                material:  Cesium.Color.PINK.withAlpha(0.5),
                clampToGround: true,
            },
            properties: element.properties,
        })
    }
 
cs

 

2. ์„ ์ด ์‚ฌ๋ผ์ง€๋Š” ๋ฌธ์ œ

์—…๋กœ๋“œํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ƒ๊ฐ๋ณด๋‹ค ์ตœ์ ํ™”ํ•˜๊ธฐ ์–ด๋ ค์› ๋Š”์ง€, ๋ณ€ํ™˜ ๊ณผ์ •์—์„œ entity๊ฐ€ ์—‰๋ง์œผ๋กœ ์ƒ์„ฑ๋˜์—ˆ๊ฑฐ๋‚˜ ๋ Œ๋”๋ง์— ์ตœ์ ํ™”๋˜์ง€ ๋ชปํ•œ ๊ฒƒ ๋งˆ๋ƒฅ ์ž”์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ์›์ธ์€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ์ƒํ˜ธ์ž‘์šฉํ•  ๋•Œ๋งˆ๋‹ค polyline์œผ๋กœ ๋งŒ๋“  ๊ฒฝ๊ณ„์„ ์ด ํฌ๋ฏธํ•ด์กŒ๋‹ค. ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋„ ์—†๊ณ  ๊ฒฝ๊ณ„์„  ๋ถ€๋ถ„์„ ํด๋ฆญํ•˜๋ฉด ๋‹ค์‹œ ์„ ์ด ๋šœ๋ ทํ•˜๊ฒŒ ๋ณด์ธ๋‹ค. ์•„์˜ˆ ์‚ฌ๋ผ์ง€๋Š” ๋ฌธ์ œ๋Š” ์•„๋‹ˆ๊ณ , polygon๊ณผ polyline์ด ์นด๋ฉ”๋ผ ๋ฐฉํ–ฅ์—์„œ ์—Ž์น˜๋ฝ๋’ค์น˜๋ฝํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

์นด๋ฉ”๋ผ์— ๋ˆ„๊ฐ€ ๋” ๊ฐ€๊น๊ฒŒ ๋ณด์ด๋Š”์ง€ ์ˆœ์„œ๋ฅผ ์ •ํ•ด์„œ, ๊ฐ€๋ ค์ง€๋Š” ๋…€์„์„ ์ง€์ •ํ•ด์ฃผ๊ธฐ๋กœ ํ–ˆ๋‹ค. ํ†ต์ƒ์ ์œผ๋กœ Z-Index์—์„œ ์ˆœ์„œ ์ •๋ฆฌ๋ผ๊ณ  ํ‘œํ˜„ํ•˜๋‚˜ ๋ณด๋‹ค. ๋‹ค๋ฅธ 3D ๊ฐœ๋ฐœ์„ ํ•  ๋•Œ์—๋„ ๊ฐ™์€ ์šฉ์–ด๋ฅผ ์ผ๋˜ ๊ฒƒ ๊ฐ™๋‹ค. ์ด๋ฆ„์€ ๊ฐ™์•„๋„ ๋””ํ…Œ์ผํ•œ ๋ถ€๋ถ„์—์„œ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์ด๋‚˜ ์—”์ง„์— ๋”ฐ๋ผ ์šฉ๋ฒ•์„ ์ฐพ์•„๋ด์•ผ ํ•œ๋‹ค. (๊ทธ๋ž˜๋„ ๊ฑฐ์˜ ๋น„์Šทํ•˜๊ธด ํ•จ) CesiumJS Forum์˜ Z-Index ์งˆ์˜๊ธ€ ์ฐธ๊ณ 

Polyline์ด ๊ฐ€๋ ค์ง€๋Š” ๊ฒƒ์ด ๋ฌธ์ œ์ด๋ฏ€๋กœ, Polyline์˜ Z-Index ๊ฐ’์„ ํฌ๊ฒŒ ํ•ด์„œ ์นด๋ฉ”๋ผ์— ๊ฐ€์žฅ ๊ฐ€๊น๊ฒŒ ์œ„์น˜ํ•˜๋„๋ก ํ–ˆ๋‹ค.

1
2
3
4
5
6
7
8
polyline: {
    positions: element.polygon.hierarchy.getValue().positions,
    width: 2,
    material:  Cesium.Color.PINK.withAlpha(0.5),
    clampToGround: true,
    zIndex: 10 // ํด์ˆ˜๋ก ์นด๋ฉ”๋ผ์— ๊ฐ€๊น๋‹ค
}
 
cs

 

3. ์ผ๋‹จ ํ•ด๊ฒฐ

์—ฌ๋Ÿฌ ๋ฒˆ ํด๋ฆญํ•ด๋„ ์„ ์ด ์ง€์›Œ์ง€์ง€ ์•Š๊ณ  ์ž˜ ๋ณด์ž„

 

728x90

+ Recent posts