Find Travel Points in ArcGIS Pro (+Python)
ArcGIS์์ ์ด๋ ๊ฐ๋ฅ ์ง์ ์กฐํํ๊ธฐ
"์ด๋ค ์ถ๋ฐ์ ์ผ๋ก๋ถํฐ ์ผ์ ๊ฑฐ๋ฆฌ ๋๋ ์ผ์ ์๊ฐ ์ด๋ด์ ๋๋ฌ ๊ฐ๋ฅํ ์ง์ ์ ์ฐพ๊ธฐ"๋ ๊ธฐ๋ณธ์ ์ธ GIS ๋ฌธ์ ์ค ํ๋์ ๋๋ค. ์ด ํฌ์คํธ์์๋ ArcGIS์์ ์ด ๊ณผ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๊ฐ๋ตํ ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค.
๋จผ์ ๊ณผ์ ํด๊ฒฐ์ ๊ธฐ๋ณธ์ ์ธ ์์๋ ์ด๋ ์ต๋๋ค:
ย ย (1) data setting
ย ย (2) network dataset ์์ฑ
ย ย (3) service area analysis
ย ย (4) spatial join analysis
Fig2. Sequence of Solution
๊ฐ ์์๋ฅผ ๊ฐ๋ตํ ์ง์ด๋ณด๊ณ ๊ฐ์๋ค. ๋จผ์ (1) ๋ฐ์ดํฐ๋ฅผ ์๊ฐํด๋ณด์ฃ . ์ผ๋จ ์ถ๋ฐ์ ๊ณผ ๋๋ฌ์ ํ๋ณด๋ค์ ์ ๋ณด๊ฐ ์์ด์ผ ํฉ๋๋ค. GIS ๋ฐ์ดํฐ๊ฐ ํฌ๊ฒ Point, Line, Polygon์ผ๋ก ๋๋์ด์ง๋ค๊ณ ํ์ ๋, Point ํํ์ ์ฅ์ ๋ชฉ๋ก์ด ์์ด์ผ ํ ๊ฒ์ ๋๋ค. ๋ค์์ผ๋ก ์ฅ์๋ค ์ฌ์ด์ ์ด๋ ๊ฒฝ๋ก๋ฅผ ํํํ๋ Line ํํ์ ๋ฐ์ดํฐ๊ฐ ์์ด์ผ ํฉ๋๋ค.
์ฆ Point ํํ์ ์ฅ์ ๋ฐ์ดํฐ์ Line๋ค๋ก ์ด๋ฃจ์ด์ง ๊ฒฝ๋ก ๋ฐ์ดํฐ๊ฐ ํ์ํฉ๋๋ค. ๊ทธ๋ฐ๋ฐ ์ด ๋ฐ์ดํฐ๋ค์ ๋ณธ๊ฒฉ์ ์ธ ๋ถ์์ ๋ค์ด๊ฐ๊ธฐ ์ ์ ์ผ์ ํ ๊ฐ๊ณต์ ๊ฑฐ์ณ์ผ ํฉ๋๋ค. ํนํ Line ๋ฐ์ดํฐ๋ฅผ ๋คํธ์ํฌ ๋ฐ์ดํฐ์ฒ๋ผ ๊ฐ๊ณตํด์ผ ํ ํ์๊ฐ ์์ต๋๋ค. ArcGIS์์๋ ๊ฒฝ๋ก ๋ฐ์ดํฐ๋ก๋ถํฐ (2)"network dataset"์ ์์ฑํ๊ณ ์ฌ์ฉํ ์ ์์ต๋๋ค. network dataset์ ๋ง๋ค๋ฉด ArcGIS๊ฐ ์ ๊ณตํ๋ network analysis ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๊ณ , ์ด๋ฅผ ์ดํ ๋ถ์ ๊ณผ์ ์๋ ์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์์ต ๋๋ค.
network dataset๊น์ง ์์ฑํ๋ฉด (3) Service Area ๋ถ์์ ์ฐจ๋ก์ ๋๋ค. Service Area Analysis๋ ArcGIS๊ฐ ์ง์ํ๋ Network Analysis ํด์ ํ๋๋ก, ๊ฐ ์ง์ ์ผ๋ก๋ถํฐ ์ผ์ ๊ฑฐ๋ฆฌ ๋ฐ ์๊ฐ ๋์ ๋๋ฌ ๊ฐ๋ฅํ ์์ญ์ ์ฐพ์๋ผ ์ ์์ต๋๋ค. "service area"๋ผ๋ ์ด๋ฆ์ด ์ง๊ด์ ์ด์ฃ ? ์์ปจ๋ ์ํ ๋ ๊ธฐ์ง๊ตญ์ผ๋ก๋ถํฐ์ ์ ํธ๊ฐ ์๋น์ค ๊ฐ๋ฅํ ์์ญ์ ์ฐพ๊ฑฐ๋, ํผ์์ง์ผ๋กํฐ ์ผ์ ์๊ฐ ์ด๋ด์ ๋ฐฐ๋ฌ ๊ฐ๋ฅํ ์์ญ์ ์ฐพ๋ ๋ฐ ์ด ๊ธฐ๋ฅ์ ์ด์ฉํ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ์ ๋ชฉํ๋ ์ผ์ ํ ๊ฑฐ๋ฆฌ ๋ฐ ์๊ฐ ๋์ ๋๋ฌ ๊ฐ๋ฅํ "์ง์ "์ ์ฐพ๋ ๊ฒ์ธ๋ฐ์, "์ง์ "์ ์ฐพ๊ธฐ ์ ์ ๋จผ์ ๋๋ฌ ๊ฐ๋ฅํ "์์ญ"์ ๋ฝ์๋ด๊ธฐ ์ํด Service Area ๋ถ์์ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก (4) Spatial Join Analysis์ ๋๋ค. ์ด ์ญ์ ArcGIS๊ฐ ์ง์ํ๋ ๋ถ์ ํด์ ํ๋์ ๋๋ค. ์ด ๊ธฐ๋ฅ์ ๋ GIS ๋ฐ์ดํฐ์ ๊ณต๊ฐ์ ์ค์ฒฉ ์์ญ์ ๋ฝ์์ฃผ๋๋ฐ์, ๋ง์ผ ๋ Polygon ๋ฐ์ดํฐ๊ฐ ์ฃผ์ด์ง๋ค๋ฉด ๋ Polygon ์ฌ์ด์ ์ค์ฒฉ๋ ์๋ก์ด Polygon์ด ๊ฒฐ๊ณผ๋ก ๋ฐํ๋๊ณ , Point ๋ฐ์ดํฐ์ Polygon ๋ฐ์ดํฐ๊ฐ ์ฃผ์ด์ง๋ค๋ฉด Polygon ์์ญ์ ์ํ๋ Point๋ง ์ถ๋ ค์ ๊ฒฐ๊ณผ๋ก ๋ฐํ๋ฉ๋๋ค. ์ฐ๋ฆฌ๋ (3)์์ ๊ตฌํ Service Area์ Polygon ๋ฐ์ดํฐ์, ๋๋ฌ ๊ฐ๋ฅํ ์ง์ ๋ค์ Point ๋ฐ์ดํฐ ์ฌ์ด์ Sptial Join Analysis๋ฅผ ์คํํ ๊ฒ์ ๋๋ค. ๊ทธ ๊ฒฐ๊ณผ๊ฐ ๋ฐ๋ก ์ผ์ ๊ฑฐ๋ฆฌ ๋ฐ ์๊ฐ ๋์ ๋๋ฌ ๊ฐ๋ฅํ ์ง์ ๋ค์ด ๋๊ฒ ์ง์!
์ด์ ArcGIS๋ฅผ ๋ณด๋ฉด์ ๊ฐ ์์๋ฅผ ์ง์ ๋ฐ์๋ด ์๋ค! ๋ง์ง๋ง์๋ ArcGIS native Python ๊ธฐ๋ฅ์ ์ด์ฉํ๋ ๋ฐฉ๋ฒ๋ ์๊ฐํด ๋ณด๊ฒ ์ต๋๋ค.
1. data setting
๋จผ์ Point ํํ์ ์ฅ์ ๋ฐ์ดํฐ์ Line ํํ์ ๊ฒฝ๋ก ๋ฐ์ดํฐ๊ฐ ํ์ํฉ๋๋ค. ๊ฒฝ๋ก ๋ฐ์ดํฐ๋ ์์ธ์ ๋๋ก๋ง ๋ฐ์ดํฐ๋ฅผ ๋ค์ด๋ก๋ ๋ฐ์์ ์ฌ์ฉํ๊ณ , ์ฅ์ ๋ฐ์ดํฐ๋ ์ง์ ์์ฑํ๊ฒ ์ต๋๋ค.
๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ค๊ธฐ ์ ์, ์ ๋ ArcGIS ํ๋ก์ ํธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ travel
์ด๋ผ๋ dataset์ ๋จผ์ ๋ง๋ค์์ต๋๋ค. ์ด์ ๊ฐ ๋ฐ์ดํฐ๋ ์ด travel
dataset ๋ฐ์ importํด์ฌ ๊ฒ์
๋๋ค. (Fig8. ์ฐธ์กฐ)
์์ธ์ ๋๋ก๋ง ๋ฐ์ดํฐ๋ ์ ๋ถ์์ ๋ง๋ "Z_KAIS_TL_SPRD_MANAGE" ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ต๋๋ค. (์์ธ์ง ๋๋ก๋ง ๋ฐ์ดํฐ๋ ๊ตญํ ๊ตํต๋ถ ์ฌ์ดํธ(๋ค)์ ์ฌ๋ผ์๋ค๊ฐ ์ฌ๋ผ์ก๋ค๊ฐ๋ฅผ ๋ฐ๋ณตํฉ๋๋ค... ๋งํฌ๊ฐ ๊ณ์ ๋ฐ๋์ด์, ์ธํฐ๋ท์์ "Z_KAIS_TL_SPRD_MANAGE"๋ก ๊ฒ์ํด์ ์ฐพ์๋ณด๋ ํธ์ด ๋ซ์ต๋๋ค.) ์ด ๋๋ก๋ง ๋ฐ์ดํฐ๋ seoul_raods
๋ผ๋ ์ด๋ฆ์ผ๋ก ๋ถ๋ฌ์์ต๋๋ค.
์ด์ seoul_raods
๋ฅผ ๋ฐ๋ก network dataset์ผ๋ก ๋ณํํ๋ฉด ๋ ๊น์? ๋ณํ ์์ฒด๋ ๊ธฐ์ ์ ์ผ๋ก๋ ๊ฐ๋ฅํฉ๋๋ค. ํ์ง๋ง ์ถ๊ฐ์ ๊ฐ๊ณต ์์ด ๋ฐ๋ก network dataset์ผ๋ก ๋ณํํ๊ฒ ๋๋ฉด ์ค์ง์ ์ธ ๋คํธ์ํฌ ๋ฐ์ดํฐ๋ก ์ฌ์ฉํ ์ ์๊ฒ ๋ฉ๋๋ค. ๋คํธ์ํฌ๋ 'edge'์ 'node'๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์๋ก ๋ค๋ฅธ 'node'๋ค์ ์ฌ๋ฌ 'edge'๋ค์ด ์ฐ๊ฒฐํ๋ ํํ๊ฐ ๋คํธ์ํฌ ์
๋๋ค. ๋๋ก๋ง๊ณผ ๊ฐ์ ๊ฒฝ๋ก๋ฅผ ๋คํธ์ํฌ๋ก ํ์
ํ๋ค๋ ๊ฒ์, ๋๋ก๋ค์ ๊ต์ฐจ์ (junction)์ node๋ก, ๊ทธ๋ฆฌ๊ณ ๋๋ก๋ค์ edge๋ก ํ์
ํ๋ค๋ ๊ฒ์ ๋ปํฉ๋๋ค. ๋ฐ๋ผ์ ๊ต์ฐจ์ ์ ์ ๋ณด๊ฐ ์ ๋๋ก ์ฃผ์ด์ ธ์ผ ์ ๋๋ก ๋ ๊ฒฝ๋ก๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
ํ๋์ ๋๋ก๋ง ๋ฐ์ดํฐ๋ ์ฌ๋ฌ ๊ฐ์ Line๋ค๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค. ๋ง์ผ ๋ฐ์ดํฐ ์์ ๊ฐ Line์ด ์ค์ ๋๋ก์ ๊ต์ฐจ์ ๋ง๋ค ๋ถ์ ๋์ด ์๋ค๋ฉด ๊ตณ์ด ์ถ๊ฐ ๊ฐ๊ณต์ ํ ํ์๊ฐ ์์ต๋๋ค. ArcGIS์ ๊ฐ์ GIS ์ํํธ์จ์ด๊ฐ ์์์ ๊ฐ Line์ ๋์ ์ ๊ต์ฐจ์ ์ผ๋ก ํ์ ํ๊ณ ์ฒ๋ฆฌํด์ฃผ๊ธฐ ๋๋ฌธ์ ๋๋ค. ํ์ง๋ง ๋ฐ์ดํฐ ์ Line๋ค์ด ์ค์ ๊ต์ฐจ์ ๋ง๋ค ๋ถ์ ๋์ด ์์ง ์๋ค๋ฉด, ์ง์ ๋ถ์ ์ ํด์ค์ผ ํฉ๋๋ค. ์์ธ์ ๋๋ก๋ง ๋ฐ์ดํฐ๊ฐ ๋ฐ๋ก ๊ทธ ๊ฒฝ์ฐ์ ๋๋ค. ์์ธ์ ๋๋ก๋ง ๋ฐ์ดํฐ ์ Line๋ค์ ์ค์ ๊ต์ฐจ์ ๋ง๋ค ๋ถ์ ๋์ด ์์ง ์๊ธฐ ๋๋ฌธ์, ์ด๋ฅผ ๊ทธ๋๋ก network dataset์ผ๋ก ๋ณํํด ์ฌ์ฉํ ๊ฒฝ์ฐ ์ค์ ๊ต์ฐจ์ ์ ํตํ ์ด๋ ๊ฒฝ๋ก๋ฅผ ์ฐพ์ ์ ์๊ฒ ๋ฉ๋๋ค.
Fig3. Lines are not segmented
์ ๊ทธ๋ฆผ์ seoul_roads
๋ฅผ ํ๋ก์ ํธ์ map ์์ ํ์ํ ๊ฒ์
๋๋ค. ํ๋์ ์ ์ด ๊ฐ ๋๋ก์ธ๋ฐ, ํน๋ณํ ๊ฐ์ด๋ฐ ์ญ์๋ก ๊ต์ฐจํ๋ ๋ ๋๋ก๋ง ๋์ ๋๊ฒ ์์์ ๋ฌ๋ฆฌํ์ต๋๋ค. ๊ฐ๋ก ๋ฐฉํฅ์ ์ด๋ก์ ๋๋ก์ ์ธ๋ก๋ก ๋ป์ ์ฃผํฉ์ ๋๋ก๊ฐ ๊ฐ๊ฐ ํ๋์ Line Object๋ฅผ ์ด๋ฃจ๊ณ ์์ต๋๋ค. ์ด ์ํ๋ก๋ ๋์ ๊ต์ฐจ์ ์ด ์กํ์ง ์๊ธฐ ๋๋ฌธ์, ๊ต์ฐจ์ ์์์ ์ค์ ์ด๋ ๊ฐ๋ฅํ ๊ฒฝ๋ก๊ฐ ๋๋ฝ๋๊ฒ ๋ฉ๋๋ค.
Fig4. Edit>Planarize
Fig5. Planarize Settings
ArcGIS์ Planarize
๋ผ๋ ๊ธฐ๋ฅ์ ์ด์ฉํ๋ฉด Line๋ค ์ฌ์ด์ ๊ต์ฐจ์ ์ ๋ฐ๋ผ ๊ฐ Line์ ๋ ์์ Line๋ค๋ก ๋ถ์ ํ ์ ์์ต๋๋ค. Edit
๋ฉ๋ด์์ Planarize
๋ฅผ ํด๋ฆญํ๋ฉด ๋จ๋ Pane์์, seoul_roads
์ line object๋ค์ ์ ํํ ํ, Cluster Tolerance
๋ฅผ ๋๊ฐ 0.0001m ์ ๋ ์ฃผ๊ณ ์คํํ๋ฉด ๋ฉ๋๋ค. ์ด๋ ๋ชจ๋ line์ ์ ํํ ๊ฒฝ์ฐ ์คํ ์๊ฐ์ด ๊ฝค ๊ธธ์ด์ง๊ธฐ ๋๋ฌธ์ ๋ณด๊ณ ์ ํ๋ ์ง์ญ์ line๋ง ์ ํํด๋ ์ข์ต๋๋ค.
Planarize ์คํ ํ ๋ค์ ๋งต์์ ์ ๊ต์ฐจ๋ก๋ฅผ ํ์ธํด๋ณด๋ฉด ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ค์ ๊ต์ฐจ์ ์ ๋ฐ๋ผ Line์ด ์ ๋ถ์ ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. (์์์ ์ง์ ์์ ํ์ต๋๋ค.) ์ด ์ํ์์ network dataset์ ์์ฑํ๊ฒ ๋๋ฉด ๊ต์ฐจ์ ์์์ ์ขํ์ ์ฐํ์ ๋ ๋ชจ๋ ์ด๋ ๊ฒฝ๋ก๋ก ์ ๋๋ก ๊ณ์ฐ๋ฉ๋๋ค.
Fig6. Lines are segmented
์ด์ด์ Point ํํ์ ์ฅ์ ๋ฐ์ดํฐ๋ฅผ ์ง์ ๋ง๋ค์ด ์คฌ์ต๋๋ค. ์ด ๋ฐ์ดํฐ์๋ hot_places
๋ผ๋ ์ด๋ฆ์ ๋ถ์ด๊ฒ ์ต๋๋ค. hot_places
์ field๋ก NAME๋ ๋ง๋ค์ด์ค๋๋ค. ๊ฒฐ๊ณผ๋ ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ต๋๋ค.
Fig7.
์ฌ๊ธฐ๊น์ง ์์ ํ๊ณ ๋๋ฉด Catalog Pane์์์ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์ด ๋ํ๋ฉ๋๋ค:
Fig8. Catalog Pane
2. network dataset
๋ค์์ผ๋ก seoul_roads
๋ก๋ถํฐ network dataset์ ๋ง๋ค์ด์ผ ํ ์ฐจ๋ก์
๋๋ค. ๋จผ์ network dataset์ ์์ฑํ dataset์ ์ค๋นํด์ผ ํฉ๋๋ค. ์๋กญ๊ฒ dataset์ ๋ง๋ค์ด ์์ ์์
ํ ๋ฐ์ดํฐ ํด๋์ค๋ค์ ์ฎ๊ฒจ์ค๋ ๋์ง๋ง, ์ฌ๊ธฐ์๋ ์ง๊ธ๊น์ง ์์
ํ travel
dataset์ ๊ทธ๋๋ก ์ฌ์ฉํ๊ฒ ์ต๋๋ค.
Fig9. Analysis>Tools>Create Network Dataset
๋ฆฌ๋ณธ ํจ๋์ Analysis
๋ฉ๋ด์์ Tools
๋ฅผ ํด๋ฆญํ๋ฉด ์ค๋ฅธ์ชฝ์ Geoprocessing
Pane์ด ๋น๋๋ค. ์ฌ๊ธฐ์ Create Network Dataset
์ ๊ฒ์ํด ์ ํํฉ๋๋ค. ์ด์ด์ Create Network Dataset Pane์ ์ค์ ๊ฐ์ ๋ค์๊ณผ ๊ฐ์ด ์ค์ ํฉ๋๋ค.
Target Feature Dataset
:travel
dataset (์ด๋ค dataset์ผ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ฌ์ง ์ค์ ํ๋ ํญ๋ชฉ)Network Dataset Name
:travel_nd
(๋ง๋ค์ด์ง network dataset์ ์ด๋ฆ. ์ํ๋ ์ด๋ฆ ์ฌ์ฉ)Source Feature Classes
:seoul_roads
(๋ง์ผ ๋ค๋ฅธ ๊ฒฝ๋ก ๋ฐ์ดํฐ๋ ๊ฐ์ด ์ฐ๊ณ ์ถ๋ค๋ฉด ์ถ๊ฐํด์ฃผ๋ฉด ๋จ)Elavation Model
: (๊ณ ๋(z์ถ) ์ขํ ์ ๋ณด๊ฐ ์๋ค๋ฉด ์ฌ์ฉํ๋ฉด ๋์ง๋ง ์ฌ๊ธฐ์ ์ฌ์ฉ ์ ํจ)
์ด์ Run
์ ๋๋ฌ ์คํ์ํค๋ฉด travel_nd
๋ผ๋ ์ด๋ฆ์ ์๋ก์ด network dataset์ด travel
dataset ๋ฐ์ ์์ฑ๋ฉ๋๋ค.
Fig10. Create Network Dataset Settings
๊ทธ๋ฐ๋ฐ travel_nd
๋ Catalog Pane์์๋ ์์ฑ๋๊ณ , Contents Pane(์ผ์ชฝ ํจ๋)์๋ ์์ฑ๋๋๋ฐ์, ์ถ๊ฐ ๊ฐ๊ณต์ด ํ์ํ๊ธฐ ๋๋ฌธ์ Contents Pane์์๋ ์ผ๋จ ์ญ์ ํด์ค๋๋ค.
์ด์ Catalog Pane์์ trave_nd
๋ฅผ ์ฐํด๋ฆญ ํ๊ณ property
๋ฅผ ํด๋ฆญํฉ๋๋ค. ๊ทธ๋ผ ๋ค์๊ณผ ๊ฐ์ ์ฐฝ์ด ์ด๋ฆฌ๋๋ฐ์, ์ฌ๊ธฐ์ network dataset์ ์์ฑ์ ์ค์ ํด์ค์ผ ํฉ๋๋ค.
Fig11. Network Dataset Properties
General
ํญ๋ชฉ์ ๋๊ธฐ๊ณ , Source Settings
์ ๋ค์ด๊ฐ๋ด
๋๋ค. ์ฌ๊ธฐ์ ์ฒซ๋ฒ์งธ Sources
ํจ๋์ ๋ณด๋ฉด "Edges"์ "Junctions" ํญ๋ชฉ์ด ์์ต๋๋ค. ์ฌ๊ธฐ์ "Edges"๋ก๋ seoul_roads
๋ฅผ ์ฌ์ฉํ ๊ฒ์ด๊ณ , Juntions๋ ArcGIS๊ฐ ์๋ก ์์ฑํด์ค ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๊ณ ๋์ด๊ฐ๋ฉด ๋ฉ๋๋ค.
Sources Settings
์๋ Vertical Connectivity
ํจ๋๋ ์๋๋ฐ์, ์ด๊ฑด 3์ฐจ์ z์ถ ์ขํ ์ ๋ณด๋ ์์ ๋์ ์ฐ๊ฒฐ ๋ฐฉ์์ ์ค์ ํ๋ ๊ฒ์ผ๋ก ์ฌ๊ธฐ์๋ ๋์ด๊ฐ๊ฒ ์ต๋๋ค.
์ด์ด์ Travel Attributes
ํญ๋ชฉ์ผ๋ก ๋ค์ด๊ฐ ๋ด
๋๋ค. ์ฌ๊ธฐ์ Costs
ํจ๋์ ๊ฐ๋ฉด ๋ค์ํ ์ด๋ ๋น์ฉ ์ฐ์ ๋ฐฉ์์ ์ค์ ํ ์ ์์ต๋๋ค. Restrictions
์ Descriptors
ํจ๋์์๋ ์ฐจ๋ ์ถ์
๋ถ๊ฐ๋ ๋์ด ์ ํ ๋ฑ ๋ค์ํ ๊ฒฝ๋ก์์ ์ ํ๊ณผ ์กฐ๊ฑด์ ์ค์ ํ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์๋ ๋ชจ๋ ๋์ด๊ฐ๊ณ ์ฒซ๋ฒ์งธ Travel Modes
ํจ๋๋ก ๊ฐ๊ฒ ์ต๋๋ค.
Fig12. Travel Modes
Travel Modes
์์๋ ๊ฑท๊ธฐ, ๋ฌ๋ฆฌ๊ธฐ, ์ฐจ๋ ๋ฑ ๋ค์ํ Travel Modes๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค. travel mode๊ฐ ์์ด์ผ ์ดํ Service Area ๋ถ์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ฒ์์๋ ์๋ฌด๋ฐ ๋ชจ๋๋ ๋ง๋ค์ด์ ธ ์์ง ์์๋ฐ์, ์ฌ๊ธฐ์๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ walking
๋ชจ๋๋ฅผ ์์ฑํ๊ฒ ์ต๋๋ค. (Fig12. ์ฐธ์กฐ)
์์ฑ ์ค์ ์ ๋ง์ณค์ผ๋ฉด ์ด์ network dataset์ buildํด์ผ ํฉ๋๋ค. ๋ค์ Catalog Pane์์ travel_nd
๋ฅผ ์ฐํด๋ฆญ ํ build (network)
๋ฅผ ์ ํํด Run
์ ์คํํ๋ฉด network dataset์ด build๋๊ณ Contents panel์๋ ์ถ๊ฐ๋ฉ๋๋ค.
3. service area analysis
์ด์ network dataset์ ์ด์ฉํด Service area ๋ถ์์ ์คํํด ๋ด
์๋ค. ๋จผ์ ๋ฆฌ๋ณธ์ Anaylsis
>Network analysis
๋ฅผ ํด๋ฆญํ๊ณ "Network Data Source"๋ก ๋ฐฉ๊ธ ๋ง๋ network dataset์ธ travel_nd
๋ฅผ ์ง์ ํด์ค๋๋ค.
Fig13.
๋ค์ ์๊น์ Network analysis
๋ฅผ ํด๋ฆญํ๋ฉด ๋จ๋ ์ฌ๋ฌ ํด ์ค Service Area
๋ฅผ ์ ํํฉ๋๋ค. Service Area
๋ฅผ ํด๋ฆญํ๋ฉด ๋ฐ๋ก travel_nd
๋ฅผ source๋ก ํ๋ ๋ฐ์ดํฐ๊ฐ ์์ฑ๋์ด Contents Pane์๋ ์ถ๊ฐ๋ฉ๋๋ค. ํ์ง๋ง ์์ง ์ค์ ๋ก ๋ง๋ค์ด์ง ๊ฑด ์์ต๋๋ค. ์์ง Service Area ๋ถ์์ด ์คํ๋ ๊ฑด ์๋๋๋ค.
์ด์ ๋ฆฌ๋ณธ ์์ญ์ ๋ณด๋ฉด ์๋ ๊ทธ๋ฆผ์ฒ๋ผ Service Area Layer ํจ๋์ด ์ถ๊ฐ๋์ด ์์ต๋๋ค. ์ด์ด์ Service Area Layer ํจ๋์์ Import Facilities
๋ฅผ ํด๋ฆญํ๋ฉด ๋จ๋ ์ฐฝ์์, Input Locations
์ hot_places
๋ฅผ ์ถ๊ฐํ๊ณ Apply
์คํํด์ค๋๋ค. hot_places
๋ฅผ service area์ ๊ธฐ์ค ์ง์ ๋ค๋ก ์ผ๊ฒ ๋ค๋ ์ค์ ์ ํด์ค ๊ฒ์
๋๋ค.
Fig14. Service area settings
๋ค์ Service Area Layer ํจ๋๋ฌ ์์, Cutoffs
์ค์ ์์ ๊ฑฐ๋ฆฌ ๋ฐ ์๊ฐ ๋ฒ์๋ฅผ ์ค์ ํด์ค๋๋ค. ์ฐ๋ฆฌ๋ network dataset์ ์์ฑ์ ์ค์ ํ๋ฉด์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ธฐ์ค์ผ๋ก ํ travel mode๋ง ๋ง๋ค์๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ์๋ ๊ฑฐ๋ฆฌ๋ฅผ ๊ธฐ์ค์ผ๋ก ํ cutoff๋ง ์ฌ์ฉํ๊ฒ ์ต๋๋ค. ์ฌ๊ธฐ์๋ 100, 500, 1000 meter๋ก ๊ฐ์ ์ค์ ํ์ต๋๋ค. ์ฆ 0~100, 100~500, ๊ทธ๋ฆฌ๊ณ 500~1000m ๋ฒ์์ service area๋ฅผ ๋ณด๊ฒ ๋ค๋ ์๊ธฐ์
๋๋ค. ์ด์ Run
์ ํด๋ฆญํด์ฃผ๋ฉด, ๊ทธ๋์ ์ค์ ํ ๋ด์ฉ์ ํ ๋๋ก ํ service arear์ "์์ญ"๋ค์ด ์์ฑ๋ฉ๋๋ค. ์ด ์๋กญ๊ฒ ์์ฑ๋ ๋ฐ์ดํฐ๋ Catalog Pane์ Serive area
layer ๋ฐ์ Polygons
ํญ๋ชฉ์ผ๋ก ํ์๋ฉ๋๋ค. ๋ง์ผ ์ด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด ๋์ค์๋ ์ฌ์ฉํ ๊ณํ์ด๋ผ๋ฉด, feature class๋ก exportํด์ฃผ๋ฉด ๋ฉ๋๋ค.
Service Area/Polygons
์ Attributes table์ ์ด์ด์ ์ง๋์ ํจ๊ป ์ดํด๋ณด๋ฉด ๋ค์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ต๋๋ค.
Fig15. Service areas
์ด service area ํ
์ด๋ธ์ FacilityID ํ๋๋ hot_places์ ๊ฐ Point์ OBJECTID๋ก๋ถํฐ ์์ฑ๋ ๊ฒ์
๋๋ค. ๊ทธ๋ฆฌ๊ณ FromBreak๊ณผ ToBreak ํ๋๋ ๋ฐฉ๊ธ ์ค์ ํ cutoff ๋ฒํผ์ ํํ/์ํ์ ์ ๋ํ๋
๋๋ค.
์ฆ ์ ๊ทธ๋ฆผ์์ ์ฒซ๋ฒ์งธ ์ด์ OBJECTID=10 ์ด์๋ hot_place์ธ ๋จ๋๋ฌธ์ผ๋ก๋ถํฐ 500~1000m ์ฌ์ด์ ์ด๋ ๊ฐ๋ฅํ ์์ญ์, ๋๋ฒ์งธ ์ด์ 100~500m ์ฌ์ด์ ์ด๋ ๊ฐ๋ฅํ ์์ญ์ ๋ํ๋
๋๋ค. ์ด ์ด๋ ๊ฑฐ๋ฆฌ๋ ๋น์ฐํ travel_nd
network dataset๋ฅผ ๋ฐํ์ผ๋ก ๊ณ์ฐ๋ ๊ฒ์
๋๋ค!
4. spatial join analysis
๋ง์ง๋ง์ผ๋ก spatial join analysis๋ฅผ ์ด์ฉํ๊ฒ ์ต๋๋ค. ์์ ๊ตฌํ Service Area/Polygons
์ hot_places
์ฌ์ด์ Spatial Join ๋ถ์์ ์ค์ํ๋ฉด, ์ด๋ค Service area ๋ด๋ถ์ ์๋ hot place์ ๋ชฉ๋ก์ ์ถ๋ ค๋ผ ์ ์์ต๋๋ค. ์ด ๋ชฉ๋ก์ด ๊ณง ํ ์ง์ ์ผ๋ก๋ถํฐ ์ผ์ ๊ฑฐ๋ฆฌ/์๊ฐ ๋ด ๋๋ฌ ๊ฐ๋ฅํ ์ง์ ์ ๋ชฉ๋ก์ด ๋ฉ๋๋ค.
๋ฆฌ๋ณธ์ Analysis
ํจ๋์์ Spatial Join
์ ํด๋ฆญํ ํ, ๋ค์๊ณผ ๊ฐ์ด ์ค์ ๊ฐ์ ์
๋ ฅํฉ๋๋ค. (Fig16. ์ฐธ์กฐ)
Target Features
->Service Area/Polygons
Join Features
->hot_places
Output Feature Class
->JoinResult
(์๋ก ๋ง๋ค์ด์ง join ๋ฐ์ดํฐ์ ์ด๋ฆ. ์ํ๋ ์ด๋ฆ ์ฌ์ฉ)Join Operation
->Join one to many
(ํ๋์ ์์ญ์ด ์ฌ๋ฌ place์ ์ค์ฒฉ๋ ์ ์์ผ๋ฏ๋ก)Match Option
->Contains
(Intersect
๊ฐ ์๋!)
Fig16. Spatial Join Settings
์์ธ๋ฌ Fields
์์ ์๋กญ๊ฒ ์์ฑ๋ ํ๋๋ฅผ ์ถ๊ฐํด ์ค์ผ ํฉ๋๋ค. Target Features์ ํ๋๋ ์๋ก์ด ํ
์ด๋ธ์ ํ๋๋ก ๊ณ์น๋์ง๋ง, Join Features๋ ๊ทธ๋ฌ์ง ์๊ธฐ ๋๋ฌธ์ ์ง์ ํ๋๋ฅผ ์ถ๊ฐํด ์ค๋๋ค. Add Fields
๋ฅผ ํด๋ฆญํด์, hot_places
์ NAME
ํ๋๋ JOIN_NAME
์ผ๋ก, OBJECTID
ํ๋๋ JOIN_OBJECTID
๋ก ์ถ๊ฐ๋๋๋ก ์ค์ ํ์ต๋๋ค.
์คํํ๊ฒ ๋๋ฉด JoinResult
๋ผ๋ ์ด๋ฆ์ Spatial Join ๋ฐ์ดํฐ๊ฐ ์๋กญ๊ฒ ์์ฑ๋๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ์ด ๋ฐ์ดํฐ๋ ์ถ๋ฐ์ ๊ณผ ์ด๋ ๊ฑฐ๋ฆฌ์ ๋ฒํผ ๋ฒ์ ๋ฐ ๋์ฐฉ ๊ฐ๋ฅ ์ง์ ์ ์ ๋ณด๋ฅผ ๋ด๊ณ ์์ต๋๋ค.
JoinResult
์ Attributes Table์ ์ดํด๋ด
์๋ค (Fig17.). FacilityID๊ฐ
ํ๋๊ฐ ์ถ๋ฐ์ ์ด๊ณ , FromBreak
๊ณผ ToBreak
์ service area buffer์ ํํ/์ํ๊ฐ์ ๋ณด์ฌ์ค๋๋ค. JOIN_OBJECTID
๋ ๊ฐ ์ถ๋ฐ์ ์ผ๋ก๋ถํฐ์ ๊ฐ service area ์์ ์๋ ์ง์ , ์ฆ ๋๋ฌ ๊ฐ๋ฅ ์ง์ ์ ID์
๋๋ค.
ํ๋ฒ ํผ๋ง๊ณจ๋ก๋ถํฐ ์ผ์ ๊ฑฐ๋ฆฌ ๋ด ๋๋ฌ ๊ฐ๋ฅ ์ง์ ๋ค์ ๋ด ์๋ค. ํผ๋ง๊ณจ์ OBJECTID๋ 6์ด๋ฏ๋ก FacilityID=6์ ๋ด ๋ฉด ๋ฉ๋๋ค. FromBreak=500, ToBreak=1000์ ๋ณด๋ฉด, ํผ๋ง๊ณจ์์ 500~1000m ์ฌ์ด์ ์๋ JOIN ์ง์ ๋ค์ด ๋์ต๋๋ค. ์ธ์ข ๋์์, ๊ดํ๋ฌธ, ์ฐ์ ์ด๊ตญ, ์์ธ๊ด์ฅ์ด ๋จ๋ค์. ์ด ์ง์ ๋ค์ ์์ธ์ ๋๋ก๋ง์ ์ด์ฉํด ํผ๋ง๊ณจ๋ก๋ถํฐ 500~1000m ๋ด์ ์ด๋ํ ์ ์์ต๋๋ค.
Fig17. Result
Using Python
์์ฆ ์ฌ๋งํ ๋ถ์ ์ํํธ์จ์ด๋ Python API๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋๋ค๋ฅธ GIS ์ํํธ์จ์ด์ธ QGIS๋ Python API๋ฅผ ์ ๊ณตํ์ฃ .
ArcGIS Pro๋ ๋ฐ์คํฌํฑ์ ์ค์น๋ ํ๋ก๊ทธ๋จ ๋ด๋ถ์์ ์์ฒด์ ์ผ๋ก Python ๊ตฌ๋ ํ๊ฒฝ์ ๊ฐ๋ํ๋ ๋ฐฉ์์ ์ง์ํฉ๋๋ค. ์ฆ ArcGIS Pro๋ฅผ ์ค์นํ๊ฒ ๋๋ฉด ๋ณ๋์ Python ๋จธ์ ์ด ํจ๊ป ์ค์น๋ฉ๋๋ค. ๊ทธ๋ฌ๋ค๋ณด๋ ํ๋ก๊ทธ๋จ ์ฉ๋๋ ๊ฝค ๋ฌด๊ฒ์ฃ .
ArcGIS native Python์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ํฌ๊ฒ ๋ ๊ฐ์ง ์ ๋๋ค. ํ๋๋ ArcGIS Pro๋ฅผ ์ด๊ณ ๊ทธ ์์์ Python Notebook ๋ฐ window๋ฅผ ์ด์ฉํ๋ ๊ฒ์ ๋๋ค. Analysis ํจ๋์์ Python ๋ฒํผ์ ์ ํํ๊ณ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค. Python Notebook์ jupyter notebook์ ArcGIS Pro ์์์ ์์ฑํ๋ค๊ณ ์๊ฐํ๋ฉด ๋๊ณ , Python window ๋ฐฉ์์ ArcGIS Pro ์์์ ํฐ๋ฏธ๋ ๋ฐฉ์์ ์ด์ฉํ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋ฉ๋๋ค. notebook์ ์ฌ์ฉํ ๊ฒฝ์ฐ ํ๋ก์ ํธ ๋ด๋ถ์ directory์ ์ ์ฅํ๋ฉด์ ์์ ๋ด์ญ์ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
๋ ํ๋์ ๋ฐฉ๋ฒ์ ๋ณ๋์ Python ์คํฌ๋ฆฝํธ ํ์ผ์ ์์ฑํ ํ, ์ด๋ฅผ ArcGIS์ Python ๋จธ์ ์ผ๋ก ์คํ์ํค๋ ๋ฐฉ๋ฒ์
๋๋ค. window์ ๊ฒฝ์ฐ ๋์ฒด๋ก c:\Progra~1\ArcGIS\Pro\bin\Python\scripts\propy.bat
๊ฐ์ ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ python ์คํฌ๋ฆฝํธ ํ์ผ์ ์คํ์ํค๊ฒ ๋ฉ๋๋ค.
์ง๊ธ๊น์ง ์ ๋ฆฌํ ๋ด์ฉ๋ค์ ArcGIS์ Python API๋ฅผ ํตํด์๋ ์ํํ ์ ์๊ธด ํฉ๋๋ค. ํ์ง๋ง ๋๊ท๋ชจ๋ก ์๋ํ๋ ์์ ์ด ํ์ํ ๊ฒ ์๋๋ผ๋ฉด, ๊ฐ์ข Analysis tool์ GUI ํ๊ฒฝ์ด ์๋ ํ์ด์ฌ ๊ตฌ๋ฌธ์ผ๋ก ํด๊ฒฐํ๋ ๊ฒ์ ์คํ๋ ค ๋ฒ๊ฑฐ๋ฌ์ธ ์๋ ์์ต๋๋ค. ๋ณด๊ณ ์ ํ๋ "์ด๋ ๊ฑฐ๋ฆฌ"์ ๊ฐ๋ค์ด ์ฌ์ ์ ์ ํด์ ธ ์๋ค๋ฉด, spatial join analysis๊น์ง๋ GUI ํ๊ฒฝ์์ ์ํํ ํ, python์ผ๋ก join ๊ฒฐ๊ณผ๋ฅผ ๋ถ๋ฌ์์ ์กฐํํ๋ ์คํฌ๋ฆฝํธ๋ง ์ง๋ ๋ฉ๋๋ค.
ํด๋น ์คํฌ๋ฆฝํธ์ ์์์ ๋๋ค: https://github.com/AcheuleanGraph/tech.blob/blob/main/gis/arcgis-travel/pys/travel.py
์ฌ์ค, ์ด ๊ฒฝ์ฐ ๊ตณ์ด ArcGIS์ Python API๋ฅผ ์ฌ์ฉํ ํ์๋ ์์ด, ์์ ๊ฒฐ๊ณผ๋ฅผ table ํ์์ ํ์ผ๋ก ์ ์ฅํ ํ, ๊ทธ ํ์ผ์ ์ฝ์ด์ค๋ python ์คํฌ๋ฆฝํธ๋ฅผ ์ง๋ ๋ฉ๋๋ค. ์ด ๊ฒฝ์ฐ ArcGIS์ Python ๋จธ์ ์ ์ฌ์ฉํ ํ์๋ ์๊ฒ ์ฃ .
ArcGIS ๋ด์์ python notebook์ ์ด์ฉํด ์์ ์์ ๋ค์ ์ํํ๋ ๋ ธํธ๋ถ ์์๋ ์ฌ๋ ค๋์์ต๋๋ค: https://github.com/AcheuleanGraph/tech.blob/blob/main/gis/arcgis-travel/pys/travel.ipynb
Wrap Up
์ผํ ๊ฐ๋จํ ๋ฌธ์ ์ธ๋ฐ๋ GIS๋ ์ ๊ฒฝ ์ธ ์ ์ด ๋ง์ต๋๋ค. ์ผ๋จ ๋ฐ์ดํฐ ์ธํ ๋จ๊ณ๋ถํฐ ๋ง๋ง์น ์์ฃ . ์์ ์ฌ์ฉํ ์์ธ์ ๋๋ก๋ง ๋ฐ์ดํฐ๋ง ํด๋ ์ ๋ฐ์ดํฐ์ ๊ต์ฐจ์ ์ด ๋ฐ์๋์ด ์์ง ์๋ค๋ ๊ฒ์ ๋ชจ๋ฅด๊ณ ๋ฐ๋ก ๋คํธ์ํฌ ๋ถ์์ ๋ค์ด๊ฐ๋ฉด ์๋นํ ๋นํฉ์ค๋ฌ์ด ๊ฒฐ๊ณผ๋ฅผ ์ป๊ฒ ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ์ค ์์ ์ํํ ๋ฐฉ์์ ๊ณ ๋(z์ถ) ์ ๋ณด๋ฅผ ๋ฌด์ํ๊ธฐ ๋๋ฌธ์, ์ค์ ๊ต์ฐจ์ ์ ์๋ ๊ทธ๋๋ก ๋ฐ์ํ ๊ฒ์ด ์๋๊ธฐ๋ ํฉ๋๋ค. ๊ณ ๊ฐ๋๋ก๊ฐ ์์ ์๋ ์์ผ๋๊น์. ๐
GIS ์ํํธ์จ์ด๋ฅผ ๋ค๋ฃจ๋ ์ผ์ ์ธ์ ๋ ๊น๋ค๋กญ๊ณ ๋ ํฅ๋ฏธ๋ก์ด ๊ฒฝํ์ ์ ๊ณตํฉ๋๋ค. QGIS์ ArcGIS, ๊ทธ๋ฆฌ๊ณ ์ด๋ค์ Python API๋ฅผ ๋ณด๋ฉด ์๋ก ๋ฎ์์ผ๋ฉด์๋ ๋ค๋ฅด๋ค๋ ์ธ์์ด ๋๋๋ฐ์, ์ํํธ์จ์ด์ ์ ๋์ ๋ํํ์ ์ฐจ๋ณํ๋ฅผ ์ฐ๊ตฌํ ์ ์๋ ํฅ๋ฏธ๋ก์ด ์ฌ๋ก ์๋๊น์. ๐ฌ