Trong cuộc sống hiện đại ngày nay, Internet là một phần không thể thiếu được, nó là nguồn sống là động lực của sự phát triển của toàn xã hội. Với sự phát triển mạnh mẽ của công nghệ thông tin toàn cầu, và sự phát triển hạ tầng không ngừng mạng không dây (wireless) tốc độ cao đang ngày càng mở rộng và phát triển. Mạng di động đang ngày càng trở nên thông dụng, do đó ngày càng nhiều thiết bị thực hiện truyền nhận tín hiệu trong môi trường không khí. Những tín hiệu hoạt động ở các tần số tương tự nhau có thể gây nhiễu cho nhau và có tác động tới hiệu suất của mạng. Việc đo đạc các mức tín hiệu và biểu diễn một cách trực quan chúng là vô cùng quan trọng. Vì vậy nhóm chúng em quyết định lựa chọn đề tài “ Xây dựng bản đồ đồng mức cho chỉ số cường độ tín hiệu thu Wifi ” để biểu diễn chỉ số cường độ tín hiệu thu thành các đường đồng mức biểu thị trên bản đồ thực tế
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI Viện Điện tử - Viễn thông Đồ án I Đề tài: Xây dựng đồ đồng mức cho số cường độ tín hiệu thu Wifi Nhóm sinh viên thực hiện: Trần Minh Hùng MSSV: 20161989 Hoàng Việt Anh MSSV: 20160080 Giảng viên hướng dẫn : TS.Nguyễn Tiến Hòa Hà Nội, 5/2019 -0 LỜI MỞ ĐẦU Trong sống đại ngày nay, Internet phần thiếu được, nguồn sống động lực phát triển toàn xã hội Với phát triển mạnh mẽ cơng nghệ thơng tin tồn cầu, phát triển hạ tầng không ngừng mạng không dây (wireless) tốc độ cao ngày mở rộng phát triển Mạng di động ngày trở nên thông dụng, ngày nhiều thiết bị thực truyền nhận tín hiệu mơi trường khơng khí Những tín hiệu hoạt động tần số tương tự gây nhiễu cho có tác động tới hiệu suất mạng Việc đo đạc mức tín hiệu biểu diễn cách trực quan chúng vơ quan trọng Vì nhóm chúng em định lựa chọn đề tài “ Xây dựng đồ đồng mức cho số cường độ tín hiệu thu Wifi ” để biểu diễn số cường độ tín hiệu thu thành đường đồng mức biểu thị đồ thực tế Chúng em xin chân thành cảm ơn thầy giáo Nguyễn Tiến Hòa anh Vũ Gia Phúc giúp đỡ vơ nhiệt tình trình thực đồ án Chúng em xin cám ơn Viện Điện tử - Viễn thông đặc biệt thành viên lab SigProLab tạo điều kiện giúp đỡ hỗ trợ chúng em suốt q trình thực hồn thành đồ án Trong q trình làm đồ án, chưa có nhiều kinh nghiệm nên cịn có nhiều điểm khiếm khuyết cách trình bày phần thể đồ án mong thầy góp ý bổ sung thêm Chúng em xin chân thành cảm ơn Hà Nội, tháng 6, năm 2019 MỤC LỤC LỜI MỞ ĐẦU MỤC LỤC DANH MỤC HÌNH ẢNH CHƯƠNG 1: TỔNG QUAN ĐỀ TÀI ĐẶT VẤN ĐỀ MỤC TIÊU, KẾT QUẢ DỰ KIẾN CHƯƠNG 2: NỘI DUNG ĐỀ TÀI TỔNG QUAN VỀ RSSI TÌM HIỂU VỀ BẢN ĐỒ ĐỒNG MỨC ( CONTOUR MAP) GIỚI THIỆU VỀ NGÔN NGỮ THỰC HIỆN PYTHON THUẬT TOÁN THỰC HIỆN 12 KẾT QUẢ THU ĐƯỢC VÀ ĐỊNH HƯỚNG PHÁT TRIỂN 21 KẾT LUẬN 23 TÀI LIỆU THAM KHẢO 24 DANH MỤC HÌNH ẢNH Hình Nền Canvas tạo 16 Hình Chèn ảnh Map vào Canvas 18 Hình File csv cần xử lý 19 Hình Mạng tam giác Delaunay vẽ từ liệu 20 Hình 5.Đường đồng mức 21 Hình 6.Bản đồ đồng mức số cường độ tín hiệu thu Wifi 22 Chương 1: Tổng quan đề tài Đặt vấn đề Mạng máy tính từ lâu trở thành phần thiếu nhiều lĩnh vực đời sống xã hội, từ hệ thống mạng cục hệ thống mạng toàn cầu internet Các hệ thống mạng hữu tuyến vơ tuyến dần phát huy vai trị Mạng khơng dây bước tiến lớn ngành công nghệ thông tin truyền thông, mạng không dây tạo nên cách mạng việc truy cập truyền thông tin thiết bị đầu cuối Mạng không dây làm thay đổi hồn tồn sống người, thói quen kỹ người sinh hoạt, học tập công việc cải thiện với suất hiệu cao Ngày mạng không dây dần trở nên phổ biến tổ chức doanh nghiệp cá nhân, dần thay hệ thống có dây Với ưu điểm tiện lợi, linh hoạt đơn giản trình triển khai sử dụng, mạng không dây đáp ứng hầu hết nhu cầu sống đại Công nghệ Wifi hay chuẩn IEEE 802.11 công nghệ ứng dụng rộng rãi Bên cạnh điểm tối ưu mạng Wifi tồn nhược điểm như: phạm vi kết nối mạng Wifi có giới hạn, xa router kết nối yếu dần đi, vấn đề nhiễu làm ảnh hưởng tới hiệu hoạt động mạng, hay tốc độ mạng điều phải nghiên cứu Việc xây dựng nên đồ biểu thị mức tín hiệu mạng Wifi cần thiết, từ có nhìn tổng quan tình trạng mạng khu vực cụ thể qua đưa giải pháp cải thiện chất lượng mạng, sử dụng mạng theo mục đích riêng biệt Đề tài: “ Xây dựng đồ đồng mức cho số cường độ tín hiệu Wifi ’’ nhóm em nghiên cứu mong giải phần tốn đặt Đó xây dựng nên đồ đồng mức biểu thị số cường độ tín hiệu Wifi qua nhìn trực quan tình trạng mạng khu vực Mục tiêu, kết dự kiến 2.1 Mục tiêu đề tài Đề tài hồn thành phải xây dựng chương trình cho kết ảnh đồ biểu thị mức tín hiệu Wifi thu với liệu nhập vào Chương trình xây dựng đảm bảo thuật tốn xử lý phải nhanh xác, chế độ hiển thị trực quan rõ ràng Phần mềm viết ngơn ngữ Python, q trình phát triển phần mềm xậy dựng code cách dễ hiểu với người sử dụng Sau hoàn thành đồ án chúng em muốn có thêm hiểu biết mạng Wifi, có thêm hiểu biết tín hiệu mạng, biết cách xây dựng đồ đồng mức, qua phát triển nghiên cứu thêm nghiên cứu sâu mạng Ngồi có nhìn tổng quan tiếp xúc làm quen với ngôn ngữ lập trình Python ( ngơn ngữ hữu ích thời gian gần đặc biệt dùng nhiều toán AI ), biết cách xây dựng chương trình ngơn ngữ Python 2.2 Kết dự kiến thu Đề tài hoàn thành yêu cầu đề hiển thị ảnh Scan xác tọa độ tỉ lệ liệu google map google earth, từ ảnh chụp từ vệ tinh, thêm liệu tín hiệu Wifi đo vào phần mềm xử lý liệu đưa hình hiển thị đường đồng mức đồ có kí hiệu rõ ràng quan sát đường cách rõ ràng Tốc độ xử lý liệu đưa vào nhanh số lượng điểm xử lý nhiều Chương 2: Nội dung đề tài Tổng quan RSSI RSSI gì: Thực khái niệm RSSI gặp nhiều xã hội, biết ý nghĩa từ hay viết tắt từ Đây từ mà sử dụng nhiều lĩnh vực điện tử viễn thông chủ yếu RSSI viết tắt từ Received Signal Strength Indicator chất số cường độ tín hiệu thu số để đo độ mạnh tín hiệu thiết bị thu (ví dụ anten, sóng wifi …), định nghĩa chuẩn IEEE 802.11 Chúng ta nên nhớ giá trị RSSI lớn độ mạnh tín hiệu lớn Chỉ số RSSI khơng sử dụng đơn vị đo miền giá trị cụ thể, IEEE 802.11 không định nghĩa việc chuyển đổi số RSSI với đơn vị tính cơng suất khác mW dBm RSSI thường vơ hình người dùng thiết bị nhận Cường độ tín hiệu thay đổi ảnh hưởng đến chức mạng không dây, thiết bị IEEE 802.11 thường cung cấp phép đo cho người dùng RSSI thường dẫn xuất giai đoạn tần số trung gian trước khuếch đại IF Trong hệ thống zero-IF , dẫn xuất chuỗi tín hiệu băng sở, trước khuếch đại băng sở Đầu RSSI thường mức tương tự DC Nó lấy mẫu ADC bên mã kết có sẵn trực tiếp thông qua bus xử lý ngoại vi bên Trong hệ thống IEEE 802.11, RSSI cường độ tín hiệu tương đối nhận mơi trường khơng dây , đơn vị tùy ý RSSI báo mức lượng nhận đài thu sau ăng ten cáp Do đó, số RSSI cao, tín hiệu mạnh Do đó, giá trị RSSI biểu thị dạng âm (ví dụ −100), giá trị gần 0, tín hiệu thu mạnh RSSI sử dụng nội card mạng không dây để xác định lượng vô tuyến kênh nằm ngưỡng định mà card mạng rõ ràng gửi (CTS) Khi thẻ rõ ràng để gửi, gói thơng tin gửi Người dùng cuối quan sát giá trị RSSI đo cường độ tín hiệu mạng không dây thông qua việc sử dụng công cụ giám sát mạng không dây Wireshark , Kismet Inssider Ví dụ: thẻ Cisco Systems có giá trị tối đa RSSI 100 báo cáo 101 mức lượng khác nhau, giá trị RSSI đến 100 Một phổ biến khác Chipset Wi-Fi sản xuất Atheros Thẻ dựa Atheros trả giá trị RSSI từ đến 127 (0x7f) với 128 (0x80) cho biết giá trị không hợp lệ Khơng có mối quan hệ chuẩn hóa tham số vật lý cụ thể với việc đọc RSSI Tiêu chuẩn 802.11 không xác định mối quan hệ giá trị RSSI mức cơng suất tính milliwatts decibel tham chiếu đến milliwatt Các nhà cung cấp nhà sản xuất chipset cung cấp độ xác, độ chi tiết phạm vi riêng họ cho công suất thực tế (được đo milliwatts decibel) phạm vi giá trị RSSI họ (từ tối đa đến RSSI).Một tinh tế số liệu 802.11 RSSI đến từ cách lấy mẫu RSS RSSI lấy giai đoạn mở đầu việc nhận khung hình 802.11, khơng qua khung hình đầy đủ Ngay từ năm 2000, nhà nghiên cứu sử dụng RSSI cho ước tính vị trí hạt thơ Cơng việc gần tái tạo kết kỹ thuật tiên tiến Tuy nhiên, RSSI lúc cung cấp phép đo đủ xác để xác định vị trí Tuy nhiên, RSSI đại diện cho số khả thi cho mục đích địa hóa có sẵn hầu hết nút khơng dây khơng cần u cầu phần cứng bổ sung Đối với hầu hết phần, 802.11 RSSI thay báo công suất kênh nhận (RCPI) RCPI 802.11 biện pháp nhận tần số vô tuyến điện lựa chọn kênh lời mở đầu toàn nhận khung , xác định mức độ tuyệt đối độ xác độ phân giải RCPI liên kết độc quyền với 802.11 có số độ xác độ phân giải thi hành thơng qua IEEE 802.11k2008 Đánh giá mức cơng suất tín hiệu nhận bước cần thiết để thiết lập liên kết để liên lạc nút không dây Tuy nhiên, số liệu mức lượng RCPI thường nhận xét chất lượng liên kết số liệu khác đo thời gian lại ( thời gian đến ) Bằng cách phần mềm ứng dụng biết được giá trị lớn số RSSI 60 (với thiết bị Atheros)? Trong chuẩn IEEE quy định tham số RSSI_MAX giá trị RSSI lớn Các nhà sản xuất thường chọn số RSSI để biểu thị cường độ tín hiệu thấp ngưỡng nhận tín hiệu thiết bị Nếu muốn so sánh cường độ tín hiệu dựa số RSSI, nên thực so sánh thiết bị nhà sản xuất Chỉ số RSSI thiết bị thu sử dụng để làm giá trị ngưỡng việc định kết nối ngắt kết nối kênh, mạng khơng dây Cơng thức tính RSSI: Cơng thức tính công suất thu = Công suất phát (của Moderm) – Tổng suy hao (Suy hao vật liệu suy hao khoảng cách) Tìm hiểu đồ đồng mức ( Contour Map) Bản đồ đường đồng mức đồ gồm tập hợp đường cong điểm tương đương tập hợp điểm khoảng cách từ điểm, đường đa tuyến định Tạo đường đồng mức kỹ thuật chuẩn thường sử dụng để biểu diễn mặt cong ba chiều không gian hai chiều Các hình thường phải nhiều thời gian để vẽ phương pháp thủ công dùng dạng đồ địa hình đơn giản Các sơ đồ đường đồng mức tạo cách kết nối điểm có Z mặt phẳng XY Các đường bình mức biểu diễn đường cong thu giao tuyến mặt phẳng song song mặt cong ba chiều xét, đồ đường đồng mức có ưu điểm cho phép tính giá trị Z phép nội suy đường đồng mức Kỹ thuật tạo đường đồng mức áp dụng lĩnh vực kỹ thuật khác 2.1 Lịch sử phát triển đồ đồng mức: Ý tưởng đường nối điểm có giá trị khám phá lại nhiều lần Isobath lâu đời biết đến (đường đồng mức có độ sâu khơng đổi) tìm thấy đồ ngày 1584 dịng sơng Spaarne , gần Haarlem , người Hà Lan Pieter Bruinsz Năm 1701, Edmond Halley sử dụng dòng biểu đồ biến đổi từ tính Kỹ sư người Hà Lan Nicholas Cruquius vẽ đáy sông Merwede với đường có độ sâu (isobaths) khoảng thời gian fathom vào năm 1727, Philippe Buache sử dụng chúng khoảng thời gian 10 fathom biểu đồ củaKênh tiếng Anh chuẩn bị vào năm 1737 xuất năm 1752 Những dòng sử dụng để mô tả bề mặt đất (đường đồng mức) đồ Công tước Modena Reggio Domenico Vandelli năm 1746, chúng nghiên cứu mặt lý thuyết Ducarla vào năm 1771 Charles Hutton sử dụng chúng thí nghiệm Schiehallion Năm 1791, đồ Pháp JL Dupain-Triel sử dụng đường đồng mức khoảng cách 20 mét, đường ray, độ cao chỗ phần thẳng đứng Năm 1801, người đứng đầu Quân đoàn Kỹ sư, Haxo , sử dụng đường đồng mức tỷ lệ lớn 1: 500 kế hoạch dự án ông cho Roccaimaeufo Đến khoảng năm 1843, Khảo sát đồ bắt đầu thường xuyên ghi lại đường đồng mức Anh Ireland , chúng sử dụng chung nước châu Âu Isobath không sử dụng thường xuyên biểu đồ hải lý Nga từ năm 1834 Anh từ năm 1838 Khi đồ với đường đồng mức trở nên phổ biến, ý tưởng lan sang ứng dụng khác Để tối đa hóa khả đọc đồ đường viền, có số lựa chọn thiết kế có sẵn cho người tạo đồ, chủ yếu trọng lượng đường , màu đường, loại đường phương pháp đánh dấu số 2.2 Khái niệm đường đồng mức ( Contour line ): Một đường đồng mức hàm gồm hai biến đường cong dọc theo hàm có giá trị khơng đổi, đường cong nối điểm có giá trị Đây phần mặt phẳng đồ thị ba chiều hàm f ( x, y ) song song với mặt phẳng x,y Trong đồ học , đường đồng mức (thường gọi "đường viền") nối điểm có độ cao nhau(chiều cao) mức định, chẳng hạn mực nước biển trung bình Một đồ đường viền đồ minh họa đường đồng mức Các khoảng đường viền đồ đường viền chênh lệch độ cao đường cong liên tiếp Tổng quát hơn, đường đồng mức cho hàm hai biến đường cong kết nối điểm hàm có giá trị cụ thể Độ dốc hàm ln vng góc với đường đồng mức Khi đường gần nhau, độ lớn độ dốc lớn: biến thiên dốc Một tập cấp tổng quát hóa đường đồng mức cho hàm số lượng biến Các đường đồng mức uốn cong, thẳng hỗn hợp hai đường đồ mô tả giao điểm bề mặt thực giả thuyết với nhiều mặt phẳng ngang Các đường viền cho phép người đọc đồ suy độ dốc tương đối tham số ước tính tham số vị trí cụ thể Các đường đồng mức vạch mơ hình ba chiều nhìn thấy bề mặt , nhà quang ảnh xem mơ hình âm vẽ đường viền độ cao, nội suy từ độ cao bề mặt ước tính, chương trình máy tính luồn qua mạng lưới điểm quan sát khu vực trung tâm Giới thiệu ngôn ngữ thực Python Python ngôn ngữ cũ tạo Guido Van Rossum Thiết kế bắt đầu vào cuối năm 1980 phát hành lần vào tháng năm 1991.Vào cuối năm 1980, Guido Van Rossum làm việc Amoeba, phân phối nhóm hệ điều hành Ơng muốn sử dụng ngơn ngữ thơng dịch ABC (ABC có cú pháp dễ hiểu) để truy cập vào gọi hệ thống Amoeba Vì vậy, ơng định tạo ngôn ngữ mở rộng Điều dẫn đến thiết kế ngơn ngữ mới, Python sau Tại lại có tên Python? Python đặt theo tên rắn thần Python thần thoại Hy Lạp Rossum fan sê-ri chương trình hài cuối năm 1970, tên “Python” lấy từ tên phần sê-ri “Monty Python’s Flying Circus” Python cửa ngõ để người bước vào giới lập trình máy tính, phương tiện để bạn nhận khoản tiền lương béo bở kèm với công việc đầy sáng tạo nhiều niềm vui Được đặt theo tên nhóm hài kịch tiếng với cú pháp đơn giản lịch, Python sử dụng cho nhiều loại ứng dụng từ trò game đơn giản đến thuật tốn tìm kiếm phức tạp Python ln nằm top 10 ngơn ngữ lập trình phổ biến tất bảng xếp hạng lớn (TIOBE, RedMonk, PYPL), minh chứng mạnh mẽ để tuyên bố Python có tốc độ nhanh, mạnh mẽ có mặt khắp nơi Chính gần gũi Python với ngôn ngữ người khiến nhiều trường học, đại học trung tâm đào tạo sử dụng ngơn ngữ lập trình để giảng dạy cho người bắt đầu lớp học khoa học máy tính Ngày nay, tình u dành cho Python có mặt khắp nơi, từ lập trình viên hàng đầu giới cậu bé học lập trình Caolan Fleming Ireland, cậu tự học Python để xây dựng ứng dụng từ hồi tuổi Những năm gần cộng đồng người sử dụng ngôn ngữ đông, ngôn ngữ top ngôn ngữ phổ biến Hơn hai thập kỷ sau bắt đầu dự án cá nhân, Python đóng vai trò quan trọng nhiều ứng dụng đòi hỏi khắt khe có khả sử dụng lập trình để giải vấn đề khó khăn ngày mai Trong thực tế, với SQL R, Python nằm top ngơn ngữ lập trình sử dụng nhiều nhà khoa học liệu, chuyên gia phát triển giải pháp thông minh cho nhiều thách thức khác việc tìm kiếm phương pháp chữa trị cho bệnh ung thư, lập đồ hành vi khủng bố, cải thiện khả nhận thức trẻ em Tính Python • • • • Ngơn ngữ lập trình đơn giản, dễ học: Python có cú pháp đơn giản, rõ ràng Nó dễ đọc viết nhiều so sánh với ngơn ngữ lập trình khác C++, Java, C# Python làm cho việc lập trình trở nên thú vị, cho phép bạn tập trung vào giải pháp khơng phải cú pháp Miễn phí, mã nguồn mở: Bạn tự sử dụng phân phối Python, chí dùng cho mục đích thương mại Vì mã nguồn mở, bạn khơng sử dụng phần mềm, chương trình viết Python mà cịn thay đổi mã nguồn Python có cộng đồng rộng lớn, khơng ngừng cải thiện lần cập nhật Khả di chuyển: Các chương trình Python di chuyển từ tảng sang tảng khác chạy mà khơng có thay đổi Nó chạy liền mạch hầu hết tất tảng Windows, macOS, Linux Khả mở rộng nhúng: Giả sử ứng dụng địi hỏi phức tạp lớn, bạn dễ dàng kết hợp phần code C, C++ ngơn ngữ 10 khác (có thể gọi từ C) vào code Python Điều cung cấp cho ứng dụng bạn tính tốt khả scripting mà ngơn ngữ lập trình khác khó làm • Ngơn ngữ thơng dịch cấp cao: Không giống C/C++, với Python, bạn lo lắng nhiệm vụ khó khăn quản lý nhớ, dọn dẹp liệu vô nghĩa, Khi chạy code Python, tự động chuyển đổi code sang ngơn ngữ máy tính hiểu Bạn không cần lo lắng hoạt động cấp thấp • Thư viện tiêu chuẩn lớn để giải tác vụ phổ biến: Python có số lượng lớn thư viện tiêu chuẩn giúp cho cơng việc lập trình bạn trở nên dễ thở nhiều, đơn giản khơng phải tự viết tất code Ví dụ: Bạn cần kết nối sở liệuMySQL Web server? Bạn nhập thư viện MySQLdb sử dụng Những thư viện kiểm tra kỹ lưỡng sử dụng hàng trăm người Vì vậy, bạn chắn khơng làm hỏng code hay ứng dụng • Hướng đối tượng: Mọi thứ Python hướng đối tượng Lập trình hướng đối tượng (OOP) giúp giải vấn đề phức tạp cách trực quan Với OOP, bạn phân chia vấn đề phức tạp thành tập nhỏ cách tạo đối tượng Python dùng đâu? • Lập trình ứng dụng web: Bạn tạo web app có khả mở rộng (scalable) cách sử dụng framework CMS (Hệ thống quản trị nội dung) tích hợp Python Vài tảng phổ biến để tạo web app là: Django, Flask, Pyramid, Plone, Django CMS Các trang Mozilla, Reddit, Instagram PBS viết Python • Khoa học tính tốn: Có nhiều thư viện Python cho khoa học tính tốn số liệu, SciPy NumPy, sử dụng cho mục đích chung chung tính tốn Và, có thư viện cụ thể như: EarthPy cho khoa học trái đất, AstroPy cho Thiên văn học, Ngồi ra, Python cịn sử dụng nhiều machine learning, khai thác liệu deep learning • Tạo nguyên mẫu phần mềm: Python chậm so sánh với ngôn ngữ biên dịch C++ Java Nó khơng phải lựa chọn tốt nguồn lực bị giới hạn yêu cầu hiệu bắt buộc Tuy nhiên, Python ngôn ngữ tuyệt vời để tạo nguyên mẫu (bản chạy thử - prototype) Ví dụ, bạn sử dụng Pygame (thư viện viết game) để tạo nguyên mẫu game trước Nếu thích nguyên mẫu dùng C++ để viết game thực 11 • Ngơn ngữ tốt để dạy lập trình: Python nhiều công ty, trường học sử dụng để dạy lập trình cho trẻ em người lần đầu học lập trình Bên cạnh tính khả tuyệt vời cú pháp đơn giản dễ sử dụng lý cho việc Sự phát triển Python đến chia làm giai đoạn: • • • Python 1: bao gồm phát hành 1.x Giai đoạn này, kéo dài từ đầu đến cuối thập niên 1990 Các phiên Python CWI phát hành Phiên cuối phát hành CWI 1.2 o Vào năm 1995, Guido chuyển sang CNRI Tại đây, ông phát hành số phiên khác Python 1.6 phiên cuối phát hành CNRI o Sau phát hành 1.6, Guido rời bỏ CNRI để làm việc với lập trình viên chuyên viết phần mềm thương mại Tại đây, ơng có ý tưởng sử dụng Python với phần mềm tuân theo chuẩn GPL Sau đó, CNRI FSF (Free Software Foundation - Tổ chức phần mềm tự do) hợp tác để làm quyền Python phù hợp với GPL Phiên 1.6.1 đời sau phiên tuân theo quyền GPL Tuy nhiên, hoàn toàn giống 1.6, trừ số sửa lỗi cần thiết Python 2: Vào năm 2000, Guido nhóm phát triển Python dời đến BeOpen.com thành lập BeOpen PythonLabs team Phiên Python 2.0 phát hành Sau phát hành Python 2.0, Guido thành viên PythonLabs gia nhập Digital Creations o Python 2.1 đời kế thừa từ Python 1.6.1 Python 2.0 Bản quyền phiên đổi thành Python Software Foundation License Từ thời điểm trở đi, Python thuộc sở hữu Python Software Foundation (PSF), tổ chức phi lợi nhuận thành lập theo mẫu Apache Software Foundation Python 3, gọi Python 3000 Py3K: Dịng 3.x khơng hồn tồn tương thích với dịng 2.x, có cơng cụ hỗ trợ chuyển đổi từ phiên 2.x sang 3.x Nguyên tắc chủ đạo để phát triển Python 3.x "bỏ cách làm việc cũ nhằm hạn chế trùng lặp mặt chức Python" Trong PEP (Python Enhancement Proposal) có mô tả chi tiết thay đổi Python Thuật toán thực 4.1 Giới thiệu tam giác Delaunay mạng tam giác bất thường TIN Trong toán học hình học tính tốn , tam giác Delaunay (còn gọi tam giác Delone ) cho tập hợp P điểm rời rạc mặt phẳng tam giác DT ( P ) cho khơng có điểm P nằm đường trịn ngoại tiếp 12 tam giác DT ( P ) Tam giác Delaunay tối đa hóa góc tối thiểu tất góc tam giác tam giác; họ có xu hướng tránh tam giác cúi Hình tam giác đặt theo tên Boris Delaunaycho cơng việc chủ đề từ năm 1934 Đối với tập hợp điểm đường thẳng, khơng có tam giác Delaunay (khái niệm tam giác suy biến cho trường hợp này) Đối với bốn nhiều điểm đường trịn (ví dụ: đỉnh hình chữ nhật), tam giác Delaunay khơng phải nhất: tam giác chia tứ giác thành hai tam giác thỏa mãn "điều kiện Delaunay", nghĩa u cầu vịng trịn tất hình tam giác có nội thất trống Bằng cách xem xét hình cầu bao quanh, khái niệm tam giác Delaunay mở rộng đến ba chiều cao Một mạng bất thường tam giác ( TIN ) đại diện bề mặt liên tục bao gồm tồn khía cạnh tam giác, sử dụng chủ yếu rời rạc toàn cầu lưới mơ hình độ cao Các đỉnh hình tam giác tạo từ độ cao chỗ ghi lại thông qua nhiều phương tiện khác nhau, bao gồm khảo sát thông qua Hệ thống định vị thời gian thực toàn cầu (GPS RTK), quang ảnh số phương tiện khác Liên kết với liệu ba chiều ( x , y z ) địa hình, TIN hữu ích cho việc mơ tả phân tích phân phối mối quan hệ ngang ( x y ) chung Cấu trúc liệu TIN kỹ thuật số sử dụng nhiều ứng dụng, bao gồm hệ thống thông tin địa lý (GIS) soạn thảo hỗ trợ máy tính (CAD) để thể trực quan bề mặt địa hình TIN biểu diễn dựa vectơ bề mặt đất đáy biển vật lý, tạo thành từ nút đường phân bố khơng có tọa độ ba chiều ( x , y z ) xếp mạng lưới hình tam giác không chồng chéo TIN bao gồm mạng lưới tam giác đỉnh, gọi điểm hàng loạt, với liên tọa độ ba khía cạnh nối với cạnh để tạo thành tam giác tessellation Hình dung ba chiều dễ dàng tạo cách hiển thị mặt tam giác Ở khu vực có thay đổi chiều cao bề mặt, điểm đặt cách rộng rãi khu vực có thay đổi mạnh chiều cao, mật độ điểm tăng lên TIN sử dụng để thể địa hình thường gọi mơ hình độ cao kỹ thuật số (DEM), sử dụng thêm để sản xuất mơ hình bề mặt kỹ thuật số (DSM) mơ hình địa hình kỹ thuật số (DTM) Một lợi việc sử dụng TIN trênmơ hình độ cao kỹ thuật số rasterized (DEM) ánh xạ phân tích điểm TIN phân phối thay đổi dựa thuật toán xác định điểm cần thiết để tạo biểu diễn xác địa hình Do đó, liệu đầu vào linh hoạt cần lưu trữ điểm DEM raster, với điểm phân phối thường xun Mặc dù TIN coi khơng phù hợp DEM raster cho số loại ứng dụng GIS định, chẳng hạn phân tích bề mặtđộ dốc khía cạnh , thường 13 sử dụng CAD để tạo đường viền DTM DSM hình thành từ DEM Một DEM nội suy từ TIN TIN dựa tam giác Delaunay Delaunay bị ràng buộc Các tam giác tuân thủ Delaunay khuyến nghị tam giác bị ràng buộc Điều TIN kết có khả chứa hình tam giác dài mỏng hơn, điều không mong muốn để phân tích bề mặt Ngồi ra, phép nội suy lân cận tự nhiên tạo đa giác Thiessen (Voronoi) thực tam giác tuân thủ Delaunay Một tam giác Delaunay bị ràng buộc xem xét bạn cần xác định rõ ràng cạnh định đảm bảo không bị sửa đổi (nghĩa chia thành nhiều cạnh) tam giác Các tam giác Delaunay bị ràng buộc hữu ích để giảm thiểu kích thước TIN, chúng có nút tam giác hơn, nơi đường phá vỡ không tăng cường 4.2 Giới thiệu thư viện sử dụng 4.2.1 Tinker Tkinter gói Python có chứa module Tk hỗ trợ cho việc lập trình GUI Tk ban đầu viết cho ngơn ngữ Tcl Sau Tkinter viết để sử dụng Tk trình thơng dịch Tcl Python Ngồi Tkinter cịn có số công cụ khác giúp tạo ứng dụng GUI viết Python wxPython, PyQt, PyGTK Trong đề tài, sử dụng module Tk sử dụng để tào cửa sổ Canvas, sau xử lý kiện cửa sổ 4.2.2 PIL Sử dụng thư viện Pillow (PIL Fork) để tiến hành thao tác xử lý hình ảnh đơn giản resize, crop, rotate… Sau cài đặt sử dụng module package IPL Trong đề tài này, nhóm em sử dụng modul ImageTk Image để xử lý hình ảnh Modul Image cung cấp lớp có tên sử dụng để đại diện cho hình ảnh PIL Modul cung cấp số chức bao gồm chức để tải hình ảnh từ tệp để tạo hình ảnh mới, ví dụ mở, xoay, hiển thị hình ảnh, tạo hình thu nhỏ,… Modul ImageTk hỗ trợ để tạo sửa đổi Tkinter BitmapImage PhotoImage đối tượng từ hình ảnh PIL 4.2.3 numpy 14 Numpy thư viện toán học phổ biến đẩy quyền python, giống với mathlab Nó cho phép làm việc hiệu với ma trận, tính tốn phép tốn ma trận nhanh chóng hiệu 4.2.4 Scipy.spatial.qhull SciPy viết tắt Science Python, xây dựng từ thư viện numpy thư viện mã nguồn mở thuật toán cơng cụ tốn học cho Python SciPy cung cấp nhiều module tính tốn từ đại số tuyến tính, tích phân, vi phân, nội suy đến xử lý ảnh, fourier transform blabla… Chức tương tự MathLab, Octave Scilab, R… sử dụng rộng rãi có hệ thống thư viện tính tốn mạnh, ngôn ngữ Python rõ ràng, dễ hiểu, gần gũi với ngôn ngữ tự nhiên, mã nguồn mở cộng đồng dần lớn mạnh ngày Với SciPy bạn làm nhiều thứ kì diệu nốt nhạc, ví dụ thao tác với ma trận đơn giản, vẽ đồ thị, tạo mơ hình tính tốn, mơ hoạt động truyền tin host mạng… Trong đề tài chúng em sử dụng module Delaunay từ thư viện Scipy.spatial.qhull để vẽ mạng lưới tam giác Delaunay 4.2.5 pandas Thư viện pandas python thư viện mã nguồn mở, hỗ trợ đắc lực thao tác liệu Đây cơng cụ phân tích xử lý liệu mạnh mẽ ngôn ngữ lập trình python Thư viện sử dụng rộng rãi nghiên cứu lẫn phát triển ứng dụng khoa học liệu Thư viện sử dụng cấu trúc liệu riêng Dataframe Pandas cung cấp nhiều chức xử lý làm việc cấu trúc liệu Những ưu điểm pandas: • DataFrame đem lại linh hoạt hiệu thao tác liệu lập mục; • Là cơng cụ cho phép đọc/ ghi liệu nhớ nhiều định dạng file: csv, text, excel, sql database, hdf5;… • Liên kết liệu thông minh, xử lý trường hợp liệu bị thiếu Tự động đưa liệu lộn xộn dạng có cấu trúc;… • Dễ dàng thay đổi bố cục liệu; • Tích hợp chế trượt, lập mục, lấy tập từ tập liệu lớn • Có thể thêm, xóa cột liệu; 15 • Tập hợp thay đổi liệu với group by cho phép bạn thực tốn tử tập liệu; • Hiệu cao trộn kết hợp tập liệu; • Lập mục theo chiều liệu giúp thao tác liệu cao chiều liệu thấp chiều; • Tối ưu hiệu Trong đề tài, thư viện pandas dùng để xử lý liệu từ file data.csv để thực tiếp 4.3 Các bước thực 4.3.1 Tạo Canvas Sử dụng thư viện Tinker Python để tạo Canvas, thứ thực sau hiển thị Canvas Code tạo Canvas: from tkinter import * tk = Tk() tk.title("Bản đồ đồng mức cho số tín hiệu thu WIFI ") cas = Canvas(tk, width = w , height = h ) cas.pack(side = TOP, expand=True, fill=BOTH) tk.mainloop() Hình Nền Canvas tạo 16 4.3.2 Chèn map vào Canvas Sử dụng Google Earth để tạo ảnh đồ có chứa liệu ta đo Sau dùng thư viện PIL Python để chèn ảnh vào Canvas Việc cần làm chuyển đổi kinh độ, vĩ độ đồ tương ứng với tọa độ x, y Canvas: Đầu tiên, ta chọn điểm đồ trùng với điểm Canvas để làm gốc Tiếp theo, tính khoảng cách đường chim bay điểm đồ theo cơng thức: Giả sử ta có điểm, điểm P1 (la1, lo1) điểm P2(la2, lo2), khoảng cách đường chim bay điểm xác định: def distanceBetween2Points(la1, lo1, la2, lo2): dLat = (la2 - la1) * (np.pi / 180) dLon = (lo2 - lo1) * (np.pi / 180) la1ToRad = (la1) * (np.pi / 180) la2ToRad = (la2) * (np.pi / 180) a = np.sin(dLat / 2) * np.sin(dLat / 2) + np.cos(la1ToRad) * np.cos(la2ToRad) * np.sin(dLon / 2) * np.sin(dLon / 2) c = * np.arctan2(np.sqrt(a), np.sqrt(1 - a)) R = 6371000 # R la bk trai dat d = R * c return d Sau có hàm đo khoảng cách đường chim bay điểm đồ, ta xác định khoảng cách từ điểm tới điểm đồ Ta cần xác định tỷ lệ pixel Canvas ứng với khoảng cách mét đồ cách tạo hình chữ nhật vị trí thước đo đồ Ví dụ 160 pixel ứng với thước đo 30m Từ khoảng cách điểm tới điểm đồ tỷ lệ pixel : met ta xác định vị trí điểm tọa độ x,y Canvas 17 Hình Chèn ảnh Map vào Canvas 4.3.3 Xử lý file csv lấy liệu File liệu lưu file csv, gồm thông số kinh độ(lon), vĩ độ(lat), giá trị RSSI, khoảng cách(distance) Chúng ta cần phải xử lý để lấy liệu từ file 18 Hình File csv cần xử lý Sử dụng thư viện pandas Python để lấy liệu Dữ liệu ta cần lấy gồm cột lat, lon RSSI xử lý thành mảng tương ứng Từ sử dụng liệu từ mảng 4.3.4 Vẽ đường đồng mức ( Contour line) ❖ Vẽ mạng tam giác Delaunay: Input: N điểm gồm thông số tọa độ x, tọa độ y, cường độ RSSI z (1000< N