geometry 필드를 가진 테이블이 구성하는 Row들이 구성하는 하나의 MBR을 얻는 쿼리문은 아래와 같으며 결과는 BOX(MinX MinY, MaxX MaxY) 형태입니다.
select ST_extent(the_geom) from public."tst_Table";
다음은 지정된 테이블의 스키마를 얻는 쿼리문입니다. attname은 필드명이며 atttypid는 필드타입에 대한 id 코드입니다. 그리고 atttypmod는 타입이 가변 길이 문자열(varchar type)일때 허용 최대 길이이며 실제보다 4만큼 더 크며 타입이 문자열이 아니면 -1입니다.
SELECT
attname, atttypid, atttypmod
FROM
pg_attribute, pg_type
WHERE
typname = 'tst_Table' AND
attrelid = typrelid AND
attname NOT IN ('cmin', 'cmax', 'ctid', 'oid', 'tableoid', 'xmin', 'xmax');
atttypid에 대한 코드값에 해당하는 의미는 다음과 같습니다.
- atttypid=16 : ‘boolean’
- atttypid=17 : ‘bytea’
- atttypid=18 : ‘char’
- atttypid=19 : ‘name’
- atttypid=20 : ‘int8’
- atttypid=21 : ‘int2’
- atttypid=22 : ‘int2vector’
- atttypid=23 : ‘int4’
- atttypid=24 : ‘regproc’
- atttypid=25 : ‘text’
- atttypid=26 : ‘oid’
- atttypid=27 : ‘tid’
- atttypid=28 : ‘xid’
- atttypid=29 : ‘cid’
- atttypid=30 : ‘oidvector’
- atttypid=210 : ‘smgr’
- atttypid=700 : ‘float4’
- atttypid=701 : ‘float8’
- atttypid=702 : ‘abstime’
- atttypid=705 : ‘unknown’
- atttypid=1007 : ‘_int4’
- atttypid=1033 : ‘aclitem’
- atttypid=1034 : ‘_aclitem’
- atttypid=1042 : ‘bpchar’
- atttypid=1043 : ‘varchar’
- atttypid=1082 : ‘date’
- atttypid=1083 : ‘time’
- atttypid=1184 : ‘timestamp’
- atttypid=1266 : ‘timetz’
- atttypid=1700 : ‘numeric’
- atttypid=2500 : ‘int1’
- atttypid=2569 : ‘nucl’
- atttypid=2570 : ‘prot’
- atttypid=2522 : ‘nchar’
- atttypid=2530 : ‘nvarchar’
- atttypid=278 : ‘ntext’
다음은 geometry를 가지는 테이블의 지오메트리 타입을 얻는 쿼리문인데 하나의 테이블에 동일한 지오메트리 타입을 가지는 도형만 저장하고 있다는 가정이 필요합니다.
select GeometryType(the_geom) from public."tst_Table" limit 1;
그리고 어떤 MBR에 걸치는 도형을 공간검색하는 쿼리문은 다음과 같습니다.
SELECT
the_geom
FROM
public."tst_Table"
WHERE
ST_Intersects
(
the_geom,
ST_MakeEnvelope(456315, 382558, 460432, 386381, -1)
);
위의 공간검색 쿼리는 PostGIS의 JDBC API를 사용하면 쉽게 지오메트리의 타입과 좌표값 등을 얻을 수 있습니다. 물론 자바 언어뿐 아니라 C언어에 대한 API도 제공합니다.
위의 SQL문은 MBR을 기준으로 MBR과 중첩되는 것을 검색하는 예이며 아래는 기준을 일반적인 지오메트리를 WKT 형식으로 받아 중첩되는 것을 검색하는 예입니다.
SELECT
*, ST_BOX2D(the_geom)
FROM
public."tst_Table"
WHERE
ST_Intersects
(
the_geom,
'LINESTRING (244049 543725, 244134 543762)'::geometry
);
덧붙여 검색 필드로써 ST_BOX2D를 사용해 검색된 항목의 MBR까지 얻어오도록 하였습니다.


위의 화면은 삼성 갤럭시에서 실제로 핑거아이즈를 구동시켜본 화면입니다. 타일맵을 통한 베이스맵 표현에서 시작해 수치지도의 피쳐를 터치하여 속성을 확인하고 편집하는 등의 핑거아이즈 모든 기능을 안드로이드에서 그대로 실행할 수 있습니다.
듀라맵은 3.5MB 크기의 단 하나의 dll 파일로 구성되어 있는 매우 작은 크기의 경량 지도 엔진입니다. 꼭 필요한 기능만을 담아 최적화 되어 있으며 빠른 퍼포먼스를 제공합니다. 듀라맵은 GIS 맵엔진으로써 작지만 매운 꼬추라고 할 수 있겠습니다. 프로그래밍이 가능한 분이라면 DuraMap-Xr을 이용하여 GIS 시스템 개발은 물론 공간 데이터를 다양하게 생성하고 가공할 수 있으며 공간분석 알고리즘을 실제로 구현할 수 있는 API를 제공합니다. 

