GeoService-Xr에서 동적으로 GeoData 추가 및 삭제하기

GeoService-Xr은 공간 데이터를 GeoData라는 단위로 처리합니다. 정확하게 일치하지는 않으나 GeoData는 GIS의 Layer와 매우 유사합니다. GeoData를 새롭게 추가하거나 삭제하기 위해서는 일단 GeoService-Xr의 실행을 중지시키고 geodata.xml 파일을 통해 GeoData를 수정한 후 다시 GeoService-Xr을 재기동시킵니다. 그러나 간혹 geodata.xml 파일의 수정이 아닌 GeoService-Xr의 실행 중에 GeoData를 추가 도는 삭제가 가능합니다.

아래는 추가되어진 GeoData를 삭제하는 RestAPI 명령의 한가지 예 입니다.

http://localhost/Xr?rmGD|muan_parc_a

위의 rmGD가 ‘remove GeoData’ 명령이고 muan_parc_a가 제거하고자 하는 GeoData 식별자입니다.

아래는 새로운 GeoData를 추가하는 RestAPI 명령의 한가지 예 입니다.

http://localhost/Xr?addGD|muan_parc_a|muan_db://public."parc_a"|5186

addGD가 ‘add GeoData’ 명령이고, muan_parc_a가 GeoData의 식별자이며 muan_db://public.”parc_a”가 DBMS의 식별자(muan_db)와 테이블명(public.”parc_a”)로 지정되는 추가하고자 하는 공간 데이터 Table입니다.

이처럼 동적으로 GeoData를 추가하고 삭제하는 기능을 통해 웹 기반에서, GIS 시스템에서 유연하게 공간데이터를 핸들링할 수 있는 기반을 제공하게 됩니다.

MySQL, MariaDB의 INSERT INTO … ON DUPLICATE KEY UPDATE …

MySQL(MariaDB)에서 동일한 Key 값이 이미 존재한다면 UPDATE 문을 호출하여 기존의 Row의 값을 변경하고, 동일한 Key 값을 가진 Row가 없다면 INSERT를 호출하는 SQL 문의 예입니다.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
INSERT INTO
current_load_powerfactor
(ref_mRID, update_timeStamp, value)
VALUES
("_1e1ccab5-250a-44a3-89d8-177e2d53e071", NOW(), 99)
ON DUPLICATE KEY UPDATE
update_timeStamp=NOW(), value=99
INSERT INTO current_load_powerfactor (ref_mRID, update_timeStamp, value) VALUES ("_1e1ccab5-250a-44a3-89d8-177e2d53e071", NOW(), 99) ON DUPLICATE KEY UPDATE update_timeStamp=NOW(), value=99
INSERT INTO 
    current_load_powerfactor 
    (ref_mRID, update_timeStamp, value) 
VALUES
    ("_1e1ccab5-250a-44a3-89d8-177e2d53e071", NOW(), 99) 
ON DUPLICATE KEY UPDATE 
    update_timeStamp=NOW(), value=99

위의 SQL은 current_load_powerfactor라는 테이블에 대해서, Primary Key로 잡힌 ref_mRID가 중복된 이미 존재하는 Row가 있다면, 중복된 Row의 값을 변경(UPDATE 문 실행)하고, 중복된 Row가 없다면 새로운 Row를 추가(INSERT)하라는 내용입니다.