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

QGIS·Geo43

대륙, 국가별 지도 shp파일 다운로드, QGIS 활용 한국이 아니라 나는 다른나라의 지도가 필요했는데 그 지도를 어떻게 가져올 수 있을까 유료는 절대 안돼! 확인 결과openstreetmap의 shp파일을 제공하는 것이 있었다. (오픈스트리트 측에서 제공하는 건 아닌 것 같음) http://download.geofabrik.de/ Geofabrik Download Server download.geofabrik.de 나는 유럽의 cyprus지도가 필요하다 유럽 클릭 원하는 국가를 찾아서 shp압축파일 다운로드 받아주고 압축 풀어주기 그리고 QGIS실행 귀찮으니 그냥 파일 냅다 다 넣어준다 그럼 QGIS가 공간정보 파일 아닌 것을 알아서 거르고 레이어를 생성해준다 짠 이제 원하는 작업을 하면된다 2022. 10. 27.
geoserver,openlayers활용하여 heatmap지도에 표출하기 baseUrl은 geoserver서버주소와 작업공간을 넣어줌 openlayers소스 사용해서 넣어주면 된다 typeName에 저장소와 발행한 레이어명 넣어주기 geoserver에서 json으로 불러올거니까 kml파일이 아닌 geojson format으로 형식맞춰주기 visible, zIndex는 option blur는 진하기 정도, radius는 heatmap 원형의 크기를 나타냄 var baseUrl = "http://210.***.***.***/geoserver/dabio"; layer_heat = new ol.layer.Heatmap({ source: new ol.source.Vector({ url: baseUrl+'/wfs?service=WFS&version=1.0.0&request=GetFeat.. 2022. 9. 27.
[geoserver]strict-origin-when-cross-origin geoserver의 cross domain(cors)허용 local에서는 잘 떴던 지도가 운영에서는 안 뜨고 strict-origin-when-cross-origin 이런 오류를 뱉어냄 그럼 geoserver의 지도가 cors정책에 의해 막혔다는 뜻이니 geoserver의 web.xml로 들어가보자 filter중에서 CorsFilter쪽으로 가서 corsFilter를 아예 주석처리해놓거나, 접근가능해야하는 주소만 넣어주면 됨. CorsFilter org.apache.catalina.filters.CorsFilter cors.allowed.origins http://localhost:8080,http://testWeb.com:8090 ... 중략 ... 저 포트까지도 다 명시에 주어야함! 2022. 8. 2.
[geoserver] OGC filter를 통해 값마다 스타일 지정해주기, 범례설정 먼저 코드부터 냅다 올리고 설명을 하겠다! Greater Than 800 Greater Than 800 food 800 circle #ff5722 1.0 15 less Than 800 less Than 800 food 800 circle #51abff 1.0 15 32000 스타일 코드는 기본 1featuretypestyle과 1rule이다 이제 그 안에 rule들을 추가시켜주면 되는 것임 나는 800을 기준으로 초과와 미만의 스타일을 달리 주고 싶었다 그래서 첫번째rule을 grater than 800으로 선언하고 ogcfilter를 추가해준다 ogc filter는 value와 경계를 설정할 수 있다 : 미만 : 같거나 큼 : 초과 원하는 필터를 쓰고 property에 기준이 될 value를 지정해주고.. 2022. 6. 29.
[openlayers, geoserver] 맵에 마우스 올렸을 때 layer feature tooltip 표출하기 tooltip style과 body map과 info만 있으면 된다 // 그리고 많이 헤맸는데 tooltip을 openlayers의 example그대로 사용하려면 부트스트랩을 데려와야한다 순서 꼭 지킬것.....jquery -> jquery-ui -> bootstrap임... 툴팁의 내용을 올려줄 변수를 설정하고 맵 위에 마우스올렸을 때 주는 이벤트에서 설정을 시작한다 나는 시간이 없기도했고 데이터도 별로 없어서 아래와 같이 마우스 올렸을 때 매번 url을 통해 feature를 가져오는 방법을 사용했는데 추후 fetch를 사용해서 좀 더 효율적인 소스로 수정하고 좀 더 모듈화를 시킬생각이다... var info = $('#info'); info.tooltip({ animation: false, trigg.. 2022. 6. 23.
[geoserver] SQL 뷰에서 parameter설정, 정규식, 파라미터 오류, 여러개의 변수 구분 원하는 것은 해당 시군구, 시설명, 시설타입으로 검색한 값들이 지도에 point형태로 표출되는 것 select * from layer_test where fclt_sn in (select f.fclt_sn from fclt f where f.sgg = '%cd%' and f.fclt_nm like '%nm%' and f.fclt_type1 like'%type%') 내가 작성한 쿼리는 위와 같다 layer에 각 시설들이 있는데 db에는 시설id만 있음 fclt(시설테이블)에서 시군구, 시설명, 시설타입을 검색하여 가져오는 쿼리이다 sql view에서는 파라미터를 '%cd%' 이런식으로 작성해주면됨 여기서 많이 헤맸는데 저 정규표현식을 ^[\w\d\s]+$로 하니까 문자는 허용이 안되서 오류가 났었다 해당 .. 2022. 6. 23.
[openlayers] openlayers활용하여 웹상에 지도올리기 https://github.com/openlayers/openlayers/releases/tag/v4.6.5 Release v4.6.5 · openlayers/openlayers 4.6.5 The v4.6.5 release fixes a hit detection issue when declutter: true is set on an ol.layer.VectorTile. Fixes #7669 - Use declutter tree only for text and image replays (@ahocevar) github.com 해당 스크립트 불러오고 html에서는 하나만 있으면 된다. 기본맵 설정 control을 사용하여 zoom을 활성화시킬 수 있음 layer에는 올리고싶은 layer을 올려줌 //기본 맵.. 2022. 6. 21.
[QGIS, geoserver] 간단하게 point 레이어 올려보기, 변수(parameter)설정하여 레이어 불러오기 웹에 올리고싶은 shp파일을 qgis에 뿌려주면 이렇게 딱 나온다! 얘를 저장해준다 DB관리자-> PostGIs->db선택 ->스키마선택 -> 레이어/파일 불러오기 이렇게 설정해준다 나는 인코딩이 자동설정이 되어있어서 따로 설정은 안해주겠다! 그러면 DB에 가보면 geom을 포함하여 테이블이 생성되어있을 것이다. 레이어 추가해서 원하는 레이어 발행해준다 하지만 나는 sql뷰로 발행하는 편이다 이런식으로 파라미터를 설정할 수 있기때문! 그리고 바로 id값을 발행해주기때문에 편하다 필요없으면 바로 발행해줘도 상관없다 layer올리는 소스 param이 필요없다면 viewparams을 삭제해도 상관없다 test_layer = new ol.layer.Image({ source : new ol.source.Imag.. 2022. 6. 21.
[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.
728x90
LIST

*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*