LOOP문 내에서 프로시저를 호출하는데, 계속 에러가 발생하길래 확인을 하면서 많은 시간을 날렸다.. 간단한거였는데.. 그래서 정리해봄.. 에러내용 SQL Error [42601]: 오류: 쿼리에 결과 데이터의 대상이 없음 Hint: SELECT의 결과를 취소하려면 대신 PERFORM을 사용하십시오. Where: PL/pgSQL 함수 "dkasjmp.duplicate_sj_safe_child(text,text,text,text,text)" 의 17번째 SQL 문 프로시저 쿼리문 CREATE OR REPLACE FUNCTION public.my_procedure(target_num text) RETURNS integer LANGUAGE plpgsql AS $function$ declare rec RECOR..
지금까지 자주 쓰기는 했는데 정리를 안해놔서 이번 기회에 정리해봄 ST_Transform과 ST_SetSRID란? ST_Transform과 ST_SetSRID은 둘다 좌표계를 변경할 때 사용하는 PostGIS에서 제공해주는 내장함수이다. 그럼 왜 PostGIS에서 굳이 함수를 2개로 나눈걸까? 똑같은 기능을 제공하는데? 라고 생각할 수도 있는데 이 두녀석은 엄청 큰 차이점이 있다... ST_Transform과 ST_SetSRID의 차이점 ST_SetSRID 이 함수는 어떤 방식으로든 기하학 좌표를 변환하지 않습니다. 단지 기하학이 있다고 가정되는 공간 참조 시스템을 정의하는 메타 데이터를 설정합니다. ST_Transform 좌표가 다른 공간 참조 시스템으로 변환된 새 도형을 반환합니다. 대상 공간 참조는..
이번에 쓸 일이 있었는데 GeometryCollection가 블로그에 정리 안되있어서 정리해봄.. GeometryCollection이란? GeometryCollection은 1개 이상의 geometry 또는 geography를 가진 집합체이다. 쉽게 말해서 이 GeometryCollection이라는 집합체 안에는 Polygon, MultiPolygon, Point, Line 등 다양한 형태의 지오매트리 타입이 들어 갈 수 있다는 말이다. 보통 하나의 row에는 하나의 타입이 들어가지만 이 GeometryCollection을 사용하면 하나의 row에 여러가지 타입의 지오매트리를 넣을 수 있다는 말도 된다. GeometryCollection 객체 { "TYPE": "GeometryCollection", "g..
GIS 개발을 하다보면 자주 쓰이기도 하고, 이번 프로젝트에서도 쓸 일이 당연히 있었는데 블로그 뒤져보니 정리가 안되어 있어 정리해봄 ST_GeomFromGeoJSON이란? GeoJSON 표현에서 PostGIS 지오메트리 객체를 구성합니다. ST_GeomFromGeoJSON은 JSON 기하학 조각에 대해서만 작동합니다. 전체 JSON 문서에서 사용하려고 하면 오류가 발생합니다. 향상: 3.0.0에서 구문 분석된 지오메트리는 달리 지정되지 않은 경우 기본적으로 SRID=4326으로 설정됩니다. -postgis/docs- 빨간 줄이 중요하다. GeoJSON을 지오매트리 객체로 구성하며, 좌표계를 따로 설정하지 않으면 SRID는 4326으로 설정된다. 이것만 알고 사용법을 알아보자. ST_GeomFromG..
DBeaver와 같은 소프트웨어를 사용하면 Function을 쉽게 조회할 수 있는데 리눅스 환경에서는 명령어를 사용해야 확인 할 수 있다. 당연한 이야기지만.. 그래서 명령어 몇개 정리하려고 한다. \df+ 명령어를 사용하여 Function 상세정보 확인하는 방법 기본문법 \df+ 함수명 pg_get_functionf 함수를 사용하여 Function 상세정보 확인하는 방법 기본문법 SELECT pg_catalog.pg_get_functiondef('함수명'::regproc); 명령어 실행화면 둘중에 아무거나 갖다 쓰자. 개인적으로 그냥 함수 복사해다가 붙여넣을거면 pg_get_functionf를 이용하는게 더 깔끔하고 함수에 내한 내용을 자세히 보고 싶다면 \df+ 명령어를 쓰면 더 낫지 않을까 싶다.
공간정보를 확인 할 일이 있어서, 서버에 있는 테이블을 SHP으로 내려 받을 일이 있었다. 그래서 pgsql2shp 명령어를 이용해 SHP파일을 내려 받았는데 다음과 같은 에러가 떴다. [root@sample /smaple]$ pgsql2shp -f my_shp_sample.shp -g geom -h 192.168.100.100 -u postgres -p 5432 -P postgres postgres public.my_shp_sample; Initializing... Could not create dbf file /smaple/my_shp_sample.shp 결론은 해당 디렉터리에 권한이 없어서 그런다. 해당 디렉터리에 권한을 부여해주던 권한이 있는 경로를 재설정 해주면 정상적으로 shp 파일을 내려 받..