MySQL Geometry DataSet POINT
POINT 개념
POINT
- 지도 상의 위도, 경도 값을 표현하는 객체
- MySQL의 Spatial Data Type
- 포인트 값(한 쌍의 X, Y 좌표)
- 경도 (Longitude) : X
- 위도 (Latitute) : Y
SRID (Spatial Reference Identifier)
- SRS의 식별자
- GPS의 기준이 되는 WGS84 시스템의 SRID : 4326
- 단순 직교 좌표계의 SRID : 0
POINT 사용해보기
CREATE TABLE Points(
pointId int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
point POINT
);
- POINT 형식이 포함된 테이블을 생성
INSERT INTO Points (point) VALUES (ST_GeomFromText('POINT(126.941069 37.562110)') );
INSERT INTO Points (point) VALUES (ST_GeomFromText('POINT(126.933688 37.564304)') );
INSERT INTO Points (point) VALUES (ST_GeomFromText('POINT(126.944231 37.561851)') );
INSERT INTO Points (point) VALUES (ST_GeomFromText('POINT(126.939785 37.559209)') );
INSERT INTO Points (point) VALUES (ST_GeomFromText('POINT(126.9316755 37.5663129)') );
- POINT 타입의 데이터를 삽입
- POINT 좌표를 삽입할 때 콤마(,) 를 사용하지 않고 지정한다.
INSERT INTO Points (point) VALUES (ST_GeomFromText('POINT(126.9316755 37.5663129)', 4326));
- GPS의 기준이 되는 WGS84 시스템의 SRID인 4326을 POINT 데이터에 지정 후 삽입한다.
SELECT ASTEXT(point) FROM Points;
- POINT 타입의 데이터를 조회
SELECT ST_X(point) FROM Points;
SELECT ST_Y(point) FROM Points;
- POINT 타입의 데이터에서 X, Y만 별도로 조회
- PointWith로 변환된 WKT 표현을 사용한다.
[Sequelize ORM] POINT Geo DataType 사용 방법
MySQL에서 POINT 구현하기
ALTER TABLE Posts ADD COLUMN location POINT AFTER place;
- POINT 타입의 location 컬럼을 place 컬럼 뒤에 Posts테이블에 추가한다.
ALTER TABLE Posts MODIFY location POINT AFTER place;
- Posts 테이블의 location 컬럼을 place의 뒤의 포지션으로 변경한다.
Sequelize에서 POINT 구현하기
const location = {type: 'Point', coordinates: [37.562110, 126.941069]};
- Sequelize의 삽입할 데이터 타입을 POINT 형식이라 선언하고 데이터를 작성
await Posts.create({geometry : location});
- MySQL의 INSERT INTO와 동일하다.
- Posts 테이블에 geometry 컬럼에 미리 정의한 location 변수를 삽입한다.
await Posts.findOne({attributes:['location']})
- MySQL의 SELECT와 동일하다
- Geometry POINT 타입의 컬럼을 조회한다.
- ST_X, ST_Y를 사용하던 MySQL과 다르게 배열 형식으로 자동으로 변환시켜 보여준다.
[☆] Node.js Server Socket
const room = io.of('/room')
room.use(authmiddleware)
- /room 네임스페이스를 수신하는 room 변수를 생성
- room 네임스페이스를 접속할 때 실행되는 authmiddleware이름의 미들웨어를 거치도록 설정
[☆] Client Socket
io.connect("localhost:4001/location", {
extraHeaders:{ authorization: "Hello" }
,path: "/socket.io"}
)
- localhost:4001 소켓에 접속한다.
- 네임 스페이스 : /location
- 헤더에 authorization : "Hello"를 전달한다.
- 접속하는 방식은 /socket.io
'항해99 > 필기노트' 카테고리의 다른 글
[필기노트] SQL, React 연동 (0) | 2021.08.13 |
---|---|
[필기노트] MySQL 모임 초대 DB, SQL (0) | 2021.08.12 |
[필기노트] HTTPS, 테스트코드 고려사항 (0) | 2021.08.10 |
[필기노트] Kakao Map API, MySQL DATE 검색 SQL (0) | 2021.08.08 |
[필기노트] Docker Network (0) | 2021.08.06 |