ArcGIS Server làm việc dựa trên khái niệm về phân tán, có nghĩa là ta có thể tăng thêm sức mạnh của máy chủ bằng cách thêm các máy vật lý. ArcGIS Server là một hệ thống bao gồm nhiều thành phần. Mỗi thành phần này nắm giữ một vai trò cụ thể trong quá trình quản lý, cân bằng nguồn tài nguyên cung cấp cho một hay nhiều server. Các thành phần của ArcGIS Server bao gồm:
Máy chủ GIS (GIS Server): Lưu trữ và chạy các ứng dụng server. Máy chủ GIS bao gồm một máy chủ SOM (Server Object Manager) và một hoặc nhiều máy chủ SOC khác (Server Object Containers)
Máy chủ Web (Web Server): Lưu trữ các ứng dụng web và dịch vụ sử dụng tài nguyên chạy trên ArcgisServer
Clients: là web, mobile hoặc ứng dụng desktop kết nối đến các dịch vụ của ArcGIS Server thông qua môi trường mạng LAN hay WAN.
Máy chủ dữ liệu (Data Server): chứa tài nguyên GIS dùng để tạo ra các dịch vụ trên ArcGIS Server. Tài nguyên có thể là các tài liệu bản đồ, vị trí định vị, tài nguyên…
Manager and ArcCatalog administrators: Người quản lý ArcGIS Server có thể sử dụng các công cụ quản lý để tạo ra các dịch vụ bản đồ
ArcGIS Desktop content authors: Để tạo ra tài nguyên GIS như bản đồ, các công cụ xử lý dữ liệu địa lý…sẽ được tạo ra từ server.
2.1.3. Tại sao nên sử dụng ArcGIS Server
Bảng 5: So sánh tính năng của một số hệ thống cung cấp dịch vụ bản đồ trên thế giới
Danh mục MapServer GeoServer Arcgis Server
Website http://www.mapserver.org/ http://geoserver.org/ http://www.esri.com
Hệ điều hành
Linux, Windows, Mac OS X, Solaris, ect
Windows, Linux, Mac OSX
Windows, Linux
Giấy phép Nguồn mở Nguồn mở Thu phí
Giao diện người dùng
Giao diện dòng lệnh hoặc cài đặt thêm giao diện đồ họa
Giao diện đồ họa Giao diện đồ họa
Hỗ trợ đầu vào
- Vector: shapefile, TIGER, ...
- Raster: TIFF, GeoTIFF, JPEG, GIF, PNG, ... - Databases: Microsoft SQL, Oracle, PostGIS/PostgreSQL, etc. - Vector: shapefile, TIGER, ... - Raster: TIFF, GeoTIFF, JPEG, GIF, PNG, etc… - Databases: Microsoft SQL, Oracle, PostGIS/PostgreSQL, etc… - Vector: shapefile, TIGER, ... - Raster: TIFF, GeoTIFF, JPEG, GIF, PNG, etc… - Databases: Microsoft SQL, Oracle, PostGIS/PostgreSQL
Hỗ trợ đầu ra theo chuẩn dịch vụ web OGC • WMS • WFS • WCS • WMS • WFS • WCS • Etc… • WMS • WFS • WCS • Etc… Ngôn ngữ lập trình
PHP, Python, Perl, Ruby, Java, and .NET
Java, Python, JavaScript, Groovy, Beanshell, Ruby. Android, ArcObjects, Flex, iOS, Java, JavaScript, Python, SharePoint, Silverlight, SOAP, Windows Mobile
Nền tảng Web base, mobile, desktop application
Web base, mobile, desktop application Web base, Windows,Flex, Silverlight, iOS, Android, and Windows Phone
Với Arcgis Server, việc lập trình, thiết kế và triển khai hệ thống GIS có thể được quản lý tập trung. Điều này giúp giảm giá thành khi tiết kiệm giá thành khi không cần thiết phải cài đặt phần mềm trên từng máy. Arcgis Server có thể tích hợp với nhiều hệ quản trị cơ sở dữ liệu, với khả năng hỗ trợ dịch vụ web cùng với việc có thể hỗ trợ nhiều ngôn ngữ lập trình phía client, nó sẽ giúp cho việc phát triển các hệ thống đa nền tảng trở nên nhanh chóng. Về khía cạnh phân tích dữ liệu, truy vấn dữ liệu ảnh dựa trên các pixel, các đối tượng dạng polygon, point, raster thì arcgis hỗ trợ mạnh mẽ hơn các api còn lại.
2.2. Flex – Công nghệ Rich Internet Application
2.2.1. Giới thiệu về Flex
Flex hay còn gọi là Adobe Flex, là một bộ công cụ phát triển phần mềm phục vụ phát triển, triển khai các hệ thống đa nền tảng giàu tính năng (RIA) dựa trên nền tảng Adobe Flash. Phiên bản mới nhất của Flex là Flex SDK 4.12.0, cung cấp cho người sử dụng rất nhiều các control được xây dựng sẵn, thuận lợi cho việc phát triển nhanh một ứng dụng đa nền tảng.
Adobe Flex bao gồm:
ActionScript 3.0
MXML (Macromedia XML)
CSS
Các công nghệ/công cụ liên quan:
Flex SDK: cung cấp các control cơ bản như các nút, combox, datetime picker… cho ứng dụng Flex
Flex Builder: Công cụ phát triển ứng dụng Flex, dựa trên nền của Eclipse
Flex Chartting
Sản phẩm của Flex có thể chạy như một ứng dụng Flash hoặc như một ứng dụng desktop trên nền AIR của Adobe. Với lợi thế 95% các máy tính trên thế giớ có cài Flash Player, đây là điều kiện thuận lợi để triển khai các ứng dụng trên nền tảng Flex.
2.2.2. Thành phần chính của Flex a. Mxml và ActionScript a. Mxml và ActionScript
Flex cung cấp cho người sử dụng nhiều các thức khác nhau để xây dựng một ứng dụng. Đầu tiên, chúng ta phải nói đến MXML, đây là ngôn ngữ đánh dấu đặc biệt, được thiết kế để xây dựng các thành phần giao diện của ứng dụng Flex, nó có cấu trúc giống như các thẻ XML.
Chúng ta có thể thấy rằng, thuộc tính Button được đặt ở bên phải của thẻ, tên của button là “Tìm kiếm” và id của đối tượng là btnSearch. Với id trên, chúng ta có thể tham chiếu button ở mọi nơi trong chương trình. Các thuộc thành phần gian diện như màu sắc, skins, event của các control trong Flex cũng được cài đặt với cách tương tự như trên.
ActionScript là ngôn ngữ lập trình hướng đối tượng được thiết kế chủ yếu cho các trang web sử dụng nhiều hoạt cảnh (animation). ActionScript được coi như là ngôn ngữ kịch bản cho ứng dụng flash, nó là ngôn ngữ dựa trên các sự kiện, các hành động được kích hoạt bởi các sự kiện. Cú pháp cơ bản có nguồn gốc từ ECMAScript. Ví dụ như khi ta muốn chương trình lắng nghe sự kiện click vào nút nào đó, ta có thể viết một function sử dụng ActionScript bên trong thẻ <Script>, event đó tham chiếu đến id của button
cần sinh sự kiện. Function trong ActionScrip sẽ đón sự kiện đó, việc còn lại là viết mã nguồn xử lý nghiệp vụ trong thân hàm.
Khi function search() được gọi, hàm sẽ kiểm tra khoảng thời gian nhập vào từ DateTimePicker, lấy mã tỉnh từ tinhDropdown, mã tỉnh sau đó tiến hành in dữ liệu ra một danh sách kết quản tìm kiếm.
b. Event trong Flex
Flex sử dụng một khái niệm đó là event để chuyển dữ liệu từ một đối tượng đến một thành phần phụ thuộc khác dựa trên trạng thái hoặc sự tương tác của người sử dụng. ActionScript được thiết kế với một lớp Event tổng quát bao gồm nhiều hàm chứa các event riêng cho từng trường hợp. Một event có 3 thuộc tính chính đó là:
type: là trạng thái mỗi khi phát sinh event, nó có thể là click, initialize, mouseover, change…Các trạng thái được biểu diễn bởi các hằng ví dụ như:
MouseEvent.CLICK
target: thuộc tính target của một Event là đối tượng tham chiếu đến thành phần đã sinh ra ra event. Ví dụ như khi click vào button với id là tinhDropdown, thì đó là target của event
currentTarget: là thành phần sẽ đón nhận sự kiện đã phát sinh để xử lý, nó thường là một function với thân là các đoạn mã ActionScript.
2.2.3. Ưu và nhược điểm của Flex a. Ưu điểm a. Ưu điểm
Flex vốn dựa trên Flash Player, do đó một ứng dụng Flex có khả năng truy cập được các thiết bị GPS, máy ảnh, cơ sở dữ liệu nội bộ và gia tốc đồ họa. Ứng dụng xây
<mx:Script> <![CDATA[
public function search(event:MouseEvent):void
{
if(ngayBatDauDateField.text!="" &&
ngayKetThucDataField.text!="" ){
id_tinh = tinhDropdown.selectedItem.id;
timeBegin = ngayBatDauDateField.selectedDate;
timeEnd = new Date(
ngayKetThucDataField.selectedDate.fullYear,
ngayKetThucDataField.selectedDate.month, ngayKetThucDataField.selectedDate.date + 1);
search(1); searchAccordion.selectedIndex = 2; } } ]]> </mx:Script>
dựng bởi Flex có thể chạy trên trên nhiều nền tảng khác nhau như Android, BlackBerry, iOS, ngoài ra nó cũng có thể chạy trên trình duyệt web hoặc như một ứng dụng desktop. Flex không phụ thuộc vào nền tảng, nó có thể tương tác với server sử dụng các công nghệ phổ biến như Java, Spring, Hibernate, PHP, Ruby, .NET… sử dụng dịch vụ web với các chuẩn như REST, SOAP, JSON, JMS, AMF.
Thiết kế của Flex là Single Page, có nghĩa là ứng dụng chuyển từ trạng thái này sang trạng thái khác ngay trên một trang mà không cần phải tại lại trình duyệt hoặc hoặc lấy một trang mới từ Server. Với thiết kế này, ứng dụng Flex sẽ giảm thiểu việc tải lại ứng dụng từ Server do ứng dụng chỉ cần tải ứng dụng một lần thay vì tải các trang mới mỗi khi người sử dụng chuyển khung nhìn.
b. Nhược điểm
Ứng dụng Flex là single thread (đơn luồng) nhưng Flex cung cấp mô hình lập trình asynchronous (bất đồng bộ) để khắc phục phần nào nhược điểm này. Flex dựa trên ActionScript and XML, do đó để phát triển ứng dụng Flex, chúng ta cần phải làm quen với 2 loại ngôn ngữ này.
2.3. Arcgis API cho Flex và dịch vụ web RESTful
2.3.1. Arcgis API cho Flex a. Giới thiệu a. Giới thiệu
Arcgis API hỗ trợ mạnh mẽ việc tạo web map sử dụng các dịch vụ bản đồ do Arcgis Server biên tập. Arcgis API cũng hỗ trợ đa ngôn ngữ, đa nền tảng như Javascript, flex, Silverlight, iOS, và Android. Arcgis API được thiết kế với nhiệm vụ chính là để làm việc các web service được xuất bản bởi ArcgisOnline, ArcGIS Portal hoặc ArcGIS for Server. Sử dụng Arcgis API, ứng dụng web map có thể hiển thị các layer bản đồ từ ArcGIS Server, các image service hoặc feature service, OGC webservice và các tài liệu KML. Ta cũng có thể thêm các dữ liệu được lưu trữ trong các tập tin .txt, .csv hay các tập tin GPS có định dạng .gpx, xuất dữ liệu trong vùng/điểm không gian lựa chọn trên bản đồ dưới các định dạng csv,txt,kml... Khi khởi tạo bản đồ, ta cũng có thể định nghĩa nội dung cho các đối tượng hiển thị trên bản đồ, thiết lập bản đồ nền và xác định khung khoảng rộng ban đầu (extent).
Rất nhiều các lập trình viên sử dụng Javascipt, flex API để phát triển ứng dụng bản đồ. Lập trình viên có thể sử dụng Javascipt để tạo ứng dụng bản đồ và các tương tác trên bản đồ chỉ với công cụ notepad. Tuy nhiên với Javascript, một ngôn ngữ không strong- type thì khi lập trình viên thiếu kinh nghiệm, rất khó để có thể xây dựng được một kiến trúc sáng sủa. Dẫn đế việc khi hệ thống ngày càng mở rộng, mã càng rối, rất khó khăn cho việc bảo trình, mở rộng. Trái lại, với các lập trình viên thích làm việc với các các design pattern, các nghiệp vụ sâu hơn và đặc biệt là strong-type thì Arcgis cho Flex là lựa chọn phù hợp. ERSI cung cấp Arcgis API for Flex cho phép người sử dụng tạo các
ứng dụng ứng dụng bản đồ tận dụng những thành phần RIA của Flex như lưới dữ liệu, biểu đồ, menu cây…và các tính năng hiển thị bản đồ chứa dữ liệu, truy xuất thành phần GIS từ server, hiển thị dữ liệu trên các bản đồ nền được ESRI cung cấp sẵn, tìm kiếm các thuộc tính của dữ liệu, chỉnh sửa dữ liệu từ Arcgis Server…
b. Hiển thị bản đồ sử dụng Arcgis API for Flex
Tính năng cơ bản và quan trọng nhất mà Arcgis API cung cấp là hiển thị bản đồ. Arcgis API cung cấp giao diện bản đồ với các thành phần giúp người dùng hiển thị, truy vấn nội dung, làm việc với các lớp bản đồ chuyên đề thông qua giao diện. Các dịch vụ bản đồ thường được sử dụng là Open Street Map, Bing Maps, OGC WMS hoặc các dịch vụ bản đồ cung cấp bởi Arcgis Online.
Để sử dụng Arcgis API for Flex, đầu tiên người sử dụng phải tham chiếu đến thư viện của API trong tập tin MXML bằng cách sử dụng ESRI namespace.
Một bản đồ thường có nhiều các layer (lớp), mỗi layer biểu diễn một loại dữ liệu(còn gọi là bản đồ chuyên đề) như địa giới hành chính, dân cư, giao thông, địa hình…khi xếp chồng các layer này lên với nhau thì ta được bản đồ đầy đủ. Các lớp bản đồ phải có cùng hệ quy chiếu. Hệ quy chiếu của bản đồ được thiết lập theo lớp bản đồ đầu tiên gọi là bản đồ nền. Sử dụng sai hệ quy chiếu sẽ khiến bản đồ không hiển thị được hoặc hiển thị sai vị trí của các đối tượng. Các bản đồ số thường sử dụng hệ quy chiếu 4326 hoặc 3857. Địa giới hành chính Bản đồ nền Bản đồ chuyên đề Bản đồ Hình 7: Cách đặt các lớp bản đồ lên bản đồ nền.
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:esri="http://www.esri.com/2008/ags"> </s:Application>
2.3.2. Dịch vụ web RESTful a. Dịch vụ web là gì? a. Dịch vụ web là gì?
Dịch vụ web (Web Service) là công nghệ cho phép máy khách của thể truy vấn dữ liệu từ một máy chủ bất kì, không phụ thuộc vào nền tảng. Bản chất, một dịch vụ web dựa trên XML sử dụng giao thức HTTP để chuyển tải dữ liệu. Dịch vụ web bao gồm url để có thể dễ dàng truy cập và yêu cầu thông tin từ các dịch vụ web khác.
Dịch vụ web cho phép client và server có thể giao tiếp với nhau ngay cả khi chúng được triển khai ở các môi trường khác nhau, mã nguồn khác nhau, không cần yêu cầu đặc biệt gì đòi hỏi tương thích.
Dịch vụ web được thiết kế dựa trên các chuẩn mở ví dụ như JSON, XML, dễ dàng xây dựng và triển khai và cung cấp ra bên ngoài.
b. Dịch vụ web RESTful
REST (Representational State Transfer) hiện nay đang được sử dụng rộng rãi thay thế cho các dịch vụ web cũ xây dựng dựa trên SOAP (Simple Object Access Protocol) và WSDL (Web Service Definition Language) bởi tính đơn giản, dễ sử dụng. REST định
<esri:Map id="map">
<esri:extent>
<esri:Extent xmax="109.4171295" xmin="102.1449966" ymax="23.3927307" ymin="8.6138800"> <esri:SpatialReference wkid="4326"/> </esri:Extent> </esri:extent> <esri:ArcGISTiledMapServiceLayer url="http://services.arcgisonline.com/arcgis/rest/services/ESRI_Imagery_ World_2D/MapServer"/> </esri:Map>
nghĩa ra các quy tắc về kiến trúc trong thiết kế dịch vụ web tập trung vào tài nguyên của hệ thống.
REST tuân thủ 4 nguyên tắc thiết kế cơ bản sau[trích dẫn]
Sử dụng các phương thức HTTP một cách rõ ràng
Phi trạng thái
Hiển thị cấu trúc thư mục như URIs
Chuyển đổi JavaScript Object Notation (JSON) và XML hoặc cả hai.
Đặc tính quan trọng của dịch vụ web RESTful là yêu cầu người phát triển sử dụng các phương thức HTTP một cách rõ ràng. Nguyên lý thiết kế của REST thiết lập ánh xạ 1-1 giữa các hành động thêm, xem, sửa, xóa (CRUD) do đó:
Để tạo một tài nguyên ta sử dụng phương thức POST
Để truy xuất tài nguyên, ta sử dụng phương thức GET
Để cập nhật dữ liệu của tài nguyên, ta sử dụng phương thức PUT
Để xóa tài nguyên, ta sử dụng DELETE
Nếu như trước đây, có một số dịch vụ web được thiết kế sử dụng phương thức GET cho mục đích tạo tài nguyên trên máy chủ. Như vậy phương thức GET không được sử dụng đúng với mục đích. Ví dụ:
Web Server được thiết kế để phản hồi các phương thức dựa trên HTTP GET bằng cách truy vấn tài nguyên dựa trên các tham số trên đường dẫn và trả về thông tin chứ
không phải để thực hiện việc thêm mới một tài nguyên. RESTful giải quyết vấn đề này bằng cách sử dụng đúng phương thức HTTP POST
Với thiết kế này, dịch vụ web sử dụng REST tường minh hơn trong các truy vấn tài nguyên. REST không sử dụng các động từ trong URIs như /add-users hoặc /update- users, do vậy dễ dàng chuyển trạng thái CRUD.
Với RESTful, máy khách có thể yêu cầu chuẩn đầu ra phù hợp, được chấp nhận bởi HTTP, ta có thể lựa chọn chuẩn đầu ra bằng cách thay đổi giá trị MINE tại HTTP header. Một số loại MINE phổ biến được sử dụng bởi dịch vụ web RESTful
MIME-Type Content-Type
JSON application/json XML application/xml
XHTML application/xhtml+xml
Ví dụ về đầu ra chuẩn JSON cho một phương thức HTTP GET của dịch vụ web RESTfull POST /users HTTP/1.1 Host: localhost Content-Type: application/xml <?xml version="1.0"?> <user> <email>thanhlx@gmail.com</email> </user> { id: 41581, filename: "MYD04L2.A2015177.0538.006.2015177054633_uk_aqi- Thanh_pho_Ha_Noi.tif", filepath: "apom/prod/ProMODISAQI/tcqt/2015/MYD04L2.A2015177.0538.006.2015 177054633_uk/", aqiid: 672, gridid: 1, max: 22, min: 16, avg: 19, aqstime: "2015-06-26 05:38:00", updatetime: "2015-06-26 02:44:07.615435", id_tinh: 1, type: 1, sourceid: 1