본문 바로가기

Dev Story/gis

[PostGIS] 폴리곤을 분할하는 방법 (Voronoi Polygons) 공간 데이터를 변환하고 분석하기 위해 ArcToolbox 또는 QGIS Processing Toolbox를 이용하는 방법이 먼저 떠오릅니다. 가장 많이 사용했던 경험 때문에 그렇겠죠. Paul Ramsey는 원시적인 관점에서 생각하여 PostGIS에서도 다양한 방법으로 지오메트리를 다룰 수 있다는 것을 소개하고 있습니다. 그도 그 방법이 가장 익숙하니까 그렇겠죠?! 그의 블로그에 작성된 게시글을 바탕으로 아래 내용이 작성되었음을 밝히고, 사고의 다양성을 기반으로 생각하는 습관을 기르도록 해야겠네요. 아래의 예시는 Polygon을 동일한 면적의 다각형으로 분할할 수 있는 방법에 대한 소개로 사용자 정의 함수를 만들지 않고 PostGIS 함수만으로 폴리곤을 분할하는 방법에 대한 설명입니다. 1. 서울시 경계.. 더보기
[GeoServer] Log4j 2 취약점 코드 CVE-2021-44228 자바 기반의 로그 생성 라이브러리인 Log4j 2에서 중대하고 심각한 보안 취약점이 발견이 되었다는 소식이 전해졌다. GeoServer도 Log4j로 로그를 생성하는 기능이 관리 기능으로 포함되어 있기 때문에 즉시 점검이 필요했다. 지난 2021년 12월 13일 GeoServer 공식 사이트에 취약점 코드 CVE-2021-44228 대응법을 안내하는 Andrea Aime의 글이 GeoServer Blog를 통해 공개되었다. http://geoserver.org/announcements/2021/12/13/logj4-rce-statement.html Log4J2 zero day vulnerability assessment The Java world has been taken by storm, last we.. 더보기
[OpenLayers] Errors #58 58 Duplicate item added to a unique collection. For example, it may be that you tried to add the same layer to a map twice. Check for calls to map.addLayer() or other places where the map's layer collection is modified. 유니크한 컬렉션이 중복으로 추가되었다. 하나의 View를 공유해서 Map에 사용할 수 있다. 하지만 Layer는 복제해서 사용할 수 없다. 더보기
GeoServer callback function GeoServer web.xml ENABLE_JSONP true Request WFS var wfsParams = { service: 'WFS', version: '1.1.0', request: 'GetFeature', typeName: 'vizm:tl_scco_sig', maxFeatures: '50', srsName: 'EPSG:4326', outputFormat: 'text/javascript', format_options: 'callback:responseJSON' }; $.ajax({ url: 'http://localhost:8081/geoserver/vizm/wfs', data: $.param(wfsParams), type: 'GET', jsonpCallback: 'responseJSON', .. 더보기
[geoserver] log4j 설정 GeoServer를 윈도우에서 콘솔로 띄워 시작할 경우 퍼블리싱 되어 있는 레이어, 스타일 정보와 같은 많은 로그를 출력한다. 서비스에 올라가 있는 레이어가 몇개 안된다면 별다른 문제가 없겠지만 대부분의 운영 환경에서는 많은 양의 레이어가 서비스되고 있을 것이다. 그런데 그 레이어 관련 로그를 하나하나 콘솔창에 찍거나 로그 파일에 저장이 된다면 상당한 양의 로그가 저장이 될 것이다. 특히 WMS의 경우 타일 형식으로 서비스 되기 때문에 하나의 지도 영역을 그리기 위해 타일수 대로 로그가 찍힌다면 엄청난 양의 로그가 생성되는 것이다. 이런 문제를 해결하기 위해 간단히 설정 파일을 변경하여 처리해 줄 수 있다. GeoServer는 로그 관리를 위해 Log4j를 사용하는데 다양한 로그 정책을 선택할 수 있도록.. 더보기
[postgresql] java.io.IOException: Error occurred creating table Geotools(Version 2.7.4)를 이용하여 PostgreSQL(Version 9.3) 테이블을 추가하려고 하는데 schema를 생성할 때 다음과 같은 오류가 발생하였다. java.io.IOException: Error occurred creating tableat org.geotools.jdbc.JDBCDataStore.createSchema(JDBCDataStore.java:660)at org.geotools.jdbc.JDBCDataStore.createSchema(JDBCDataStore.java:138)... 25 moreCaused by: org.postgresql.util.PSQLException: ERROR: function srid(geometry) does not exist Hi.. 더보기
[geoserver] ERROR:ST_Estimated_Extent GeoServer를 이용하여 PostGIS에 있는 레이어를 추가하려고 할 때 레이어 Extent를 설정한다.그때 결과는 나오지만 아래와 같은 오류가 서버 콘솔창에 발생한다. ...Failed to use ST_Estimated_Extent, falling back on envelope aggregation org.postgresql.util.PSQLException: ERROR: stats for "layer_name.the_geom" do not existWhere: SQL function "st_estimated_extent" statement 2... GeoServer에서 레이어의 Extent를 확인하기 위해 ST_Estimated_Extent() 함수를 요청하는데 그 때 발생하는 오류이다.오류없이.. 더보기
[openlayers] CreateRingMap for OpenLayers(based on 2.13.1) RingMap은 시계열 데이터를 시각화하는 하나의 방법으로 OpenLayers2 기반(이하 OL2)에서 RingMap을 생성할 수 있는 라이브러리를 만들었다. 이민파 소장님(Minpa Lee)의 Create Ring Maps using PyQGIS Script 포스팅 내용을 참고하였다. OL2의 {OpenLayers.Layer.Vector}를 상속받아 Layer 타입의 형식을 가지고 있는 하나의 완성체 클래스이다. 기존의 레이어와 동일한 방법으로 레이어를 Map Object에 추가할 수 있다. CLASS_NAME을 "OpenLayers.Layer.CreateRingMap" 라는 이름으로 부여했다. 심볼 스타일 설정을 위해 geostats라는 classification 라이브러리를 사용하였는데, geost.. 더보기