GEOSERVICE-WEB의 배경지도 변경

GEOSERVICE-WEB은 TMS 방식의 배경지도를 사용할 수 있습니다.

배경지도를 변경하기 위해서는 아래처럼 “지도 레이어 목록” 부분의 메뉴 목록을 표시하고 “배경지도 설정” 메뉴를 실행합니다.

그러면 배경지도 설정 창이 표시되며, 이 설정창에 원하는 배경지도의 설정값을 입력하면 됩니다. 아래는 TMS를 지원하는 배경지도에 대한 설정값입니다. 특정 배경지도를 사용자가 사용하고자 할 경우 사용자에게 별도의 라이선스가 필요할 수 있으며 이 라이선스는 GEOSERVICE-WEB에서 제공하지 않습니다. GEOSERVICE-WEB은 라이선스에 대한 문제가 없는 VWorld 배경지도를 기본 배경지도로 합니다.

VWorld 항공영상

  • URLs
    http://xdworld.vworld.kr:8080/2d/Base/service/${z}/${x}/${y}.png
  • 세로축 역배열 ON
  • 깊이축 역배열 OFF
  • MBR -20037508.342789244,-20037508.342789244,20037508.342789244,20037508.342789244
  • EPSG 3857
  • 이미지 크기 256
  • UPPs 78000,39000,19600,9800,4900,2400,1222.9924523925781,611.4962261962891,305.74811309814453,152.87405654907226,76.43702827453613,38.218514137268066,19.109257068634033,9.554628534317017,4.777314267158508,2.388657133579254,1.194328566789627,0.5971642833948135,0.29858214169740677

VWorld 일반지도

  • URLs
    http://xdworld.vworld.kr:8080/2d/Satellite/service/${z}/${x}/${y}.jpeg
  • 세로축 역배열 ON
  • 깊이축 역배열 OFF
  • MBR -20037508.342789244,-20037508.342789244,20037508.342789244,20037508.342789244
  • EPSG 3857
  • 이미지 크기 256
  • UPPs 78000,39000,19600,9800,4900,2400,1222.9924523925781,611.4962261962891,305.74811309814453,152.87405654907226,76.43702827453613,38.218514137268066,19.109257068634033,9.554628534317017,4.777314267158508,2.388657133579254,1.194328566789627,0.5971642833948135,0.29858214169740677

카카오 항공영상

  • URLs
    https://map0.daumcdn.net/map_skyview/L${z}/${y}/${x}.jpg?v=160114
    https://map1.daumcdn.net/map_skyview/L${z}/${y}/${x}.jpg?v=160114
    https://map2.daumcdn.net/map_skyview/L${z}/${y}/${x}.jpg?v=160114
    https://map3.daumcdn.net/map_skyview/L${z}/${y}/${x}.jpg?v=160114
  • 세로축 역배열 OFF
  • 깊이축 역배열 ON
  • MBR -30000, -60000, 494288, 988576
  • EPSG 5181
  • 이미지 크기 256
  • UPPs 2048, 1024, 512, 256, 128, 64, 32, 16, 8, 4, 2, 1, 0.5, 0.25

카카오 일반지도

  • URLs
    https://map0.daumcdn.net/map_2d_hd/1904fls/L${z}/${y}/${x}.png
    https://map1.daumcdn.net/map_2d_hd/1904fls/L${z}/${y}/${x}.png
    https://map2.daumcdn.net/map_2d_hd/1904fls/L${z}/${y}/${x}.png
    https://map3.daumcdn.net/map_2d_hd/1904fls/L${z}/${y}/${x}.png
  • 세로축 역배열 OFF
  • 깊이축 역배열 ON
  • MBR -30000, -60000, 494288, 988576
  • EPSG 5181
  • 이미지 크기 256
  • UPPs 2048, 1024, 512, 256, 128, 64, 32, 16, 8, 4, 2, 1, 0.5, 0.25

네이버 항공영상

  • URLs
    https://simg.pstatic.net/onetile/get/202/0/1/${z}/${x}/${y}/bl_st_bg
  • 세로축 역배열 OFF
  • 깊이축 역배열 OFF
  • MBR 90112, 1192896, 1990673, 2761664
  • EPSG 5179
  • 이미지 크기 256
  • UPPs 2048, 1024, 512, 256, 128, 64, 32, 16, 8, 4, 2, 1, 0.5, 0.25

네이버 일반지도

  • URLs
    https://map.pstatic.net/nrb/styles/basic/1676618181/${z}/${x}/${y}@2x.png?mt=bg.ol.sw
  • 세로축 역배열 ON
  • 깊이축 역배열 OFF
  • MBR -20037508.342789244, -20037508.342789244, 20037508.342789244, 20037508.342789244
  • EPSG 3857
  • 이미지 크기 256
  • UPPs 78000, 39000, 19600, 9800, 4900, 2400, 1222.9924523925781, 611.4962261962891, 305.74811309814453, 152.87405654907226, 76.43702827453613, 38.218514137268066, 19.109257068634033, 9.554628534317017, 4.777314267158508, 2.388657133579254, 1.194328566789627, 0.5971642833948135

OpenStreet Map

  • URLs
    https://tile.openstreetmap.org/${z}/${x}/${y}.png
  • 세로축 역배열 ON
  • 깊이축 역배열 OFF
  • MBR -20037508.342789244,-20037508.342789244,20037508.342789244,20037508.342789244
  • EPSG 3857
  • 이미지 크기 256
  • UPPs 78000,39000,19600,9800,4900,2400,1222.9924523925781,611.4962261962891,305.74811309814453,152.87405654907226,76.43702827453613,38.218514137268066,19.109257068634033,9.554628534317017,4.777314267158508,2.388657133579254,1.194328566789627,0.5971642833948135,0.29858214169740677

모바일 현장지원 시스템, 넥스젠 모바일(NexGen Mobile)

넥스젠 모바일은 모바일 GIS 현장 업무 지원 솔루션입니다. 항공영상, 지형도와 같은 배경지와 다양한 수치지도를 활용한 모바일 지리정보 솔루션으로써 지도 중심의 현장 업무를 빠르고 효과적으로 수행할 수 있습니다.

아래의 그림은 넥스젠 모바일에서 활용할 수 있는 지도와 다양한 현장 업무 지원을 위한 기능에 대한 내용입니다.

넥스젠 모바일의 가장 핵심이 되는 기능은 아래의 그림처럼 크게 수치지도 조회, 현장 데이터 수집, 공간 데이터 편집입니다.

아래의 글은 앞서 언급해 드린 3가지 주요 기능에 대한 시연 동영상입니다.

모바일 넥스젠의 레이어 관리 및 속성 확인

모바일 넥스젠의 현장 데이터 수집

모바일 넥스젠의 공간 데이터 편집

넥스젠 모바일에 대한 사용자 메뉴얼은 아래의 다운로드 이미지를 클릭하여 살펴볼 수 있습니다.


PostgreSQL의 Time Zone 변경

먼저 현재 DB에 대한 TimeZone을 확인하기 위한 명령어는 다음과 같습니다.

SHOW timezone;

타임존이 한국이 아닐 경우 아래의 명령을 통해 한국으로 변경합니다. !DB_NAME!에 데이터베이스 이름이 들어갑니다.

ALTER DATABASE !DB_NAME! SET timezone = 'Asia/Seoul';

타임존을 변경한 뒤에는 PostgreSQL을 반드시 재시작해야합니다.

Java의 Reflection을 이용한 API

이미 완성되어 컴파일까지 되어 배포된 프로그램에 대한 기능 확장을 위해서 Reflection API를 사용할 수 있습니다. 이 글은 이 목적을 위해 일단 필요한 코드를 정리한 글 입니다.

Java에서 어떤 타입에 대한 이름을 문자열로만 알고 있을 때, 그 타입의 인스턴스를 생성하기 위한 코드는 다음과 같습니다.

try {
	Class<?> clazz = Class.forName("tstConstructor.service.FirstService");
	//Class<?> clazz = tstConstructor.service.FirstService.class;
	
	Constructor<?> constructor = clazz.getConstructor(String.class);
	Serviceable instance = (Serviceable)constructor.newInstance("Jack");
	instance.run();
} catch (Exception e) {
	e.printStackTrace();
}	

위의 코드에서 FirstService 클래스의 코드는 다음과 같습니다.

package tstConstructor.service;

public class FirstService implements Serviceable {
	private String _name;
	
	public FirstService(String name) {
		this._name = name;
	}
	
	@Override
	public void run() {
		System.out.println("Hello, my name is " + this._name);
	}
}

또한 Serviceable 인터페이스의 코드는 다음과 같습니다.

package tstConstructor.service;

public interface Serviceable {
	void run();
}

또한 Java에서 어떤 타입에 대한 이름을 문자열로만 알고 있을 때, 그 타입의 정적 필드값을 얻기 위한 코드는 다음과 같습니다.

try {
	Class<?> clazz = Class.forName("tstConstructor.service.Gizmo");
	//Field field = Gizmo.class.getField("NAME");
	Field field = clazz.getField("NAME");
	Class<?> fieldType = field.getType();
	if(fieldType == String.class){
		System.out.println(field.get(null).toString());
	} else if(fieldType == double.class){
	    System.out.println(field.getDouble(null)); 
	}
} catch (Exception e) {
	e.printStackTrace();
}

Gizmo 클래스의 코드는 다음과 같습니다.

package tstConstructor.service;

public class Gizmo {
	public static String NAME = "GIZMO";
}

Rocky Linux 8.6, 새로운 HDD(or SDD) 추가하기

일단 HDD를 메인 보드에 설치했다고 가정하고 단계 별로 설명합니다. 다음 명령어를 통해 새롭게 추가한 HDD의 이름을 파악합니다.

lsblk

결과를 보면 MOUNTPOINT가 지정되어 있지 않은 sdb가 새롭게 추가된 HDD의 이름입니다. 전체 이름은 /dev/sdb입니다.

8T로 주문했는데 7.3T로 자그마치 0.7T가 부족한 상황에서 잠시 생각에 잠겨봅니다. 이유가 있겠지… 하고 다음 단계로 넘어갑니다. 파일 시스템을 설정해 줘야 하는데, 대용량의 저장장치에는 ext4 파일 시스템이 가장 무난하다고 하니 그렇게 지정합니다.

mkfs -t ext4 /dev/sdb

일단 명령어 입력 후 엔터키를 누른 뒤에 어떤 것도 입력하지 않으면 진행이 됩니다. 몇초정도 소요됩니다. 이제 마운트시켜야 합니다. 마운트 시킬 디렉토리를 하나 만듭니다.

mkdir /etc_hdd

이 디렉토리에 마운트 시킵니다.

mount /dev/sdb /etc_hdd

cd /etc_hdd로 디렉토리 안의 내용을 살펴볼 수 있습니다. 아마도 비어있거나 lost+found라는 디렉토리만 보일겁니다.

여기까지가 새로운 HDD를 추가하기 위한 과정인데요. 문제는 OS를 재부팅하면 마운팅된게 해제됩니다. 재부팅시에도 마운팅이 계속 유지되도록 해야 합니다. 이를 위해 /etc/fstab 파일을 수정해야 합니다. 안전하게 작업하기 위해 이 파일을 복제해 둡니다.

cp /etc/fstab /etc/fstab.old

그리고 새로운 HDD의 고유 ID를 얻어오기 위해 아래 명령을 입력합니다.

blkid

sdb의 UUID는 42236680-0f4f-4b17-a0ac-561b88d76cd9 라는 것을 알 수 있습니다.

이제 /etc/fstab 파일을 편집합니다.

nano /etc/fstab

새롭게 추가된 내용은 위의 화면에서 가장 마지막 줄이며 다음과 같습니다.

UUID=42236680-0f4f-4b17-a0ac-561b88d76cd9 /etc_hdd ext4 defaults,nofail 0 2

이제 재부팅해 보면 자동으로 마운트되는 것을 확인할 수 있습니다.

재부팅하지 않고도 확인할 수 있는 방법도 있는데, 아래와 같습니다.

umount /etc_hdd
mount -a