Cute Happy Ghost
본문 바로가기
728x90
SMALL

QGIS·Geo43

[postgis] ST_EXTENT 함수로 경계값(BBOX)찾기, ST_AsGeoJSON활용해 BBOX값 가져오기, openlayers에서 ST_EXTENT활용하기(parameter있을 때) 처음에 영역을 잡아주기 위해 ST_EXTENT라는 함수를 활용하려했지만 아래와 같이 BOX(..)로 떴다 그래서 스크립트단에서 BOX를 빼고 ,를 추가해보았지만 잘리지않았다..ㅎㅎ JAVA단에서도 잘라보았지만 잘리긴하지만 좌표변환을 할때 이상한 숫자로 변환이됐다(아마 좌표로 인식하지못한듯) 쿼리에서도 잘라보았지만 max값은 변환이 되나 min값을 변환이되지않았다 심지어 변환된 max값도 이상한 좌표를 반환했다 ..ㅜ BOX(126.88203089594275 37.57600491611421,126.96332878726157 37.65921538593538) 그래서 어쩔 수 없이 ST_XMax...등을 사용하여 각 extent값을 가져와서 아래와 같이 설정을 했다 하지만 데이터가 많을수록 쿼리가 느려지고 S.. 2022. 6. 21.
[geoserver, openlayers] 지도에서 클릭한 feature의 값 가져오기, openlayers클릭 이벤트 지도 클릭 이벤트는 map.on('singleclick', function(evt) {...}를 사용하면 된다 나는 그 안에 맵의 pixel정보들을 확인해서 layer와 coordinate를 넘겨주었다 viesResolution을 가져오고, url도 설정해준다 feature의 정보를 알고싶을 때는 layer.getSource().getGetFeatureInfoUrl을 쓰면 된다 info-fommat은 text/html도 되지만 난 ajax를 사용해 값을 넘길거니 json형태로 변환해준다 그리고 자꾸 뭔가 xy값을 못가져오길래 xy좌표를 replace해주는 함수도 추가해줬다 해당 url로 넘기면 data.features[0].properties에서 값을 확인할 수 있다 해당 소스 //epsg_cd값 설정 .. 2022. 6. 21.
[geoserver] geoserver의 getcapabilities를 활용하여 bbox영역 설정하기, openlayers extent경계값설정 (parameter없을 때) parameter가 상관이 없으면 아래와 같은 소스를 사용할 수 있다 WMSCapabilities parser를 사용하고 fetch를 이용해 geoserver에서 getcapabilities를 request한다 응답한다면 result값을 변환하고 그 안에 있는 해당 layerId의 EX_GeographicBoundingBox값을 가져온다 (bbox=경계영역의 모서리좌표.. 그런것임...) 이것을 proj의 transformextent함수를 사용하여 원하는 좌표로 변환해준다 나같은 경우는 3857로 변환해주었다 변환된 extent값을 map.getView().fit() 함수에 넣어주면 그 영역대로 설정이 된다 뭔가 자동줌을 하는건 안되고 extent를 구해서 fit해주는 방법이 최선인것 같다 functio.. 2022. 6. 21.
[openlayers,postgis] st_centroid 함수를 이용하여 center 설정하기, postgis에 내장된 st_centroid 함수를 사용해 각 geom의 센터를 구할 수 있다 select st_x(st_centroid(geom)) as st_cent_x, st_y(st_centroid(geom)) as st_cent_y from layer_sgg_edge AND ctprvn_cd = #{ctprvn_cd}::varchar AND sig_cd = #{sig_cd}::varchar ajax를 통해서 값을 가져온 다음 설정좌표대로 transform을 하여 변환해주고 map.getView().setCenter를 사용하여 center을 설정해준다 $.ajax({ url: "/living/getCenterBySgg.do", data: {ctprvn_cd: sidoValue}, dataType .. 2022. 6. 21.
728x90
LIST