Spatial Search(Query) - 곡간 검색

μš©μ–΄

  • OpenGIS

    • WKT, WKB 같은 지리 정보 데이터λ₯Ό ν‘œκΈ°ν•˜λŠ” 방법과 μ €μž₯ν•˜λŠ” 방법, SRID와 같은 ν‘œμ€€μ„ ν¬ν•¨ν•©λ‹ˆλ‹€.

  • SRS (Spatial Reference System)

    • SRSλŠ” 곡간 μ°Έμ‘° μ‹œμŠ€ν…œ μ •λ„λ‘œ λ²ˆμ—­ν•  수 μžˆλŠ”λ°, κ·Έλƒ₯ μ’Œν‘œκ³„(Coordinate System)라고 μ΄ν•΄ν•˜κ³  SRSλŠ” GCS, PCS둜 κ΅¬λΆ„λ©λ‹ˆλ‹€.

    • 동일 지점이라고 ν•˜λ”λΌλ„ μ–΄λŠ 곡간 μ’Œν‘œκ³„(SRS)λ₯Ό μ‚¬μš©ν•˜λŠλƒμ— 따라 ν‘œμ‹œ 방법이 λ‹¬λΌμ§‘λ‹ˆλ‹€. 예λ₯Όλ“€μ–΄ μœ„λ„, 경도λ₯Ό μ’Œν‘œλΌκ³  해도 μ°Έμ‘°ν•˜λŠ” 곡간 μ’Œν‘œκ³„(GCS vs PCS)κ°€ 달라지면 μ‹€μ œ μœ„μΉ˜λŠ” λ‹¬λΌμ§‘λ‹ˆλ‹€.

  • GCS (Geographic Coordinate System)

    • GCSλŠ” 지ꡬ κ΅¬μ²΄μƒμ˜ νŠΉμ • μœ„μΉ˜λ‚˜ 곡간을 ν‘œν˜„ν•˜λŠ” μ’Œν‘œκ³„λ₯Ό μ˜λ―Έν•˜λŠ”λ°, ν”νžˆμœ„λ„(Latitude)와 경도(Longitude)와 같이 각도(Angular unit) λ‹¨μœ„μ˜ 숫자둜 ν‘œμ‹œν•©λ‹ˆλ‹€.

  • PCS (Projected Coordinate System)

    • PCSλŠ” ꡬ체 ν˜•νƒœμ˜ 지ꡬλ₯Ό 쒅이 지도와 같은 ν‰λ©΄μœΌλ‘œ νˆ¬μ˜μ‹œν‚¨ μ’Œν‘œλ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€. 주둜 meter와 같은 μ„ ν˜•μ μΈ λ‹¨μœ„λ‘œ ν‘œμ‹œν•©λ‹ˆλ‹€.

    • GCS와 달리 λͺ©μ  μžμ²΄κ°€ λ‹€λ¦…λ‹ˆλ‹€. GCSλŠ” ꡬ체 ν‘œλ©΄μ—μ„œ νŠΉμ • μœ„μΉ˜λ₯Ό μ •μ˜ν•˜μ§€λ§Œ PCSλŠ” GCS μœ„μΉ˜ 데이터λ₯Ό 2차원 평면 쒅이에 μ–΄λ–»κ²Œ ν‘œν˜„ν• μ§€λ₯Ό μ •μ˜ν•©λ‹ˆλ‹€. GCSλŠ” μœ„μΉ˜(Where)κ°€ 관심사이고, PCSλŠ” μ–΄λ–»κ²Œ(How) ν‘œν˜„ν• μ§€κ°€ 관심사 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€. PCS μ’Œν‘œμ—λŠ” GCS μ’Œν‘œλ„ 같이 ν¬ν•¨λ©λ‹ˆλ‹€.

  • SRID와 SRS-ID

    • SRIDλŠ” β€œSpatial Reference IDβ€μ˜ μ€„μž„λ§λ‘œμ„œ, νŠΉμ • SRSλ₯Ό μ§€μΉ­ν•˜λŠ” 고유 번호λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€. SRS-ID와 SRIDλŠ” λ™μ˜μ–΄μ΄λ©°, MySQL μ„œλ²„μ—μ„œλŠ” SRS 고유 번호λ₯Ό μ €μž₯ν•˜λŠ” 컬럼 이름을 SRS_ID둜 μ‚¬μš©ν•˜κ³  ν•¨μˆ˜μ˜ μΈμžλ‚˜ μ‹λ³„μžλŠ” SRIDλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

  • WKT, WKB

    • WKTλŠ” OpenGISμ—μ„œ λͺ…μ‹œν•œ μœ„μΉ˜ μ’Œν‘œμ˜ ν‘œν˜„ 방법이며 μ‚¬λžŒμ˜ 눈으둜 μ‰½κ²Œ 확인할 수 μžˆλŠ” ν…μŠ€νŠΈ ν¬λ§·μž…λ‹ˆλ‹€.

    • WKBλŠ” 컴퓨터에 μ €μž₯ν•  수 μžˆλŠ” 이진 포맷의 μ €μž₯ ν‘œμ€€μž…λ‹ˆλ‹€.

      • POINT(15 20) λ˜λŠ” LINESTRING(0 0, 10 10, 20 25, 50 60) λ“±κ³Ό 같이 μ μ΄λ‚˜ λ„ν˜•μ˜ μœ„μΉ˜ 정보λ₯Ό μ •μ˜ν•˜λŠ” ν‘œμ€€μž…λ‹ˆλ‹€.

    • MySQL μ„œλ²„λŠ” λ‚΄λΆ€μ μœΌλ‘œ WKTλ‚˜ WKB 포맷으둜 μ €μž₯ν•˜μ§€ μ•ŠμœΌλ©°, μ €μž₯ν•˜λŠ” 이진 데이터 포맷은 WKB 포맷과 ν‘μ‚¬ν•˜μ§€λ§Œ λ™μΌν•˜μ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€.

  • R-TREE

    • MBRλ“€μ˜ 포함 관계λ₯Ό κ°€μ§€κ³  λ§Œλ“  μΈλ±μŠ€μž…λ‹ˆλ‹€. 즉, MBR의 계측적 포함 관계λ₯Ό μ΄μš©ν•œ 인덱슀둜, 곡간 데이터 검색을 μœ„ν•΄ B-Tree ν˜•νƒœλ‘œ κ΅¬ν˜„λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

SRS(Spatial Reference System)

MySQLμ—μ„œ μ§€μ›ν•˜λŠ” SRSλŠ” 500μ—¬ κ°œκ°€ λ„˜μœΌλ©° λ‹€μŒ λͺ…령을 톡해 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

  1. SRS_NAME: 곡간 μ°Έμ‘° μ‹œμŠ€ν…œμ˜ 이름 (κ³ μœ κ°’)

  2. SRS_ID: 곡간 μ°Έμ‘° μ‹œμŠ€ν…œμ˜ 숫자 ID (κ³ μœ κ°’).

    • DBμ—μ„œ 곡간 데이터λ₯Ό μ²˜λ¦¬ν•  λ•Œ μ–΄λ–€ μ’Œν‘œκ³„λ₯Ό μ‚¬μš©ν• μ§€ κ²°μ •ν•˜λŠ” 핡심 값이며, 곡간 데이터λ₯Ό μ €μž₯ν•˜κ±°λ‚˜ μ‘°μž‘ν•  λ•Œ λ°˜λ“œμ‹œ 참쑰되며, DBκ°€ 곡간 연산을 μ •ν™•ν•˜κ²Œ μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ ν•„μš”ν•œ 정보λ₯Ό μ°ΎλŠ” key둜 μ‚¬μš©λ©λ‹ˆλ‹€.

  3. ORGANIZATION: μ’Œν‘œ μ‹œμŠ€ν…œμ„ μ •μ˜ν•œ 쑰직의 이름

  4. ORGANIZATION_COORDSYS_ID: ν•΄λ‹Ή 쑰직이 곡간 μ°Έμ‘° μ‹œμŠ€ν…œμ— λΆ€μ—¬ν•œ 숫자 ID

  5. DEFINITION: WKT(Well-Known Text) ν˜•μ‹μœΌλ‘œ 된 곡간 μ°Έμ‘° μ‹œμŠ€ν…œ μ •μ˜

    • 곡간 λ°μ΄ν„°μ˜ μ’Œν‘œλ₯Ό ν•΄μ„ν•˜κ³  λ‹€λ₯Έ μ’Œν‘œκ³„λ‘œ λ³€ν™˜ν•˜λŠ” 계산을 μˆ˜ν–‰ν•©λ‹ˆλ‹€.

    • SRID 0은 νŠΉλ³„ν•œ 경우둜, definition이 λΉ„μ–΄μžˆλ‹€. SRID 0이 지리적 μ‹œμŠ€ν…œμ΄λ‚˜ νˆ¬μ˜λ²•μœΌλ‘œ ν‘œν˜„λ  수 μ—†κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

  6. DESCRIPTION: 곡간 μ°Έμ‘° μ‹œμŠ€ν…œμ— λŒ€ν•œ μ„€λͺ…

ν…Œμ΄λΈ”μ—μ„œ μ€‘μš”ν•œ μ»¬λŸΌμ€ SRS_ID와 DEFINITIONμž…λ‹ˆλ‹€. κ·Έ μ΄μœ λŠ” 곡간 λ°μ΄ν„°μ˜ μ •ν™•ν•œ μœ„μΉ˜ 참쑰와 λ‹€μ–‘ν•œ μ’Œν‘œκ³„ κ°„μ˜ λ³€ν™˜μ„ κ°€λŠ₯ν•˜κ²Œ ν•˜λŠ” 핡심 μš”μ†Œμ΄κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

SRS_ID = 4326인, GPSκ°€ μ‚¬μš©ν•˜λŠ” μ’Œν‘œκ³„ ν…Œμ΄λΈ” 정보

  1. SRS_NAME: WGS 84

  2. SRS_ID: 4326

  3. ORGANIZATION:

  4. ORGANIZATION_COORDSYS_ID:

  5. DEFINITION:

    • DEFINITION μ»¬λŸΌμ€ 항상 β€œGEOGCS” λ˜λŠ” β€œPROJCSβ€λ‘œ μ‹œμž‘ν•˜λŠ”λ°, μ΄λŠ” 지리 μ’Œν‘œκ²Œ(GCS)와 투영 μ’Œν‘œκ³„(PCS)λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€. 지리 μ’Œν‘œκ³„λŠ” λŒ€λž΅ 483개, 투영 μ’Œν‘œκ³„λŠ” 4668κ°œμž…λ‹ˆλ‹€.

    • μ€‘μš”ν•œ ν•„λ“œμΈ AXISλŠ” μœ„λ„μ™€ 경도 μˆœμ„œλ‘œ λ‚˜μ—΄λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

    • κ·Έλž˜μ„œ WGS 84 μ’Œν‘œκ³„λ₯Ό μ‚¬μš©ν•˜λŠ” μœ„μΉ˜ μ •λ³΄μ—μ„œ μœ„μΉ˜λ₯Ό ν‘œμ‹œν•  λ•ŒλŠ” β€œPOINT(μœ„λ„ 경도)β€λ‘œ ν‘œν˜„ν•΄μ•Ό ν•©λ‹ˆλ‹€. ST_X() ν•¨μˆ˜λŠ” μœ„λ„, ST_Y() ν•¨μˆ˜λŠ” 경도 값을 λ°˜ν™˜ν•©λ‹ˆλ‹€.

SRS_ID = 3857인 투영 μ’Œν‘œκ³„ ν…Œμ΄λΈ” 정보

이 μ’Œν‘œκ³„λŠ” μž…λ ₯λ˜λŠ” κ°’μ˜ λ‹¨μœ„(UNIT)κ°€ λ―Έν„°(meter)μž…λ‹ˆλ‹€. 투영 μ’Œν‘œκ³„λŠ” μ›Ή νŽ˜μ΄μ§€μ—μ„œ 지도λ₯Ό 보여주기 μœ„ν•΄ μ‚¬μš©λ˜λ©°, Googleκ³Ό Open Street Map, λ‹€μˆ˜μ˜ μ›Ή 기반 지도 ν”„λ‘œμ νŠΈμ—μ„œ μ‚¬μš©λ©λ‹ˆλ‹€.

SRID = 4326κ³ΌλŠ” λ°˜λŒ€λ‘œ AXISμ—μ„œ β€˜POINT(경도 μœ„λ„)’ μˆœμ„œμž…λ‹ˆλ‹€.

MySQLμ—μ„œ 곡간 데이터λ₯Ό μ €μž₯ν•  λ•Œ SRIDλ₯Ό μ§€μ •ν•˜μ§€ μ•ŠμœΌλ©΄ 0인 평면 μ’Œν‘œκ³„λ‘œ μžλ™ μΈμ‹λ©λ‹ˆλ‹€.

μ΄λŠ” λ‹¨μœ„κ°€ μ—†λŠ” 좔상 μ’Œν‘œκ³„λ₯Ό λ‚˜νƒ€λ‚΄λ©°, μ’Œν‘œκ°’μ˜ 해석 방식을 κ²°μ •ν•˜κΈ° λ•Œλ¬Έμ— 상황에 따라 μ§€μ •ν•˜λŠ” 것은 μ€‘μš”ν•œ 의미λ₯Ό κ°–μŠ΅λ‹ˆλ‹€.

SRS_ID(SRS)κ°€ 거리 계산에 λ―ΈμΉ˜λŠ” 영ν–₯

λ‹€μŒ μ˜ˆμ‹œλ₯Ό λ³΄κ² μŠ΅λ‹ˆλ‹€.

  1. SRID=0 (평면 μ’Œν‘œκ³„):

    • κ²°κ³Όκ°’ 1.4142135623709λŠ” ν”Όνƒ€κ³ λΌμŠ€ 정리λ₯Ό μ μš©ν•œ μœ ν΄λ¦¬λ“œ κ±°λ¦¬μž…λ‹ˆλ‹€. μ΄λŠ” λ‹¨μœ„κ°€ μ—†λŠ” 좔상적인 평면 μ’Œν‘œκ³„μ—μ„œμ˜ 직선 거리λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€.

    • λ‹¨μˆœνžˆ μˆ˜ν•™μ μΈ μ’Œν‘œ κ°„ 거리λ₯Ό κ³„μ‚°ν•©λ‹ˆλ‹€.

  2. SRID=3857 (μ›Ή λ©”λ₯΄μΉ΄ν† λ₯΄ 투영 μ’Œν‘œκ³„):

    • 결과값이 SRID=0κ³Ό λ™μΌν•©λ‹ˆλ‹€. SRID=3857이 λ―Έν„° λ‹¨μœ„μ˜ 평면 투영 μ’Œν‘œκ³„μ΄κΈ° λ•Œλ¬Έμ— μ›Ή λ©”λ₯΄μΉ΄ν† λ₯΄ νˆ¬μ˜μ€ 평면 μ’Œν‘œκ³„λ‘œ μ·¨κΈ‰λ˜μ–΄ μœ ν΄λ¦¬λ“œ 거리 계산 방식을 μ‚¬μš©ν•©λ‹ˆλ‹€.

  3. SRID=4326 (WGS84 지리 μ’Œν‘œκ³„):

    • μ΄λŠ” SRID=4326이 지리 μ’Œν‘œκ³„(μœ„λ„/경도)이기 λ•Œλ¬Έμ— κ²°κ³Ό 값이 λ‹€λ¦…λ‹ˆλ‹€.

    • κ³„μ‚°λœ κ±°λ¦¬λŠ” 지ꡬ ν‘œλ©΄μ„ 따라 μΈ‘μ •λœ 두 지점 κ°„μ˜ μ‹€μ œ κ±°λ¦¬μž…λ‹ˆλ‹€.

이 κ²°κ³ΌλŠ” SRID 값이 λ‹¨μˆœν•œ μ‹λ³„μžκ°€ μ•„λ‹ˆλΌ μ’Œν‘œμ˜ 해석 방식과 거리 계산 μ•Œκ³ λ¦¬μ¦˜μ„ κ²°μ •ν•˜λŠ” μ€‘μš”ν•œ μš”μ†Œμž„μ„ λ³΄μ—¬μ€λ‹ˆλ‹€. λ™μΌν•œ μ’Œν‘œκ°’μ΄λΌλ„ SRID에 따라 μ™„μ „νžˆ λ‹€λ₯Έ 물리적 μœ„μΉ˜μ™€ 거리λ₯Ό λ‚˜νƒ€λ‚Ό 수 μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ μ •ν™•ν•œ 값을 μ–»κΈ° μœ„ν•΄ SRIDλ₯Ό μ„€μ •ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄ κΈ°λŒ€ν•˜λŠ” 값을 κ³„μ‚°ν•˜μ§€ λͺ»ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

circle-info

SRID=0으둜 μ§€μ •ν•œ 곡간 데이터라고 ν•΄μ„œ μ‹€μ œ 거리(km, meter)λ₯Ό κ³„μ‚°ν•˜μ§€ λͺ»ν•˜λŠ” 것이 μ•„λ‹ˆλ‹€. μ—¬κΈ°μ„œ μ–˜κΈ°ν•˜λŠ” 것은 MySQL μ„œλ²„κ°€ μžλ™μœΌλ‘œ ν•„μš”ν•œ 값을 κ³„μ‚°ν•˜μ§€ λͺ»ν•œλ‹€λŠ” 것이닀.

λ”°λΌμ„œ SRID = 0인 경우 μˆ˜λ™μœΌλ‘œ 데이터λ₯Ό WGS84 μ’Œν‘œκ³„λ‘œ λ³€ν™˜ν•΄μ„œ 거리 계산을 ν•˜κ±°λ‚˜ λ³„λ„μ˜ ν™˜μ‚° μž‘μ—…μ„ 톡해 μ‹€μ œ 거리λ₯Ό 계산할 수 μžˆλ‹€.

λ˜ν•œ, λ§Žμ€ 곡간 ν•¨μˆ˜λ“€μ΄ SRID = 0인 κ²½μš°μ—λ§Œ μž‘λ™ν•˜μ—¬, 일뢀 ν•¨μˆ˜λ§Œ WGS84 μ’Œν‘œκ³„ 데이터λ₯Ό μ²˜λ¦¬ν•  μˆ˜λ„ μžˆλ‹€. μ‘μš© ν”„λ‘œκ·Έλž¨μ—μ„œ μ‚¬μš©ν•˜λŠ” 곡간 ν•¨μˆ˜λ“€μ΄ μ–΄λ–€ SRIDλ₯Ό μ§€μ›ν•˜λŠ”μ§€ λ¨Όμ € κ²€ν† ν•˜κ³  그에 λ§žλŠ” 곡간 μ’Œν‘œκ³„ μ‚¬μš©μ„ κΆŒν•œλ‹€κ³  ν•œλ‹€.

Last updated