Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 103 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
103
Dung lượng
5,08 MB
Nội dung
ĐẠI HỌC QUỐC GIA TP HCM TRƯỜNG ĐẠI HỌC BÁCH KHOA - TRƯƠNG VŨ CƯỜNG DỊCH VỤ GEOPROCESSING TRÊN NỀN WEB THEO ĐẶC TẢ WPS CỦA OGC Chuyên ngành: BẢN ĐỒ, VIỄN THÁM VÀ HỆ THÔNG TIN ĐỊA LÝ Mã số: 604476 LUẬN VĂN THẠC SĨ TP HỒ CHÍ MINH, tháng năm 2011 CƠNG TRÌNH ĐƯỢC HỒN THÀNH TẠI TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH Cán hướng dẫn khoa học: TS TRẦN TRỌNG ĐỨC Cán chấm nhận xét 1: TS VŨ XUÂN CƯỜNG Cán chấm nhận xét 2: TS NGUYỄN KIM LỢI Luận văn thạc sĩ bảo vệ Trường Đại Học Bách Khoa, ĐHQG Tp Hồ Chí Minh ngày 08 tháng 09 năm 2011 Thành phần Hội đồng đánh giá luận văn thạc sĩ gồm: TS LÊ TRUNG CHƠN TS VŨ XUÂN CƯỜNG TS NGUYỄN KIM LỢI TS LÊ MINH VĨNH TS TRẦN TRỌNG ĐỨC Xác nhận Chủ tịch Hội đồng đánh giá luận văn Bộ môn quản lý chuyên ngành sau luận văn sửa chữa Chủ tịch Hội đồng đánh giá LV TS LÊ TRUNG CHƠN Bộ môn quản lý chuyên ngành ĐẠI HỌC QUỐC GIA TP.HCM TRƯỜNG ĐẠI HỌC BÁCH KHOA CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập - Tự - Hạnh phúc NHIỆM VỤ LUẬN VĂN THẠC SĨ Họ tên học viên: TRƯƠNG VŨ CƯỜNG MSHV: 09100335 Ngày, tháng, năm sinh: 07/03/1980 Nơi sinh: An Giang Chuyên ngành: Bản đồ, viễn thám hệ thông tin địa lý Mã số : 604476 I TÊN ĐỀ TÀI: DỊCH VỤ GEOPROCESSING TRÊN NỀN WEB THEO ĐẶC TẢ WPS CỦA OGC II NHIỆM VỤ VÀ NỘI DUNG: - Nghiên cứu đặc tả WPS OGC - Nghiên cứu thư viện xử lý liệu không gian SEXTANTE - Nghiên cứu framework hỗ trợ xây dựng dịch vụ geoprocessing theo đặc tả WPS - Nghiên cứu xây dựng thuật tốn xử lý khơng gian sử dụng thư viện SEXTANTE dịch vụ geoprocessing web - Khai thác dịch vụ nhiều tảng khác thông qua internet: phần mềm GIS desktop, webgis, trình duyệt với định dạng liệu khác III NGÀY GIAO NHIỆM VỤ : 14/02/2011 IV NGÀY HOÀN THÀNH NHIỆM VỤ: 30/06/2011 V CÁN BỘ HƯỚNG DẪN : TS TRẦN TRỌNG ĐỨC Tp HCM, ngày tháng năm 2011 CÁN BỘ HƯỚNG DẪN (Họ tên chữ ký) TS TRẦN TRỌNG ĐỨC CHỦ NHIỆM BỘ MÔN ĐÀO TẠO (Họ tên chữ ký) LỜI CẢM ƠN Sau thời gian dài học tập nghiên cứu, cuối hồn thành luận nghiên cứu Đây thời điểm thích hợp để tơi bày tỏ lịng biết ơn người thân giúp đỡ động viên suốt thời gian qua Trước tiên, xin gửi lời cảm ơn chân thành đến Thầy, TS Trần Trọng Đức, người hướng dẫn khoa học định hướng cho suốt thời gian thực luận văn Những góp ý, gợi ý Thầy góp phần hồn thiện luận văn tơi Xin cảm ơn Bố Mẹ, Ba Má, anh chị Hai, chị Trang người thân gia đình thơng cảm chia sẻ khó khăn lúc làm luận văn Xin cảm ơn Thầy Lê Văn Trung bạn đồng nghiệp Trung tâm Địa Tin Học giúp đỡ nhiều tạo điều kiện tốt để tơi hồn thành luận văn Cuối cùng, xin gửi lời cảm ơn đến vợ gái, niềm vui hạnh phúc tôi, tiếp thêm sức mạnh niềm tin để luận văn hoàn thành tiến độ Luận văn dành tặng riêng cho gái ba! Kiên Giang, ngày 28 tháng năm 2011 Trương Vũ Cường TÓM TẮT LUẬN VĂN Đa số trang webgis đáp ứng tốt khả hiển thị, truy vấn thông tin; chức thực xử lý, phân tích liệu khơng gian/thuộc tính (geoprocessing) cịn hạn chế Vì thế, toán đặt cần phải bổ sung chức thực geoprocessing web nhằm tạo ứng dụng webgis có đầy đủ tính năng: quản lý, hiển thị, truy vấn phân tích liệu không gian Đặc tả WPS OGC mở khả cung cấp, trao đổi thực công việc xử lý không gian hệ thống webgis khác thơng qua internet Từ đó, luận văn tiếp cận theo hướng xây dựng dịch vụ geoprocessing webgis theo đặc tả WPS OGC Luận văn tiến hành nghiên cứu dịch vụ web, đặc tả WPS OGC để xây dựng dịch vụ geoprocessing Song song đó, cịn nghiên cứu thư viện SEXTANTE phần mềm liên quan để sử dụng dịch vụ Luận văn tiến hành xây dựng dịch vụ geoprocessing dựa 52N WPS framework để minh họa khả phát triển dịch vụ, xây dựng dịch vụ Phần thử nghiệm tiến hành với định dạng liệu khác nhau, thực thi tảng khác phần mềm GIS desktop, qua trang webgis hay trực tiếp qua trình duyệt Dịch vụ trang web public internet thử nghiệm thành công thể tính thực hướng tiếp cận Kết thử nghiệm luận văn cho thấy kết tương đối chấp nhận hướng nghiên cứu – dịch vụ geoprocessing web theo đặc tả WPS OGC Bên cạnh đó, luận văn tồn hạn chế chưa khảo sát giới hạn khả dịch vụ thử nghiệm; phần bảo mật hay phân quyền sử dụng dịch vụ không đề cập Thuật toán xử lý dịch vụ xây dựng thử nghiệm sử dụng dựa thư viện jts mà thư viện SEXTANTE mục tiêu đề ban đầu Việc thử nghiệm phụ thuộc nhiều vào tảng phần mềm 52North điểm hạn chế luận văn MỤC LỤC MỤC LỤC DANH MỤC HÌNH DANH MỤC BẢNG CHƯƠNG 1: GIỚI THIỆU 1.1 Tổng quan dịch vụ geoprocessing web 1.1.1 Dịch vụ web 1.1.2 Dịch vụ webgis Bài toán geoprocessing web vấn đề đặt 1.2 1.2.1 Bài toán geoprocessing web 1.2.2 Những vấn đề đặt geoprocessing web Xác định phạm vi đề tài 1.3 1.3.1 Mục tiêu đề tài 1.3.2 Phạm vi thực CHƯƠNG 2: CÁC CƠNG TRÌNH LIÊN QUAN 10 2.1 Các cơng trình nghiên cứu liên quan dịch vụ geoprocessing theo đặc tả WPS OGC:10 2.2 Nhận xét hướng tiếp cận : 14 CHƯƠNG 3: ĐẶC TẢ WPS CỦA OGC VÀ THƯ VIỆN XỬ LÝ DỮ LIỆU KHÔNG GIAN SEXTANTE 15 3.1 Đặc tả WPS OGC 15 3.2 Thư viện xử lý liệu không gian SEXTANTE 20 CHƯƠNG 4: DỊCH VỤ GEOPROCESSING THEO ĐẶC TẢ WPS CỦA OGC SỬ DỤNG THƯ VIỆN XỬ LÝ DỮ LIỆU KHÔNG GIAN SEXTANTE 24 4.1 Dịch vụ web khái niệm liên quan: 24 4.1.1 Kiến trúc dịch vụ web: 25 4.1.2 Các khái niệm liên quan: 26 Dịch vụ web theo đặc tả WPS OGC 29 4.2 4.2.1 Các hoạt động GetCapabilities, DescribeProcess, Execute 29 4.2.2 Mô hình sử dụng dịch vụ geoprocessing theo đặc tả WPS: 47 4.3 Tích hợp thuật tốn có với dịch vụ WPS: 48 4.4 Các công cụ hỗ trợ xây dựng dịch vụ geoprocessing theo đặc tả WPS : 49 4.4.1 Python Web Processing Service (PyWPS): 50 4.4.2 520North Web Processing Service (520N WPS): 50 4.4.3 deegree processingService (deegreeWPS): 51 CHƯƠNG 5: THỬ NGHIỆM VÀ KẾT QUẢ 52 5.1 Thử nghiệm: 52 5.1.1 Xây dựng thuật toán xử lý 520N WPS framework: 52 5.1.2 Cài đặt dịch vụ geoprocessing máy chủ web: 59 5.1.3 Chạy thử dịch vụ sử dụng phương thức HTTP GET, HTTP POST: 62 5.1.4 Chạy thử dịch vụ phần mềm GIS desktop - OpenJUMP: 67 5.1.5 Chạy thử dịch vụ OpenLayers: 69 5.1.6 Thử nghiệm thuật toán thư viện SEXTANTE: 74 5.2 Nhận xét 75 CHƯƠNG 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 78 6.1 Kết luận: 78 6.2 Hướng phát triển 78 TÀI LIỆU THAM KHẢO 80 LÝ LỊCH TRÍCH NGANG 83 PHỤ LỤC 84 DANH MỤC HÌNH Hình 1: SEXTANTE toolbox 21 Hình 2: SEXTANTE Graphical Modeler 22 Hình 3: SEXTANTE command line 22 Hình 4: SEXTANTE History Manager 23 Hình 5: Khái quát hoạt động dịch vụ web 24 Hình 6: Truyền nhận thông điệp dịch vụ web 24 Hình 7: Kiến trúc chung dịch vụ web 25 Hình 8: Các thành phần URI 26 Hình 9: Giao thức HTTP GET 27 Hình 10: Giao thức HTTP POST 28 Hình 11: Các hoạt động dịch vụ web theo đặc tả WPS 30 Hình 12: Mơ hình sử dụng dịch vụ geoprocessing 48 Hình 13: Tạo package chứa thuật toán xử lý 53 Hình 14: Tạo lớp để viết code xử lý 54 Hình 15: Cấu hình để thuật tốn để thuật tốn hoạt động 59 Hình 16: Build mã nguồn tạo cài đặt 59 Hình 17: Cài đặt dịch vụ Tomcat 60 Hình 18: Đăng nhập vào trang web quản lý dịch vụ 60 Hình 19: Quản lý thuật tốn dịch vụ 61 Hình 20: Cấu hình để sử dụng thuật toán thư viện SEXTANTE 61 Hình 21: Kết trả hoạt động GetCapabilities 62 Hình 22: Kết trả hoạt động Describeprocess 63 Hình 23: Hoạt động Execute với kết trả dạng RAW 64 Hình 24: Hoạt động Execute với kết nhúng tài liệu trả 65 Hình 25: Hoạt động Execute với đường liên kết kết nhúng tài liệu trả 66 Hình 26: Tài liệu trả trạng thái hoạt động Execute 66 Hình 27: Tài liệu cập nhật đường liên kết kết hoạt động Execute thực xong 67 Hình 28: Cấu hình dịch vụ geoprocessing muốn sử dụng OpenJUMP 67 Hình 29: OpenJUMP với lớp liệu shapefile 68 Hình 30: Kết thực thuật toán buffer_demo 68 Hình 31: OpenJUMP với lớp liệu WFS 69 Hình 32: Kết xử lý với thuật toán buffer_demo 69 Hình 33: Giao diện nguyên mẫu WPS Openlayers Client 70 Hình 34: Giao diện trang web thử nghiệm 71 Hình 35: Trang web với lớp liệu WFS 71 Hình 36: Chọn dịch vụ thuật tốn xử lý 72 Hình 37: Nhập tham số đầu vào thuật toán 72 Hình 38: Kết thực dịch vụ webgis 73 Hình 39: Kết xử lý dịch vụ với thuật toán thư viện SEXTANTE 75 DANH MỤC BẢNG Bảng 1: Phương thức sử dụng hoạt động dịch vụ web 30 Bảng 2: Tham số yêu cầu hoạt động GetCapibilities 31 Bảng 3: Tham số phản hồi hoạt động GetCapibilities 34 Bảng 4: Tham số yêu cầu hoạt động DescribeProcess 37 Bảng 5: Tham số phản hồi hoạt động DescribeProcess 41 Bảng 6: Tham số yêu cầu hoạt động Execute 44 Bảng 7: Tham số phản hồi hoạt động Execute 46 CHƯƠNG 1: GIỚI THIỆU 1.1 Tổng quan dịch vụ geoprocessing web 1.1.1 Dịch vụ web Một xu hướng công nghệ thông tin xây dựng ứng dụng web với Kiến trúc định hướng dịch vụ (Service Oriented Architecture – SOA) Việc xây dựng ứng dụng web với Kiến trúc định hướng dịch vụ có ưu điểm: Tương tác xử lý liệu từ nơi đâu: Dữ liệu ứng dụng lưu máy chủ nên người dùng làm việc nơi đâu có kết nối internet trình duyệt thích hợp Ln sử dụng phiên ứng dụng: Do không cần cài đặt phần mềm, nên có phiên mới, người xây dựng phần mềm cần cập nhật máy chủ Và người dùng dùng phiên ứng dụng Khả tái sử dụng mở rộng ứng dụng linh hoạt: Các dịch vụ viết theo chuẩn mở nên dịch vụ xây dựng sử dụng nhiều ứng dụng khác mà không cần phải viết lại Các dịch vụ kết hợp với để tạo thành dịch vụ Dịch vụ web thành phần để tạo ứng dụng phân tán dựa kiến trúc định hướng dịch vụ Các thành phần cài đặt thực thi thiết bị khác nhau/nền tảng phần mềm khác (máy tính, thiết bị cầm tay/ Windows, Unix) thơng qua internet Khả có dịch vụ web dựa giao diện chuẩn đặc tả mở Dịch vụ web sử dụng giao thức HTTP (HyperText Transport Protocal) XML (eXtensible Markup Language) làm phương tiện truyền nhận thơng điệp client (trình khách) server (trình chủ) 84 PHỤ LỤC Phần mềm sử dụng, thành phần liên quan địa tải về: 1.1 Xây dựng dịch vụ geoprocessing: Java Development Kit (JDK) Standard Edition, phiên 6: mơi trường lập trình Java http://download.oracle.com/otn-pub/java/jdk/6u26-b03/jdk-6u26windows-i586.exe Eclipse IDE for Java EE Developers, phiên 3.6.2: công cụ lập trình mơi trường Java http://www.eclipse.org/downloads/download.php?file=/technology/e pp/downloads/release/helios/SR2/eclipse-jee-helios-SR2-win32.zip Apache Maven, phiên 3.0.3: phần mềm quản lý project lập trình http://www.apache.org/dyn/closer.cgi/maven/binaries/apache-maven3.0.3-bin.zip Subclipse: Bộ cơng cụ quản lý phiên lập trình phần mềm tích hợp vào Eclipse Maven Integration for Eclipse: cơng cụ tích hợp Maven vào Eclipse m2eclipse: công cụ để quản lý, build project 520N WPS framework source code: Mã nguồn 520N WPS framework https://svn.52north.org/svn/geoprocessing/main/WPS/trunk/WPS/ ApacheTomcat, phiên 6.0.32: phần mềm máy chủ web, cho phép triển khai ứng dụng web http://mirror-fpt-telecom.fpt.net/apache/tomcat/tomcat6/v6.0.32/bin/apache-tomcat-6.0.32.exe 85 1.2 Thử nghiệm dịch vụ với HTTP GET/POST Mozilla Firefox, phiên 5.0: trình duyệt web http://www.mozilla.com/products/download.html?product=firefox5.0&os=win&lang=en-US HTTP XML Post testing tool: phần mềm thử nghiệm phương thức HTTP Post http://teleflow.org/software/opensource/tools/TFHTTPXMLPost.zip 1.3 Thử nghiệm với OpenJUMP OpenJUMP, phiên 1.4.0.3: phần mềm GIS desktop nguồn mở http://sourceforge.net/projects/jumppilot/files/OpenJUMP/1.4.0.3/openjump-windows-setup1.4.0.3.exe/download WPS Jump client, phiên 2.0 RC1: plugin hỗ trợ thực dịch vụ WPS OpenJUMP http://52north.org/maven/repo/releases/org/n52/wps/52n-wps-clientjump/2.0-rc1/52n-wps-client-jump-2.0-rc1-deps.zip WFSPlugin, phiên 1.1.0: hỗ trợ tải liệu WFS vào OpenJUMP http://sourceforge.net/projects/jumppilot/files/p_%20WFS%20Plugin/1.1.0/WFSPlugin1.1.0.zip/download 1.4 Thử nghiệm với WPS OpenLayer Client 52°North WPS OpenLayers Client Proxy, phiên 1.0: công cụ liên kết dịch vụ WPS trang webgis https://52north.org/download/Geoprocessing/Clients/OpenLayers/wp s_proxy.war 52°North WPS OpenLayers Client, phiên 1.0: trang webgis có tích hợp cơng cụ liên kết 86 https://52north.org/download/Geoprocessing/Clients/OpenLayers/O L_2_9.zip Mã nguồn thuật toán xây dựng 2.1 Thuật toán sum2num_demo package lucky.wps.sum2num; import import import import java.util.ArrayList; java.util.HashMap; java.util.List; java.util.Map; import org.n52.wps.io.data.IData; import org.n52.wps.io.data.binding.literal.LiteralDoubleBinding; import org.n52.wps.server.AbstractSelfDescribingAlgorithm; public class sum2num_demo extends AbstractSelfDescribingAlgorithm { @Override public Map run(Map inputData) { // TODO Auto-generated method stub List so1List = inputData.get("firstNum"); Double so1 = ((LiteralDoubleBinding) so1List.get(0)).getPayload(); List so2List = inputData.get("secondNum"); Double so2 = ((LiteralDoubleBinding) so2List.get(0)).getPayload(); Double KQ = so1 + so2; HashMap resulthash = new HashMap(); resulthash.put("Result", new LiteralDoubleBinding(KQ)); return resulthash; } @Override public Class getInputDataType(String id) { // TODO Auto-generated method stub if(id.equalsIgnoreCase("firstNum")){ return LiteralDoubleBinding.class; } if(id.equalsIgnoreCase("secondNum")){ return LiteralDoubleBinding.class; } return null; } @Override public Class getOutputDataType(String id) { // TODO Auto-generated method stub return LiteralDoubleBinding.class; } 87 @Override public List getInputIdentifiers() { // TODO Auto-generated method stub List list = new ArrayList(); list.add("firstNum"); list.add("secondNum"); return list; } @Override public List getOutputIdentifiers() { // TODO Auto-generated method stub List identifierList = new ArrayList(); identifierList.add("Result"); return identifierList; } } 2.2 Thuật toán buffer_demo package lucky.wps.buffer; import import import import import import java.util.ArrayList; java.util.HashMap; java.util.Iterator; java.util.List; java.util.Map; java.util.UUID; import javax.xml.namespace.QName; import import import import import import import import import import import org.geotools.feature.DefaultFeatureCollections; org.geotools.feature.FeatureCollection; org.n52.wps.io.SchemaRepository; org.n52.wps.io.data.IData; org.n52.wps.io.data.binding.complex.GTVectorDataBinding; org.n52.wps.io.data.binding.literal.LiteralDoubleBinding; org.n52.wps.io.datahandler.xml.GTHelper; org.n52.wps.server.AbstractSelfDescribingAlgorithm; org.opengis.feature.simple.SimpleFeature; org.opengis.feature.simple.SimpleFeatureType; org.opengis.referencing.crs.CoordinateReferenceSystem; import com.vividsolutions.jts.geom.Geometry; public class buffer_demo extends AbstractSelfDescribingAlgorithm { @Override public Map run(Map inputData) { // TODO Auto-generated method stub List dataList = inputData.get("SpatialData"); IData firstInputData = dataList.get(0); 88 FeatureCollection featureCollection = ((GTVectorDataBinding) firstInputData).getPayload(); List widthDataList = inputData.get("Width"); Double width = ((LiteralDoubleBinding) widthDataList.get(0)).getPayload(); FeatureCollection fcnew = DefaultFeatureCollections.newCollection(); double i = 0; String uuid = UUID.randomUUID().toString(); SimpleFeatureType featureType = null; for (Iterator ia = featureCollection.iterator(); ia.hasNext(); ) { SimpleFeature feature = (SimpleFeature) ia.next(); Geometry geometry = (Geometry) feature.getDefaultGeometry(); Geometry result = null; result = geometry.buffer(width);// runBuffer(geometry, width);; if(i==1){ CoordinateReferenceSystem crs = feature.getFeatureType().getCoordinateReferenceSystem(); if(geometry.getUserData() instanceof CoordinateReferenceSystem){ crs = ((CoordinateReferenceSystem) geometry.getUserData()); } featureType = GTHelper.createFeatureType(feature.getProperties(), result, uuid, crs); QName qname = GTHelper.createGML3SchemaForFeatureType(featureType); SchemaRepository.registerSchemaLocation(qname.getNamespaceURI(), qname.getLocalPart()); } if (result != null) { SimpleFeature createdFeature = (SimpleFeature) GTHelper.createFeature("ID"+new Double(i).intValue(),result,(SimpleFeatureType) featureType,feature.getProperties()); feature.setDefaultGeometry(result); fcnew.add(createdFeature); } } HashMap resulthash = new HashMap(); 89 resulthash.put("BufferResult", new GTVectorDataBinding(fcnew)); return resulthash; } @Override public Class getInputDataType(String id) { // TODO Auto-generated method stub if(id.equalsIgnoreCase("SpatialData")){ return GTVectorDataBinding.class; }else if(id.equalsIgnoreCase("Width")){ return LiteralDoubleBinding.class; } return null; } @Override public Class getOutputDataType(String id) { // TODO Auto-generated method stub return GTVectorDataBinding.class; } @Override public List getInputIdentifiers() { // TODO Auto-generated method stub List identifierList = new ArrayList(); identifierList.add("SpatialData"); identifierList.add("Width"); return identifierList; } @Override public List getOutputIdentifiers() { // TODO Auto-generated method stub List identifierList = new ArrayList(); identifierList.add("BufferResult"); return identifierList; } } 2.3 Thuật toán intersect_demo package lucky.wps.intersect; import import import import import java.util.ArrayList; java.util.HashMap; java.util.Iterator; java.util.List; java.util.Map; import org.geotools.feature.DefaultFeatureCollections; import org.geotools.feature.FeatureCollection; import org.n52.wps.io.data.IData; 90 import import import import import org.n52.wps.io.data.binding.complex.GTVectorDataBinding; org.n52.wps.io.datahandler.xml.GTHelper; org.n52.wps.server.AbstractSelfDescribingAlgorithm; org.opengis.feature.Feature; org.opengis.feature.simple.SimpleFeature; import com.vividsolutions.jts.geom.Geometry; public class intersect_demo extends AbstractSelfDescribingAlgorithm { @Override public Map run(Map inputData) { List dataList = inputData.get("FeatureClass1"); IData firstInputData = dataList.get(0); FeatureCollection featCol1 = ((GTVectorDataBinding) firstInputData).getPayload(); List dataListLS = inputData.get("FeatureClass2"); IData secondInputData = dataListLS.get(0); FeatureCollection featCol2 = ((GTVectorDataBinding) secondInputData).getPayload(); FeatureCollection featureCollection = DefaultFeatureCollections.newCollection(); Iterator polygonIterator = featCol1.iterator(); int j = 1; while(polygonIterator.hasNext()){ SimpleFeature polygon = (SimpleFeature) polygonIterator.next(); Iterator lineStringIterator = featCol2.iterator(); int i = 1; while(lineStringIterator.hasNext()){ SimpleFeature lineString = (SimpleFeature) lineStringIterator.next(); Geometry lineStringGeometry = null; if(lineString.getDefaultGeometry()==null && lineString.getAttributeCount()>0 &&lineString.getAttribute(0) instanceof Geometry){ lineStringGeometry = (Geometry)lineString.getAttribute(0); }else{ lineStringGeometry = (Geometry) lineString.getDefaultGeometry(); } try{ Geometry polygonGeometry = (Geometry) polygon.getDefaultGeometry(); Geometry intersection = polygonGeometry.intersection(lineStringGeometry); Feature resultFeature = createFeature(""+j+"_"+i, intersection, polygon); 91 if(resultFeature!=null){ featureCollection.add(resultFeature); } }catch(Exception e){ e.printStackTrace(); } i++; } j++; } HashMap resulthash = new HashMap(); resulthash.put("IntersectResult", new GTVectorDataBinding(featureCollection)); return resulthash; } private Feature createFeature(String id, Geometry geometry, SimpleFeature bluePrint) { Feature feature = GTHelper.createFeature(id, geometry, bluePrint.getFeatureType(), bluePrint.getProperties()); return feature; } @Override public Class getInputDataType(String id) { // TODO Auto-generated method stub return GTVectorDataBinding.class; } @Override public Class getOutputDataType(String id) { // TODO Auto-generated method stub return GTVectorDataBinding.class; } @Override public List getInputIdentifiers() { // TODO Auto-generated method stub List identifierList = new ArrayList(); identifierList.add("FeatureClass1"); identifierList.add("FeatureClass2"); return identifierList; } @Override public List getOutputIdentifiers() { // TODO Auto-generated method stub List identifierList = new ArrayList(); identifierList.add("IntersectResult"); return identifierList; 92 } } Tài liệu gửi nhận thử nghiệm hoạt động Execute 3.1 Kết trả dạng Raw Request: org.n52.wps.server.algorithm.SimpleBufferAlgor ithm data width Distance which people will walk to get to a playground. 0.03 result Response 146.43870659600844 41.41022695874154147.128257 30710406 41.21160259600843146.577039280 82512 -41.2212685350332 146.64222114135788 -41.225208659990834 146.64943471656102 -41.22654329327287 146.65610870446307 -41.22958874868911 146.77988094771442 41.30558800532337 146.80583678821827 -41.31652349878153 146.81092923399208 -41.3192749288836 146.83646579059808 -41.33644651802821 146.8691388851344 -41.35010333306393 146.89858360597543 [……………………………………………………………………………………………………………………………] -41.38446129438088 147.11461805018817 -41.38812064164042 147.10938873327942 -41.39081150394496 147.10373493503525 41.392430472965195 147.09787392775152 -41.3929153326296 147.09203094665125 -41.39224745005318 147.0864305342213 -41.39045249158882 147.08128791117065 -41.38759943648364 147.07680070561912 41.32921453360509road 3.2 Kết trả nhúng tài liệu phản hồi Request: org.n52.wps.server.algorithm.SimpleBufferAlgor ithm data width Distance which people will walk to get to a playground. 0.03 result Response: org.n52.wps.server algorithm.SimpleBufferAlgorithmorg.n52.wps.server algorithm.SimpleBufferAlgorithmProcess has succeeded resultresult< ns:Data>146.43870659600844 41.41022695874154147.128257 30710406 41.21160259600843146.577039280 82512 -41.2212685350332 146.64222114135788 -41.225208659990834 146.64943471656102 -41.22654329327287 146.65610870446307 -41.22958874868911 146.77988094771442 41.30558800532337 146.80583678821827 -41.31652349878153 146.81092923399208 -41.3192749288836 146.83646579059808 -41.33644651802821 146.8691388851344 [………………………………………………………………………………………………………………………………] -41.09462941449633 147.431229481981 -41.10916796656842 147.10938873327942 -41.39081150394496 147.10373493503525 41.392430472965195 147.09787392775152 -41.3929153326296 147.09203094665125 -41.39224745005318 147.0864305342213 -41.39045249158882 147.08128791117065 -41.38759943648364 147.07680070561912 -41.383797926045354 147.07314135835958 41.379194050188175 147.04086492365835 41.32921453360509road 3.3 Kết trả liên kết nhúng tài liệu phản hồi Request: org.n52.wps.server.algorithm.SimpleBufferAlgor ithm data width Distance which people will walk to get to a 96 playground. 0.03 result Response: org.n52.wps.server algorithm.SimpleBufferAlgorithmorg.n52.wps.server algorithm.SimpleBufferAlgorithmProcess has succeeded resultresult< ns:Reference encoding="UTF-8" mimeType="text/xml" href="http://localhost:8080/wps/RetrieveResultServlet?id=84c4a a7a-98a2-4cc9-9e59-c509f40f37d8resultresult-64edf7ea-1e314ff4-ad55ce7c1f191214"/> 3.4 Kết trả tài liệu phản hồi trạng thái thực thuật toán Request: org.n52.wps.server.algorithm.SimpleBufferAlgor ithm data width Distance which people will walk to get to a playground. 0.03 result Response: org.n52.wps.server algorithm.SimpleBufferAlgorithmorg.n52.wps.server algorithm.SimpleBufferAlgorithm Sau thực xong 98 org.n52.wps.server.algorithm.SimpleBufferAlgorithm org.n52.wps.server.algorithm.SimpleBufferAlgorithm Process successful result result ... 4.2 Dịch vụ web theo đặc tả WPS OGC Dịch vụ web theo đặc tả WPS giống dịch vụ web thông thường Tuy nhiên, việc thiết kế, xây dựng dịch vụ web theo đặc tả WPS phải tuân thủ nội dung quy định đặc. .. đó, luận văn tiếp cận theo hướng xây dựng dịch vụ geoprocessing webgis theo đặc tả WPS OGC Luận văn tiến hành nghiên cứu dịch vụ web, đặc tả WPS OGC để xây dựng dịch vụ geoprocessing Song song... Chaining (dịch vụ tạo từ dịch vụ riêng lẻ, dịch vụ gửi nhận kết trực tiếp từ dịch vụ riêng lẻ này); Cascading Service Chaining (dịch vụ 12 tạo từ dịch vụ riêng lẻ, nhiên, dịch vụ xếp với dịch vụ trước