๐ท๐ผ๋ชจ์ฌ๋ด์ ๊ฐ๋ฐ์์ฒ๐ท๐ผ
๊ณต๊ฐ DB์ ๋ํ ๊ธ ๋ณธ๋ฌธ
“๊ณต๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค(Spatial Database)”๋ผ๊ณ ํ๋ฉด, ์ฒ์ ๋ค์ด๋ณด๋ ๊ฐ๋ฐ์ ๋ถ๋ค์ด ๋ง์ผ์ค ๊ฒ ๊ฐ์๋ฐ์. ์ค๋งํธํฐ ๊ธฐ๋ฐ์ ์ง๋ฆฌ์ ๋ณด๋ ์์น์ ๋ณด๋ฅผ ์ทจ๊ธํ๊ธฐ ์ํด์ ์ด์ ๋ “๊ณต๊ฐ DB”๊ฐ ๊ธฐ๋ณธ์ธ ๋งํผ ์ด์ ๋ํด์ ์์๋๋ ๊ฒ์ด ์ค์ํ ๊ฒ ๊ฐ๋ค์.
1. ๊ณต๊ฐDB๋? (wikipedia)
spatial database is a database that is optimized to store and query data that is related to objects in space, including points, lines and polygons. While typical databases can understand various numeric and character types of data, additional functionality needs to be added for databases to process spatial data types. These are typically called geometry or feature. The Open Geospatial Consortium created the Simple Features specification and sets standards for adding spatial functionality to database systems.
๊ณต๊ฐ์ ์กด์ฌํ๋ ์ , ์ , ํด๋ฆฌ๊ณค๋ฑ์ ํฌํจํ๋ ๊ฐ์ฒด์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ , ๊ฒ์ํ๋๋ฐ ์ต์ ํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๋ค. ์ ํต์ ์ธ DB๊ฐ ๋ค์ํ ์ซ์์ ๋ฌธ์๋ฅผ ์ดํดํ๋๋ฐ ์ฌ์ฉ๋์ด ์ง๋ฏ๋ก, ๊ณต๊ฐ Data Type์ ์ดํดํ๊ธฐ ์ํด์๋ ์๋ก์ด ๊ธฐ๋ฅ๋ค์ด ํ์ํ๊ฒ ๋๋ค. ์ด๋ฐ ๊ฒ๋ค์ Geometry๋ Feature๋ผ๊ณ ๋ถ๋ฅธ๋ค. ๊ทธ๋์ OGC๋ ์ด๋ฐ ๊ธฐ๋ฅ๋ค์ ๋ํ ํ์ค๊ณผ Simple Feature Spec์ ์ ์ํ๋ค.
๊ณต๊ฐ DB๋ RDBMS๋ ๋ญ๊ฐ ํ๋ฆฐ ๊ฒ ๊ฐ์ฃ ? ๊ทธ๋ผ ์๋๋ฅผ ๋ ์ดํด ๋ณด์์ฃ .
[ ๊ณต๊ฐDB์ ์๋ก์ด ๋ฐ์ดํฐ ์ ํ ]
– Vector : ์ , ์ , ๋ฉด, ๋ค๊ฐํ ๋ํ – ์ด๋ป๊ฒ ์ ์ฅํ๊ณ , ์ด๋ป๊ฒ ์กฐํํ์ง???
– Raster : ์ง๋๋ฅผ ์ด๋ฏธ์ง ๋ฐฉ์์ผ๋ก ํํํ ๋ ์ฐ๋ ๋ฐฉ์(์ง๋์ ๋ชจ๋ ์ ์ ์ขํ๊ฐ ์์ฃ ?)
– Topology : ์๋๋ฅผ ์ฐธ์กฐ
– Non-Spatial data : ๊ณต๊ฐ DB๊ฐ ์๋๊ฒ.
[ ๊ณต๊ฐDB๋ฅผ ์ํ Additional Functionality๋? ]
๋ ์ง์ญ์ Area ํฉ์น๊ธฐ – Merging, ๋ ์ง์ญ์ ๊ต์ฐจ์ง์ญ ์ถ์ถํ๊ธฐ – Intersection, ์ต๋จ๊ฑฐ๋ฆฌ ์ฐพ๊ธฐ – Routing ๋ฑ๋ฑ….
[ ๊ณต๊ฐDB์ ๊ด๊ณ ํน์ฑ ]
๋๊ฐ ๋ํ์ด ๋์ผํ๊ฐ? ์๋ก ๋ํ์ด ๋จ์ด์ ธ ์๋? ๊ต์ฐจํ๋? ์ ์ดํ๋? ๊ฐ๋ก์ง๋ฅด๋? ํฌํจ๋๋๊ฐ? ํฌํจํ๋๊ฐ? ๊ฒน์ณ์ ธ ์๋? (์๋ฐ ๊ด๊ณ ์ฐ์ฐ์ RDBMS์ ์์ฃ ?)
[ ์์(Topology)์ด๋ ]
๊ณต๊ฐ ๊ฐ์ฒด ๊ฐ์ ๊ด๊ณ๋ฅผ ๋งํจ.
์ฆ, ๋ํ์ ํํํ ๋ ์ขํ ๋ง์ผ๋ก ์ ์ํ๋ฉด ์ด๊ฑฐ ๋๊ฐํด์ง. ์ ์ ์ด๋ํ ๋ ๋ง๋ค ์ด์ด์ง ์ ๋ค๋ง๋ค ๋ฐ์ดํฐ ์
๋ฐ์ดํธ ํด์ค์ผ ํจ.
๊ฐ ์ ๋ค์ด ์ด๋ป๊ฒ ์ด์ด์ ธ ์๋์ง๋ ๊ด๊ณํ ํ
์ด๋ธ๋ก ์ ์ํจ. ์ด๋ฌ๋ฉด, ์ ์ด๋์๋ง๋ค ์ด์ด์ง ์ ๋ค์ ๋ฐ์ดํฐ ์
๋ฐ์ดํธ๊ฐ ์ค์ด๋ฌ
๊ณต๊ฐ DB๊ฐ ์์๋ ์์ ์ Topology๋ฅผ ์ ์๊ณ ์๋ ์ ๋ฌธ๊ฐ๊ฐ RDBMS๋ก ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋๋ฐ์. ๊ฐ๋จํ ์ , ์ ํธ์ง ์กฐ์ฐจ DB์ ์ ๋ฐ์ดํธ ๋ถํ๊ฐ ์ปค์ File DB ํํ๋ก๋ง ๊ด๋ฆฌํ๋ต๋๋ค.
์์ฆ์ OGC๊ฐ ์ ์ํ Spec์ ๋ฐ๋ผ ์ ๋ฌธ “๊ณต๊ฐDB”๊ฐ ์๊ฒผ๋๋ฐ์. ๊ทธ๋์ ๊ณต๊ฐ ์ ๋ณด๋ฅผ Handling ํ๊ธฐ ์ข์์ก์ฃ .
* Middleware ๋ฐฉ์ : ESRI ArcGIS
* RDBMS ๊ธฐ๋ฐ : Oracle Spatial, SpatiaLite, DB2, MS SQL Server, PostSQL(PostGIS), MySQL(Extention)
* Graph DB ๊ธฐ๋ฐ – Neo4j (Btree, Quadtree ๋ฑ์ ์ง์), AllegroGraph
* NoSQL ๊ธฐ๋ฐ – MongoDB
2. ๊ณต๊ฐDB์ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ Spatial Query
[ Spatial Query๋? ]
Facebook, Google Place, Foursquare ๋ฑ์์๋ ๋ฐ๊ฒฝ๊ฒ์ (์ฃผ๋ณ 10km์ด๋ด ์์์ )์ ๋ง์ด๋ค ํ์์ฃ ? ํ์ง๋ง, ๋ํ๋ก ๋ด ๋ ์คํ ๋ ์ด๋ผ๋ ๊ฐ, ํ๋ ์ ํด๋ฝ ์ด๋ผ๋ ๊ฐ ์ด๋ป๊ฒ ๊ฒ์ํ ์ ์์๊น์? ๋ณ๋์ AOI๋ฅผ ๊ตฌ์ถํด์ผ๊ฒ ์ง๋ง, “Contains” Query๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋จํ๊ฒ ๋๊ฒ ์ง์?
์งํ์ฒ ์ญ 5๋ถ ๊ฑฐ๋ฆฌ๋ ์ด๋ป๊ฒ ์ฐพ์๋ผ๊น์? (ํ ํ . ๋น๋ฐ์ ๋๋ค. ์ง์ ์ฐ๊ตฌํด๋ณด์๊ธธ.)
์๋๊ฐ ๊ทธ ํจ์๋ค์ ๋๋ค. ์ํ ์์ ๋ง์ ๊ณต๊ฐ๊ฒ์ ๋ค์ด ์ด ํจ์๋ฅผ ํ์ํ๋ฉด ๋ค์ํ๊ฒ ๋์ค๊ฒ ์ง์.
- Distance(geometry, geometry) : number
- Equals(geometry, geometry) : boolean
- Disjoint(geometry, geometry) : boolean
- Intersects(geometry, geometry) : boolean
- Touches(geometry, geometry) : boolean
- Crosses(geometry, geometry) : boolean
- Overlaps(geometry, geometry) : boolean
- Contains(geometry, geometry) : boolean
- Length(geometry) : number
- Area(geometry) : number
- Centroid(geometry) : geometry
[ ๊ณต๊ฐ ์ธ๋ฑ์ค(Spatial Index) ]
๋น ๋ฅธ ์ง์๋ฅผ ์ํด์ ๊ณต๊ฐ DB๋ ํน์ํ ๊ฒ์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํฉ๋๋ค. R-Tree, QuadTree ๋ผ๋ ๊ฒ์ธ๋ฐ์. ์ฆ, ๊ฐ๋จ์ญ์ ์ฐพ๊ธฐ ์ํด์ “๋ํ๋ฏผ๊ตญ” -> “๊ฒฝ๊ธฐ๋” -> “์์ธํน๋ณ์” -> “๊ฐ๋จ๊ตฌ” -> “๊ฐ๋จ์ญ” ์ด๋ผ๋ ๋ฐฉ์์ Tree ๊ตฌ์กฐ๋ฅผ ํ๋๋ฐ์. ์๋ค์ํผ ์ด๊ฒ ๋ค ๋ํ์ด๋ผ ํน๋ณํ ๊ตฌ์กฐ์ Index ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ต๋๋ค.
์ด๋ฐ ๊ตฌ์กฐ๋ฅผ “Spatial Index”๋ผ๊ณ ํ๋๋ฐ์. ๊ณต๊ฐ DB๊ฐ ์์๋ ์์ ์ ์ผ์ผํ ๋ค ๋งจ๋ ์์ ๊ตฌํํ๋ค๊ณ ํฉ๋๋ค. ์ฉ์ฉ. ์ด์ ๋ ๋๋ผ์ด ์ผ์ด ๋์์ง์.
3. DML(Data manipulation) ์ ์๋?
๋น์ฐํ ์๊ฒ ์ง์? ๊ณต๊ฐ๋ถ์ ์ด๋ผ๋ ์ ๋ชฉ์ผ๋ก ์๋์ ๊ฐ์ “๋ํ ์กฐ์ ๊ธฐ๋ฅ”์ ์ ๊ณตํฉ๋๋ค.
์ด๋๋ค๊ฐ ์ธ๊น์? ์ผ๋ฐ ์ฌ์ฉ์๊ฐ ์ฌ์ฉํ๋ ค๋ฉด ๋ง์ด “์ผ๋ฐํ”๊ฐ ๋์ด์ผ ๊ฒ ์ง๋ง, ๊ฐ๋ฐ์๋ค์ ํ๋ถํ ์์๋ ฅ์ด ์๋ค๋ฉด ์ฌ๋ฏธ๋ ๊ธฐ๋ฅ๋ค์ด ๋ง์ด ๋ง๋ค์ด์ง๋ฆฌ๋ผ๊ณ ๋ด
๋๋ค.
๋ํ์ ์ผ๋ก ๊ตฌ๊ธ์ Panoramio ๋ฅผ ๊ฐ์ง๊ณ Density map(http://www.internetmap.kr/664
)์ ๋ง๋ค์๋๋ฐ์. ์๋ง Convex Hull๊ณผ Union ๋ฑ์ ์ฎ์ด์ ์ฌ์ฉํ๋ฉด ์์ Visual ๋ค์ ๋ณผ ์ ์๊ฒ ์ฃ ?
(https://sites.google.com/a/projekcts.ru/projekcts/Home/building-photo-density-maps-with-panoramio)
[ Spatial Analysis ]
– Buffer – 2๋ฐฐ๋ก ๋ปฅํ๊ธฐ ํ๊ฑฐ๋, ์ถ์ํ๊ฑฐ๋.
– Convex Hull – ๋ํ์ ๊ฐ์ธ๋ ๋ฅ๊ทผ ๋ํ ์ป๊ธฐ
– Intersection – ๊ต์ฐจํ๋ ๋ถ๋ถ๋ง ๋ํ์ผ๋ก ๋ง๋ค๊ธฐ
– Union – ๋๊ฐ์ ๋ํ์ ํฉ์ณ์ ํ๋์ ๋ํ์ผ๋ก ๋ง๋ค๊ธฐ
– Difference – ๋ ๊ฐ์ ๋ํ์ด ๊ฒน์น๋ ๋ถ๋ถ๋ง ํ๋์ ๋ํ์์ ๋นผ๊ธฐ (๋น๊ทผ ๊ธฐ์ค ๋ํ์ด ์๊ฒ ์ฃ ?)
– Symmetric Difference – ๋ ๊ฐ์ ๋ํ์ ํฉ์น ๋ค์. ๊ฒน์น๋ ๋ถ๋ถ์ ๋นผ๊ธฐ
์ถ์ฒ
IT - ๊ณต๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค(Spatial DB)๋ ๋ฌด์์ธ๊ฐ ?
“๊ณต๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค(Spatial Database)”๋ผ๊ณ ํ๋ฉด, ์ฒ์ ๋ค์ด๋ณด๋ ๊ฐ๋ฐ์ ๋ถ๋ค์ด ๋ง์ผ์ค ๊ฒ ๊ฐ์๋ฐ์. ์ค๋งํธํฐ ๊ธฐ๋ฐ์ ์ง๋ฆฌ์ ๋ณด๋ ์์น์ ๋ณด๋ฅผ ์ทจ๊ธํ๊ธฐ ์ํด์ ์ด์ ๋ “๊ณต๊ฐ DB”๊ฐ ๊ธฐ๋ณธ์ธ ๋งํผ ์ด์ ๋ํด์ ์์๋๋ ๊ฒ์ด ์ค์ํ ๊ฒ ๊ฐ๋ค์.1. ๊ณต๊ฐDB๋? (wikipedia)spatial database is a database that is optimized to store and query data that is related to ob
www.ministory.net