AD DESCRIPTION
AD DESCRIPTION
Advertise Now!

Thứ Hai, 30 tháng 5, 2011

Công nghệ web GIS (web Map) của Google

Nói về GIS thì chắc ngoại trừ NASA wordwin (nguồn mở) ra thì google phải nói là một đại gia về GIS mà cụ thể là web GIS http://maps.google.com và ứng dụng googleEarth.
Làm thế nào mà google lại đưa dữ liệu GIS lên web nhanh như vậy?. Dữ liệu cả thế giới nếu bạn mở AcrGIS lên hay một phần mềm GIS Desktop nào lên và zoom full thì hẳn bạn phải ngồi chờ và đi uống vài cử cafe hoặc Có khi là "out of memories" cũng nên.
Sau đây là tóm tắt công nghệ đưa bản đồ lên web của goole mà vài năm gần đây Việt Nam đã tìm hiểu và sử dụng khá thành công.
Tôi đã mất khoảng 1 tháng để hoàn thành code và công nghệ trên để có thể đưa bản dồ TPHCM lên Web theo kiểu chơi của đại gia maps thế giới này.
Đầu tiên: Ta không thể vẽ ra (render) một hình bản từ dữ liệu và vẽ (đưa) trực tiếp lên web. Công việc này tốn một khoảng thời gian phải chờ đợi. Vả lại mỗi lần Zoom( phóng to , thu nhỏ) hay pan(kéo rê bản đồ) thì phải tạo ra ảnh mới. Cách này thời gian không cho phép nếu phải truyền dữ liệu trên môi trường Internet.
Vậy muốn nhanh phải làm như thế nào?? Chắc chắn một điều là phải tạo ra ảnh trước đó và khi zoom, pan thì chỉ việc đưa ảnh ra thôi. Vậy tạo bao nhiêu ảnh cho đủ???
Cách nghỉ đơn giản đầu tiên mà tôi nghĩ ( và tôi chắc chắn là người làm ra maps.google cũng đã nghĩ như vậy) là tạo ra tấm ảnh khổng lồ và chỉ việc kéo rê hoặc zoom pan nó. Làm sao để tạo ra được những tấm ảnh khổng lồ như vậy?? Có phần mềm GIS nào làm được không??
Theo tôi test thử thì không có phần mềm nào làm được điều này vì đơn giản là máy tính chưa cho phép sử dụng một bộ nhớ lớn như vậy. Bạn thử dùng code tạo ra một hình ảnh (bitmap) với kích thướt 13800X13800 pixel là đủ biết thế nào. Hoặc có thể bạn tạo được lớn hơn nhưng vẫn có một giới hạn cho phép. và ngay cả bản đồ HCM thôi cũng là không thể tạo ở mức độ zoom lớn nói j đến thế giới. Thêm vào đó giả sử nếu ta tạo ra được những tấm ảnh khổng lồ liệu website của bạn có load lên liên tục nhanh không?Câu trả lời là rất chậm,nếu một ảnh lớn thì web load lên cũng khá lâu và lại phải chờ.
Vậy làm sao đây?? Nghĩ đơn giản một chút , cắt nó nhỏ ra rồi ráp nó lại theo thứ tự là OK. Vâng đó là cách nghĩ của thế giới của những người vĩ đại. Suy nghĩ thật đơn giản nhưng thực hiện thì không.Đầu tiên làm thế nào cắt ra theo từng mảnh. Phải tự mình viết lấy phần mềm ( hoặc tìm phần mềm hổ trợ). Và tôi đã chọn tự viết lấy từ mã nguồn mở. Một cách vừa có thể quản lý được công việc và vừa tiết kiệm được thời gian.
google maps đưa bản đồ lên web như thế nào?

Đầu tiên anh ta cắt bản đồ theo từng độ phóng to ,thu nhỏ(độ zoom) khác nhau. Mỗi mức độ như vậy sẽ cắt ảnh mỗi tấm là 256x256 hoặc có thể chọn khác( 512x512) chẳng hạn.
Như vậy ở mỗi độ zoom khác nhau số lượng ảnh sẽ khác nhau. Và để đơn giản tôi chọn tỉ lệ zoom lớn = 2 lần tỉ lệ zoom nhở hơn. Tức là khi bản đồ của bạn ở kích thướt 1:50000 thì khi zoom in ( phóng to hơn một mức) tỉ lệ sẽ là 1:25000.
Giả sử tấm zoom full toàn thế giới của bạn chỉ có kích thướt 256x256 pixel (tức là bạn có 1 tấm ảnh kích thướt 256x256 chứa hình ảnh bản đồ toàn thế giới). Vậy khi zoom in ( phóng to lên mức nữa) thì ảnh của bạn sẽ to gấp đôi ( tức là kích thướt 512x512 chứa full). Cứ như vậy bạn phóng to thì ảnh sẽ lần lượt là : 1024x1024, 2048x2048,…Và nếu tôi gọi mức đầu tiên (256x256) là 0 thì tôi có mức n sẽ có kích thướt 256.2nx256.2n.
Như vậy nếu tôi cắt ảnh ở mỗi mức ra kích thướt 256x256. Thì mức thứ 2 tôi sẽ có 4 ảnh ( vì 512x512 sẽ cắt làm 4 tấm 256x256), và mức n tôi sẽ có 2n.2n tấm ảnh nhỏ.
Và khi đưa lên web chỉ cần ráp những tấm ảnh này theo độ zoom, pan mà người dùng thao tác là xong. That’s all.

Nguồn: http://vea.gov.vn

1 nhận xét:

Đăng nhận xét