7. Bố cục của luận văn
1.3. CÁC CÔNG CỤ HỖ TRỢ
1.3.1. GeoServer
GeoServer là phần mềm dịch vụ mã nguồn mở với mục đích kết nối những thông tin địa lý có sẵn tới các trang Web địa lý sử dụng chuẩn mở. Được bắt đầu bởi một tổ chức phi lợi nhuận có tên The Open Planning Project (TOPP), nhằm mục đích hỗ trợ việc xử lý thông tin không gian địa lý với chất lượng cao, đơn giản trong sử dụng, là phần mềm mã nguồn mở nhằm cung cấp và chia sẻ dữ liệu. Được kỳ vọng sẽ trở thành một phương thức đơn giản để kết nối những nguồn thông tin có sẵn từ Google Earth, NASA World Wind nhằm tạo ra các dịch vụ Webmap như Google Maps, Windows Live Local và Yahoo Maps [1].
GeoServer được viết bằng ngôn ngữ Java, cho phép người sử dụng chia sẻ và chỉnh sửa dữ liệu không gian địa lý (geospatial data).
Là một dự án mang tính cộng đồng, GeoServer được phát triển, kiểm thử và hỗ trợ bởi nhiều nhóm đối tượng và tổ chức khác nhau trên toàn thế giới. GeoServer là thành phần nền tảng của Geospatial Web.
GeoServer là sự phối hợp các chuẩn hoạt động của Open Geospatial Consortium (OGC). Chuẩn dữ liệu không gian OGC là một tổ chức phi lợi nhuận, dẫn đầu trên thế giới về phát triển các chuẩn dữ liệu địa lý và các dịch vụ, Tổ chức OGC đã đưa ra ba chuẩn dịch vụ truy cập thông tin địa lý mang tính chuẩn hóa cao là: Web Map Service (WMS), Web Feature Service (WFS) và Web Coverage Service (WCS). Ngoài ra còn có các chuẩn khác như GeoParser và GeoCoder. Trong đó, hai chuẩn WMS và WFS là hai chuẩn cơ bản được sử dụng rất nhiều nhằm cung cấp các dịch vụ biểu diễn các thông tin địa lý ra ảnh bản đồ và truy vấn các dữ liệu địa lý đó [6].
- Web Map Service (WMS): WMS là một trong các chuẩn phổ biến nhất của OGC. WMS tạo ra các bản đồ dưới dạng ảnh. Các bản đồ này tự bản thân chúng không chứa dữ liệu. Một WMS cơ bản cho phép Client kết nối và lấy bản đồ thông qua các phương thức:
+ GetMap: Trả về các lớp bản đồ dựa vào các tham số được cung cấp bởi Client. Các tham số có thể được nhúng vào trong một URL (Uniform Resource Locator) của
dịch vụ.
+ GetFeatureInfo: Trả về thông tin liên quan đến một đối tượng được hiển thị trên bản đồ tại vị trí X, Y. Phương thức này cho phép Client có thể truy vấn để có thêm thông tin về một đối tượng.
+ GetCapabilties: Trả về tài liệu XML mô tả chức năng của WMS.
Ngoài ra, WMS còn cung cấp cho Client kiểm soát các kiểu hiển thị bản đồ thông qua Styled Layer Desrciptor (SLD).
- Web Feature Service (WFS): WFS cung cấp các đối tượng dữ liệu dưới dạng định dạng thống nhất GML (Geography Markup Languge). Dữ liệu mà Client nhận được là một đặc tả về dữ liệu không gian và thông tin thuộc tính kèm theo. Một WFS cơ bản cho phép Client kết nối và lấy dữ liệu về theo các phương thức:
+ GetCapabilities: Trả về tài liệu XML mô tả chức năng của WFS.
+ DescribeFeatureType: Trả về một lược đồ XML định nghĩa các lớp đối tượng. + GetFeature: Trả về một tập các đối tượng dữ liệu thoả mãn các ràng buộc được mô tả trong yêu cầu.
Ngoài ra, WFS còn cho phép Client thực hiện các giao tác tạo, xóa, sửa các đối tượng.
- Web Coverage Service (WCS): WCS cung cấp dữ liệu dưới dạng Coverage. Coverage là loại dữ liệu biểu diễn các hiện tượng thay đổi theo không gian. WCS cung cấp các phương thức để Client truy cập và lấy dữ liệu về:
+ GetCapabilities: Trả về một tài liệu XML (Extensible Markup Languge) mô tả chức năng của WCS.
+ DescribeCoverage: Trả về một tài liệu XML mô tả các Coverage mà WCS Server có thể cung cấp.
+ GetCoverage: Trả về một Coverage thoả mãn các điều kiện mà Client cung cấp. GeoServer có khả năng kết nối với các nguồn CSDL thông qua hầu hết các hệ quản trị cơ sở dữ liệu phổ biến như: PostgreSQL/PostGIS, Microsoft SQL Server 2008, MySQL,… hoặc các tập tin dữ liệu không gian như Shapfile, GeoTiff,…
để tạo kiểu thể hiện bản đồ (style) theo chuẩn WMS, tập tin SLD được cấu trúc theo định dạng XML (Extensible Markup Language).
GeoServer có thể hiển thị dữ liệu trên các ứng dụng bản đồ phổ biến như Google Maps, Google Earth, Yahoo Maps, and Microsoft Virtual Earth.
Hình 1.10. Mô hình GeoServer
1.3.2. PostgreSQL/PostGIS
a. PostgreSQL
PostgreSQL (tiền thân là Postgres) được thành lập năm 1986 bởi khoa điện toán của Đại học Califorial ở Berkeley. Từ năm 1995, PostgreSQL trở thành phần mềm mã nguồn mở và hiện nay đã đạt được đến phiên bản 9.6.4. Sau nhiều năm phát triển, đến nay PostgreSQL đã có được uy tín cao về tính ổn định, tính toàn vẹn và tính chính xác của dữ liệu. Nó theo chuẩn SQL99 và đáp ứng 4 thuộc tính cơ bản của hệ quản trị CSDL; sử dụng câu truy vấn phức tạp (complex query); kết nối (joint); khóa ngoại (foreign key); thủ tục sự kiện (trigger); các khung nhìn (view), tính toàn vẹn của các giao dịch (integrity transactions), kiểm tra đồng thời đa phiên bản (multiversion
concurrency control).
Hệ quản trị cơ sở dữ liệu PostgreSQL có đầy đủ tính năng của một cơ sở dữ liệu quan hệ như sử dụng các câu truy vấn SQL, các bảng quan hệ, các khóa,… và đặc biệt ở đây là tốc độ truy cập của PostgreSQL là rất cao và cho phép nhiều người truy cập cùng một lúc, nó thích ứng xây dựng những ứng dụng trên mạng Internet.
Ưu điểm của PostgreSQL: - Tuân thủ các chuẩn của SQL.
- Hoạt động được trên nhiều hệ điều hành khác nhau như Window, Linux, Unix…
- Hỗ trợ các ngôn ngữ như C/C++, Java, .Net, Perl, Python, Ruby, Tcl, ODBC. - Lưu trữ các đối tượng có dữ liệu lớn như hình ảnh, âm thanh, video.
- Có sự thống nhất giữa những người phát triển (tái dụng những kỹ năng và các thư viện đã có).
- Có hầu hết các truy vấn SQL với các kiểu dữ liệu như: Integer, Numeric, Boolean, Char, Varchar, Date, Interval và Timestamp.
- Tạo chỉ mục giúp quá trình truy vấn đạt hiệu quả cao hơn.
- Hỗ trợ các chức năng tìm kiếm tổng quát hóa có thể “gắn” các chỉ mục vào giúp quá trình tìm kiếm được thực hiện trên phạm vi rộng hơn như: compound, unique, partial, and functional indexes.
- Có thể tạo mới kiểu dữ liệu, các hàm, các thủ tục (procedure),…
- Hỗ trợ đa người dùng: dữ liệu không gian có xu hướng là các dữ liệu tham chiếu, tức là được chia sẻ bởi nhiều người dùng. Lưu trữ dữ liệu trong hệ quản trị cơ sở dữ liệu sẽ cung cấp những lợi ích như:
+ Truy cập từ xa thông qua các chuẩn giao tiếp JDBC, ODBC, PERL/DBI,... + Làm tăng tính bảo mật cho dữ liệu như một số người dùng có toàn quyền. Tuy nhiên, một số người dùng chỉ có thể đọc hay không được nhìn thấy.
b. PostGIS
PostGIS được Refraction Research Inc phát triển, như một dự án nghiên cứu công nghệ CSDL không gian. PostGIS hỗ trợ đối tượng địa lý cho CSDL đối tượng
quan hệ PostgreSQL, tích hợp tool import dữ liệu không gian trực tiếp từ Shapefile. PostGIS “kích hoạt khả năng không gian” cho PostgreSQL, cho phép PostgreSQL sử dụng như một CSDL không gian phụ trợ cho các hệ thống thông tin địa lý (GIS), truy vấn, thống kê hoặc xử lý dữ liệu không gian.
PostGIS có sẵn cho PostgreSQL tăng các tính năng dữ liệu hình học có sẵn với việc thêm các kiểu không gian, các hàm, các thao tác và các chỉ mục. Nó là vị trí nhận biết và hỗ trợ cả dữ liệu raster và vector. Nó cũng cung cấp khả năng tương tác với một loạt mã nguồn mở của bên thứ 3 và các công cụ không gian địa lý độc quyền để làm việc, lập bản đồ và vẽ các dữ liệu.
PostGIS được sử dụng như một hệ CSDL không gian nên nó bao gồm tất cả các đặc điểm của CSDL không gian.
Hình 1.11. Vị trí của postGIS trong PostgresSQL
Ưu điểm của PostGIS [6]:
- PostGIS - một CSDL không gian có những ưu điểm để xử lý các thông tin về hình dạng không gian như trả lời các truy vấn về những đối tượng ở gần một vị trí nào đó, những đối tượng nằm trong phạm vi hoặc ở vùng phụ cận của một đối tượng khác, phạm vi của một vùng nơi mà có một hoạt động nào đó đang xảy ra là gì, những
đối tượng nào nằm bên trong một đối tượng khác.
- PostGIS có khả năng lưu trữ và thao tác với dữ liệu rất tốt. Nó cung cấp những khả năng xử lý thông tin địa lý bên trong một môi trường cơ sở dữ liệu. Những hàm SQL bao gồm buffer, intersection, within, distance,… Những hàm này lấy dữ liệu hình học từ các cột trong bảng PostGIS và trả về những hình học mới hoặc những thông tin khác. Ví dụ như hàm distance sẽ tính toán khoảng cách giữa các đặc điểm (feature) không gian, và hàm sẽ trả về một hình mới là một đa giác được làm vùng đệm tại một khoảng cách nào đó từ feature nguồn.
- PostGIS cho phép dễ dàng khi kết nối dữ liệu không gian với dữ liệu phi không gian trong một môi trường dữ liệu không gian và cung cấp đầy đủ sức mạnh của ngôn ngữ truy vấn cấu trúc (SQL) để thực hiện những phân tích khác chẳng hạn như tính chi phí trung bình cho một vùng địa lý,...
- PostGIS còn hỗ trợ thêm GIST-based and R-Tree spatial indexes, đây là điểm riêng biệt nhất của PostGIS so với các hệ quản trị CSDL khác giúp PostGIS dễ dàng quản lý, lưu trữ, khai thác và tìm kiếm thông tin không gian.
- PostGIS hỗ trợ các đối tượng và các hàm được định nghĩa chi tiết trong OGC "Simple Features for SQL". Với PostGIS ta có thể lưu trữ các điểm, đường, vùng, tập hợp điểm, tập hợp đường, tập hợp vùng và các thông tin hình học khác. PostGIS mở rộng chuẩn với sự hỗ trợ cho các tọa độ dạng 3DZ, 3DM và 4D.
PostGIS được hiện thực tuân theo đặc tả “OGC Simple Feature Specifications” cho chuẩn SQL. Bản đặc tả này định nghĩa những thuật toán và lược đồ SQL để thêm (Insert), truy vấn (Query), thao tác (Manipulate) và xóa (Delete) những đối tượng không gian. Những tọa độ của các đối tượng không gian được lưu trữ trong các bảng. Mỗi một bảng có thể chứa một kiểu đối tượng hình học (Geometry) là điểm (Point, multipoint), đường (Linestring, multilinestring), đa giác (Polygon, multipolygon và geometry collection). Những tọa độ của mỗi đối tượng được lưu trữ trong một trường với một kiểu riêng biệt.
1.3.3. OpenLayers
dễ dàng. Nó có thể hiển thị các ô bản đồ và đánh dấu tải từ bất kỳ nguồn nào. OpenLayers được phát triển cho việc sử dụng các thông tin địa lý của các loại dữ liệu [1].
- OpenLayers thuần là một thư viện JavaScript để hiển thị dữ liệu bản đồ trong các trình duyệt web mà không phụ thuộc phía máy chủ. OpenLayers thực hiện một JavaScript API để xây dựng nhiều ứng dụng dựa trên web địa lý, tương tự như bản đồ Google và MSN Virtual Earth API, với sự khác biệt quan trọng nhất.
Có hai khái niệm quan trọng cần được hiểu rõ khi làm việc với OpenLayers để xây dựng bản đồ là ‘Map’ và ‘Layer’. ‘Map’ là nơi để lưu giữ các thông tin về hệ quy chiếu, đơn vị, vùng bao (box),… của bản đồ. Bên trong bản đồ, dữ liệu được hiển thị thông qua các ‘Layer’. Một ‘Layer’ là một nguồn dữ liệu, nó cho biết OpenLayers nên yêu cầu và hiển thị dữ liệu như thế nào. Trong một ‘Map’ có thể chứa một hoặc nhiều ‘Layer’ chồng lên nhau. Dữ liệu trong một ‘Layer’ có thể là dạng raster hoặc Vector.
Ngoài ra, việc cung cấp một tập các điều khiển sẽ cho phép người phát triển có thể thao tác trên bản đồ một cách linh hoạt. Các điều khiển là các lớp trong OpenLayers, chúng cho phép định nghĩa các trạng thái, hành vi của bản đồ. Hoặc hiển thị các thông tin bổ sung cho người dùng. Các điều khiển chính là giao diện cho phép tương tác với bản đồ.
OpenLayers cung cấp các lớp cho phép định dạng kiểu dáng các đối tượng không gian. Việc định dạng kiểu dáng này có thể áp dụng cho từng đối tượng hoặc toàn bộ các đối tượng Vector trên một lớp. Các thuộc tính về kiểu dáng của đối tượng Vector được định nghĩa thông qua đối tượng ‘Style’. Việc định dạng kiểu dáng này chỉ áp dụng được cho các đối tượng thuộc các lớp Vector.
1.3.4. QGIS
QGIS (tên gọi trước đây là Quantum GIS) là một phần mềm GIS mã nguồn mở được bắt đầu xây dựng từ năm 2002 và được phát triển nhanh chóng với một cộng đồng phát triển lớn trên cơ sở tự nguyện. Đây là phần mềm tương đối mạnh và dễ sử dụng, chạy được trên các hệ điều hành: Windows, Mac OS X, Linux, BSD và Android và bao gồm các ứng dụng cho:
không gian.
- QGIS Browser: Duyệt và xem nhanh dữ liệu và siêu dữ liệu cũng như kéo và thả dữ liệu từ kho dữ liệu này sang kho dữ liệu khác.
- QGIS Server: Xuất bản QGIS project với các lớp dữ liệu thông qua các dịch vụ WMS và WFS theo chuẩn OGC. Có khả năng kiểm soát lựa chọn các thuộc tính hoặc cách bố trí bản đồ và hệ tọa độ của những lớp dữ liệu khi xuất bản.
- QGIS Web Client: Cho phép dễ dàng xuất bản QGIS project lên Web với thư viện các kí hiệu, nhãn phong phú cũng các cách kết hợp các đối tượng để tạo bản đồ Web ấn tượng.
- QGIS on Android (beta!): Phiên bản thử nghiệm đang được hoàn thiện để sử dụng QGIS trên các thiết bị chạy Android.
Các chức năng cơ bản trong QGIS:
- QGIS hỗ trợ hầu hết các chức năng cơ bản của một phần mềm GIS gồm: Quản lý dữ liệu, đọc được nhiều định dạng dữ liệu, biên tập và xuất bản bản đồ, xuất - nhập dữ liệu và các chức năng phân tích không gian,…
- QGIS hỗ trợ xử lý dữ liệu vector: Dữ liệu không gian dựa trên PostGIS mà chủ yếu là PostgreSQL. QGIS có khả năng đọc được hầu hết dữ liệu vector được cung cấp bởi thư viện OGR, bao gồm ESRI shapefiles, MapInfo, SDTS and GML,…
- QGIS có khả năng đọc được dữ liệu raster được cung cấp bởi thư viện GDAL, bao gồm DEM, ArcGrid, ERDAS, SDTS và GeoTIFF,…
- QGIS cung cấp định dạng dữ liệu trên cả ảnh vector và raster. Dữ liệu không gian trực tuyến được hỗ trợ trong thư viện OGC-dựa trên WMS hoặc WFS. QGIS trình bày và chồng xếp các dữ liệu ảnh raster và vector mà không cần quan tâm các định dạng dữ liệu.
- Tạo bản đồ và thao tác dữ liệu không gian dựa trên giao diện thân thiện. - GUI có sẵn nhiều tool hỗ trợ.
- Tạo, chỉnh sửa và xuất dữ liệu cho người dùng: digitizing tools for GRASS and shapefile formats, the georeferencer plugin, GPS tools to import and export GPX format, convert other GPS formats to GPX, or down/upload directly to a GPS unit.
- Xuất bản đồ dựa trên UMN Map Server,...
1.3.5. Apache Tomcat
Apache Tomcat (gọi tắt là Tomcat) là một trong những server web HTTP mã nguồn mở được sử dụng nhiều trong phát triển ứng dụng java website. Tomcat được phát triển bởi Apache Software Foundation (ASF). Tomcat phát triển dựa trên các đặc điểm Java EE bao gồm Java Servlet, JavaServer Pages (JSP), Java EL, and WebSocket, và cung cấp môi trường HTTP web server để chạy code Java.
Đặc điểm nổi bật của Tomcat:
- Là một web application HTTP server chạy trên giao thức TCP/IP. Theo nghĩa khác nó chạy trên một IP và một cổng xác định trước. Mặc định là cổng 80 cho website sản phẩm, còn cho phát triển là 8080, hoặc cổng tuỳ bạn chọn.
- Cluster: Hỗ trợ chạy nhiều servers cùng một lúc được sử dụng cơ chế load- balancing. Nó giúp server của bạn nâng cao khả năng chống lỗi và luôn hoạt động khi số lượng request tăng.
- Servlet container - Catalina: giúp chạy java code.