MySQL 8.0에 POINT 데이터 (경도, 위도)를 넣어 MySQL Workbench에서 검색하고 OpenStreetMap으로 표시

소개



이 글은 RDBMS-GIS Advent Calendar 2018의 5일째입니다.

MySQL에서는 5.7에서 GIS 기능을 Boost.Geometry라고 하는 C++의 오픈 소스 라이브러리를 채용해 재구현해, 8.0에서도 계속 기능 강화 하고 있습니다. 본 기사를 계기로 MySQL의 GIS 기능에 흥미를 가질 수 있으면 기쁩니다.

할 일



1. MySQL 8.0에 테이블을 만들고 POINT 데이터 (경도, 위도)를 INSERT
2. MySQL Workbench에서 INSERT 된 데이터를 검색하고 검색된 데이터를 확인합니다.
3. 해당 데이터를 OpenStreetMap으로 표시

전제



이 기사에서는 다음 가정이 갖추어져 있다고 가정합니다.
· MySQL 8.0 설치
· MySQL Workbench 8.0을 설치하고 MySQL 8.0 데이터베이스에 연결할 수 있습니다.
· 브라우저를 사용할 수 있습니다.

절차



1.POINT 데이터를 저장하기 위한 테이블 생성



POINT 데이터를 저장하기 위한 테이블을 작성합니다.
POINT 데이터형을 정의할 때 SRID 지정 또한 이 예제에서는 설명을 단순화하기 위해 SRID를 지정하지 않습니다.
CREATE DATABASE geotest;
CREATE TABLE geotest.location_test(id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(30), location POINT);

2. 경도, 위도 정보를 INSERT



경도, 위도 정보를 INSERT합니다.
이 예에서는 일본 표준시 자오선에 연관된 아카시 시립 천문 과학관 경도 및 위도를 INSERT합니다. 경도 및 위도 데이터는 ST_GeomFromText() 함수을 사용하여 문자열에서 형상 데이터를 생성합니다.
INSERT INTO geotest.location_test(name, location) VALUES('明石市立天文科学館', ST_GeomFromText('POINT(135.0013 34.6495)'));

이때 다음 사항에 유의하십시오.
· 지정하는 경도, 위도는 10 진수로 지정한다
 (원 데이터의 경도, 위도가 60진수의 경우는, 10진수로 변환할 필요가 있다)
POINT 데이터를 지정할 때의 포맷은 경도, 위도의 순서이다('POINT(경도 위도)'). 또한, 사이는 쉼표가 아닌 공백입니다.

위의 INSERT 문은 Wikipedia에서 확인한 아카시 시립 천문 과학관의 경도, 위도 (세계 측지계의 34°38' 58.9"N 135°00' 04.7"E)를 10진수로 변환하여 소수점 아래 4자리까지 지정하고 있습니다.

3. MySQL Workbench로 INSERT한 데이터 검색



MySQL Workbench로 INSERT한 데이터를 검색합니다.

MySQL Workbench를 시작하고 이전에 데이터를 INSERT한 데이터베이스에 연결합니다. 그런 다음 왼쪽의 "SHEMAS"트리에서 "geotest.location_test"테이블을 마우스 오른쪽 버튼으로 클릭하고 "Select Rows"를 선택하십시오.


검색 결과가 표시됩니다. POINT 데이터에 대해서는, 바이너리 데이터이기 때문에 "BLOB"라고 표시되어 있습니다.


오른쪽의 "Form Editor"를 클릭하면 검색한 데이터를 1건 1건 확인할 수 있습니다. 또한 "Form Editor"에서는 POINT 데이터를 텍스트 형식으로 표시합니다.


"Result Grid"를 클릭하여 검색 결과로 돌아갑니다. 그리고 확인하고 싶은 POINT 데이터를 마우스 오른쪽 버튼으로 클릭하고 "Show point in browser"를 클릭합니다.


해당 POINT 데이터가 OpenStreetMap에 표시됩니다.


오른쪽의 "+"를 클릭하여 줌하면 아카시 시립 천문 과학관을 가리키는 것을 확인할 수 있습니다.


보충



・MySQL Workbench의 설정을 변경하는 것으로, GoogleMap 등의 다른 WebMap에 경도, 위도를 건네주어 표시하는 것도 가능합니다.
 - "Edit"--> "Preferences..."를 클릭
 - "Others"의 "URL location to display geometry point:"설정 변경
 (예: htps //w w. 오, ぇ. 이 m/마 ps? q=%ぁT%, %ぉ% )

좋은 웹페이지 즐겨찾기