Tải bản đầy đủ (.pdf) (13 trang)

XayDungWebGis tren nen cong nghe cua ESRI

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (321.84 KB, 13 trang )

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



×