Home
About Us
Contact Us
Social Media
Techno
Politics
Photos
Video
Download
Today is : 5:54 AM
CLIMATE GIS
M t cách ti p cận xây dựng h th ng thông
tin địa lý trên m ng di n r ng trên cơ sở
công ngh n n c a ESRI
Like
ABOUT CLIMATE GIS
Share One person likes this. Sign Up to see w hat your friends like.
open in browser PRO version
Are you a developer? Try out the HTML to PDF API
pdfcrowd.com
CLIMATE GIS NH N NH CÁC B N YÊU GIS & YÊU MÔI
TR
NG DÀNH CHÚT TH I GIAN XEM ĐO N VIDEO
CLIP NÀY
Tóm t t: H n ch l n nhất c a các h th ng GIS đã đư c xây dựng và đưa vào ng d ng ở nư c ta là hầu
h t đ u vận hành trên máy đơn, m c đ chia sẻ thông tin rất thấp, giá trị s d ng bị gi m dần theo thời
gian. Chỉ có những h th ng đư c vận hành trên m ng di n r ng m i t o đi u ki n cho đông đ o người
dùng tham gia vận hành, duy trì, cập nhật dữ li u, ngày càng nâng cao giá trị khai thác c a h th ng. Tác gi
vi t bài báo này nhằm m c đích chia sẻ v i b n đọc những nét cơ b n v m t cách ti p cận xây dựng h
th ng GIS trên m ng di n r ng: lựa chọn công ngh n n, xây dựng phần m m khách truy vấn, cập nhật dữ
li u thu c tính và dữ li u không gian t xa, t i ưu hố q trình truy n t i dữ li u không gian trên m ng. Đây
là những kinh nghi m tác gi đã tích luỹ đư c khi nghiên c u, xây dựng h th ng GIS trên m ng WAN qu n
lý cơng trình thuỷ l i trong lưu vực sông Hồng.
1. Đặt vấn đề
Công ngh h th ng thông tin địa lý GIS ngày càng đư c ng d ng r ng rãi trên th gi i trong nhi u lĩnh
vực khác nhau, nhất là trong những lĩnh vực mà đ i v i các đ i tư ng, các hi n tư ng đư c quan sát,
đư c nghiên c u và qu n lý vị trí địa lý c a chúng có ý nghĩa quan trọng. ở nư c ta, những năm cu i c a
th kỷ trư c, người ta nói nhi u v cơng ngh GIS, nhưng thực sự áp d ng GIS vào thực ti n hãy còn
chưa đư c nhi u. Những năm gần đây, nhờ sự nỗ lực c a các cơ quan chuyên môn, c a các đơn vị công
ngh thông tin, công ngh GIS đang dần len chân vào cu c s ng m t cách thầm l ng và đ t đư c những
k t qu đáng khích l . Tuy nhiên, những k t qu đó vẫn cịn có rất nhi u h n ch so v i yêu cầu c a thực
open in browser PRO version
Are you a developer? Try out the HTML to PDF API
pdfcrowd.com
ti n. Rà sốt l i những gì đã đ t đư c trong vi c xây dựng và ng d ng các h GIS ở nư c ta, theo chúng
tôi, trong những h n ch đang tồn t i thì cái h n ch l n nhất là vấn đ tổ ch c chia sẻ và cập nhật thông
tin.
Chúng ta bi t rằng, để xây dựng m t h th ng thơng tin đã khó, nhưng duy trì sự tồn t i c a nó,
nâng cao tính hữu ích cùng v i thời gian l i càng khó hơn. Hi n nay, phần l n các h GIS đã đư c ng
d ng trong nư c đ u là những h vận hành trên máy đơn ho c trong m ng n i b , s người tham gia khai
thác, vận hành và duy trì chúng rất ít. Nhi u h GIS sau khi k t thúc dự án, đ tài hầu như không bao giờ
đư c cập nhật dữ li u. Vì vậy, sau m t thời gian chúng chỉ cịn giá trị qu ng cáo, trình di n. Thông thường
trong m t h th ng GIS các đ i tư ng đư c qu n lý có vị trí địa lý phân b r i rác cách xa nhau. Những
người ho c cơ quan trực ti p qu n lý, khai thác và nắm thông tin v các đ i tư ng này vì th cũng ở cách
xa nhau. Đ i v i h th ng GIS, chính họ và chỉ họ m i là những người có thể duy trì và nâng cao tính hữu
ích c a h th ng theo v i thời gian. Không có đi u ki n để cho những người này trở thành tác nhân tích
cực c a h th ng, h th ng sẽ mất dần giá trị c a nó. Rõ ràng là các h GIS vận hành trên máy đơn ho c
m ng LAN sẽ không đáp ng đư c yêu cầu đó. Chỉ có các h vận hành trên m ng WAN thông qua Internet
ho c tổ ch c k t n i trực ti p theo s đi n tho i (dial-up) m i có thể t o đư c đi u ki n cho những tác
nhân cần thi t tham gia vận hành h th ng.
Cho đ n nay, so v i các môn khoa học công ngh khác trong ngành công ngh thông tin, các tài
li u vi t v công ngh GIS không có nhi u. Phần l n các tài li u này ho c chỉ đ cập đ n những khái ni m
cơ b n c a công ngh GIS, ho c là những tài li u hư ng dẫn s d ng các công c ph c v các h th ng
GIS c a các công ty thương m i như MapInfo, ArcView, Geomedia... Hầu như chưa có m t tài li u nào
trình bày m t cách c thể quy trình xây dựng m t h th ng GIS bằng ti ng Vi t, đ c bi t đ i v i h th ng
trên m ng WAN. Trong khuôn khổ bài báo này, chúng tôi mu n chia sẻ v i b n đọc kinh nghi m c a mình
v những vấn đ rất cơ b n xây dựng m t h th ng GIS trên m ng WAN mà chúng tơi tích luỹ đư c trong
q trình xây dựng h th ng GIS qu n lý các cơng trình thuỷ l i ở lưu vực sơng Hồng. Hy vọng rằng, sau
này sẽ có đi u ki n để chúng tơi có thể trình bày đầy đ , chi ti t hơn những công vi c mà chúng tôi đã thực
hi n để xây dựng h th ng GIS nói trên.
2. Lựa chọn cơng nghệ nền
Như mọi ngành khoa học công ngh khác, ngày nay, thực hi n mọi
vi c t con s không để xây dựng h th ng GIS là m t đi u bất h p lý. S d ng các cơng ngh có s n để
làm n n t ng cho sự phát triển ti p theo là đi u hiển nhiên. Như vậy, lựa chọn công ngh n n nào cho phù
h p? Để có thể tr lời câu h i đó, trư c h t ta ph i xem xét các yêu cầu cơ b n mà m t h th ng GIS trên
m ng WAN cần ph i đáp ng. Đó là:
- Cho phép truy vấn dữ li u t xa
- Cho phép cập nhật dữ li u thu c tính t xa
- Cho phép cập nhật dữ li u không gian t xa.
Tất nhiên, ở đây ta cũng không thể b qua các yêu cầu quan trọng khác đ i v i h th ng, như thân
thi n v i người dùng, qu n lý đư c kh i lư ng thông tin l n, thực hi n giao dịch trên m ng nhanh... Nhưng
xét theo những k t qu đã đ t đư c trong vi c ng d ng công ngh GIS ở nư c ta trong những năm gần
đây, các yêu cầu đư c li t kê trên vẫn ph i là những yêu cầu cần đư c xem xét đầu tiên. Xuất phát t các
yêu cầu này, ta có thể đưa ra những tiêu chí để lựa chọn công ngh n n, sắp x p chúng theo th tự ưu
open in browser PRO version
Are you a developer? Try out the HTML to PDF API
pdfcrowd.com
tiên như sau:
- Hỗ tr qu n trị CSDL không gian đa người dùng
- Hỗ tr giao dịch, truy n t i dữ li u không gian trên m ng cho phần m m khách (client)
- Hỗ tr lập trình giao di n GIS cho phần m m khách (hiển thị b n đồ, tìm ki m đ i tư ng, thao tác
v i b n đồ bằng các thi t bị đầu cu i...)
- Giá chuyển giao thấp
- Xây dựng h th ng nhanh
- Có thể k t h p v i các công ngh n n khác, v i các h p phần do người lập trình tự phát triển.
Nói chung, khó có thể chọn đư c m t công ngh n n đáp ng đồng thời tất c các yêu cầu trên,
đ c bi t là yêu cầu v giá chuyển giao và yêu cầu đ i v i các kh năng kỹ thuật công ngh c a s n phẩm.
Vì vậy, vi c lựa chọn ph i dựa trên th tự ưu tiên c a các tiêu chí đã nêu.
Trong các cơng ngh n n GIS thương m i hi n nay, đáng chú ý nhất là công ngh c a vi n nghiên
c u môi trường ESRI c a Mỹ và công ngh c a hãng MapInfo là những công ngh cung cấp các gi i pháp
tương đ i đồng b cho vi c xây dựng m t h th ng GIS. Bên c nh hai công ngh trên là công ngh mã
nguồn mở OpenGIS. V góc đ gi i pháp kỹ thuật cơng ngh , công ngh n n c a ESRI đáp ng khá đầy đ
các tiêu chí chúng ta đ t ra. Điểm m nh nhất c a công ngh GIS c a ESRI là qu n trị CSDL không gian đa
người dùng trên m ng WAN, hỗ tr giao dịch, truy n t i dữ li u không gian trên m ng cho phần m m
khách. Công ngh GIS c a ESRI ban đầu đư c phát triển cho môi trường UNIX, sau đó m i chuyển sang
mơi trường Windows trên các máy PC. Do vậy, các gi i pháp qu n trị CSDL không gian đa người dùng, gi i
pháp m ng c a ESRI đư c phát triển hoàn chỉnh và đồng b . Như c điểm c a lo i công ngh này là giá
chuyển giao khá cao so v i đi u ki n hi n nay ở nư c ta.
Công ngh mã nguồn mở OpenGIS rất hấp dẫn đ i v i các nhà phát triển. ng d ng mã nguồn mở
sẽ là đi u ki n thuận l i cho sự sáng t o c a các nhà phát triển phần m m, không mất phí chuyển giao, tuy
nhiên, nó địi h i nhi u thời gian và tâm huy t. Thời gian đầu, để xây dựng các h GIS trong m t thời h n
gấp rút, công ngh mã nguồn mở không phù h p. Nhưng trong tương lai, đây là m t hư ng phát triển có
nhi u triển vọng.
Trên cơ sở các phân tích trên, lựa chọn c a chúng tơi là: S d ng công ngh n n ESRI trong thời
gian đầu để xây dựng các h th ng GIS đòi h i thời h n gấp rút, đồng thời qua quá trình s d ng cần khai
thác, học h i cách tổ ch c lưu trữ, tổ ch c truy vấn dữ li u, tổ ch c hiển thị b n đồ trên phần m m khách,
nhằm m c đích định hư ng trong tương lai ng d ng và phát triển mã nguồn mở OpenGIS.
ESRI cung cấp cho nhà phát triển các gi i pháp công ngh sau đây để xây dựng m t h th ng GIS
trên m ng WAN:
- Công c ArcSDE (Spatial Database Engine) lưu trữ và qu n trị dữ li u khơng gian tích h p vào
các h qu n trị CSDL quan h như Oracle, DB2, MS SQL Server...
- Công c ArcIMS hỗ tr xây dựng trang web GIS trên m ng
- Thư vi n cho ngơn ngữ Java và C lập trình giao dịch trên m ng, k t n i vào ArcSDE
- OCX MapObject hỗ tr lập trình giao di n GIS cho phần m m khách theo công ngh nhúng OLE
trong môi trường Windows.
Để xây dựng m t h th ng GIS trên m ng WAN bằng công ngh c a ESRI, chúng ta ph i ti n hành
open in browser PRO version
Are you a developer? Try out the HTML to PDF API
pdfcrowd.com
hai bư c chính. Bư c th nhất là ng d ng ArcSDE để xây dựng CSDL GIS đa người dùng. Công vi c c a
giai đo n này thuần t mang tính ng d ng, vì vậy trong khn khổ bài báo này xin phép không đ cập đ n.
Bư c th hai là phát triển phần m m khách truy cập t xa cho các tác nhân c a h th ng. Dư i đây chúng
tơi sẽ nói v các kinh nghi m c a mình tích luỹ đư c khi xây dựng h th ng GIS qu n lý các cơng trình
thuỷ l i trên m ng WAN, ng d ng cho h đi u hành máy ch là Windows 2000 Server và h đi u hành các
máy tr m là các phiên b n Windows khác nhau c a Microsoft.
3. L p trình giao dịch trên m ng v i các hàm SDE C API
V i các gi i pháp mà ESRI cung cấp, ta có hai cách xây dựng phần m m khách có kh năng truy
cập t xa vào CSDL. Hai cách này chỉ khác nhau ở phương pháp truy cập. V i cách th nhất, s d ng
ArcIMS xây dựng trang web GIS t o thành l p phần m m trung gian (middleware). Trang web GIS này có
ch c năng đón nhận các yêu cầu t các máy tr m g i t i thông qua m ng Internet, chuyển các yêu cầu
này đ n ArcSDE và nhận k t qu x lý t ArcSDE tr l i cho máy tr m. Như c điểm l n nhất c a phương
pháp này là không thể cung cấp cho người dùng kh năng biên tập đ i tư ng đồ ho t các máy tr m, và
như vậy không đáp ng đư c các yêu cầu đ i v i m t h th ng GIS trên m ng WAN mà chúng ta đã nêu
trên.
Phương pháp th hai là s d ng thư vi n SDE C API xây dựng phần m m khách truy cập trực ti p
t i qu n trị dữ li u không gian ArcSDE trên máy ch . Thư vi n SDE C API cung cấp cho người phát triển
đ các hàm cần thi t để truy vấn, cập nhật dữ li u thu c tính và dữ li u khơng gian, tìm ki m các đ i tư ng
dựa vào vị trí địa lý c a nó trên b n đồ... Sau đây là các nhóm hàm c a SDE C API:
- Nhóm hàm thực hi n nhi m v k t n i v i CSDL
- Nhóm hàm đi u hành các luồng dữ li u
- Nhóm hàm qu n trị cổng k t n i c a ArcSDE
- Nhóm hàm th ng kê các CSDL trong h th ng thơng tin
- Nhóm hàm qu n lý thông tin v các l p b n đồ
- Nhóm hàm qu n trị các l p b n đồ
- Nhóm hàm qu n trị các t p tăng t c truy cập logfile
- Nhóm hàm làm vi c v i các đ i tư ng đồ ho vectơ
- Nhóm hàm làm vi c v i các b ng lưu giữ t m thời các đ i tư ng đồ ho vectơ
- Nhóm hàm làm vi c v i các b ng dữ li u quan h
- Nhóm hàm làm vi c v i cấu trúc l nh SQL
- Nhóm hàm qu n lý các b ng điểm đồ ho
- Nhóm hàm qu n trị các thơng tin v các h to đ c a các l p b n đồ.
V i thư vi n này, người lập trình có thể xây dựng phần m m khách truy cập t xa t i máy ch và
có các ch c năng:
- K t n i trực ti p t i qu n trị dữ li u không gian ArcSDE
- Khởi t o ho c huỷ b các luồng dữ li u t máy tr m t i máy ch . Phần m m khách cùng lúc có
thể khởi t o và vận hành nhi u luồng dữ li u khác nhau. Đây là kh năng x lý đa luồng rất quan trọng khi
thực hi n các giao dịch trên m ng mà SDE C API cung cấp cho người lập trình
- Khởi t o ho c xố m t l p b n đồ trong CSDL trên máy ch
open in browser PRO version
Are you a developer? Try out the HTML to PDF API
pdfcrowd.com
- Thêm ho c b t c t thu c tính trong b ng dữ li u quan h
- Thay đổi dữ li u thu c tính trong CSDL
- Thay đổi dữ li u không gian (thay đổi to đ các điểm c a đ i tư ng) trong CSDL
- Thêm ho c xoá đ i tư ng đồ ho trong CSDL
- Tìm ki m, th ng kê các đ i tư ng đồ ho dựa vào vị trí địa lý c a chúng, ví d như th ng kê tồn
b các con sơng ch y qua địa phận m t tỉnh
- Thực hi n các phép tốn hình học giữa các đ i tư ng như phép c ng, phép giao...
V i các hàm c a SDE C API, phần m m khách có thể cho phép người dùng cu i không chỉ cập
nhật dữ li u thu c tính, mà cịn biên tập các đ i tư ng đồ ho t máy tr m, sau đó cập nhật vào CSDL
thông qua m ng Internet ho c k t n i trực ti p bằng chác quay s đi n tho i (dial-up).
4. L p trình giao diện bằng MapObject kết hợp v i C++ trong môi tr ng VC++
S d ng thư vi n SDE C API để lập trình các giao dịch trên m ng v i qu n trị dữ li u không gian
ArcSDE, ta sẽ không bị ràng bu c trong vi c lựa chọn cách xây dựng giao di n GIS cho phần m m khách.
Đi u đó có nghĩa là ta có thể chọn m t trong các thư vi n thương m i như MapObject c a ESRI, MapX c a
MapInfo ho c GeoView c a Blue Marble Geographics để lập trình giao di n cho phần m m khách. Ta cũng
có thể tự xây dựng các thư vi n đồ ho ph c v cho các m c đích đó. Để có căn c lựa chọn cơng c , ta
xem xét các yêu cầu cơ b n mà giao di n GIS phần m m khách cần ph i đáp ng. Xét v hình th c, giao
di n GIS c a phần m m ph i đáp ng đư c hai ch c năng chính: hiển thị b n đồ và hỗ tr các thao tác
c a người dùng đ i v i b n đồ như thu, phóng tỷ l , xê dịch b n đồ, tìm ki m đ i tư ng. Thông thường,
b n đồ c a các khu vực có thể có h quy chi u to đ khác nhau, v i các elipsoit thực d ng khác nhau, v i
các phép tính chi u khác nhau. Để có thể hiển thị đồng thời các lo i b n đồ như th , phần m m ph i bi t
tính chuyển to đ và đưa các l p b n đồ v m t h quy chi u chung trư c khi hiển thị lên màn hình. Hỗ
tr thao tác c a người dùng đ i v i b n đồ cũng liên quan đ n bài tốn tính chuyển to đ : x lý, bi n đổi
to đ con chu t trên màn hình v h to đ chung c a các l p b n đồ và ngư c l i. Có như vậy m i xác
định đư c vị trí tương hỗ c a con chu t và các đ i tư ng đồ ho trên b n đồ. Như vậy, xét v b n chất, hai
ch c năng chính c a giao di n GIS là: a) Thực hi n tính chuyển to đ giữa các h quy chi u, tính chuyển
to đ con chu t trên màn hình v to đ trong h quy chi u chung và ngư c l i b) Hiển thị các đ i tư ng
đồ ho lên màn hình.
Xây dựng các hàm tính chuyển to giữa các h quy chi u tương ng v i tất c các elipsoit thực
d ng và các phép tính chi u hi n đang đư c s d ng trong công ngh b n đồ là m t công vi c rất ph c t p,
khơng chỉ địi h i sự hiểu bi t sâu sắc v khoa học trắc địa-b n đồ, mà cịn địi h i nhi u cơng s c lập trình.
Trong khi đó, lập trình hiển thị các đ i tư ng đồ ho trong môi trường các h đi u hành phổ d ng ngày nay
là đi u khá d dàng. Vì vậy, khi lựa chọn thư vi n để xây dựng giao di n GIS cho phần m m khách, tiêu chí
đư c chúng tơi ưu tiên là hỗ tr tính chuyển to đ giữa các h quy chi u. Trên cơ sở đó, MapObject
đư c chọn như là cơng c chính để xây dựng giao di n GIS cho phần m m khách.
MapObject là thư vi n OCX lập trình dựa theo cơng ngh nhúng OLE trong môi trường Windows.
ưu điểm l n nhất c a MapObject là cung cấp cho nhà phát triển các hàm chuyển đổi to đ giữa các h
quy chi u hi n đang phổ cập, giữa màn hình và b n đồ. Như c điểm l n nhất c a MapObject là hầu như
open in browser PRO version
Are you a developer? Try out the HTML to PDF API
pdfcrowd.com
không hỗ tr hiển thị các đ i tư ng đồ ho theo ký hi u đư c quy định cho các lo i b n đồ. Đ n nay, ESRI
đã phát triển MapObject đ n phiên b n 8.3 và sau đó tích h p vào thư vi n v i tên là ArcEngine. ArcEngine
cho phép nhúng b n đồ vào các phần m m có hỗ tr cơng ngh OLE, ví d như nhúng b n đồ vào văn b n
trong MS Word. M t điểm m i nữa c a ArcEngine là x lý và hiển thị b n đồ 3 chi u n u nó đư c cung
cấp mơ hình s đ cao. Nhưng kh năng hiển thị ký hi u b n đồ vẫn không đư c c i thi n. Ngoài ra, m t
như c điểm khác không kém phần quan trọng đ i v i những người lập trình bằng ngơn ngữ C/C++ là ESRI
khơng có tài li u hư ng dẫn s d ng MapObject v i C/C++ mà chỉ có m t s ví d . Trong khi đó, để s
d ng đư c thư vi n SDE C API, ngôn ngữ lập trình xây dựng phần m m khách khơng thể khác, ngồi
C/C++.
Để có thể đáp ng đư c u cầu người dùng cu i đ i v i vi c hiển thị các ký hi u b n đồ theo
đúng quy định lên màn hình, ta có thể k t h p s d ng MapObject v i kh năng đồ ho c a ngôn ngữ
C/C++. Cách làm như sau.
Như chúng ta đã bi t, trong môi trường các h đi u hành đồ ho , lo i như Windows, OS/2,
LINUX..., các phần m m s d ng vùng nh mơ ph ng b nh màn hình để ghi chép hình nh cần hiển thị
c a mình, sau đó m i sao chép vùng nh mô ph ng này vào b nh vật lý c a màn hình dư i sự đi u hành
c a h th ng. Có thể gọi vùng nh mơ ph ng đó là vùng nh đ m. MapObject qu n lý vùng nh đ m c a
mình đ c lập v i phần m m ng d ng, ng v i mỗi l p b n đồ có m t vùng nh đ m. Tuy vậy, trư c khi
sao chép vùng nh đ m vào b nh vật lý c a màn hình, nó cho phép phần m m ng d ng ghi thêm ho c
thay th n i dung c a vùng hiển thị. Để nhận đư c địa chỉ c a vùng nh đ m, ta gọi phương th c
BeforeLayerDraw c a MapObject. Sau đây là đo n mã ví d đư c vi t trong môi trường VC++, s d ng cấu
trúc Document-View c a MFC. Đ i tư ng MapObject có tên là Map1 đư c nhúng vào l p quan sát
CMapView c a phần m m. Phần m m gọi phương th c CMapView::OnBeforeLayerDrawMap1 để nhận con
tr hDC tr t i vùng nh đ m dùng để hiển thị l p b n đồ v các tr m bơm, g i con tr đó đ n hàm
CMapView::VeBom để vẽ biểu tư ng tr m bơm vào vùng nh .
void CMapView::OnBeforeLayerDrawMap1(short index, long hDC)
{
//Lấy con trỏ đến lớp Document trong cấu trúc Document-View
CNamSongMaDoc *pDoc= GetDocument()
//Lấy tên của lớp bản đồ ứng với chỉ số index (ứng với con trỏ hDC)
CMoLayers CollectionLayers(m_Map.GetLayers())
CMoMapLayer CurrLayer(CollectionLayers.Item(COleVariant(index)))
CString LayerName = CurrLayer.GetName()
//Nếu là lớp bản đồ trạm bơm và đang ở trạng thái hiển thị thì gọi hàm vẽ các biểu tượng bơm
if(!CurrLayer.GetVisible())
{
if(LayerName==pDoc-> ArrayStringTotalTenLop.GetAt
open in browser PRO version
Are you a developer? Try out the HTML to PDF API
pdfcrowd.com
(NumberOfTramBomTuoiLayer)
{
VeBom( index, (HDC)hDC,LayerName)
}
}
}
void CMapView::VeBom(short index, HDC hDC, CString MoLayerName)
{
//Tạo ra đối tượng tương thích chứa vùng nhớ đệm
CDC DcMemory
CDC dc
dc.Attach(hDC)
DcMemory. CompatibleDC(& dc)
CMapDoc *pDoc =GetDocument()
//Tạo ra hình vng giới hạn vùng vẽ biểu tượng, cạnh là 100000 mm thực
CSize DrawRectSize(100000,100000)
//Đánh dấu tất cả các bản ghi trong lớp bản đồ trạm bơm
CMoLayers CollectionLayers(m_Map.GetLayers())
CMoMapLayer CurLayer(CollectionLayers.Item(COleVariant(index)))
CMoRecordset myRecordset(CurLayer.GetRecords())
//Chọn cột dữ liệu chứa đối tượng đồ hoạ
CMoFields fields(myRecordset.GetFields())
CMoField shapeField(fields.Item(COleVariant(TEXT("Shape"))))
while (!myRecordset.GetEof())
{
//Lấy toạ độ trạm bơm
CMoPoint MoPoint (shapeField.GetValue().pdispVal)
CPoint DocPoint
//Đổi toạ độ trạm bơm về hệ do Document quản lý
MapToDoc(DocPoint,MoPoint)
//Xác dịnh toạ độ của hình vng giới hạn vùng vẽ biểu tượng
DocPoint.x -= DrawRectSize.cx/2
DocPoint.y -= DrawRectSize.cy/2
CRect DrawRect(DocPoint,DrawRectSize)
//Chuyển đổi về toạ độ và k ích thước vùng vẽ về hệ của màn hình
DocToClient(DrawRect)
DrawRect.bottom +=1
open in browser PRO version
Are you a developer? Try out the HTML to PDF API
pdfcrowd.com
DrawRect.top -=1
DrawRect.right +=1
DrawRect.left -=1
DrawRect.NormalizeRect()
//Chuẩn bị bút vẽ
LOGPEN m_logpen
LOGBRUSH m_logbrush
m_logpen.lopnStyle = PS_INSIDEFRAME
m_logpen.lopnWidth.x = 2
m_logpen.lopnWidth.y = 2
m_logpen.lopnColor = RGB(0, 0, 0)
//Chuẩn bị bút tô màu
m_logbrush.lbStyle = BS_SOLID
m_logbrush.lbColor = RGB(0, 0,0)
m_logbrush.lbHatch = HS_HORIZONTAL
//Vẽ hình vng
CPen pen
if (!pen. PenIndirect(& m_logpen))
return
CBrush* pOldBrush
CPen* pOldPen
pOldBrush = (CBrush*)dc. Stock Object(NULL_BRUSH)
pOldPen = dc. Object(& pen)
dc.Rectangle(DrawRect)
dc. Object(pOldBrush)
dc. Object(pOldPen)
//Vẽ hình trịn bên trong
int RectHeight=DrawRect.Height()
CRect RectEllip = DrawRect
RectEllip.TopLeft().x +=RectHeight/10
RectEllip.TopLeft().y +=RectHeight/10
RectEllip.BottomRight().x -=RectHeight/10
open in browser PRO version
Are you a developer? Try out the HTML to PDF API
pdfcrowd.com
RectEllip.BottomRight().y -=RectHeight/10
RectEllip.NormalizeRect()
m_logpen.lopnWidth.x = 1
m_logpen.lopnWidth.y = 1
m_logbrush.lbColor = RGB(255, 255,255)
CBrush brush1
if (!brush1. BrushIndirect(& m_logbrush))
{
return
}
m_logpen.lopnWidth.x = 1
m_logpen.lopnWidth.y = 1
CPen pen1
if (!pen1. PenIndirect(& m_logpen))
{
return
}
pOldBrush= dc. Object(& brush1)
pOldPen = dc. Object(& pen1)
dc.Ellipse(RectEllip)
dc. Object(pOldBrush)
//Vẽ nửa vòng tròn đỏ bên trái
m_logbrush.lbColor = RGB(255, 0,0)
CBrush brushXord
if (!brushXord. BrushIndirect(& m_logbrush))
{
return
}
pOldBrush= dc. Object(& brushXord)
CPoint StartPoint((RectEllip.left+RectEllip.right)/2,RectEllip.bottom)
CPoint EndPoint((RectEllip.left+RectEllip.right)/2,RectEllip.top)
dc.Chord(RectEllip,StartPoint,EndPoint)
dc. Object(pOldBrush)
dc. Object(pOldPen)
open in browser PRO version
Are you a developer? Try out the HTML to PDF API
pdfcrowd.com
myRecordset.MoveNext() //Chuyển đến bản ghi sau để vẽ trạm bơm tiếp theo
}
dc.Detach() //Giải phóng vùng nhớ đệm
}
Bằng phương pháp này, ta có thể vẽ bất c lo i đ i tư ng đồ ho nào vào l p b n đồ mà
ta mu n, thậm chí có thể hồn tồn thay th ch c năng vẽ b n đồ c a MapObject bằng các hàm ta tự xây
dựng lấy.
5. Tối u hố truyền tải dữ liệu khơng gian trên m ng
Xây dựng h th ng GIS trên m ng WAN,
vấn đ đầu tiên cần ph i quan tâm là gi m thiểu truy n t i dữ li u không gian trên m ng. Thông thường,
dung lư ng dữ li u không gian bao giờ cũng l n gấp nhi u lần dung lư ng dữ li u thu c tính. N u trao đổi
thường xun dữ li u khơng gian trên m ng, đường truy n sẽ bị quá t i, người dùng sẽ không chấp nhận.
Chúng ta cũng có thể thấy là, so v i dữ li u thu c tính, dữ li u khơng gian ít bi n đổi hơn. Ví d như địa
gi i hành chính tỉnh, huy n, xã chẳng h n, hầu như c định trong m t thời gian khá dài. Chỉ có m t s ít
l p b n đồ dùng để quan sát các hi n tư ng tự nhiên có thể có những thay đổi nhanh trong m t kho ng
thời gian nhất định, ví d như l p b n đồ vùng ngập úng trong mùa lũ. Dựa vào đ c điểm đó, chúng tơi s
d ng gi i pháp gi m thiểu truy n t i dữ li u khơng gian trên m ng, trong đó dùng các t p Shapefile như là
t p ghi t m thời trên các máy tr m. Gi i pháp đó có thể mô t như sau.
Dữ li u không gian chỉ đọc m t lần t máy ch v máy tr m, và đư c ghi thành Shapefile trên máy
tr m. Mỗi l p b n đồ trên máy ch
ng v i m t shapefile. Trong shapefile chỉ lưu giữ cấu trúc hình học c a
các đ i tư ng đồ ho (to đ c a các điểm cấu t o nên đ i tư ng) và mã s ID c a các đ i tư ng trong
CSDL trên máy ch . Trong mỗi lần giao dịch sau này, phần m m sẽ đ i chi u ID c a các đ i tư ng trong
shapefile và ID trong l p tương ng trong CSDL trên máy ch . N u đ i tư ng đã bị xoá kh i CSDL, nó sẽ bị
xố kh i shapefile tương ng. Ngư c l i, n u trong CSDL xuất hi n đ i tư ng m i, nó sẽ đư c đọc v và
bổ sung vào shapefile tương ng. Shapefile chỉ ph c v cho m c đích hiển thị b n đồ trên màn hình. Mọi
vi c truy vấn, tìm ki m thông tin đ u thực hi n trong CSDL trên máy ch . Lưu trữ shapefile trên máy tr m
hồn tồn khơng nh hưởng t i cơng tác b o mật thơng tin và b o tồn dữ li u trên máy ch .
6. Xây dựng công c biên t p đồ ho cho phần mềm khách
MapObject cung cấp cho người phát triển m t vài kh năng biên tập dữ li u đồ ho , s d ng l p
TrackingLayer làm l p t m thời ch a các đ i tư ng đồ ho đang đư c biên tập trư c khi cập nhật chúng
vào l p b n đồ tương ng trong CSDL. Nhưng các kh năng này rất h n ch và hồn tồn khơng đáp ng
đư c yêu cầu đ i v i m t phần m m cần có ch c năng biên tập dữ li u b n đồ. Để đáp ng đư c yêu cầu
này, cần ph i k t h p lập trình đồ ho trong Windows v i kh năng hiển thị đồ ho c a MapObject. Trong
trường h p s d ng mơi trường lập trình VC++, chúng tôi làm như sau:
- S d ng vùng nh đ m c a l p TrackingLayer để vẽ các đ i tư ng đang đư c biên tập. Cách s
d ng tương tự như s d ng l p b n đồ khác để vẽ các biểu tư ng như đã trình bày ở trên
- Xây dựng các l p trong C++ thực hi n vi c biên tập các đ i tư ng đồ ho . Đi u đáng quan tâm
nhất khi xây dựng các l p này là vi c chuyển đổi, qu n lý to đ các điểm cấu t o nên các đ i tư ng đư c
biên tập. C thể là khi biên tập, to đ c a điểm thu c đ i tư ng do con chu t v ch ra trên màn hình ph i
đư c chuyển đổi v h chung cho tất c các l p b n đồ, và trư c khi hiển thị đ i tư ng lên màn hình, to
open in browser PRO version
Are you a developer? Try out the HTML to PDF API
pdfcrowd.com
đ c a các điểm thu c đ i tư ng l i đư c chuyển đổi v h to đ c a c a sổ phần m m khách. Làm như
vậy, vị trí tương hỗ giữa các đ i tư ng đang đư c biên tập và các đ i tư ng đã có trong CSDL sẽ khơng bị
thay đổi khi người dùng phóng to, thu nh ho c di chuyển các l p b n đồ.
Sau khi đ i tư ng đư c biên tập, đư c cập nhật vào l p b n đồ nào đấy, to đ c a các điểm
thu c đ i tư ng ph i đư c tính chuyển v h quy chi u c a l p b n đồ đó.
7. Kết lu n
Cách ti p cận đư c trình bày trên đây đã đư c chúng tôi s d ng để xây dựng h
th ng thông tin qu n lý các cơng trình thuỷ l i trên m ng WAN. Trong h th ng này, CSDL đư c đ t trên
máy ch t i Hà N i. Các tỉnh, huy n, các cơng ty qu n lý các cơng trình thuỷ l i t i các địa phương đư c
cung cấp phần m m khách truy vấn, cập nhật dữ li u t xa thông qua phương pháp k t n i trực ti p vào s
đi n tho i trên máy ch . Những cơ quan, đơn vị này sẽ là những nơi trực ti p cập nhật dữ li u, bổ sung
các cơng trình m i đư c xây dựng vào h th ng. Hi n nay, phần m m đã đư c chuyển giao cho các địa
phương ở m t s tỉnh trong nư c.
Kinh nghi m xây dựng h th ng, các ki n th c thu ho ch đư c trong quá trình ti p cận công ngh
c a ESRI sẽ là cái v n h t s c quan trọng để chúng tôi chuyển sang giai đo n nghiên c u ng d ng mã
nguồn mở OpenGIS.
(Tác giả: TSKH Nguyễn Đăng Vỹ, Trung tâm Công nghệ phần mềm Thuỷ lợi
Viện Khoa học Thuỷ lợi)
Share on :
Đư c đăng bởi Toan Tran Van
Share
1
0
Share
Tweet
Đề xuất url này trên Google
Nhãn: GIS, GIS Database, Internet GIS, Software
Related Post
ng d ng GIS trong qu n lý h tầng kỹ thuật đô
thị t i Vi t Nam
S d ng phương pháp GIS trong lập Báo cáo
đánh giá môi trường chi n lư c (DMC)
ng d ng GIS th ng kê và phân tích s li u
tuyển sinh hàng năm t i trường Cao đẳng kinh
t kỹ thuật Phú Lâm
5 ng d ng tiêu biểu c a GIS
Ư C TÍNH SINH KH I TRÊN B M T TÁN
R NG S D NG NH V TINH ALOS AVNIR-
open in browser PRO version
Are you a developer? Try out the HTML to PDF API
pdfcrowd.com
2
Xây dựng các
ng d ng ArcGIS Engine
Bài đăng M i hơn
Trang ch
Bài đăng Cũ hơn
Total Pageviews
Google +
7 7 1 0 5
Home
About Us
Contact Us
open in browser PRO version
Support
Resource
Hot Topics
Popular New s
Are you a developer? Try out the HTML to PDF API
Social Media
Technology
Politics
pdfcrowd.com