특정 지점으로부터 가장 가까운 지오메트리의 가장 가까운 교차점

아래의 이미지를 보면, Polyline 형태(GIS에서는 linestring이라는 용어를 사용함)의 레이어인 Link1가 있고, 빨간 포인트로 표시된 지점이 있다. 여기서.. Link1의 지오메트리 중 빨간 포인트에서 가장 가까운 녀석을 구하고, 이렇게 구한 녀석에 대해서 빨간 포인트와 가장 가까운 교차점을 구하고자 한다.

이러한 문제에 대해 해결할 수 있는 다양한 쿼리문 중 하나는 다음과 같다.

SELECT 
    fid,
    st_astext(
        st_closestpoint(
            the_geom, 
            st_geomfromtext('POINT(149761 265625)')
        )
    ),
    st_distance(
        st_closestpoint(
            the_geom, 
            st_geomfromtext('POINT(149761 265625)')
        ),
        st_geomfromtext('POINT(149761 265625)')
    ) as dist
FROM 
    network_link
ORDER BY 
    dist
LIMIT 1;

위 쿼리에 대한 결과는 아래와 같다.

ID가 557인 녀석이며, 예상했던 것처럼 교차점과 거리에 대한 결과를 볼 수 있다.

GeoService-Xr의 좌표 변환 서비스

GIS 서버인 GeoService-Xr은 하나 이상의 좌표에 대해 다른 좌표체계를 갖는 좌표로 변환할 수 있는 서비스를 제공합니다. 아래는 EPSG:4326 좌표계를 EPSG:5186 좌표계로 변환하는 서비스 호출에 대한 js 코드입니다.

var wkt = "LINESTRING(127 38, 127.1 38.1, 127.2 38.3)";

$.ajax({
    url: "http://www.gisdeveloper.co.kr:8080/Gp?command=proj;fromEPSG=4326;toEPSG=5186",
    type: "POST",
    data: wkt,
    dataType: "text",

    success: function (response) {
        response = response.substr(0, response.length - 1); // response 문자열 끝에 \0 문자를 제거

        document.writeln("

입력 : " + wkt + "

"); document.writeln("

결과 : " + response + "

"); }, error: function (xhr, status) { alert("ERROR"); } });

위의 코드는 WGS84 경위도 좌표체계(EPSG:4326)인 3개의 좌표, 즉 (127 38), (127.1 38.1), (127.2 38.3)을 GRS80 타원체인 대한민국 중부 TM 좌표체계(EPSG:5186)로 변환을 서버단에 요청하고 있습니다. 서버가 정상적으로 작동한다면 아래와 같은 결과를 볼 수 있습니다.