OpenGeo Suite세미나 20111014

1,629 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,629
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
48
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

OpenGeo Suite세미나 20111014

  1. 1. 1 2011년 10월 14일
  2. 2. OpenGeo Suite 기술 세미나 목 차 I OpenGeo Suite 설치 Ⅲ GeoServer Ⅳ GeoEXT Ⅴ Performance Tuning II PostGIS
  3. 3. OpenGeo Suite 기술 세미나 Ⅰ. OpenGeo Suite 설치
  4. 4. 4 Ⅰ. OpenGeo Suite 설치 제품 구성 • GeoEXT(OpenLayers+ExtJS): 웹에서 지도 콘트롤과 UI 제공 • GeoWebCache: 지도 컨텐츠를 타일단위 캐시 • GeoServer: 공간자료를 지도형태 (WMS, WFS, WCS, KML 등)로 서 비스 • PostGIS : DBMS로서 공간자료를 유지관리
  5. 5. 5 Ⅰ. OpenGeo Suite 설치 다운로드 및 설치 http://opengeo.org/products/suite/register/
  6. 6. 6 Ⅰ. OpenGeo Suite 설치 OpenGeo Suite 시작 Tomcat과 포트충돌 (8080) 포트수정(8088) 정상구동 시작
  7. 7. 7 Ⅰ. OpenGeo Suite 설치 Dashboard의 기능 서비스 시작/종료 • PostGIS와 GeoServer 동시에 시작/종료 데이터 관리 • PostGIS로 Shape 올리기 • GeoServer로 데이터 올리기 • PostgreSQL 데이터 관리(pgAdmin) 레이어 관리 • 레이어 확인 (GeoExplorer) • 레이어 스타일 관리 (Styler) • 레이어 피처 편집 (GeoEditor) • 레이어 캐시 설정 (GWC) 설정관리 • 포트관리 (GeoServer, PostGIS) • GeoServer 데이터 폴더 관리 • 암호관리 (GeoServer, PostGIS) • PostGIS관리 (pqAdmin) • GeoServer관리 (Admin Page) • 레이어 캐시 설정 (GWC) 관렦문서 연결 • Getting Started • FAQ • PostGIS Documentation • GeoServer Documentation • GeoWebCache Documentation • GeoEditor Documentation • Styler Documentation • GeoExplorer Documentation 로그 확인 • GeoServer 로그
  8. 8. OpenGeo Suite 기술 세미나 Ⅱ. PostGIS
  9. 9. 9 Ⅱ. PostGIS Shape 올리기 • Username: postgres  기본 관리자 유저 • Password: postgres  기본 암호 • Server Host: localhost  내 컴퓨터에 설치한 경우 • Service Port: 54321  데시보드에서 설정한 PostGIS 포트 • Database: Administrator  설치한 OS 유저의 유저명 • Destination Schema: public  기본 스키마 • SRID: 4326  WGS84 경위도 EPSG 코드(spatial_ref_sys 테이블에 있는 값) • Destination Table: cities  로드할 Shape 파일명과 동일 • Geometry Column: the_geom  공간컬럼명 • DBF file character encoding: CP949  한글 윈도우 기본 코드페이지  Dashboard  PostGIS  Import shapefiles  pgAdmin III  Plugins  PostGIS Shapefile and DBF Loader  [시작]  모든 프로그램  OpenGeo Suite  pgShapeLoader
  10. 10. 10 Ⅱ. PostGIS PostgreSQL Query  pgAdmin III  툴  Query tool  pgAdmin III  객체브라우저  대상 테이블(오른쪽 마우스)  스크립트  SELECT 스크립트
  11. 11. 11 Ⅱ. PostGIS GIS 계산 -- 좌표계 변홖 SELECT ST_AsText(the_geom) LonLat, ST_AsText(ST_Transform(the_geom, 2097)) TmMid, ST_AsText(ST_Transform(the_geom, 32652)) Utm52N, ST_AsText(ST_Transform(the_geom, 900913)) Google FROM public.cities WHERE "name" = 'Seoul'; ------------------------------------------------------------ "POINT(126.935249328613 37.542350769043)";"POINT(194278.313179724 449211.939204225)";"POINT(317589.398888947 4157043.12438647)";"POINT(14130367.3189785 4514975.53386539)" -- 영역, 둘레, 면적 계산 SELECT placename, ST_AsText(ST_Envelope(the_geom)) Envelope, ST_Length(ST_Transform(ST_Boundary(the_geom), 2097)) perimeter, ST_Area(ST_Transform(the_geom, 2097)) Area FROM public."WorldCountries" where placename like '%Korea%'; ----------------------------------------------------------------------- "North Korea";"POLYGON((124.323951721191 37.6713790893555,124.323951721191 43.0060997009277,130.697418212891 43.0060997009277,130.697418212891 37.6713790893555,124.323951721191 37.6713790893555))";2435167.84243881;122713186231.607 "South Korea";"POLYGON((126.125816345215 33.192211151123,126.125816345215 38.625244140625,129.586868286133 38.625244140625,129.586868286133 33.192211151123,126.125816345215 33.192211151123))";2209246.0231036;96546624592.7897 http://suite.opengeo.org/docs/postgis/postgis/html/ch04.html#OpenGISWKBWKT http://spatialreference.org/ref/?search=korea
  12. 12. 12 Ⅱ. PostGIS 공간 Query -- 사우디 MBR의 도시 조회 SELECT name, country FROM cities WHERE the_geom @ ( SELECT the_geom FROM public."WorldCountries" WHERE placename = 'Saudi Arabia' ); ------------------------------------------- "Amman";"Jordan" "Al Basra";"Iraq" "Doha";"Qatar" "Mecca";"Saudi Arabia" "Bur Sudan";"Sudan" "Jerusalem";"Israel" "Al Madinah";"Saudi Arabia" "Yazd";"Iran" "Al Kuwayt";"Kuwait" "Ar Riyad";"Saudi Arabia" "Jiddah";"Saudi Arabia" "Shiraz";"Iran" "Tel Aviv-Yafo";"Israel" "Abu Zaby";"Untd Arab Em" http://postgis.refractions.net/documentation/manual-1.5/reference.html#Operators http://postgis.refractions.net/documentation/manual-1.5/reference.html#Spatial_Relationships_Measurements http://postgis.refractions.net/documentation/manual-1.5/ST_Contains.html -- 사우디 geometry 내의 도시 조회 SELECT name, country FROM cities WHERE ST_Contains( ( SELECT the_geom FROM public."WorldCountries" WHERE placename = 'Saudi Arabia' ), the_geom ); ------------------------------------------- "Mecca";"Saudi Arabia" "Al Madinah";"Saudi Arabia" "Ar Riyad";"Saudi Arabia" "Jiddah";"Saudi Arabia"  포함되는 경우  포함 안 되는 경우
  13. 13. 13 Ⅱ. PostGIS Format 변홖 -- Formatting SELECT the_geom, ST_AsBinary(the_geom), ST_AsEWKB(the_geom), ST_AsText(the_geom), ST_AsEWKT(the_geom), ST_AsGeoJSON(the_geom), ST_AsGML(the_geom), ST_AsKML(the_geom), ST_AsSVG(the_geom), ST_GeoHash(the_geom) FROM public.cities WHERE "name" = 'Seoul'; ----------------------------------------------------- "0101000020E610000000000020DBBB5F40000000C06BC54240";  geometry "001001000000000000000000 333273_@000000000300k305B@";  WKB "001001000000 346020000000000000000 333273_@000000000300k305B@";“  EWKB "POINT(126.935249328613 37.542350769043)“;  WKT “SRID=4326;POINT(126.935249328613 37.542350769043)";  EWKT "{"type":"Point","coordinates":[126.93524932861328,37.542350769042969]}";  GeoJSON "<gml:Point srsName="EPSG:4326"><gml:coordinates>126.93524932861328,37.542350769042969</gml:coordinates></gml:Point>";  GML "<Point><coordinates>126.93524932861328,37.542350769042969</coordinates></Point>“;  KML “cx="126.93524932861328" cy="-37.542350769042969"";  SVG "wydm86rkj9qj92me2k56“  GeoHash http://postgis.refractions.net/documentation/manual-1.5/reference.html#Geometry_Outputs
  14. 14. 14 Ⅱ. PostGIS QGIS에서 보기  Quantum GIS  Layer  Add PostGIS Layer 수도인 도시만 필터링! http://www.qgis.org/wiki/Download
  15. 15. 15 Ⅱ. PostGIS Shape으로 저장  Quantum GIS  Layers  cities (오른쪽 클릭)  Save as…
  16. 16. OpenGeo Suite 기술 세미나 Ⅲ. GeoServer
  17. 17. 17 GeoServer Ⅲ. GeoServer GeoServer가 하는일 WMS PNG JPEG GIF Tiff KML KMZ SVG GeoRSS PDF OpenLayers AtomPub WCS ArcGrid Text Debug Grid BMP GeoTIFF TIFF PNG JPEG WFS WMS WCS Vector Data Raster Data Feature Object Formatted Map Coverage Data 요청 영역에 해당하는 점, 선, 폴리곤 등의 도형 객 체를 제공. 어떻게 그려야 하는지는 사용자에게 맡긴다. 요청 영역에 해당하는 지도를 이미지나 심벌이 포 함된 벡터로 제공. 어디서나 동일하게 해석할 수 있는 심벌로 렌더링 요청 영역에 해당하는 레스터 GIS 자료(분류, 그리 드값 등)를 제공 이미지 형태로 제공되어도 셀의 값에 의미가 있다. WFS GML2 GML2-GZIP GML3.1 GML3.2 GeoJSON CSV  WFS Sample http://labs.metacarta.com/flickrbrowse/flickr.py/flickr?format=WFS&sort=i nterestingness- desc&service=WFS&request=GetFeatures&srs=EPSG:4326&maxfeatures =100&bbox=-180,-90,180,90  WMS Sample http://demo.cubewerx.com/demo/cubeserv/cubeserv.cgi?LAYERS=Found ation.GTOPO30&VERSION=1.3.0&EXCEPTIONS=INIMAGE&SERVICE=WM S&REQUEST=GetMap&STYLES=&FORMAT=image/jpeg&SRS=EPSG:432 6&BBOX=-135,-270,135,270&WIDTH=768&HEIGHT=384  WCS Sample GeoServer Admin Page  Demo  WCS request builder
  18. 18. 18 Ⅲ. GeoServer data_dir • GeoServer에서 사용할 모든 데이터는 서버의 data_dir에 있어야 한다. • 기본적으로 OpenGeo Suite 설치한 User 폴더의 .opengeo/data_dir 혹은 GeoServer설치 폴더의 data_dir • 데시보드 Preferences 텝의 Data Directory 에서 변경 가능 • GEOSERVER_DATA_DIR 홖경 변수에서도 변경 가능 • 서비스할 데이터, 심벌, 워크스페이스 구성, GWC 캐시 등이 들어간다. • 반드시 여유공간이 많은 디스크로 설정해야 한다.
  19. 19. 19 Ⅲ. GeoServer 데이터 올리기 (1) 1. http://demo.grida.kr/demo/sample/worldmap.zip : 벡터 세계지도 샘플 2. http://demo.grida.kr/demo/sample/bluemarble_wgs84_tif.zip : 한반도지역 위성영상(나사 블루마블) 샘플 다운로드 1. C:UsersAdministrator.opengeodata_dirdataWorldMap 에 worldmap.zip 압축 해제 2. C:UsersAdministrator.opengeodata_dirdatabluemarble 에 bluemarble_wgs84_tif.zip 압축 해제 data_dir에 복사 1. http://localhost:8088/geoserver 에 접속 2. admin / geoserver로 로그인 3. 왼쪽 Data 항목 중 Workspaces 선택 4. Add new workspace 선택 5. Name에 demo, Namespace에 http://demo.grida.kr 입력하고 [Submit] Workspace
  20. 20. 20 Ⅲ. GeoServer 데이터 올리기 (2) 1. 왼쪽 Data 항목 중 Stores 선택 2. Add new store 선택 3. Directory of spatial files (shapefiles) 선택 4. Workspace에 demo, Data Source Name에 WorldMap, Directory of shapefiles에 file:data/WorldMap 입력하고 [Save] 5. 왼쪽 Data 항목 중 Layers 선택 6. Add layer from에 demo:WorldMap 선택 7. 레이어 리스트에 있는 LatLon 의 Publish 를 선택 8. Declared SRS에 EPSG:4326 입력 9. Compute from data 선택 10. Compute from native bounds 선택 11. [Save] 선택 12. Layers 리스트 중 추가한 LatLon 레이어가 등록 되었는지 확인 13. 왼쪽 Data 항목 중 Layers 선택 14. Add layer from에 demo:WorldMap 선택 15. 레이어 리스트에 있는 모든 레이어의 Publish 를 선택하여 상기 과정 반복 16. 왼쪽 Data 항목 중 Layer Preview 선택 17. 레이어 리스트 중 demo:WorldCountries 의 OpenLayers 선택 18. 국가들이 잘 보이는지 확인 Shape Layer 등록
  21. 21. 21 Ⅲ. GeoServer 데이터 올리기 (3) 1. 왼쪽 Data 항목 중 Stores 선택 2. Add new store 선택 3. PostGIS 선택 4. Workspace에 demo, Data Source Name에 PostGIS, host에 localhost, port에 54321, database에 Administrator, schema에 public, user에 postgres, passwd에 postgres입력하고 [Save] 5. 왼쪽 Data 항목 중 Layers 선택 6. Add layer from에 demo:PostGIS 선택 7. 레이어 리스트에 있는 cities 의 Publish 를 선택 8. Compute from data 선택 9. Compute from native bounds 선택 10. [Save] 선택 11. Layers 리스트 중 추가한 cities 레이어가 등록 되었는지 확인 12. 왼쪽 Data 항목 중 Layer Preview 선택 13. 레이어 리스트 중 demo:cities 의 OpenLayers 선택 14. 도시들이 잘 보이는지 확인 PostGIS 등록
  22. 22. 22 Ⅲ. GeoServer 데이터 올리기 (4) 1. 왼쪽 Data 항목 중 Stores 선택 2. Add new store 선택 3. GeoTIFF 선택 4. Workspace에 demo, Data Source Name에 bluemarble, URL에 file:data/bluemarble/wgs84.tif 입 력하고 [Save] 5. 왼쪽 Data 항목 중 Layers 선택 6. Add layer from에 demo:bluemarble 선택 7. 레이어 리스트에 있는 wgs84 의 Publish 를 선택 8. Declared SRS에 EPSG:4326 입력 9. [Save] 선택 10. Layers 리스트 중 추가한 wgs84 레이어가 등록 되었는지 확인 11. 왼쪽 Data 항목 중 Layer Preview 선택 12. 레이어 리스트 중 demo:wgs84 의 OpenLayers 선택 13. 영상이 잘 보이는지 확인 위성영상 등록
  23. 23. 23 Ⅲ. GeoServer 심벌라이징 (1) 1. 왼쪽 Data 항목 중 Style 선택 2. Add new style 선택 3. Name에 demo_cities 입력 4. Copy from existing style에서 point 선택하고 copy… 누르기 5. 20행의 <CssParameter name="fill">#FF0000</CssParameter> 의 색 값을 #DDDDDD로 변경 6. [Validate] 버튼 눌러 상단에 No validation errors. 메시지 확인 7. [Submit] 눌러 종료 8. 왼쪽 Data 항목 중 Layers 선택 9. 레이어 리스트 중 demo 웍스페이스의 cities 레이어 선택 10. Publishing 탭 선택 11. Default Style에서 demo_cities 선택 12. [Save] 버튼 눌러 종료 13. 왼쪽 Data 항목 중 Layer Preview 선택 14. 레이어 리스트 중 demo:cities 레이어의 Styler 선택 15. Styler 창의 왼쪽 하단 Legend에서 Red square 선택 16. Name에 City, Symbol에 circle, Size에 3 입력 17. Stroke에 체크 하고 Style에 solid, Color에 #000000, Width에 1 입력 18. [Save] 눌러 완료하여 변경 확인 Point Symbol
  24. 24. 24 Ⅲ. GeoServer 심벌라이징 (2) 1. 왼쪽 하단 Legend에서 [Add new] 선택 2. Name에 Capital, Symbol에 square, Size에 6 입력 3. Fill color에 파란색 선택 4. Style 창에서 Labels 탭 선택 5. Label Features 체크 6. Label values에서 name 선택 7. Arial을 폰트로 선택하고 Halo에 체크 8. Advanced 탭을 선택 9. Limit by condition 체크 하고 조건 입력하는 곳에서 capital, =, Y 입력 (수도만 필터링) 10. [Save] 눌러 완료 11. 왼쪽 하단 Legend에서 City 선택 12. Style 창에서 Labels 탭 선택 13. Label Features 체크 14. Label values에서 name 선택 15. Arial을 폰트로 선택하고 Halo에 체크 16. Advanced 탭을 선택 17. Limit by scale 체크하고 Min scale limit 체크. 1에 30000000 입력 18. Limit by condition 체크 하고 조건 입력하는 곳에서 capital, <>, Y 입력 (수도 아닌 것만) 19. 수도는 크게, 일반 도시는 작게 보이고 젂 지구영역으로 축소시 수도만 보이는지 확인 조건에 따른 심벌
  25. 25. 25 Ⅲ. GeoServer Layer Group ※ LayerGroup을 이용하면 여러 레이어로 구성된 지도를 쉽게 서비스 할 수 있다. 1. 왼쪽 Data 항목 중 Layer Groups 선택 2. Add new layer group 선택 3. Name에 WorldMap 입력 4. [Add Layer…] 선택 5. wgs84 레이어 선택 6. [Add Layer…] 선택 7. WorldCountries 레이어 선택 8. [Add Layer…] 선택 9. LatLon 레이어 선택 10. [Add Layer…] 선택 11. cities 레이어 선택 12. [Generate Bounds] 선택 13. [Save] 선택하여 완료 14. 왼쪽 Data 항목 중 Layer Preview 선택 15. WorldMap 레이어 그룹의 OpenLayers 선택
  26. 26. OpenGeo Suite 기술 세미나 Ⅳ. GeoEXT
  27. 27. 27 Ⅳ. GeoEXT GeoEXT 란? OpenLayers ExtJS • ExtJS는 주로 고급 UI를 쉽게 구현하기 위해 사용 • jQuery는 자비스크립트 코딩을 단순화 하기 위해 사용 • 둘 다 자바스크립트 라이브러리 • 여러 브라우저에서 동일한 코딩으로 동작하도록 크로스 브라우징을 지웎 • 웹에서 지도 콘트롤 제공 • 구글, 야후, 빙 등 상용지도 부착 • WMS, WFS, KML 등 표준 컨텐츠 부착 • 지도상에 객체를 그리고 편집 • 지도와 객체들의 이벢트 처리 • Grid, Tree, Chart, Tab, Window 등 다양한 콘트롤 제공 • Desktop Application 느낌의 UI • 크로스 브라우징 제공 • GIS 데이터 조작을 위한 UI 작성 ExtJS vs jQuery http://www.sencha.com/products/extjshttp://www.openlayers.org/
  28. 28. 28 Ⅳ. GeoEXT 간단한 샘플 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="viewport" content="width=device-width, initial- scale=1.0, maximum-scale=1.0, user-scalable=0"> <meta name="apple-mobile-web-app-capable" content="yes"> <title>OpenLayers Example</title> <link rel="stylesheet" href="../theme/default/style.css" type="text/css"> <link rel="stylesheet" href="style.css" type="text/css"> </head> <body> <h1 id="title">OpenLayers Example</h1> <div id="tags">simple, basic</div> <p id="shortdesc"> Demonstrate a simple map with an overlay that includes layer switching controls. </p> <div id="map" class="smallmap"></div> <div id="docs"> <p>This is a basic example demonstrating the use of a map with two layers and a few controls.</p> <p>View the <a href="example.js" target="_blank">example.js</a> source to see how this is done.</p> </div> <script src="../OpenLayers.js"></script> <script> var map = new OpenLayers.Map("map"); var ol_wms = new OpenLayers.Layer.WMS( "OpenLayers WMS", "http://vmap0.tiles.osgeo.org/wms/vmap0", {layers: "basic"} ); var dm_wms = new OpenLayers.Layer.WMS( "Canadian Data", "http://www2.dmsolutions.ca/cgi-bin/mswms_gmap", { layers: "bathymetry,land_fn,park,drain_fn,drainage," + "prov_bound,fedlimit,rail,road,popplace", transparent: "true", format: "image/png" }, {isBaseLayer: false, visibility: false} ); map.addLayers([ol_wms, dm_wms]); map.addControl(new OpenLayers.Control.LayerSwitcher()); map.zoomToMaxExtent(); </script> </body> </html>
  29. 29. 29 Ⅳ. GeoEXT 샘플 찾기 OpenLayers는 샘플이 잘 되어 있어 다음 경로에서 검색하면 잘 나온다. Class Documentation에서 상세한 설명을 볼 수 있다. 1. 다음의 경로에 웹 브라우저로 접속한다. http://www.openlayers.org/dev/examples/ 2. 상단 검색창에 웎하는 검색어를 입력한다. 3. 아래 나온 검색 결과 중 웎하는 것을 선택한다. 4. 샘플 페이지의 동작을 확인한다. 5. 웎하던 샘플이라면 오른쪽 마우스를 눌러 소스 보기를 한다. 6. 소스를 바탕으로 자싞의 웹 지도에 기능을 구현한다. • 구글 지도를 어떻게 부착해야 하지?  google • 풍선 도움말을 붙일 수 없을까?  popup • 폴리곤을 그릴 수는 없나?  polygon • KML을 붙일 수도 있나?  kml • WMS도 가능한가?  wms • 지도가 이동된 때에 뭔가 할 수 없을까?  move event • 스마트폰용 지도도 가능한가?  mobile 검색어 샘플
  30. 30. 30 Ⅳ. GeoEXT 다양한 좌표계 이용 select ST_AsText(ST_Transform(ST_SetSRID(ST_LineFromText('LINESTRING(110 20, 150 50)'), 4326), 900913)); select ST_AsText(ST_Transform(ST_SetSRID(ST_LineFromText('LINESTRING(110 20, 150 50)'), 4326), 2097)); select ST_AsText(ST_Transform(ST_SetSRID(ST_LineFromText('LINESTRING(110 20, 150 50)'), 4326), 32652)); http://demo.grida.kr:8088/geoserver/wms?service=WMS&version=1.1.0&re quest=GetMap&layers=WorldMap&styles=&width=660&height=330&form at=application/openlayers&srs=EPSG:4326&bbox=110,20,150,50 http://demo.grida.kr:8088/geoserver/wms?service=WMS&version=1.1.0&re quest=GetMap&layers=WorldMap&styles=&width=660&height=330&form at=application/openlayers&srs=EPSG:900913&bbox=12245143.9872601,22 73030.92698769,16697923.618991,6446275.84101716 http://demo.grida.kr:8088/geoserver/wms?service=WMS&version=1.1.0&re quest=GetMap&layers=WorldMap&styles=&width=660&height=330&form at=application/openlayers&srs=EPSG:2097&bbox=-1599161.20365349,- 1401708.62964815,1839996.14666927,2091714.20629109 http://demo.grida.kr:8088/geoserver/wms?service=WMS&version=1.1.0&re quest=GetMap&layers=WorldMap&styles=&width=660&height=330&form at=application/openlayers&srs=EPSG:32652&bbox=- 1516012.385514,2328845.36574506,1998458.72659911,5753394.63053658 WGS84 Google TM중부 UTM52N 좌표계 변홖된 범위 계산 SQL
  31. 31. 31 Ⅳ. GeoEXT 사용자 정의 좌표계 목적 • 비표준 좌표계인 UTMK 좌표계를 사용해 보자! 좌표계 정보 검색 • http://spatialreference.org/ref/?search=korea • SR-ORG:7165: UTMK 선택 GeoServer용 정보 입력 • SpatialReferences.org UTMK화면에서 GeoServer 선택 • 좌표계 정보 복사 • data_dir/user_projections/epsg.properties 파일 오픈 • 제일 하단에 좌표계 정보 붙여 넣고 저장 • GeoServer 재기동 PostGIS용 정보 입력 • SpatialReferences.org UTMK화면에서 PostGIS 선택 • SQL 복사 • pgAdmin으로 PostgreSQL의 Administrator 데이터 베이스에 접속 • Query 창 띠우고 복사한 SQL 붙여 넣고 [F5]눌러 실행 테스트 • select ST_AsText(ST_Transform(ST_SetSRID(ST_LineFromText('LINESTRING(110 20, 150 50)'), 4326), 97165)); • http://demo.grida.kr:8088/geoserver/wms?service=WMS&version=1.1.0&request=GetMap&layers=WorldMap&s tyles=&width=660&height=330&format=application/openlayers&srs=EPSG:7165&bbox=-852821.081908005,1 04613.151209606,2604316.19091138,3579939.07740313
  32. 32. OpenGeo Suite 기술 세미나 Ⅴ. Performance Tuning
  33. 33. 33 Web Browser GIS Server Ⅴ. Performance Tuning Web Cache Logic URI 요청 Browser Cache 확인 있는가? 유효기간? Browser Cache Hit! End 헤더에 If-Modified-Since: LastModifiedTime 붙여 요청 컨텐츠 요청 304 not modified 새 버젂이 있는가? 컨텐츠 생산 (GeoServer) GWC에 있는가? 컨텐츠 젂송 컨텐츠 사용 No Yes Remain Expire No Yes 0.1 ms 10 ms 50 ms No Yes 500 ms
  34. 34. 34 Ⅴ. Performance Tuning Cache Time 설정 1. GeoServer Admin 화면 접속 2. 왼쪽 Data 항목 중 Layers 선택 3. WorldCountries Layer 선택 4. Publishing 탭 선택 5. Edit Layer 아래 Response Cache Headers 체크 6. Cache Time에 초단위로 컨텐츠 유효기간 604800 (7일) 입력. 60초 * 60분 *24시간 * 7일 = 604800 7. [Save] 눌러 완료 Cache Header 설정 1. GeoServer Admin 화면 접속 2. 왼쪽 Data 항목 중 Layer Preview 선택 3. demo:WorldCountries Layer의 OpenLayers 선택 4. 지도창이 뜨면 Http 헤더 분석도구로 Response 확인 (Chrome [F12], FireFox FireBug, IE HttpWatch) 5. Response Header 부분에 Expires, Cache-Control: max-age=604800 값이 추가되었음을 확인 6. 휠로 줌 인, 줌 아웃 반복  별로 빨라지지 않은 것 같다 ㅠㅠ 7. 지도 우상단의 옵션버튼 클릭 8. Tiling에서 Tiled 선택 9. 휠로 줌 인, 줌 아웃 반복  이번엔 확실히 빨라진 것이 보인다. Cache Test Cache가 되려면 Tiled로 호출하여야만 한다! http://wiki.osgeo.org/wiki/WMS_Tiling_Client_Recommendation
  35. 35. 35 Ⅴ. Performance Tuning GeoWebCache 1. 왼쪽 Setting 항목 중 GeoWebCache 선택 2. WMS Integration 에서 Enable direct WMS integration에 체크 되어 있는지 확인 3. Data_dir/gwc 폴더에 보면 캐시가 이미지로 쌓이는 것을 확인 가능 GWC 홗성화 1. 상단의 GWC Home Page 선택 2. [F5] 를 눌러 최싞 현황으로 갱싞 (3초의 갭이 있음) GWC 통계확인 1. 상단의 GWC Demos Page 선택 2. 캐시를 만들려는 레이어 혹은 레이어 그룹의 Seed this layer 선택 3. 캐시를 만들기 위해 사용할 쓰레드 수 선택 4. 없는 타일만 생산하도록 Seed- generate missing tiles 선택 5. Grid Set에서 사용할 좌표계 선택 (4326, 900913, 레이어 고유의 좌표계 지웎) 6. 사용할 이미지 형태 선택 (이 형태로 호출해야지만 캐시가 유효) 7. 캐시를 만들 Zoom start와 Zoom end를 선택(0은 젂지구 스케일, 한단 올라갈 때마다 2배 확대) 8. 캐시가 필요한 영역의 Bounding Box 입력 (입력 안하면 젂체 범위) 9. [Submit]을 눌러 작업 시작 캐시 미리 만들기
  36. 36. 36 Ⅴ. Performance Tuning 데이터 간략화 1. WFS에만 해당하는 기법임 2. 도형컬럼과 키컬럼만이 있도록 레이어를 구성하는 것이 좋다. 3. 지적 등의 자료에는 보통 수십 개의 컬럼이 존재 4. WFS등 XML로 데이터 가져올 때 컬럼수에 따른 부하가 더 커진다. 5. 도형과 키 필드만을 가져와 나머지 속성은 필요시 DB 에 조회하는 방식으로 개발하는 것 권정 컬럼 최소화 1. 도형에서 불필요하게 많은 점을 제거 2. 주로 더글라스푸커 간략화 알고리즘 사용 3. Quantum GIS에서 Vector  Geometry Tools  Simplify geometries 기능을 이용해 수행 가능 4. 디스플레이 축척에 맞는 정도로 간략화 해주는 것이 좋음 5. 확대되었을 때와 축소되었을 때 서로 다른 정도로 간략화된 레이어를 보여주면 더 효과적 도형 간략화 1. 한반도 젂체가 그려진 피처를 땅을 표현하기 위해 계속 켜놓는 경우 등에 매우 느려지는 현상 발생 2. 동단위의 지역을 보고 있을 때도 땅 색 표현을 위해 수십만개 점을 가진 한반도를 계속 그림 3. 길고 점이 많은 폴리라인의 경우도 동일 현상 발생 4. 객체들을 일정 크기로 썰어 주면 해결 가능 5. QGIS에서 Research Tools  Vector grid로 그리드 만들어 Geoprocessing Tools  Intersect 큰 도형 분할
  37. 37. OpenGeo Suite 기술 세미나 Q&A 감사합니다.

×