Đánh giá kết quả thử nghiệm

Một phần của tài liệu Nghiên cứu một số kĩ thuật khai phá dữ liệu không gian sử dụng cây quyết định (Trang 70 - 92)

Quá trình xây dựng cây quyết định, bảng dữ liệu trên đƣợc loại bỏ một số trƣờng liên quan đến định danh đối tƣợng, nhằm tạo ra bảng cuối cùng - đầu vào cho thuật toán xây dựng cây quyết định nhƣ sau:

Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/

Bảng 3.1: Bảng dữ liệu đầu vào

btscover officedmin density decision

good high high no

low high medium no

low low medium no

good high high no

medium medium medium no

low high medium yes

low low low yes

good high medium no

good high medium no

good high medium no

low low low yes

low high low no

low low low yes

good high low no

low high high yes

Cây quyết định và tập các luật đƣợc sinh ra gồm 1 nút gốc, thuộc tính dự đoán độ phủ của Layer mô tả BTS đƣợc kiểm tra lần đầu. Cây sinh ra có 09 nút lá.

Thử nghiệm thuật toán trên sử dụng phần mềm Weka:

- Đầu tiên, học viên tạo lập 01 file dữ liệu Excel giống bảng dữ liệu 3.1 nêu trên:

Hình 3.9: File dữ liệu Excel biểu diễn bảng dữ liệu đầu vào

- Chuyển đổi file Excel nêu trên về định dạng .csv (định dạng file dữ liệu đầu vào của phần mềm Weka) thông qua một công cụ trực tuyến có địa chỉ: http://www.zamzar.com/

Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/ Sau đó sử dụng phần mềm Weka, kết quả tính toán hiển thị nhƣ hình vẽ:

Hình 3.10: Kết quảtrên phần mềm Weka

Kết quả phân lớp các điểm mục tiêu dựa trên thuộc tính dự đoán của các Layer trên phần mềm Weka là tƣơng tựkết quả trên phần mềm thử nghiệm do học viên xây dựng.

Tập các luật sinh ra từ cây quyết định đƣợc mô tả nhƣ sau: 1. IF btscover="good" THEN "đặt trạm BTS" = "no" 2. IF btscover="medium" THEN "đặt trạm BTS" = "no"

3. IF btscover="low" AND density="high" THEN "đặt trạm BTS" = "yes"

4. IF btscover="low" AND density="medium" AND officedmin="high" THEN "đặt trạm BTS" = "no" (Trƣờng hợp này, số lƣợng các tuple no và yes bằng nhau, phải bầu chọn)

5. IF btscover="low" AND density="medium" AND officedmin="medium" THEN "đặt trạm BTS" = "null" (Trƣờng hợp này không tồn tại Tuple, nếu bầu chọn, sẽ trả về giá trị no) (adsbygoogle = window.adsbygoogle || []).push({});

6. IF btscover="low" AND density="medium" AND officedmin="low" THEN "đặt trạm BTS" = "no"

7. IF btscover="low" AND density="low" AND officedmin="high" THEN "đặt trạm BTS" = "no"

Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/ 8. IF btscover="low" AND density="low" AND officedmin="medium" THEN "đặt trạm BTS" = "yes" (Trƣờng hợp này phải bầu chọn, do số lƣợng Tuple bằng Null)

9. IF btscover="low" AND density="low" AND officedmin="low" THEN "đặt trạm BTS" = "yes"

- Kiểm nghiệm kết quả thực hiện từ các phần mềm đối chiếu với tính toán phân lớp thực tế theo các công thức trình bày ở Chƣơng 2:

Chọn thuộc tính dự đoán sử dụng phân lớp:

Entropy(S) = - (5/15)*log2(5/15) - (10/15)*log2(10/15) = 0,91829583 Tính Gain cho các thuộc tính theo công thức:

Entropy(S) - Entropy(Sv) Lớp BTS cover:

Gain(S, BTScover) = Entropy(S) -(6/15)* Entropy(S, BTScover=good) - - (1/15)* Entropy(S, BTScover=medium) -(8/15)* Entropy(S, BTScover=low) = 0,91829583 - (6/15)*((-0/6)*log2(0/6) - (6/6)*log2(6/6)) - (1/15)*((-0/1)*log2(0/1) - (1/1)*log2(1/1)) - (8/15)*(- (5/8)*log2(5/8) - (3/8)*log2(3/8)) = 0,409926.

Tƣơng tự tính Gain cho các thuộc tính dự đoán officedmin và density, có bảng kết quả tính toán nhƣ sau:

Bảng 3.2: Tính Gain cho các thuộc tính dự đoán tại nút gốc

good | high medium low Gain Mục tiêu yes no yes no yes no

btscover 0 6 0 1 5 3 0,409264

officedmin 2 8 0 1 3 1 0,22067

density 1 2 1 6 3 2 0,134873

Nhận thấy Gain(S, btscover) lớn nhất, chọn thuộc tính phân lớp là thuộc tính btscover.

Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/

Xét nhánh BTScover = Low:

Tƣơng tự trên, tính Gain cho các thuộc tính dự đoán theo bảng sau:

Bảng 3.3: Tính Gain các thuộc tính dự đoán nhánh BTScover = Low

high medium low Gain

Mục tiêu yes no yes no yes no

officedmin 2 2 0 0 3 1 0,048795

density 1 0 1 2 3 21 0,204434

Thấy Gain của Density lớn nhất, chọn Density làm lớp phân lớp tiếp theo:

Hình 3.12:Thống kê Tuple tại nhánh BTScover=low và xét Density

- Sau khi xét xong thuộc tính Density, còn 01 Layer chƣa đƣợc xét là Layer officedmin.

+ Phƣơng pháp của Sitanggang và các cộng sự không xét tiếp thuộc tính cuối cùng mà tiến hành phân lớp.

Nhánh Density = High, thì nút lá tạo thành có nhãn là yes. Nhánh Density = Medium, thì bầu chọn thuộc tính no làm nhãn. Nhánh Density = Low thì bầu chọn thuộc tính yes là nhãn.

- Theo phƣơng pháp học viên giới thiệu trên sử dụng thuật toán cây quyết định ID3 truyền thống, có thể tiếp tục sử dụng thuộc tính mô tả của Layer cuối cùng để tiếp tục phân lớp cho 2 nhánh Densiy = Medium và Density= Low. Tại bƣớc này, không cần tính Entropy nữa mà thực hiện bằng cách bầu chọn trên cơ sở các thống kê các đối tƣợng còn lại theo bảng sau: (adsbygoogle = window.adsbygoogle || []).push({});

Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/

+ Đối với nhánh Density = Medium:

Bảng 3.4: Tính Gain cho các thuộc tính dự đoán tại nhánh Density="medium"

high medium low

Mục tiêu yes no yes no yes no

officedmin 1 1 0 0 0 1

Với officedmin = high, thì phải bầu chọn trên cơ sở số lƣợng đối tƣợng trong tổng số đối tƣợng đang xem xét tại trƣờng hợp Density = Medium. Tại đây, có 2 đối tƣợng là yes, do đó thuộc tính bầu chọn với officedmin là yes.

Với officedmin = medium, trƣờng hợp này không tồn tại đối tƣợng mục tiêu nào cả, nên trả về kết quả Null, nhƣng thực tế có thể bầu theo số lƣợng đối tƣợng tại nhánh Density = medium, tức là giá trị nhãn là no.

Với offficedmin = low, thì nhãn là no.

+ Tương tự với nhánh Density=low:

Bảng 3.5: Tính Gain cho các thuộc tính dự đoán nhánh Density="Low"

high medium low

Mục tiêu yes no yes no yes no

officedmin 0 1 0 0 3 0

Với nhánh: officedmin = high, nhãn của lá sẽ là no.

Với nhánh officedmin = medium, sẽ bầu chọn nhãn lá là yes. Với nhánh officedmin= low, nhãn của nút lá là yes.

Cây quyết định đƣợc tạo ra nhƣ sau:

Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/ - Đánh giá độ chính xác của cây quyết định:

+ Trƣờng hợp áp dụng phƣơng pháp tính của Sitanggang và các cộng sự: Trong 15 trƣờng hợp, có 02 trƣờng hợp áp dụng cây quyết định cho kết quả không chính xác, đó là trƣờng hợp Target ID = 6 và Target ID=12. Độ chính xác của cây quyết định bằng (13/15)*100 = 86,67%.

+ Trƣờng hợp áp dụng phƣơng pháp xây dựng cây quyết định do học viên đề xuất: Trong 15 trƣờng hợp, có 01 trƣờng hợp áp dụng cây quyết định cho kết quả không chính xác đó là trƣờng hợp Target ID=6. Độ chính xác của cây quyết định bằng (14/15)*100 = 93,33%. Kết quả này giống nhƣ kết quả tính toán trên phần mềm Weka tại Hình 3.10.

Chƣơng 3 trình bày thiết kế chƣơng trình (mã nguồn chƣơng trình xem tại Phụ lục), các bộ dữ liệu và cài đặt thử nghiệm xây dựng cây quyết định phân lớp dữ liệu không gian theo đề xuất của học viên trình bày tại chƣơng 2. Các Layer bản đồ đƣợc học viên thu thập, biên tập từ cơ sở dữ liệu nền địa lý của tỉnh Vĩnh Phúc và Hệ thống GIS quản lý hạ tầng viễn thông đang đƣợc lƣu trữ tại Sở Thông tin và Truyền thông tỉnh Vĩnh Phúc. Ứng dụng đƣợc viên nghiên phát triển sử dụng ngôn ngữ lập trình C#, bộ thƣ viện ArcEngine của hãng ESRI. Kết quả thử nghiệm đƣợc kiểm thửqua chƣơng trình đƣợc học viên xây dựng, phát triển, đồng thời có sử dụng phần mềm nguồn mở Weka kiểm thử.

Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/

KẾT LUẬN

Luận văn giới thiệu một thuật toán khai phá dữ liệu không gian sử dụng cây quyết định đƣợc Sitanggang và các cộng sự đề xuất năm 2011, thuật toán là sự mở rộng trên thuật toán cây quyết định ID3 (Quinlan, 1986). Quá trình nghiên cứu, tìm hiểu về dữ liệu không gian, cây quyết định, các thuật toán ID3, C4.5 truyền thống và nghiên cứu tìm hiểu thuật toán do Sitanggang và các cộng sự đề xuất, học viên nhận thấy, có thể sử dụng cây quyết định ID3 truyền thống để phân lớp dữ liệu không gian.

Khai phá dữ liệu không gian sử dụng cây quyết định cần quá trình tiền xử lý dữ liệu không gian, phải rời rạc các thuộc dự đoán của các Layer mô tả. Tiếp đó, tạo ra các bảng chứa chỉ mục kết nối không gian, từ đó tính toán độ lợi thông tin không gian, tìm Layer tốt nhất lựa chọn làm Layer phân lớp. Sử dụng cây quyết định ID3 truyền thống để phân lớp dữ liệu không gian là một cách thức khai phá dữ liệu không gian. Tƣơng tự nhƣ phƣơng pháp của Sitanggang và các cộng sự, phƣơng pháp này cũng cần quá trình tiền xử lý dựa trên quan hệ không gian nhằm sinh ra một bảng quan hệ không gian rút gọn. Trong bảng có chứa các thuộc tính dự đoán đại diện cho Layer mô tả và thực hiện phân lớp sử dụng thuật toán ID3 truyền thống trên bảng này. Mỗi bƣớc, lựa chọn đƣợc một thuộc tính dự đoán tốt nhất để phân chia tƣơng ứng với lựa chọn Layer phân lớp tƣơng ứng với thuộc tính dự đoán tốt nhất.

Do thời gian nghiên cứu và tài liệu tiếp cận còn ít và hạn chế, đồng thời do lĩnh vực nghiên cứu là dữ liệu không gian, khai phádữ liệu đều là những lĩnh vực bao hàm nhiều kiến thức chuyên sâu trong khi kiến thức học viên có hạn nên kết luận của học viên cần tiếp tục đƣợc nghiên cứu, xem xét trƣớc khi thực sự khẳng định đó là một cách thức tiếp cận mới cho các bài toán ứng dụng khai phá dữ liệu không gian sử dụng cây quyết định.

Trong tƣơng lai, học viên dự kiến sẽ tiếp tục tìm hiểu các tài liệu nghiên cứu chuyên sâu hơn, trên tập dữ liệu GIS quy mô hơn để đánh giá độ chính xác của thuật toán, đồng thời nghiên cứu các giải pháp cắt tỉa cây để nâng cao độ chính xác của cây quyết định, áp dụng cácthuật toán cây quyết định khác nhƣ C4.5, SPRINT cho khai khai phá hợp dữ liệu không gian.

Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/

TÀI LIỆU THAM KHẢO

Tiếng Việt (adsbygoogle = window.adsbygoogle || []).push({});

[1] Đặng Văn Đức, Hệ thống thông tin địa lý, NXB Khoa học và kỹ thuật, 2001.

[2] Lê Thị Hồng, 2011. Kỹ thuật khai phá luật kết hợp không gian trong CSDL địa lý. Luận văn tốt nghiệp Thạc sỹ Khoa học máy tính, Đại học Công nghệ thông tin và Truyền thông, Đại học Thái Nguyên, Thái Nguyên, Việt Nam.

Tiếng Anh

[3] Chelghoum, N.; Karine, Z.; Azedine, B., “A Decision Tree for MultiLayered Spatial Data” in Symposium on Geospatial Theory, Processing and Applications, Ottawa, 2002.

[4] Clementini, E.; Felice, P.D.; Oosterorn, O., A small set of formal topological relationships suitable for end-user interaction. Lecture Notes in Computer Science. New York: Springer, pp. 277–295, 1993.

[5] Egenhofer, M.J.; Robert, D.F., “Point-set topological spatial relations”

International Journal of Geographical Information Systems, vol. 5(2), pp. 161 – 174, 1991.

[6] Ester, M.; Hans-Peter, K.; Jorg, S., “Spatial Data Mining: A Database Approach” in Proc. of the Fifth Int. Symposium on Large Spatial Databases, Berlin, Germany, 1997.

[7] Ester, M.; Hans-Peter, K.; Jorg, S., “Algorithms and Applications for Spatial Data Mining” Geographic Data Mining and Knowledge Discovery, Research Monographs in GIS, Taylor and Francis, 2001.

[8] Han, J.; Kamber, M.; Data Mining Concepts and Techniques, 2nd ed., San Diego, USA: Morgan-Kaufmann, 2006.

[9] Koperski, K.; Han, J.; Stefanovic, N., “An efficient two-step method for classification of spatial data” In Symposium on Spatial Data Handling, 1998. [10] Quinlan, J.R., “Induction of Decision Trees” Machine Learning, vol. 1, Kluwer

Academic Publishers, Boston, pp. 81-106, 1986.

[11] Rinzivillo, S.; Franco, T., Classification in Geographical Information Systems.

Lecture Notes in Artificial Intelligence. Berlin Heidelberg: Springer-Verlag, pp. 374-385, 2004.

[12] Valduriez, P., “Join indices” ACM Trans. on Database Systems, vol. 12(2), pp. 218-246, June 1987.

[13] Sitanggang. I.M. ; Yaakob, R. ; Mustapha, N. ; Nuruddin, A.A.B., An extended ID3 decision tree algorithm for spatial data, IEEE International Conference. 2011.

[14] Zeitouni, K.; Yeh, L.; Aufaure, M.A., “Join Indices as a Tool for Spatial Data Mining” in International Workshop on Temporal, Spatial and Spatio-Temporal Data Mining, 2000.

[15] Zeitouni, K.; Nadjim, C., “Spatial Decision Tree – Application to Traffic Risk Analysis”in ACS/IEEE International Conference, IEEE, 2001.

Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/

PHỤ LỤC

MÃ NGUỒN CHƢƠNG TRÌNH XÂY DỰNG

CÂY QUYẾT ĐỊNH PHÂN LỚP DỮ LIỆU KHÔNG GIAN

1. Định nghĩa Form khởi động

Định nghĩa Form khởi động tại class Program namespace DataMiningID3 { staticclassProgram { [STAThread] staticvoid Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(newFrmMain());

} } }

Form khởi động là Form FrmMain.

2. Mã nguồn Form FrmMain

Mã nguồn của Form FrmMain có 1235 dòng lệnh. Form này có nhiệm vụ xây dựng các công cụ thao tác bản đồ và tải dữ liệu bản đồ viễn thông. Chi tiết, đầy đủ mã nguồn xem tại thƣ mục MaNguon trong đĩa DVD gửi kèm. Phụ lục trình bày một số mã nguồn chính của chƣơng trình.

2.1. Lấy dữ liệu không gian

privatevoid LayKhongGianDuLieuSde() { (adsbygoogle = window.adsbygoogle || []).push({});

try {

crsDatabaseConnections crsSdeConn = newcrsDatabaseConnections(); string strMdbConnect = Application.StartupPath + "\\data\\bts.mdb"; _workspaceSde =

crsSdeConn.PersonalGeodatabase_Connect(strMdbConnect); }

catch { } }

Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/ 2.2. Xây dựng dữ liệu privatevoid XayDungDuLieu() { try { if (Equals(_workspaceSde, null)) {

string strMdbConnect = Application.StartupPath + "\\data\\bts.mdb";

_workspaceSde = PersonalGeodatabase_Connect(strMdbConnect); }

DataTable dt = newDataTable(); if (!Equals(_workspaceSde, null)) {

IFeatureWorkspace _featureWorkspace = _workspaceSde asIFeatureWorkspace; //Mo lop du lieu diem muc tieu

IFeatureClass _featureClass = _featureWorkspace.OpenFeatureClass("muctieu"); IQueryFilter _queryFilter = newQueryFilterClass();

_queryFilter.WhereClause = string.Empty;

IFeatureCursor _featureCursor = _featureClass.Search(null, false); IFeature _feature = _featureCursor.NextFeature();

//Duyet cac doi tuong trong lop BTS dt.Columns.Add("targetid"); dt.Columns.Add("btsid"); dt.Columns.Add("btscover"); dt.Columns.Add("officeid"); dt.Columns.Add("officedmin"); dt.Columns.Add("densityid"); dt.Columns.Add("density"); dt.Columns.Add("decision"); while (_feature != null)

{ DataRow dr = dt.NewRow(); int idMucTieu = Convert.ToInt32(_feature.get_Value(_featureClass.FindField("id"))); string decision = _feature.get_Value(_featureClass.FindField("decision")).ToString(); dr["targetid"] = idMucTieu;

if (decision.ToLower().Equals("f")) dr["decision"] = "no"; if (decision.ToLower().Equals("t")) dr["decision"] = "yes"; //Tim vung muc tieu

string densityVMT = string.Empty; int idVMT = 0;

TimVungCuaMucTieu1(_featureClass, _feature, out idVMT, out densityVMT);

dr["densityid"] = idVMT;

Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/ //Tim khoang cach BTS

string btscover; int idBTS;

TinhKhoangCachGanNhatBTS(_feature, out btscover, out idBTS);

dr["btsid"] = idBTS;

dr["btscover"] = btscover.ToLower(); //Tim khoang cach den cong so gan nhat

string officedmin; int idCongSo;

TinhKhoangCachGanNhatCONGSO(_feature, out officedmin, out idCongSo); dr["officeid"] = idCongSo; dr["officedmin"] = officedmin.ToLower(); dt.Rows.Add(dr); _feature = _featureCursor.NextFeature(); } } if (dt.Columns.Contains("densityid")) dt.Columns.Remove("densityid"); if (dt.Columns.Contains("btsid")) dt.Columns.Remove("btsid"); if (dt.Columns.Contains("officeid")) dt.Columns.Remove("officeid"); if (dt.Columns.Contains("targetid")) dt.Columns.Remove("targetid"); var frm = new ID3.FrmMNID3(dt);

frm.Show(this); } catch (Exception) { throw; } }

Trong đoạn mã nguồn chƣơng trình trên có sử dụng các chƣơng trình con:

- private void TimVungCuaMucTieu1(IFeatureClass featureClass, IFeature featureMuTieu, out int id, out string density):Xác định điểm mục tiêu thuộc vùng mật độ dân cƣ nào, cho thông tin mật độ vùng trong biến Density kiểu String

- private void TinhKhoangCachGanNhatBTS(IFeature featureMuTieu, out string btscover, out int id):Xác định id của BTS gần nhất (khái niệm gần nhất nhƣ định nghĩa tại Chƣơng 3) và độ phủ của trạm BTS này.

- private void TinhKhoangCachGanNhatCONGSO(IFeature featureMuTieu, out string officedmin, out int id):Xác định id của công sở, cơ quan gần nhất và khoảng cách đến công sở. (adsbygoogle = window.adsbygoogle || []).push({});

Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/ Sau khi khởi tạo dữ liệu xong, chƣơng trình sẽ gọi Form FrmMDID3 mô tả thuật toán ID3 trên dữ liệu khởi tạo.

2.3 Xác định vùng mật độ chứa điểm mục tiêu

privatevoid TimVungCuaMucTieu1(IFeatureClass featureClass, IFeature featureMuTieu, outint id, outstring density)

{

id = 0;

density = string.Empty;

IFeatureWorkspace _featureWorkspace = _workspaceSde asIFeatureWorkspace; IFeatureClass _featureClass =

_featureWorkspace.OpenFeatureClass("vungmatdo"); IFeatureSelection fsFrom;

IFeatureSelection fsByLayer; IFeatureLayer byLayer;

byLayer = newFeatureLayerClass(); byLayer.FeatureClass = featureClass; fsByLayer = byLayer asIFeatureSelection; fsByLayer.Clear();

fsByLayer.Add(featureMuTieu); var flVungMatDo = newFeatureLayerClass(); flVungMatDo.FeatureClass = _featureClass; fsFrom = flVungMatDo asIFeatureSelection;

ISelectionSet selectionSet = Tool_SelectByLocation(byLayer, fsFrom, esriSelectionResultEnum.esriSelectionResultNew,

esriLayerSelectionMethod.esriLayerSelectIntersect, true, false, 0, ESRI.ArcGIS.esriSystem.esriUnits.esriMeters);

if (selectionSet.Count > 0) {

ICursor _cursor;

selectionSet.Search(null, false, out _cursor); IFeatureCursor _featureCusor = _cursor asIFeatureCursor; IFeature _feature = _featureCusor.NextFeature();

id = Convert.ToInt32(_feature.get_Value(_featureClass.FindField("id"))); density = _feature.get_Value(_featureClass.FindField("matdo")).ToString(); } } 2.4. Xác định trạm BTS gần điểm mục tiêu

privatevoid TinhKhoangCachGanNhatBTS(IFeature featureMuTieu, outstring btscover, outint id)

Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/ IFeatureWorkspace _featureWorkspace = _workspaceSde asIFeatureWorkspace; IFeatureClass _featureClass = _featureWorkspace.OpenFeatureClass("bts"); IQueryFilter _queryFilter = newQueryFilterClass();

_queryFilter.WhereClause = string.Empty;

IFeatureCursor _featureCursor = _featureClass.Search(null, false); IFeature _feature = _featureCursor.NextFeature();

IPoint pointMT = featureMuTieu.Shape asIPoint; id = 0;

double dist_min = 1000000000000000000; btscover = string.Empty;

while (_feature != null) {

IPoint point = _feature.Shape asIPoint; double bkPhuSong =

Convert.ToDouble(_feature.get_Value(_featureClass.FindField("bankinhphuson g")));

double dist1 = dist(pointMT, point) - bkPhuSong; if (dist1 < dist_min) { dist_min = dist1; id = Convert.ToInt32(_feature.get_Value(_featureClass.FindField("matram"))); } _feature = _featureCursor.NextFeature(); }

if (dist_min < 0) btscover = "GOOD";

if (0 < dist_min && dist_min < 200000) btscover = "MEDIUM"; if (dist_min > 200000) btscover = "LOW";

} (adsbygoogle = window.adsbygoogle || []).push({});

2.5. Xác định công sở gần điểm mục tiêu

privatevoid TinhKhoangCachGanNhatCONGSO(IFeature featureMuTieu, outstring officedmin, outint id)

{

IFeatureWorkspace _featureWorkspace = _workspaceSde asIFeatureWorkspace; IFeatureClass _featureClass = _featureWorkspace.OpenFeatureClass("congso"); IQueryFilter _queryFilter = newQueryFilterClass();

_queryFilter.WhereClause = string.Empty;//Khong loc dieu kien gi ca IFeatureCursor _featureCursor = _featureClass.Search(null, false);

IFeature _feature = _featureCursor.NextFeature(); //Duyet cac doi tuong trong lop BTS

IPoint pointMT = featureMuTieu.Shape asIPoint; double dist_min = 10000000000;

id = 0;

officedmin = string.Empty; while (_feature != null)

Số hóa bởi trung tâm học liệu http://www.lrc-tnu.edu.vn/ {

IPoint point = _feature.Shape asIPoint;

Một phần của tài liệu Nghiên cứu một số kĩ thuật khai phá dữ liệu không gian sử dụng cây quyết định (Trang 70 - 92)