3 XÂY DỰNG CHỨC NĂNG
5.3 SỬ DỤNG FONT CHỮ TIẾNG VIỆT TRONG ARCVIEW
Hiện nay ArcView chưa hộ trợ font Unicode nên muốn nhập và hiển thị tiếng việt trong phần mềm, chương trình ứng dụng liên quan đến ArcView thì phải sử dụng font TCVN3-ABC. Vì vậy, khi sử dụng cần chú ý một số vấn đề sau:
Trên máy tính bạn cần phải cài đầy đủ bộ font TCVN-ABC.
Nên cài Vietkey bản full trong lúc cài đặt cần lưu ý sau:
o Thay đổi lại font cho các hiển thị là Font: VK Sans Serif.
Để chương trình hiển thị tiếng việt thị bạn click vào button . Button này đã gán Scripts cài đặt hiển thị font tiếng việt “SetupABC”.
TOCFont = TextSymbol.Make
TOCFont.SetFont (NFont.Make(".VnTime","Normal")) TOCFont.SetSize( 10 )
allDocs = av.GetProject.GetDocs for each v in allDocs
if (v.is(View) and (v.GetWin.IsOpen)) then
v.GetWin.Close v.GetWin.Open end
end
Có thể từ Menu của chương trình Xem chủ đềFont chữ sau đó bạn chọn font chữ tiếng việt như: .VnTime, .VnTimeH,.. là hiển thị được tiếng việt.
Hiển thị chú thích là tiếng việt từ Menu Xem chủ đề Hiển thị biểu tượng trong Window ABC sau đó bạn chọn font chữ tiếng việt như: .VnTime, .VnTimeH,.. là hiển thị được tiếng việt.
Lúc nhập thì chọn bảng mã TCVN3(ABC).
Nên thống nhất một loại font chữ, cả bên ArcView và bên cơ sở dữ liệu SQL Server 2005.
KẾT LUẬN KẾT QUẢ THỰC HIỆN
Ứng dụng hệ thống thông tin địa lý (GIS) trong việc xây dựng cơ sở dữ liệu GIS sơ đồ địa bàn phường Vĩnh Thọ giúp công an phường thuận tiện trong việc quản lý phù hợp với nhu cầu và hoàn cảnh của địa phương là một việc hết sức cần thiết và thiết thực. Vì hiện tại phương pháp quản lý nhân khẩu – hộ khẩu và các thông tin liên quan đến dân cư trên địa bàn của địa phương chủ yếu quản lý trên giấy nên chưa thể đáp ứng tốt cho nhu cầu hiện tại với khối lượng thông tin ngày càng lớn. Để xây dựng bất kỳ hệ thống thông tin địa lý nào cũng cần phải có nguồn dữ liệu đầu vào, trải qua quá trình tổng hợp, xử lý thông tin để tạo kết quả đầu ra. Nguồn dữ liệu đầu vào cho hệ thống mà đề tài thực hiện được phân thành hai nhóm đó là dữ liệu bản đồ và dữ liệu thuộc tính. Từ những số liệu, bản đồ thu thập được, đề tài chủ yếu là cập nhật thông tin trên phần mềm ArcView và bước đầu ứng dụng phần mềm SQL Server 2005 xây dựng cơ sở dữ liệu, sử dụng ngôn ngữ lập trình Avenue xây dựng chương trình ứng dụng. Chương trình ứng dụng sau khi hoàn thành nó có thể cung cấp thông tin đầy đủ, kịp thời và chính xác cho người quản lý có thể cập nhật đầy đủ thông tin, đáp ứng nhu cầu phát triển kinh tế - xã hội. Điều này không chỉ phục vụ cho công tác quản lý trước mắt mà còn lâu dài về sau.
Kết quả đề tài “Xây dựng cơ sở dữ liệu GIS sơ đồ địa bàn phường Vĩnh Thọ “đã đạt được kết quả như sau:
Phân tích, đánh giá hiện trạng cơ sở dữ liệu hiện có trên địa bàn phường Vĩnh Thọ làm cơ sở để xây dựng cơ sở dữ liệu hoàn thiện theo mô hình GIS.
Xây dựng nhóm chức năng cập nhật dữ liệu. Cho phép người sử dụng có thể thêm, sửa, xóa dữ liệu không gian và cả dữ liệu thuộc tính.
Xây dựng chức năng xem nhanh thông tin trên bản đồ:
o Phóng to, thu nhỏ, xem nhanh điểm được chọn, vv…
o Xem nhanh thông tin các đối tượng.
Xây dựng đa dạng các chức năng tìm kiếm dữ liệu thuộc tính và dữ liệu không gian.
Thống kê, tính toán tổng số hộ gia đình trên địa bàn phường, tống số dân, .. , sau đó xuất dữ liệu ra bảng và biểu diễn trên biểu đồ thống kê.
Tạo trang in bản đồ, biểu đồ.
Xuất dữ liệu từ bảng dữ liệu thuộc tính qua Excel.
Đề tài đã đạt được mục tiêu đề ra: Ứng dụng công nghệ GIS xây dựng cơ sở dữ liệu GIS sơ đồ địa bàn phường Vĩnh Thọ, hỗ trợ công tác phòng chống tội phạm. Ngoài ra, với chương trình này còn có thể tra cứu thông tin hộ khẩu, nhân khẩu cũng như trường học, nhà hàng, khách sạn…
Như vây, có thể nói việc ứng dụng hệ thống thông tin địa lý (GIS) trong “Xây dựng cơ sở dữ liệu GIS sơ đồ địa bàn phường Vĩnh Thọ “ giúp rút ngắn được thời gian giải quyết các thủ tục hành chính, có chế độ báo cáo nhanh chóng, kịp thời, đồng thời có thể đáp ứng nhu cầu thông tin cho các ngành liên quan và những người quan tâm.
HƯỚNG PHÁT TRIỂN
Qua thời gian tìm hiểu và xây dựng đề tài về cơ bản em đã hoàn thành những yêu cầu đề ra. Đây là một đề tài thực tế và hết sức thiết thực. Cho nên, đề tài sau khi hoàn thành nó có thể cung cấp thông tin đầy đủ, kịp thời và chính xác cho người quản lý có thể cập nhầt đầy đủ thông tin, đáp ứng nhu cầu phát triển kinh tế - xã hội. Nó không chỉ phục vụ cho công tác quản lý trước mắt, mà nó có thể được phát triển, bảo trì để sử dụng lâu dài và đáp ứng khối lượng thông tin ngày càng lớn. Trong quá trình thực hiện đề tài tôi thấy còn nhiều vấn đề liên quan cần được quan tâm để hỗ trợ tốt cho người sử dụng và phạm vi ứng dụng của đề tài. Vì thế, em đã đề xuất vấn đề phát triển của đề tài:
Phát triển giao diện thân thiện hơn với người sử dụng.
Xây dựng mới những chức năng giúp đỡ người sử dụng như:
o In hộ khẩu.
o In sơ yếu lý lịch.
Ứng dụng rộng rãi hơn đối với các phường khác trong thành phố Nha Trang và các huyện, tỉnh, thành phố khác trong cả nước.
Ứng dụng phát triển trên công cụ ArcGIS Engine để xây dựng phần mềm độc lập.
PHỤC LỤC
1. Kết nối với CSDL SQL Server và hiển thị dữ liệu trong bảng dữ liệu.
‘ Tạo kết nối, tên đăng nhập và mật khẩu theSQL=SQLCon.Find("VinhTho") theSQL.Login("nhatrang/")
‘ Câu truy vấn SQL
astring="Select s.Soso,s.Sonha,s.Dientichnha,s.Dientichdat,nk. ++”HovatenNK, tdp.TenTDP,d.Tenduong,lh.TenLH "
++"From SOHOKHAU s, NHANKHAU nk, LOAIHO lh, TODANPHO tdp, DUONG d " ++" Where s.Soso=nk.Soso" ++"and s.Maduong=d.Maduong" ++"and s.MaLH=lh.MaLH" ++"and s.MaTDP=tdp.MaTDP" ++"and nk.Chuho='true'" ‘ Thực thi câu lệnh SQL theSQL.ExecuteSQL(astring) ‘ Tạo bảng ảo trong ArcView
theVTab=VTab.MakeSQL(theSQL,astring) ‘ Đưa bảng vào Project và mở bảng này ra. myTable=Table.Make(theVtab) myTable.setName("XemHK") av.GetProject.AddDoc(mytable) mytable.GetWin.Open 2. Liên kết các bảng bằng thuộc tính. theSQL=SQLCon.Find("VinhTho") theSQL.Login("nhatrang/") ‘ Xác định bảng nguồn và bảng đích astring="Select * from SOHOKHAU" theSQL.ExecuteSQL(astring)
theVTab=VTab.MakeSQL(theSQL,"Select * from SOHOKHAU") thetable=av.GetProject.FindDoc("SOHOKHAU") av.GetProject.RemoveDoc(thetable) myTable=Table.Make(theVtab) myTable.setName("SOHOKHAU") av.GetProject.AddDoc(mytable) toTable=av.GetProject.FindDoc("Hgdinh.shp") toVt=toTable.GetVTab
‘ Xác định trường dung chung để liên kết toField=toVt.FindField("Soso")
‘ Nếu muốn liên kết bằng Joint toVt.Join(toField,theVtab,fromfield) ‘ Nếu muốn liên kết bằng Link toVt.Link(toField,theVtab,fromfield) ‘ Nếu muốn hủy bỏ liên kết
toVt.UnjoinAll toVt.UnlinkAll
3.Mở dữ liệu tử bảng SQL và đưa dữ liệu vào Combobox tạo một danh sách các chọn lựa khi muốn tiết kiệm không gian.
aDlog=self
theSQL=SQLCon.Find("VinhTho") theSQL.Login("nhatrang/")
‘ Tìm đến đối tượng Combobox
lbx_DanhSach=aDlog.FindByName("cbmavung") theView=av.GetActiveDoc
astring="Select * from TODANPHO" ‘ Lấy các danh sách Tổ dân phố.
theTable=VTab.MakeSQL(theSQL, astring) theField=theTable.FindField("TenTDP") listTheme={}
for each rec in theTable
listTheme.Add(theTable.ReturnValue(theField,rec)) end
‘Gán danh sách các Tổ dân phố vào combobox lbx_DanhSach.DefineFromList(listTheme)
4.Đóng Dialog khi người dùng kích thoát.
Self.GetDialog.Close 5.Hủy các thao tác theView=av.getActivedoc theDisplay=theView.GetDisplay theGraphics=theView.GetGraphics theGraphics.empty theTheme = theView.GetEditableTheme ‘ Hủy bỏ các thao tác if (theView.GetGraphics.HasSelected) then av.GetProject.SetModified(true) end
if (theTheme = nil) then
theView.GetGraphics.ClearSelected else theTheme.GetFtab.BeginTransaction theTheme.ClearSelected theTheme.GetFTab.EndTransaction end
‘ Đóng hộp thoại cần lưu self.GetDialog.Close 6.Mở Dialog theView = av.GetActiveDoc aDlog=av.FindDialog("timtrenduong") if(aDlog <> nil)then aDlog.Open else
MsgBox.info("Không tìm thây Tìm theo đường","Thông Báo") end
7. Tìm kiếm dữ liệu không gian.
‘ Tìm đến đối tượng Combobox
alistbox = self.GetDialog.FindByName("cbcskd") tabletab = av.FindDoc("CSKD.shp").GetVTab thebitmap = tabletab.GetSelection
‘ Chọn tên CSKD từ danh sách tìm kiếm
qry = "([Tencskd_tn] = """ + alistbox.GetCurrentValue.AsString + """)" tabletab.Query(qry, thebitmap, #VTAB_SELTYPE_NEW)
theView = av.GetActiveDoc theView.Invalidate
8.Tìm kiếm dữ liệu thuộc tính từ SQL.
‘ Tìm đến đối tượng Dialog, Combobox dlog=av.FindDialog("ANNK") f0= dlog.FindByName("cbmank") f1 = dlog.FindByName("cbsc") f2 = dlog.FindByName("txtngay") f3 = dlog.FindByName("txtthiethai") f4 = dlog.FindByName("txtghichu")
‘ Kết nối SQL và dùng câu lệnh SQL tìm kiếm theSQL=SQLCon.Find("VinhTho")
theSQL.Login("nhatrang/")
astring="Select * from ANNINHNK
where MaNK='"+f0.GetSelection.AsString+"'" theVTab=VTab.MakeSQL(theSQL,astring) ‘Nếu nó tìm thấy
n=theVTab.GetNumRecords if(n<>0)then
for each rec in theVTab ‘ Tìm trường MaNK
ma = theVTab.Findfield("MaNK")
‘ Trả về giá trị của trường tương ứng vứi chỉ số của mẫu tin mas = theVTab.ReturnValue(ma,rec)
masc = theVTab.FindField("Masuco") mascs = theVTab.ReturnValue(masc,rec) ngay = theVTab.Findfield("Ngaygioxayra") ngays = theVTab.ReturnValue(ngay,rec) thai = theVTab.Findfield("Mucdothiethai") thais = theVTab.ReturnValue(thai,rec) gc = theVTab.Findfield("Ghichu") gcs = theVTab.ReturnValue(gc,rec)
str="Select * from SUCO where Masuco='"+mascs.asString+"'" theVTab1=VTab.MakeSQL(theSQL,str)
for each rec in theVTab1
m = theVTab1.FindField("Tensuco") ms = theVTab1.ReturnValue(m,rec) end
‘ Gán giá trị của trường tương ứng chỉ số mẫu tin f0.SetCurrentValue(mas.asString) f1.SetCurrentValue(ms.asString) f2.SetText(ngays.asString) f3.SetText(thais.asString) f4.SetText(gcs.asString) end else
MsgBox.info("Không tim thấy dữ liệu","Thông báo") end
9.Thêm mới dữ liệu
dlog=av.FindDialog("ThemCSKD") tb=_theTheme.GetFtab f0 = dlog.FindByName("txttencskd") f1 = dlog.FindByName("cbmaduong") f2 = dlog.FindByName("cbmavung") theSQL=SQLCon.Find("VinhTho") theSQL.Login("nhatrang/")
str="Select * from TODANPHO
theVTab=VTab.MakeSQL(theSQL,str) for each rec in theVTab
ma = theVTab.FindField("MaTDP") mas = theVTab.ReturnValue(ma,rec)
end
str1="Select * from DUONG
where Tenduong='"+f1.GetSelection.asString+"'" theVTab1=VTab.MakeSQL(theSQL,str1)
for each rec in theVTab1
masc = theVTab1.FindField("Maduong") mascs = theVTab1.ReturnValue(masc,rec) end tcs=tb.FindField("Tencskd_tn") maduong=tb.FindField("Maduong") mapho=tb.FindField("Ma_khu_pho") tb.SetValue(tcs,_re,f0.GetText.asString) tb.SetValue(maduong,_re,mascs.asString) tb.SetValue(mapho,_re,mas.asString) av.GetActiveDoc.SetEditableTheme(NIL) av.finddialog("ThemCSKD").close 10. Xóa dữ liệu dlog=av.FindDialog("ANNK") f0 = dlog.FindByName("cbmank") theSQL=SQLCon.Find("VinhTho") theSQL.Login("nhatrang/")
astring="Delete From ANNINHNK
Where MaNK ='"+f0.GetSelection.asString+"'" TheSQL.ExecuteSQL(astring)
TÀI LIỆU THAM KHẢO
1) Bài giảng Lập trình Avenue, Giáo viên Nguyễn Thủy Đoan Trang – Đại học Nha Trang.
2) Bài giảng hệ thống thông tin địa lý, GV. Nguyễn Thủy Đoan Trang – Đại học Nha Trang.
3) http://www.esri.com
4) ESRI: ArcView GIS
5) Trần Vĩnh Phước, Gis đại cương – phần thực hành, NXB Đại học Quốc gia Tp.HCM, 2003
6) Đặng Liên, Bài giảng Arview (http://www.ebook.edu.vn/?page=1.28&view=2490).
7) http://www.vidagis.com