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 문의 예입니다.

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)하라는 내용입니다.