Tuesday, January 14, 2014

Quản lý phiên bản cho dữ liệu không gian trên GitHub

Quách Đồng Thắng 
Trung tâm Ứng dụng GIS Tp.HCM

Đối với quản lý phiên bản mã nguồn, hiện nay Git là sự lựa chọn hàng đầu so với các giải pháp khác (từ CSV, SVN  cho đến Mercurical, Bazaar). Ngoài các dịch vụ hỗ trợ Git thuần túy mới phát triển như GitHub/ Gitorious/ BitBucket, hầu hết các code hosting hiện nay như Google Code, SourceForge, CodePlex… đều nâng cấp hỗ trợ Git để thu hút người dùng. Hình sau cho thấy giao diện quản lý project trên Google Code với tùy chọn hỗ trợ Git.

Để nâng cao tính trực quan cho các project có quản lý dữ liệu không gian, gần đây GitHub - một trong các code hosting Git nổi bật - đã hỗ trợ hiển thị dữ liệu không gian ở định dạng geoJSONtopoJSON ngay trên giao diện quản lý project. GitHub sử dụng thư viện Leaflet.js, nguồn bản đồ mở OpenStreetMap được host bởi Mapbox, giới hạn kích thước file geojson là 10 MB. Bài viết trình bày cách quản lý phiên bản cho dữ liệu không gian trên Github.
Để phục vụ quản lý phiên bản và hiển thị dữ liệu không gian trên GitHub, đầu tiên cần chuyển dữ liệu không gian sang định dạng GeoJSON (có thể dùng chức năng Save as GeoJSON trong QGIS).

Tạo một repository public (miễn phí) trên GitHub – với tên là geogit. Tiếp theo có thể dùng công cụ giao diện đồ họa như GitHub for Windows để làm việc ở phía client, cụ thể là commit và synchronize ranhphuong.geojson lên project geogit trên GitHub.


Hiển thị ranhphuong.geojson trên giao diện GitHub:


Người dùng có thể xem dữ liệu không gian trên GitHub trực tiếp trên phần mềm QGIS thông qua URI https://raw.github.com/thangqd/geogit/master/ranhphuong.geojson

Hoặc có thể dễ dàng nhúng bản đồ này trong các trang html khác với script nhúng theo format như sau:
<script src="https://embed.github.com/view/geojson/thangqd/geogit/master/ranhphuong.geojson"></script>
 

Người dùng có thể thực hiện các thay đổi trên dữ liệu không gian và trải nghiệm các tính năng quản lý version của git tương tự như một file text thuần túy. Việc quản lý version giúp người dùng có thể quản lý toàn bộ lịch sử của dữ liệu không gian trong dự án phần mềm hoặc cho ứng dụng thực tế như quản lý lịch sử của đối tượng địa lý như giao thông, thửa đất.

Thursday, January 9, 2014

Tam tiểu tử - Tứ tiểu thư

Mới đó mà đã 10 năm kể từ khi ra trường, hôm qua tình cờ lục lại trong đống tàng thư, thấy một sáng tác hồi năm 2003 - một thời sinh viên nhiều kỉ niệm, nay xin chia sẻ cùng mọi người để gọi là thư giãn nhân dịp năm mới nhé.

Tôi thích toán từ trước thi tú tài tại trường tỉnh. Thi tú tài tốt, tôi tháp tùng theo tụi thằng Tí, thằng Tèo thi Toán - Tin. Tụi tôi tự "Tam tiểu tử", trú tại thôn Thạch Thành, tất thảy trạc tuổi, thân thiết từ thời trẻ trâu. Trước thi, tía tôi trang trải trao tiền tận tay tôi, thỏ thẻ: "Thi trúng tuyển thì tiến thân, thi tam tứ trường toàn trượt thì theo truyền thống tổ tông ta từ trước: thay tía trồng trọt".
Theo tía tôi thì:
                                    “Tậu trâu, trúng tuyển, thành thân,
    Tam thứ thành tựu, tất trưởng thành”…
Tuổi thất thập, thấy tía tần tảo từ trưa tới tối, tôi thương tía tha thiết.
Thấm thoát, thư trúng tuyển truyền tới Trạm Thư tín trong thôn. Thể theo truyền thống thôn Thạch Thành từ thuở trước, Trưởng thôn truyền tất thảy Trạm Truyền thanh trong thôn tường thuật trực tiếp tin tụi tôi trúng tuyển, truyền trai tráng thịt trâu thết tiệc tán thưởng trọng thể “tam Tân Trạng”. Tức thì, từ trong tam tộc tới toàn thể trong thôn, từ tụi trẻ tập tễnh tới trai tráng trưởng thành, từ tứ tuần, thất thập tới thượng thọ, tất thảy tập trung tại trang trại Trưởng thôn, thưởng thức thịt thơm, trà thanh, tuyệt tửu,…tù tì tú tỉ tới tận trăng tàn. Thích thú, Trưởng thôn truyền tặng tấm trướng thêu to tướng:
“Thiếu thời tần tảo tắm trâu,
Tới thời thắng thế tóm thâu trường thành”
Tấm trướng (tượng trưng trí tuệ) treo thật trang trọng tại Trung tâm truyền thống thôn, tọa trên tượng thiềm thừ tam túc (tượng trưng tiền tài).
Tháng tám, từ tạ tía, từ tạ thôn, thư trúng tuyển trên tay, tôi tự tin tiến thẳng trường tôi thích.
Tới thị thành, tụi tôi trú tại "tiểu trại" thím tám, thuộc Thới Tam Thôn. Thím tám tuổi trạc tứ tuần, trước tiếp thu, thím thường trú tận tỉnh Thừa - Thiên. Thấy thương tụi tôi, thím tính tiền trọ tám trăm trên tháng (theo thím thì tiền trọ tụi tôi trả thấp thua thị trường tiền trọ tại trung tâm thành thị).
Tụi tôi tiêu tiền thật tằn tiện. Tuy thế, tính từ tháng tám, tụi tôi thiếu thím tám tròm trèm tiền triệu; thôi thì tiền thuê trọ, tiền tiêu, tiền tỏi, tiền thịt, tiền trứng,….trăm thứ tiền. Thi thoảng, thím tám thúc tụi tôi thanh toán tiền tháng trước. "Tam tiểu tử" thổn thức, trằn trọc. Tự trang trải, tụi tôi tranh thủ tiếp thị, tìm thêm tiền trả tiền thuê trọ. Tuy trong tình thế túng thiếu, tụi tôi thêm thân thiết tựa thâm tình thủ túc.
Từ "trại" tôi tiến thẳng trên trăm thước tức thì thấy tứ tiểu thư: Thảo, Thanh, Trang, Thuý trọ tại "tiểu trại" thím tư (trước tiệm tỉa tóc thời trang Thiên Thai). Thấy "Tam tiểu tử" tụi tôi trẻ trung, thông thái, thích thể thao, thích tập tạ, thích thơ, tinh thông Tứ Thư, tính tình trung thực, "tứ tiểu thư " thường tới thăm, tâm tình thật thân thiết.…
Tết trung thu……
Tiết trời thanh trong, trăng trung tuần tháng tám tròn trịa trông thật tuyệt. Trên tấm thảm trắng trước thềm, "Tam tiểu tử", "Tứ tiểu thư " tụ tập thưởng trà, thi thơ (toàn thơ tình tê tái!). Thím tám tấm tắc: "Tuổi teen thật tuyệt!". Trăng treo trên trời thật tỏ, tụi tôi thức trắng tâm tình tới tận trăng tàn.
Trong "Tứ tiểu thư", thằng Tèo thích Thảo "tóc tém". Tính tới tết Tỵ, Thảo tới tuổi trăng tròn, trông Thảo thật thon thả, thướt tha, thánh thiện, tựa Tây Thi trong truyện Tàu. Từ thích thích, thương thầm tới tương tư, Tèo thường trao thư tỏ tình tới Thảo (Thực tế thì thỉnh thoảng, thấy thằng Tèo thất thểu tìm trăng thả thơ, tôi trổ tài "thám tử tư" thì thấy tới tám trang thư tỏ tình. Thú thật thì theo tôi, thư  tỏ tình thằng Tèo tựa tựa thư tống tiền trong tập tiểu thuyết trinh thám tôi thích!).
Thứ tư tuần trước, theo tiếng thét tình thơ thôi thúc trái tim, Tèo trực tiếp tìm tới Thảo tỏ tình…
Tèo tắm táp, tỉa tót, tới tiệm trà trước, trông Thảo tới.
Thảo tới, tâm tình trong tích tắc, Tèo tấn tới, toan tính tranh thủ thơm trộm Thảo. Thấy Tèo tính “tình tính tang”, tuy thảng thốt, tức thì Thảo thủ thế, tát Tèo thẳng tay. Tèo tẽn tò, tía tai,...
Thảo tức tối: Tính tiền. Tui tự tính!
Tèo: Thôi,…..Tèo tính…, Thảo…..
Thảo: Tùy Tèo. Tui thề tránh Tèo tới tận thế.
Thảo tiến thẳng, thoăn thoắt thoát thân.
….
Tiệm trà: Thưa, Thối tiền….
Tèo thẫn thờ: Thôi,….
Tiệm trà: Thanks.
….
Thất tình, thiếu tiền, tim Tèo tan tác trước thực tại thương tâm, thân thể tàn tạ, te tua. Thành thử, Tèo thôi tới trường tiếp thu thêm tri thức. Tuần trước, Tèo trốn tám tiết thực tập Tin. Tuần tới, tổ tôi thuyết trình “Thuyết Toán trong Tin”, Tèo tính trốn tiếp. Tối tối, Tèo thường thức trắng, thẫn thờ than thở, thì thầm tựa tâm thần, thỉnh thoảng Tèo "thơm" tấm thư tỏ tình trong trạng thái thất tình thê thảm.
“Trung thu trăng tỏ, trời thanh
      Tình Tèo tan tác, tan tành, te tua”
Tệ thêm, tối trước, tin tới tai tôi thật thót tim, thằng Tí thét thất thanh từ tận trên tầng tám: "Thằng Tèo….thằng Tèo…. tính tự tử".
Tôi tức tốc tiến thẳng tới tầng tám, tim thúc trống thình thịch, tức thì túm thằng Tèo trong tay. Trễ tích tắc thôi, thằng Tèo tắc tử. Tức tối, tôi tính túm tóc tát Tèo tám tát tới tấp. Tuy thế, thấy thằng Tèo thất tình trông thật tội, tôi thấy thương thay. Tèo thôi tự tử, tựa thân thể tiều tuỵ trên tay tôi, thút thít "Tại tao, tại tao,…”.
Tưởng thằng Tèo trúng tà, tụi tôi thỉnh Thượng tọa Thích Thiện Tâm, trụ trì Thăng Thiên Tự tới trừ tà. Thầy Thích Thiện Tâm tới, tụi tôi tận tình tường thuật, tỉ tê tâm tình. Tỏ tường truyện thằng Tèo, Thầy truyền: Theo thầy thì “tà thuật” thường thất thiệt, tại tâm ta tất. Trung tuần tháng tới, Tèo tới tu thực tập tại tòa tháp tàng thư trong Thăng Thiên Tự, tịnh tâm trong thạch thất, tống tiễn thất tình, thành tâm tu tỉnh, “tà thuật” tất tiêu trừ.
Thiết trượng trong tay, Thầy tạ từ, thong thả thẳng tiến Thăng Thiên Tự, thì thầm:
“Tình trường tăm tối
      Tiến thoái thất thường”
Thôi thì:                                            “Tâm thanh, trí tịnh,
                                                          Thành tựu tại thiên”
                               (Thiện tai,… thiện tai…)
….
Trước thi tám tuần, thể theo tinh thần tập thể, tôi, thằng Tí tập trung thức tỉnh thằng Tèo. Tối tối, tụi tôi thường tỉ tê tâm tình tạo trạng thái tinh thần thảnh thơi. Tèo từ từ thức tỉnh trong trường tình tăm tối, tinh thần trẻ trung, tươi tắn tựa thuở trước. Tèo thẳng thắng thề thốt trước tập thể: "Tao thề tuyệt tình, tập trung tinh thần trong tuần thi tới".
Thấm thoát tám tuần trôi thật thần tốc. Toàn thắng trong tuần thi trước Tết, "Tam tiêu tử" thêm thân thiết, tự tin trong thế thẳng tiến.
Trước Tết Tân Tỵ.…
"Tam tiểu tử" tới thăm "Tứ tiểu thư" trên tinh thần tái thiết tình thân thiết tựa thuở trước. Tỏ tường tâm trạng tụi tôi, "Tứ tiểu thư" tạm thời tha thứ tội thằng Tèo tỏ tình thô thiển, thiếu trật tự, thiếu trình tự. Tèo tủm tỉm, tía tai; Thảo tém tóc, thẹn thùng. Tụi tôi tiếp tục thưởng thức trà thơm, trổ tài thi thơ, toàn thơ tuổi trăng tròn.
Trên trời thanh trong, trăng treo thật tỏ.
                                                                                   
Thới Tam Thôn, Tết Tân Tỵ
                                                                                    (Trích Tự truyện tuổi teen)

Wednesday, January 8, 2014

Import dữ liệu Raster vào Oracle


Quách Đồng Thắng 
Trung tâm Ứng dụng GIS Tp.HCM

1.  GIỚI THIỆU

Tiếp theo loạt bài về vấn đề quản lý dữ liệu không gian trong Oracle (Tham khảo thêm Import Shapefile vào Oracle), bài viết trình bày cách import dữ liệu raster vào CSDL Oracle (Enterprise Edition).


2.  THỬ NGHIỆM

Oracle Express Editon (XE) là bản miễn phí nên có những hạn chế sau:
  • Dữ liệu không vượt quá 4 GB.
  • Mỗi máy tính chỉ host được một instance của Oracle XE.
  • Oracle XE có thể được cài đặt trên máy có nhiều CPU, nhưng cùng lúc chỉ có thể chạy trên một CPU, hoặc chỉ chạy trên một nhân đối với bộ xử lý đa nhân (do đó không khai thác hết sức mạnh của CPU).
  • Oracle XE có thể được cài đặt trên server với bộ nhớ rất lớn, nhưng chỉ sử dụng tối đa 1GB bộ nhớ RAM.

Ngoài ra, Oracle XE không hỗ trợ GeoRaster nên bài viết sử dụng Oracle phiên bản Enterprise để thử nghiệm.

Để quản lý dữ liệu vector, Oracle sử dụng kiểu dữ liệu SDO_GEOMETRY. Đối với dữ liệu raster, Oracle sử dụng kiểu dữ liệu SDO_GEORASTER. Cấu trúc của đối tượng SDO_GEORASTER được thể hiện trong hình sau:


Chúng ta có thể tạo table lưu trữ theo cấu trúc trên, sử dụng chức năng import raster sẵn có của Oracle để đưa dữ liệu raster (ảnh viễn thám, ảnh hàng không,…) vào quản lý trong CSDL (tham khảo thêm tại gis4free). Tuy nhiên, để đơn giản hóa công đoạn import dữ liệu, bài viết giới thiệu cách tiếp cận sử dụng tiện ích của bên thứ 3 là gdal_translate, một trong những công cụ mạnh mẽ của bộ thư viện xử lý dữ liệu raster mã nguồn mở GDAL.

Để thuận tiện, có thể download GDAL thông qua OSGeo4W. Ở giao diện cài đặt OSGeo4W, chọn Advance Install. Sau đó search “gdal” để cài đặt gói thư viện gdal.

 

Sau khi cài đặt thành công, chạy OSGeo4W Shell để sử dụng công cụ gdal_translate ở giao diện dòng lệnh. Có thể gõ lệnh gdal_translate để xem các tham số khác của công cụ. Trong trường hợp này, ta nhập các tham số như hệ tham chiếu EPSG:32648, đường dẫn đến file ảnh geotif và tham số kết nối đến Oracle server (trong trường hợp này bdkh là tên database, hr là username và password.).

gdal_translate -a_srs EPSG:32648 -of georaster f:/oracle/q1_B1.tif geor:hr/hr@localhost/bdkh

Sau khi import thành công, hai bảng được tạo ra là GDAL_IMPORT (tương ứng với “Table With GeoRaster Column” trong hình trên) và GDAL_RDT (tương ứng với “Raster Data Table”) – là bảng thực sự chứa dữ liệu raster được chia thành từng block và lưu trữ ở định dạng BLOB (Binary Large Object).


Để hiển thị ảnh, chúng ta có thể sử dụng GeoRasterViewer (sẵn có trong Oracle example - lưu ý chọn “See All” để có thể download và cài đặt Oracle example). Sau khi cài đặt thành công, có thể xem ảnh bằng công cụ GeoRasterViewer.bat (Trong trường hợp này nằm ở đường dẫn C:\oracle\product\11.2.0\dbhome_1\md\demo\georaster\java):


Đơn giản hơn, chúng ta có thể xem ảnh Georaster từ QGIS: chọn công cụ Add Oracle Georaster layer , nhập các thông số kết nối:


Kết quả:



3.  KẾT LUẬN

Bài viết đã trình bày cách import dữ liệu raster, cụ thể là ảnh hàng không độ phân giải 25cm khu vực quận 1, Tp.HCM vào CSDL Oracle. Đây là những bước tiếp cận cơ bản ban đầu mang tính giới thiệu. Để hiểu rõ và làm việc hiệu quả với dữ liệu raster trong Oracle, cần nghiên cứu các tài liệu kỹ thuật của Oracle, đặc biệt là quyển Pro Oracle Spatial for Oracle Database 11g  (như tạo Pyramids để tăng tốc hiển thị, trích lọc ảnh, chuyển đổi ảnh, nén ảnh, …).

TÀI LIỆU THAM KHẢO
Ravikanth V. Kothuri, A. G. (2007). Pro Oracle Spatial for Oracle Database 11g . Apress.