[PostgreSQL] PostGIS: νƒ€μž…

이전 포슀트
https://blog.naver.com/sssang97/223381620061

지리적 계산을 μˆ˜ν–‰ν•˜λ €λ©΄ 근간이 λ˜λŠ” 것은 λ‹Ήμ—°νžˆ μ’Œν‘œλ‹€.
PostGISλŠ” μ’Œν‘œ 계산을 μœ„ν•΄ μ—¬λŸ¬κ°€μ§€ 자체적인 νƒ€μž… ν˜•νƒœλ₯Ό μ§€μ›ν•˜λŠ”λ°, λ¬Έμžμ—΄μ„ 기반으둜 νƒ€μž…μ„ μ œκ³΅ν•œλ‹€.

그리고 PostGISμ—μ„œ λŒ€λΆ€λΆ„μ˜ νƒ€μž…κ³Ό ν•¨μˆ˜λŠ” ST μ ‘λ‘μ‚¬λ‘œ μ‹œμž‘ν•œλ‹€. Spatial Typed의 좕약이닀.




Geom νƒ€μž… κΈ°λ³Έ λ³€ν™˜λ²•

예λ₯Ό λ“€μ–΄, (X,Y) μ’Œν‘œ 값을 PostGIS 객체둜 μƒμ„±ν•˜λ €λ©΄ λ‹€μŒκ³Ό 같이 Text->Geom ν•¨μˆ˜λ₯Ό μ΄μš©ν•  수 μžˆλ‹€.

SELECT ST_GeomFromText('POINT(-126.4 45.32)')

그러면 μ’€ λ‚œλ…ν™”λœ ν˜•νƒœμ˜ 자체 규격 Geom λ¬Έμžμ—΄ 값을 λ°˜ν™˜ν•œλ‹€. μ‹€μ œλ‘œ μ—°μ‚° 등을 μˆ˜ν–‰ν•  λ•ŒλŠ” 이런 값듀을 κ°€μ Έλ‹€κ°€ μ²˜λ¦¬ν•˜κ²Œ 될 것이닀.

κ·Έ λ°˜λŒ€λ₯Ό μˆ˜ν–‰ν•˜λ €λ©΄ AsText ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€.

SELECT ST_AsText('01010000009A99999999995FC0295C8FC2F5A84640');

또 λ°˜λŒ€λ‘œ 잘 ν‘œμ‹œλ˜λŠ” 것을 λ³Ό 수 μžˆκ² λ‹€.




Geom κΈ°λ³Έ νƒ€μž…λ“€

이런 νƒ€μž…λ“€μ΄ μ œκ³΅λœλ‹€. μœ„μ˜ Point와 λ§ˆμ°¬κ°€μ§€λ‘œ λ‹€ λ¬Έμžμ—΄ 기반으둜 κ΅¬μ„±λœλ‹€.

-- (X, Y) μ’Œν‘œ νƒ€μž…
SELECT ST_GeomFromText('POINT(0 0)');

-- μ—¬λŸ¬κ°œμ˜ Point
SELECT ST_GeomFromText('MULTIPOINT((0 0),(1 2))');

-- μ—¬λŸ¬κ°œμ˜ Point둜 κ΅¬μ„±λœ μ„ 
SELECT ST_GeomFromText('LINESTRING(0 0,1 1,1 2)');

-- 1개 μ΄μƒμ˜ μ„  μ§‘ν•©
SELECT ST_GeomFromText('MULTILINESTRING((0 0,1 1,1 2),(2 3,3 2,5 4))');

-- Pointλ“€λ‘œ κ΅¬μ„±λœ λ‹€κ°ν˜•
SELECT ST_GeomFromText('POLYGON((0 0,4 0,4 4,0 4,0 0),(1 1, 2 1, 2 2, 1 2,1 1))');

-- μ—¬λŸ¬κ°œμ˜ λ‹€κ°ν˜•
SELECT ST_GeomFromText('MULTIPOLYGON(((0 0,4 0,4 4,0 4,0 0),(1 1,2 1,2 2,1 2,1 1)), ((-1 -1,-1 -2,-2 -2,-2 -1,-1 -1)))');

-- λ‹¨μˆœν•œ μ—¬λŸ¬κ°œμ˜ Geom μ§‘ν•©
SELECT ST_GeomFromText('GEOMETRYCOLLECTION(POINT(2 3),LINESTRING(2 3,3 4))');

그러면 μ € νƒ€μž…μœΌλ‘œ μƒμ„±λœ Geom 값을 기반으둜 μ „μš© ν•¨μˆ˜λ“€μ„ μ‚¬μš©ν•  수 있게 λœλ‹€.
예λ₯Ό λ“€μ–΄, ST_XλŠ” Point κ°’μ˜ x 값을 κΊΌλ‚΄μ˜€λŠ” κ°„λ‹¨ν•œ ν•¨μˆ˜λ‹€.




μ°Έμ‘°
https://foss4g.tistory.com/1255
https://postgis.net/workshops/postgis-intro/geometries.html
https://postgis.net/docs/manual-3.0/postgis-ko_KR.html#RefObject
https://gis.stackexchange.com/questions/286808/what-does-the-st-prefix-stand-for-e-g-in-st-polygonize