1. Trang chủ
  2. » Luận Văn - Báo Cáo

báo cáo đồ án thiết kế i phát triển ứng dụng quản lý phiên bản dữ liệu địa không gian cho môi trường autocad

28 1 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 28
Dung lượng 2,2 MB

Nội dung

Trọng tâm chính là hỗ trợ các công ty thành viên trong Vinacomin Tập đoàn Công nghiệp Than và Khoáng sản Việt Namquản lý dữ liệu bản đồ của họ.Quản lý phiên bản là một hệ thống lưu trữ c

Trang 1

ĐẠI HỌC BÁCH KHOA HÀ NỘI TRƯỜNG ĐIỆN – ĐIỆN TỬ

***** □&□ *****

BÁO CÁO ĐỒ ÁN THIẾT KẾ I

ĐỀ TÀI: PHÁT TRIỂN ỨNG DỤNG QUẢN LÝ PHIÊN BẢN DỮ LIỆU ĐỊA KHÔNG GIAN CHO

MÔI TRƯỜNG AUTOCAD

Sinh viên thực hiện: Nguyễn Phi San – 20203555

Cao Thanh Tùng – 20203779 Mai Quang Tùng - 20203780 Giảng viên hướng dẫn: TS Đào Trung Kiên

Hà Nội, 08/2023

Trang 2

MỤC LỤC

LỜI MỞ ĐẦU 3

CHƯƠNG I TỔNG QUAN ĐỀ TÀI 4

1.1 Khảo sát hiện trạng 4

1.1.1 Nghiệp vụ của ứng dụng hiện tại 4

1.1.2 Nhược điểm của ứng dụng hiện tại 4

1.1.3 Lý do cần sử dụng ứng dụng 4

1.2 Mục đích của dự án 4

1.3 Xác lập dự án 5

1.4 Tìm hiểu yêu cầu 5

CHƯƠNG II CÁC CÔNG CỤ SỬ DỤNG 7

2.1 AutoCAD 7

2.2 PostgreSQL 8

2.3 PostGIS 9

2.4 NodeJS, NPM 10

CHƯƠNG III PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 11

3.1 Sơ đồ chức năng 11

3.2 Lấy dữ liệu từ bản đồ 12

3.3 Tạo lại bản đồ từ dữ liệu 20

CHƯƠNG IV THIẾT KẾ CƠ SỞ DỮ LIỆU 30

4.1 Tạo server 30

4.2 Xây dựng Database 32

4.2.1 Tạo Database 32

4.2.2 Cài đặt PostGIS 33

4.2.3 Các luồng dữ liệu 33

Trang 3

4.2.4 Tạo các bảng 34

4.2.5 Sơ đồ thực thể liên kết 36

4.3 Kết nối Database PostgreSQL với NodeJS 37

4.4 Thao tác với API 38

4.4.1 Lập trình các tính năng CRUD cho API 38

4.4.2 Kiểm thử bằng Postman 41

4.5 Xử lý bất đồng bộ 44

4.5.1 Đồng bộ và bất đồng bộ 44

4.5.2 Promise 45

4.5.3 Async/await 45

4.6 Xử lý dữ liệu từ API 47

4.6.1 Gửi dữ liệu tới API bằng curl 47

4.6.2 Nhận dữ liệu từ API 49

4.7 Xử lý dữ liệu 50

4.8 Thêm dữ liệu vào Database 53

4.9 Gửi dữ liệu từ Database tới API để tạo lại bản vẽ 54

4.9.1 Gửi dữ liệu từ Database 54

4.9.2 Kết nối từ client đến API (sử dụng C++) 54

4.10 Tối ưu dữ liệu nhập vào Database 55

KẾT LUẬN 58

PHỤ LỤC 59

Trang 5

LỜI MỞ ĐẦU

Bối cảnh của đề tài nằm trong một dự án cấp quốc gia sắp được triển khai của Việt Nam, đang chờ Bộ Khoa học và Công nghệ phê duyệt Mục đích là để thúc đẩy chuyển đổi kỹ thuật số trong ngành khai thác than Trọng tâm chính là hỗ trợ các công

ty thành viên trong Vinacomin (Tập đoàn Công nghiệp Than và Khoáng sản Việt Nam)quản lý dữ liệu bản đồ của họ

Quản lý phiên bản là một hệ thống lưu trữ các thay đổi của một tập tin (file) hoặc tập hợp các tập tin theo thời gian, do đó nó giúp bạn có thể quay lại một phiên bản xác định nào đó sau này Mặc dù các ví dụ trong cuốn sách này sử dụng mã nguồn của phần mềm là đối tượng cho quản lý phiên bản, song trong thực thế bất kỳ loại file nào trên máy tính cũng có thể được sử dụng cho quản lý phiên bản

Để nâng cao vốn kiến thức và có thêm kinh nghiệm về lập trình, nhóm em thực

hiện đề tài Phát triển ứng dụng quản lý phiên bản dữ liệu địa không gian cho môi trường AutoCAD dưới sự hướng dẫn của thầy Đào Trung Kiên Trong quá trình thực

hiện, do hạn chế về hiểu biết nên nhóm em không tránh khỏi những sai sót và chậm trễ, chúng em rất mong nhận được những góp ý và chỉ bảo từ thầy

Chúng em xin chân thành cảm ơn!

Trang 6

CHƯƠNG I TỔNG QUAN ĐỀ TÀI 1.1 Khảo sát hiện trạng

1.1.1 Nghiệp vụ của ứng dụng hiện tại

Ứng dụng quản lý phiên bản dữ liệu địa không gian cho môi trường AutoCAD có nghiệp vụ như sau:

Người dùng có thể thao tác các tính năng trên giao diện phần mềm (Đưa bản vẽ lên hệ thống, chỉnh sửa, thêm bớt dữ liệu,…)

Server tiếp nhận thông tin của người dùng, xử lý dữ liệu, đưa ra thông báo về các phiên bản dữ liệu cho người dùng…

1.1.2 Nhược điểm của ứng dụng hiện tại

Ứng dụng chưa hoàn thiện, cần thêm nhiều chức năng phù hợp với người dùng Trên thị trường đã có những phần mềm quản lý phiên bản như Github, Gitlab,… nhưng không áp dụng được với AutoCAD

về, chỉnh sửa rồi gửi lại Trong lúc ấy, nếu các thành viên đều chỉnh sửa và mỗi người

có nội dung sửa riêng thì nhóm sẽ rất khó để nắm bắt cũng như phối hợp

Đây là những phương pháp rất phổ biến bởi vì nó rất đơn giản, tuy nhiên nó

cũng rất dễ gây ra lỗi Do đó, Ứng dụng quản lý phiên bản dữ liệu địa không gian

cho môi trường AutoCAD ra đời để đáp ứng những hạn chế trên.

1.2 Mục đích của dự án

Dự kiến lập trình Ứng dụng quản lý phiên bản dữ liệu địa không gian cho

môi trường AutoCAD đạt được các mục tiêu chính sau:

Đưa dữ liệu các bản vẽ lên hệ thống

Trang 7

Hiển thị trạng thái của dữ liệu tại các phiên bản.

Tìm kiếm, tra cứu thông tin bản vẽ

Lưu thông tin bản vẽ vào cơ sở dữ liệu

Tái tạo bản vẽ từ thông tin trong cơ sở dữ liệu

1.3 Xác lập dự án

Dự án xây dựng và phát triển Ứng dụng quản lý phiên bản dữ liệu địa không

gian cho môi trường AutoCAD có:

Quy mô: Đề tài cấp quốc gia

Phạm vi: Môi trường AutoCAD

Lĩnh vực: Quản lý phiên bản dữ liệu

Chức năng: Giúp người dùng, nhóm người dùng dễ dàng trao đổi thông tin, dữ liệu bản vẽ

Mục tiêu: Khắc phục các yếu kém hiện tại, đáp ứng yêu cầu trong tương lai

1.4 Tìm hiểu yêu cầu

Ứng dụng, phần mềm

định sử dụng là gì?

Đương nhiên là có AutoCAD, có sử dụng web để dễ thao tác lưu truyền số liệu

Yêu cầu về giao diện

Giao diện đơn giản, dễ tiếp cận và dễ sử dụng, trực quan về các chức năng và phải tương thích với người dùng

Yêu cầu thao tác Người dùng bên phía client thay đổi hay commit đều phải có sự ghi lại thời gian, nội dung thay đổiViệc quản lý thông tin

người dùng gồm có gì? Mã số người dùng, họ tên nhân viên, email, passwordViệc quản lý thông tin dữ

liễu bản đồ

Dữ liệu bản đồ bên phía AutoCAD truyền lên có độ tương thích xuống cơ sở dữ liệu để có thể phục hồi lại hình vẽ

Chức năng của trang

web sẽ có những chức

năng gì ?

- Đăng nhập, xuất cho người dùng

- Hiển thị dữ liệu bản đồ

- Hiển thị truy cập chỉnh, sửa những người dùng khác

- Truy xuất thu thập dữ liệu đã có

Yêu cầu về người dùng Cung cấp đủ những thông tin cần thiết

Trang 8

Anh/chị có yêu cầu thêm

Trang 9

CHƯƠNG II CÁC CÔNG CỤ SỬ DỤNG 2.1 AutoCAD

Giới thiệu chung

AutoCAD là tên viết tắt của cụm từ “Automatic Computer Aided Design” Phầnmềm này được Autodesk phát triển và ra mắt năm 1982 với tính năng chính là soạn thảo, thiết kế các bản vẽ 2D và 3D với sự trợ giúp của máy tính Với công cụ này, người dùng có thể thực hiện các phép tính và tái hiện những ý tưởng của mình dưới dạng bản vẽ kỹ thuật với độ chính xác cần thiết Vì vậy nó được sử dụng trong nhiều lĩnh vực khác nhau như kiến trúc, xây dựng, công nghiệp…

Một số tính năng nổi bật của AutoCAD

Những tính năng nổi trội nhất của phần mềm AutoCAD có thể kể đến như:

- Công cụ vector giúp vẽ theo tỉ lệ đạt độ chính xác cao

- Các công cụ căn chỉnh, tùy chỉnh kích thước nhằm gia tăng độ chính xác

- Giúp tính toán và tìm ra kích thước của mô hình trên thực tế

- Xác định số lượng vật liệu cần dùng để tạo ra chi tiết

- Soạn thảo, sửa chữa hình học 2D, 3D đối với các bề mặt không gian, chất rắn, đối tượng lớn

- Tự động tạo lịch biểu, lớp, bảng, danh sách, chú thích…

Trang 10

- Dựa trên các quy tắc để thực thi một cách chính xác theo đúng tiêu chuẩn trong ngành

- Vẽ các đường tròn, đường ống dẫn… vô cùng đơn giản

2.2 PostgreSQL

Tổng quan về PostgreSQL

PostgreSQL là một hệ thống quản trị cơ sở dữ liệu quan hệ và đối tượng relational database management system) miễn phí và nguồn mở (RDBMS) tiên tiến nhất hiện nay khả năng mở rộng cao và tuân thủ các tiêu chuẩn kỹ thuật Nó được thiết kế để xử lý một loạt các khối lượng công việc lớn, từ các máy tính cá nhân đến kho dữ liệu hoặc dịch vụ Web có nhiều người dùng đồng thời

(object PostgreSQL được phát triển bởi PostgreSQL Global Development Group, Phát hành lần đầu: 08/07/1996

- PostgreSQL linh động có thể chạy được trên nhiều nền tảng khác nhau như Mac

Trang 11

PostgreSQL tích hợp nhiều tính năng tuyệt vời giúp hỗ trợ nhà phát triển xây dựng app đáp ứng các chức năng phức tạp, truy vấn nhanh chóng và bảo mật duy trì tính toàn vẹn và độ tin cậy Để đáng tin cậy hơn, PostgreSQL cung cấp các tùy chọn bảo mật, xác thực và khôi phục thảm họa khác nhau PostgreSQL được chứng minh là có khả năng mở rộng cao cả về số lượng dữ liệu và số lượng người dùng có thể thao tác cùng lúc.

2.3 PostGIS

PostGIS được Refraction Research Inc phát triển, như một dự án nghiên c u công ӭnghệ CSDL không gian PostGIS hỗ trợ đối tượng địa lý cho CSDL đối tượng quan hệ PostgreSQL PostGIS “kích hoạt khả năng không gian” cho PostgreSQL, cho phép PostgreSQL sử dụng như một CSDL không gian phụ trợ cho các hệ thống thông tin địa

lý (GIS)

Đặc điểm

Do PostGIS được sử dụng như một CSDL không gian, nên nó bao gồm tất cả các đặc điểm của CSDL không gian Ngoài ra, nó còn có những đặc trưng như :

- Các kiểu dữ hình học như Point, Linestring, Polygon, Multipoint,

multilinestring, Multipolygons và Geometrycollection Các kiểu dữ liệu hình học này được lưu trữ như những đối tượng hình học

- Các toán tử không gian cho phép xác định các phép đo không gian địa lý như tính diện tích, tính khoảng cách, tính độ dài, và tính chu vi PostGIS hỗ trợ các hàm như : ST_Area(), ST_Length(), ST_Perimeter(), ST_Distance()…các hàm này thường thực hiện ch c năng kiểu phép đo ӭ

- Các toán tử không gian cho phép xác định không gian địa lý Các thao tác như phép hợp, so sánh sự khác nhau giữa các đối tượng hình học Các toán tử được PostGIS hỗ trợ để làm việc này có thể là : ST_Difference() : trả về phần khác nhau giữa 2 đối tượng hình học hay hàm ST_Buffer()…

Trang 12

- PostGIS cung cấp việc đánh chỉ mục không gian tốc độ cao sử dụng GisT hoặc R-tree Công cụ đánh chỉ mục không gian mà PostGIS hỗ trợ làm tăng tốc cho truy vấn không gian đặc biệt là trên bảng dữ liệu lớn

- Chỉ mục hỗ trợ chọn lọc, cung cấp việc thực hiện truy vấn bản đồ pha trộn truy vấn không gian hoặc truy vấn không có không gian

Cài đặt PostgreSQL

Các bước cài đặt được nêu ở trang chủ PostgreSQL:

Link: PostgreSQL: Downloads

2.4 NodeJS, NPM

NodeJS là một môi trường runtime chạy JavaScript đa nền tảng và có mã nguồn

mở, được sử dụng để chạy các ứng dụng web bên ngoài trình duyệt của client Nền tảng này được phát triển bởi Ryan Dahl vào năm 2009, được xem là một giải pháp hoàn hảo cho các ứng dụng sử dụng nhiều dữ liệu nhờ vào mô hình hướng sự kiện (event-driven) không đồng bộ

NPM là viết tắt của Node package manager là một công cụ tạo và quản lý các thư viện lập trình Javascript cho Node.js Trong cộng đồng Javascript, các lập trình viên chia sẻ hàng trăm nghìn các thư viện với các đoạn code đã thực hiện sẵn một chức năng nào đó Nó giúp cho các dự án mới tránh phải viết lại các thành phần cơ bản, các thư viện lập trình hay thậm chí cả các framework

Các bước cài đặt được nêu rõ ở trang chủ của nodeJS:

Link: Node.js (nodejs.org)

Trang 13

CHƯƠNG III PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG

Vẽ lại được bản đồ

2 Quản lý người dùng

Tạo người dùng mới Lấy, tìm kiếm dữ liệu người dùng Chỉnh sửa thông tin người dùng Xóa tài khoản người dung

3 Quản lí dữ liệu đối tượng trong bản đồ (objects)

Thêm đối tượng mới Lấy thông tin, tìm kiếm dữ liệu đối tượng

b n đồồ ả

3.1 Thêm đồấi

t ượ ng

3.2 Lấấy thồng tin, tìm kiêấm d li u ữ ệ đồấi t ượ ng

3.3 Ch nh s a ỉ ử thồng tin đồấi

t ượ ng

3.4 Xoá đồấi t ng

4 Qu n lí d li u ả ữ ệ commit

4.1 T o commit ạ

m i ớ

4.2 Tìm kiêấm các lấồn commit trên h ệ thồấng

4.3 Hi n th thồng ể ị tin commit

5 Trao đ i ổ

5.1 Thiêất l p giao ậ tiêấp v i ng ớ ườ i dung khác

5.2 Ph n hồồi v i ả ớ các lấồn commit

Trang 14

Cách sử dụng

Để sử dụng hàm async, ta cần khai báo từ khóa async ngay trước từ khóa định nghĩa hàm Tức là, với hàm định nghĩa với từ khóa function ta phải khai báo ngay trước function, với hàm mũi tên (arrow function) ta phải khai báo trước tập tham số đầu vào

async function asyncCall() {

console log ( 'calling');

const result = await resolveAfter2Seconds();

từ khóa return của hàm async, hoặc trạng thái thất bại với kết quả được đẩy qua từ khóa throw trong hàm async Như vậy,chúng ta có thể thấy bản chất của hàm async chính là Promise

Trang 15

Với Promise, ta có thể xử lý ngoại lệ với catch khá đơn giản Tuy nhiên cũng không dễdàng theo dõi và dễ đọc Nhưng với hàm async, việc này cực kì đơn giản bằng từ khóa try catch hệt như các thao tác đồng bộ.

Do vậy, tương tự như khi kết nối Database bằng NodeJS, các hàm thực hiện chức năngđều cần sử dụng async/await, giúp cho việc xử lý dữ liệu hiệu quả hơn

4.6 Xử lý dữ liệu từ API

4.6.1 Gửi dữ liệu tới API bằng curl

Dữ liệu JSON được tạo sau khi lấy thông tin từ bản vẽ Sau đó, dữ liệu ấy được gửitới API thông qua curl cURL viết tắt của Client URL là một công cụ dòng lệnh (command line tool) dùng để kiểm tra kết nối từ URL và cho phép truyền dữ liệu cURL sử dụng nhiều giao thức hỗ trợ khác nhau như: HTTP, HTTPS, FTPS,… cURL ra đời từ năm 1997, được viết bởi Daniel Stenberg Chúng được lập trình để hoạt động mà không cần có sự tương tác của người dùng Có thể sử dụng lệnh cURL để upload và tải xuống nội dung từ internet Nếu biết cách sử dụng và khai thác nó đúng mức, cURL sẽ trở thành một công cụ cực kỳ mạnh mẽ Trong dự án, curl với giao thức HTTP đóng vai trò gửi dữ liệu được lấy từ bản vẽ tới API.Quá trình gửi diễn ra như sau:

void SendJsonDataUsingCurl (json jsonObj) {

Trang 16

std::string response;

curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION, WriteCallback);

curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response);

CURLcode res = curl_easy_perform(curl);

Từ dữ liệu bản vẽ được lấy qua AutoCAD, có 7 đối tượng chính cần phân tích là: Point (điểm), Line (đường thẳng), Arc (đường cong), Polyline (hình đa tuyến), 3d Polyline (hình đa tuyến 3d), Circle (đường tròn), Ellipse (hình e-líp) Cuối cùng, API sẽ nhận được JSON data có dạng như sau:

Trang 17

4.6.2 Nhận dữ liệu từ API

Để nhận dữ liệu từ API, ta sử dụng phương thức POST POST là một phương thức được hỗ trợ bởi HTTP và mô tả rằng máy chủ web chấp nhận dữ liệu được bao gồm trong nội dung request POST thường được sử dụng để gửi dữ liệu do người dùng tạo đến máy chủ

Phương thức POST có các ưu điểm:

Trang 18

Dữ liệu được truyền bằng phương thức POST sẽ không hiển thị trong các tham

số truy vấn trong URL trình duyệt

Các tham số của phương thức POST không được lưu trong lịch sử trình duyệt.Không có hạn chế trong việc gửi độ dài của dữ liệu

Gửi dữ liệu đến máy chủ an toàn hơn

Cách sử dụng phương thức POST để nhận dữ liệu:

app.post('/upload', async ( req , res ) => {

const data = req body;

console log(data);

const objects = data.objects;

const drawing_name = data.drawing_name;

res status ( 200).json({ message: 'Data uploaded successfully' });

4.7 Xử lý dữ liệu

Đầu tiên, để phân tích và xử lý dữ liệu, ta gán chuỗi JSON bằng biến json

Sau đó, sử dụng JSON.parse để có thể tách các phần tử trong mảng JSON

Trang 19

var json =`{Chu i JSON}`; ỗ

var obj = JSON parse ( json );

Tiếp theo, ta bắt đầu xử lý dữ liệu với mục tiêu tạo ra chuỗi kết quả là một “Insert query” Một insert query gồm có ba thành phần chính là bảng, cột và dữ liệu cần thêm.Cách thức để tạo ra nó từ dữ liệu JSON đã tách là ghép từng value (giá trị) ứng với tên giá trị của nó (các tên giá trị ứng với tên cột) Điều đó được thể hiện qua lưu đồ thuật toán bên dưới

Trang 20

4.7.1 Kết quả sau khi xử lý

Kết quả thu được khi xử lý dữ liệu là những insert query sử dụng trong PostgreSQL để thêm các dữ liệu vào bảng public.object_details Dưới đây là ví dụ minh hoạ về dạng đối tượng lưu được geometric data và không lưu được kiểu dữ liệu này:

//Point: L u đ c, ST_GeomFronText l u d ng đi m có to đ (x, y)

insert into public.object_details (jsondata, className, closed, cad_id, layer,

linetype, linetype_scale, lineweight, material, thickness, transparency,

coords) values ('{"className":"AcDbPoint","coords":

insert into public.object_details (jsondata, className, closed, cad_id, layer,

linetype, linetype_scale, lineweight, material, thickness, transparency,

coords) values ('{"className":"AcDbLine","coords":

//Arc: Không l u đ ư ượ c đ ườ ng cong

insert into public.object_details (jsondata, className, closed, cad_id, layer,

linetype, linetype_scale, lineweight, material, thickness, transparency,

coords) values ('{"className":"AcDbArc","coordsRadAng":

Ngày đăng: 18/06/2024, 17:24

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w