Khảo sát gói thư viện mã nguồn mở Geotools và ứng dụng hiện thực hệ thống thông tin địa lý trên nền Web



tải về 5.55 Mb.
trang22/34
Chuyển đổi dữ liệu16.10.2017
Kích5.55 Mb.
#33732
1   ...   18   19   20   21   22   23   24   25   ...   34
Ưu điểm

PostGIS - một CSDL không gian có những thuận lợi khác so với các tập tin về hình dạng. Thuận lợi chính là khả năng thực hiện những sự tính toán không gian phức tạp chẳng hạn như trả 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 vùng phụ cận của một đối tượng khác, khu vực của một vùng đặc biệt là gì, 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 thao tác dữ liệu cũng tốt như là khả năng lưu trữ. Nó cung cấp những khả năng giống một hệ thống 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 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.

Và sẽ dễ dàng hơn 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ư Chi phí trung bình cho một vùng địa lý cụ thể là gì ?, ...

PostGIS còn hỗ trợ thêm GiST-based 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.


- Một số đối tượng không gian theo chuẩn OGC

PostGIS hỗ trợ hầu hết các đối tượng và các hàm được định nghĩa chi tiết trong OGC "Simple Features for SQL" specification. PostGIS mở rộng chuẩn với sự hỗ trợ cho các tọa độ dạng 3DZ,3DM và 4D.

OpenGIS specification định nghĩa 2 chuẩn để diễn tả các đối tượng không gian: Well-known Text (WKT) và Well-Known Binary (WKB). Cả Well-known Text và Well-Known Binary đều bao gồm thông tin về kiểu của đối tượng và tọa độ của nó.

Một số ví dụ diễn tả các đối tượng không gian của WKT như sau:


    • POINT (2572292.2 5631150.7)

    • LINESTRING (2566006.4 5633207.9, 2566028.6 5633215.1, 2566062.3 5633227.1)

    • MULTILINESTRING((2566006.4 5633207.9, 2566028.6 5633215.1), (2566062.3 5633227.1, 2566083 5633234.8))

    • POLYGON (2568262.1 5635344.1, 2568298.5 5635387.6, 2568261.04 5635276.15, 2568262.1 5635344.1);

    • MULTIPOLYGON (((2568262.1 5635344.1, 2568298.5 5635387.6, 2568261.04 5635276.15, 2568262.1 5635344.1), (2568194.2 5635136.4, 2568199.6 5635264.2, 2568200.8 5635134.7, 2568194.2 5635136.4 )))


- Sự quản lý dữ liệu không gian

PostGIS được hiện thực theo bản đặ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 Feature.

Mỗi một bảng Feature có thể chứa một kiểu đối tượng 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 của một kiểu riêng biệt

Kiểu của trường cho một tập hợp tọa độ là WKT (Well Known Text). Khi những đối tượng geometry được insert vào cơ sở dữ liệu, PostGIS sẽ chuyển chúng từ WKT sang WKB (Well Known Binary) để việc lưu trữ được tốt hơn.

Siêu dữ liệu từ mỗi bảng Feature được tập hợp lại và lưu trữ trong bảng geometry_columns để tổ chức kiểu và hệ thống tọa độ của dạng geometry được chứa trong đó.

- Các bảng siêu dữ liệu

PostGIS có hai bảng siêu dữ liệu (meta-data) là SPATIAL_REF_SYSGEOMETRY_COLUMNS.

  1. Bảng SPATIAL_REF_SYS

  • Bảng lưu trữ những định danh (ID) và mô tả về các hệ thống tọa độ được dùng trong CSDL không gian

  • Cách tạo bảng:


CREATE TABLE SPATIAL_REF_SYS

(

SRID INTEGER NOT NULL PRIMARY KEY,

AUTH_NAME VARCHAR(256),

AUTH_SRID INTEGER,

SRTEXT VARCHAR(2048),

PROJ4TEXT VARCHAR(2048)

)

Với


  • SRID: giá trị số nguyên thể hiện định danh (ID) của hệ thống tham khảo địa lý (Spatial Referencing System – SRS ) trong CSDL

  • AUTH_NAME: tên của chuẩn hoặc phần chính của các chuẩn được trích dẫn cho hệ thống tham khảo này.

  • AUTH_SRID: định danh của hệ thống tham khảo địa lý được định nghĩa bởi trích dẫn có uy tín trong AUTH_NAME

  • SRTEXT : sự mô tả Well-Known Text của hệ thống tham khảo địa lý

  • PROJ4TEXT : PostGIS dùng thư viện Proj4 để cung cấp những khả năng biến đổi tọa độ. Cột PROJ4TEXT chứa chuỗi định nghĩa tọa độ Proj4 cho một SRID cụ thể

  • Tất cả sự định nghĩa SRTEXT và PROJ4TEXT của các phép chiếu EPSG đều được cung cấp trong tập tin spatial_ref_sys.sql.



  1. Bảng GEOMETRY_COLUMNS

  • Lưu trữ siêu dữ liệu từ mỗi bảng Feature để quản lý kiểu và hệ thống tọa độ của dạng geometry được chứa trong đó

  • Cách tạo bảng:


CREATE TABLE GEOMETRY_COLUMNS

(

F_TABLE_CATALOG VARCHAR(256) NOT NULL,

F_TABLE_SCHEMA VARCHAR(256) NOT NULL,

F_TABLE_NAME VARCHAR(256) NOT NULL,

F_GEOMETRY_COLUMN VARCHAR(256) NOT NULL,

COORD_DIMENSION INTEGER NOT NULL,

SRID INTEGER NOT NULL,

TYPE VARCHAR(30) NOT NULL

)

  • Với

  • F_TABLE_CATALOG, F_TABLE_SCHEMA, F_TABLE_NAME: Tên đầy đủ của bảng feature chứa các cột hình học. Trong PostgreSQL, phần "catalog" được bỏ trống, “schema” là tên của PostgreSQL schema với mặc định là public.

  • F_GEOMETRY_COLUMN: tên của cột geometry trong bảng feature

  • COORD_DIMENSION: cột quy định số chiều không gian (2, 3 hoặc 4 chiều)

  • SRID: ID của hệ thống tham khảo không gian dùng cho tọa độ hình học trong bảng. Đây chính là khóa ngoại tham khảo đến bảng SPATIAL_REF_SYS

  • TYPE: kiểu của một đối tượng không gian. Để giới hạn cột dữ liệu không gian thành một kiểu cụ thể, ta dùng POINT, LINESTRING, POLYGON, MULTIPOINT, MULTILINESTRING, MULTIPOLYGON, GEOMETRYCOLLECTION hoặc dựa theo phiên bản XYM là POINTM, LINESTRINGM, POLYGONM, MULTIPOINTM, MULTILINESTRINGM, MULTIPOLYGONM, GEOMETRYCOLLECTIONM. Nếu cần thể hiện một tập hợp không đồng nhất, ta dùng "GEOMETRY" để thể hiện kiểu
- Cách cài đặt
Xin xem phần phụ lục 5.2.2
- Cách tạo một cơ sở dữ liệu không gian

  1. Khởi động và kết nối vào PostgreSQL, ta thấy giao diện sau:

Hình 3.20: Giao diện PostgreSQL



  1. Tạo một CSDL mới:

Hình 3.21: Tạo cơ sở dữ liệu trong PostgreSQL



    • Name: tên cơ sở dữ liệu không gian cần tạo

    • Owner: Người quản lý cơ sở dữ liệu này

    • Template: postgis nếu cần tạo cơ sở dữ liệu không gian



  1. Cơ sở dữ liệu mới được tạo như sau:

Hình 3.22: Vị trí các bảng siêu dữ liệu trong PostGIS



    • Lưu ý: đối với cơ sở dữ liệu không gian theo postgis template, sau khi tạo, trong phần Tables sẽ có hai bảng siêu dữ liệu là geometry_columns và spatial_ref_sys.



  1. Dùng các câu lệnh SQL để tạo các bảng Feature cũng như dữ liệu cho các bảng này. Các bước thực hiện như sau:

    • Tạo bảng dữ liệu không gian:

  • Tạo một bảng dữ liệu phi không gian

Ví dụ :

Tạo bảng rghc (Ranh giới hành chính) có các cột MA_XA kiểu int, cột TEN_XA kiểu varchar và cột Vung kiểu int:


create table rghc (MA_XA int8, TEN_XA varchar(25), Vung int4)


  • Thêm cột dữ liệu không gian vào bảng vừa tạo bằng hàm AddGeometryColumn với cú pháp như sau:

AddGeometryColumn(
,,, ,)

Trong đó:



: tên bảng Feature

: tên cột dữ liệu không gian

: định danh (ID) của hệ thống tham khảo địa lý (Spatial Referencing System – SRS ) trong cơ sở dữ liệu, là một trong các giá trị của bảng spatial_ref_sys.

Lưu ý: Giá trị cột có thể không được xác định, khi đó cần nhập giá trị srid = -1. Và với giá trị này ta không thể dùng các hàm dành cho cơ sở dữ liệu không gian trong PostGIS.

: kiểu của đối tượng geometry theo chuẩn OGC.

: số chiều

Ví dụ : Tạo cột the_geom với đối tượng geometry kiểu MULTIPOLYGON vào bảng rghc:



select AddGeometryColumn

('rghc','the_geom','3149','MULTIPOLYGON',2)

Khi hàm AddGeometryColumn được thực hiện, thì PostGIS thực hiện đồng thời hai công việc:



  • Thêm cột the_geom vào bảng rghc

  • Thêm dòng thông tin về các giá trị có liên quan vào bảng geometry_columns

    • Tạo các ràng buộc

Ví dụ: Tạo khóa chính cho cột MA_XA
ALTER TABLE ONLY rghc ADD CONSTRAINT rghc_pkey PRIMARY KEY (MA_XA);


    • Insert dữ liệu vào bảng Feature:

Ví dụ:

insert into rghc values ('7031101','TT Dinh Van','1', GeometryFromText('MULTIPOLYGON(((206898.21 1306837.92, 206796.56 1306767.83, 206556.04 1306559.5, 206314.94 1306437.73, 206015.35 1305984.22, 205878.72 1305534.54, 205700.18 1305240.04, 205209.87 1304407.79, 204783.67 1303858.96)))',3149));….


- Kết nối cơ sở dữ liệu với JBuilder

  1. Chuẩn bị các gói thư viện cần thiết sau:

  • postgisdriver-1.1.0.jar

  • postgresql-8.1-405.jdbc3.jar

  • gt2-postgis.jar (gói này có trong lib của geotools)

  1. Tạo phương thức kết nối

public static DataStore createDataStore() throws Exception {

Map params = new HashMap();

params.put("dbtype", "postgis");

params.put("host", "localhost");

params.put("port",
);

params.put("database", “

params.put("user", );

params.put("passwd",


);

DataStore pgDataStore = DataStoreFinder.getDataStore(params);

return pgDataStore;

}

Với:



  • “dbtype”: postgis nếu dùng cơ sở dữ liệu không gian.

  • “host”: tên hoặc địa chỉ IP của máy kết nối với PostGIS.

  • “port”: cổng kết nối PostGIS, thông thường là 5432

  • “database”: tên cơ sở dữ liệu PostGIS cần kết nối

  • “user”: tên người dùng kết nối đến cơ sở dữ liệu.

  • “passwd”: mật khẩu của của người dùng cơ sở dữ liệu PostGIS

Tham khảo phương thức createDataStore trong lớp ConnectDatabase của gói projectUtils.
Tạo bản đồ cơ bản

Từ DataStore tạo được bằng phương thức kết nối, ta có thể lấy được các đối tượng FeatureSource bằng cách gọi phương thức getFeatureSource như sau:

DataStore pgDatastore = ConnectDatabase.createDataStore();

FeatureSource fs = pgDatastore.getFeatureSource("");

Tham số nhận vào của phương thức getFeatureSource là tên của bảng Feature mà ta đã tạo trong cơ sở dữ liệu PostGIS.

Ví dụ: để lấy FeatureSource từ bảng ranh giới hành chính, tên bảng trong cơ sở dữ liệu là rghc, ta thực hiện như sau:

FeatureSource fs = pgDatastore.getFeatureSource("rghc")

Tham khảo phương thức getFeatureSoureFromDatabase trong lớp DataUtils của gói projectUtils

Khi có được FeatureSource, ta lần lượt thực hiện các bước để tạo các kiểu hiển thị cho các đối tượng địa lý, xây dựng các lớp bản đồ và quản lý chúng tương tự như đã tiến hành với các tập tin .shp đã giới thiệu ở phần trước. Sơ lược quá trình thực hiện như sau:



    1. Tạo kiểu hiển thị cho các đối tượng địa lý. Sử dụng StyleBuilder và các công cụ hỗ trợ thích hợp tùy theo kiểu thể hiện là điểm, đường hay vùng trong gói org.geotools.styling. Các phương thức được viết trong lớp ASymbolizer của gói common.

      • Tạo đối tượng kiểu điểm

  • Kiểu thể hiện có sẵn trong geotools và kích cỡ là tùy chỉnh: tham khảo phương thức makeDefaultPointSymbolizer.

  • Kiểu thể hiện là hình ảnh bên ngoài: tham khảo phương thức makeExternalPointSymbolizer.

      • Tạo đối tượng kiểu đường: tham khảo phương thức createLineSymbolizer.

      • Tạo đối tượng kiểu vùng: tham khảo phương thức createPolygonSymbolizer

      • Tạo đối tượng Text: đây chỉ là dạng đối tượng thuộc tính, cần để hiển thị kèm theo các kiểu đối tượng điểm, đường hoặc vùng. Tham khảo phương thức createTextSymbolizer.



    1. Xây dựng, quản lý các lớp bản đồ

Tạo lớp MapLayer để chứa dữ liệu địa lý của đối tượng và cách thể hiện thông qua lớp DefaultMapLayer là hiện thực của interface MapLayer.

Sau đó ta tích hợp các lớp này vào trong 1 mapContext thông qua phương thức addLayer(), phương thức này có khả năng nhận vào featureSource và style để tự động tạo thành MapLayer trong ContextMap hoặc nhận vào MapLayer đã được tạo trước từ FeatureSource và Style.

Tham khảo phương thức createAMapLayer trong lớp AMapLayer của gói common.


    1. Quản lý việc hiển thị bản đồ

Tạo StyledMapPane để hiển thị bản đồ tích hợp. Đặt StyledMapPane trong JFrame, Applet hoặc JApplet để hiển thị. Tham khảo lớp AMapPane trong gói common.

Hình ảnh sau minh họa cho việc hiển thị bản đồ cơ bản với dữ liệu lấy từ PostGIS:



Hình 3.23 Hiển thị bản đồ lấy dữ liệu từ PostGIS



    1. Каталог: data
      data -> HƯỚng dẫn càI ĐẶt và SỬ DỤng phần mềm tạo bài giảng e-learning
      data -> CỘng hòa xã HỘi chủ nghĩa việt nam độc lập Tự do Hạnh phúc
      data -> Qcvn 81: 2014/bgtvt
      data -> Trung taâm tin hoïC Ñhsp ñEÀ thi hoïc phaàn access
      data -> PHỤ LỤC 2 TỔng hợp danh mục tài liệu tham khảO
      data -> Công ty cổ phần Xây dựng Điện vneco3
      data -> Nghiên cứu một số đặc điểm
      data -> NHỮng đÓng góp mới của luậN Án tiến sĩ CẤP ĐẠi học huế Họ và tên ncs : Nguyễn Văn Tuấn
      data -> Mẫu 01/hc-sn-dn (Ban hành kèm theo Thông tư số 83/2007/tt-btc ngày 16/7/2007 của Bộ Tài chính) TỜ khai hiện trạng sử DỤng nhà, ĐẤt thuộc sở HỮu nhà NƯỚc và ĐỀ xuất phưƠng án xử LÝ

      tải về 5.55 Mb.

      Chia sẻ với bạn bè của bạn:
1   ...   18   19   20   21   22   23   24   25   ...   34




Cơ sở dữ liệu được bảo vệ bởi bản quyền ©hocday.com 2024
được sử dụng cho việc quản lý

    Quê hương