Bác nào biết công thức tích diện tích đa giác khi biết toạ độ trên exel?

Liên hệ QC

segovia

Thành viên mới
Tham gia
25/6/11
Bài viết
5
Được thích
1
chuyện rằng, trong địa chính, hôm trước vào phòng Tài nguyên, lúc xin cấp giấy phép gì gì đó, mình đưa 1 bảng toạ độ ra có 29 điểm (toạ độ mét, định dạng kiểu X,Y đề các), thằng kia nó cho vào máy tính dùng êxel cho ra diện tích của hình kia ngay, trong khi đó mình phải bắn lên Cad hoặc Map info mới tính được diện tích hình đó.
- Công thức phải ở dạng tổng quát: ko phụ thuộc số đỉnh, hình dạng đa giác__--____--__
Vốn không thạo lập hàm trong exel nên lên đây mong được các cao thủ chỉ giáo, nghe nói phải lập hàm kiểu tích phân gi gi đó.hic-=.,,-=.,,-=.,,
 
chuyện rằng, trong địa chính, hôm trước vào phòng Tài nguyên, lúc xin cấp giấy phép gì gì đó, mình đưa 1 bảng toạ độ ra có 29 điểm (toạ độ mét, định dạng kiểu X,Y đề các), thằng kia nó cho vào máy tính dùng êxel cho ra diện tích của hình kia ngay, trong khi đó mình phải bắn lên Cad hoặc Map info mới tính được diện tích hình đó.
- Công thức phải ở dạng tổng quát: ko phụ thuộc số đỉnh, hình dạng đa giác__--____--__
Vốn không thạo lập hàm trong exel nên lên đây mong được các cao thủ chỉ giáo, nghe nói phải lập hàm kiểu tích phân gi gi đó.hic-=.,,-=.,,-=.,,
Về nguyên tắc thì:
- Biết tọa độ của 3 điểm, sẽ tính được diện tích của 1 tam giác
- Với tứ giác, ta chia chúng thành 2 tam giác, tính diện tích từng tam giác rồi cộng lại
- Với ngũ giác, ta chia chúng thành 3 tam giác, tính diện tích từng tam giác rồi cộng lại
vân vân...
- Với đa giác 29 đỉnh, ta chia chúng thành 27 tam giác, tính diện tích từng tam giác rồi cộng lại
Vậy thôi ---> Cái này có thể lập trình được, chỉ cần có công thức tính diện tích tam giác như sau:
PHP:
Function TriArea(ByVal x1 As Double, ByVal x2 As Double, ByVal x3 As Double, _
                 ByVal y1 As Double, ByVal y2 As Double, ByVal y3 As Double) As Double
  Dim dA As Double, dB As Double, dC As Double, dP As Double
  dA = Sqr((x2 - x1) ^ 2 + (y2 - y1) ^ 2) '<--- Chieu dai canh A
  dB = Sqr((x3 - x2) ^ 2 + (y3 - y2) ^ 2) '<--- Chieu dai canh B
  dC = Sqr((x1 - x3) ^ 2 + (y1 - y3) ^ 2) '<--- Chieu dai canh C
  dP = (dA + dB + dC) / 2 '<--- nua chu vi
  TriArea = Sqr(dP * (dP - dA) * (dP - dB) * (dP - dC))
End Function
Phần còn lại tự suy luận
 
Chào bạn, công thức tính diện tích đa giác lồi theo tọa độ đỉnh là:
S = |∑(xⁿ+¹ - xⁿ)(yⁿ+¹ + yⁿ)/2|
Hoặc: S = |∑(xⁿ+¹ + xⁿ)(yⁿ+¹ - yⁿ)/2|
Trong đó n chạy từ 1 đến số đỉnh của đa giác, đỉnh thứ n+1 coi là đỉnh 1
Còn đây là file bạn cần: http://goo.gl/QoveO.
 
Lần chỉnh sửa cuối:
Theo tôi thì phương pháp bạn ndu96081631 trên chỉ đúng khi áp dụng cho đa giác lồi, nếu đa giác lõm( có 1 đỉnh nằm trong miền diện tích của tam giác khác) thì dẫn đến tính trùng diện tích)
 
Lần chỉnh sửa cuối:
Theo tôi thì phương pháp bạn ndu96081631 trên chỉ đúng khi áp dụng cho đa giác lồi, nếu đa giác lõm( có 1 đỉnh nằm trong miền diện tích của tam giác khác) thì dẫn đến tính trùng diện tích)
Hàm có tôi có nói gì đến ĐA GIÁC đâu nè? Hàm ấy tính diện tích TAM GIÁC mà bạn ---> Và từ cách tính diện tích tam giác này, "phăng ra" cách tính đa giác như thế nào là chuyện của các bạn
 
cảm ơn các bạn. Để tôi về test thử rồi có ý kiến sau.Nhưng thấy file exel của bác doan rất trực quan
 
cảm ơn các bạn. Để tôi về test thử rồi có ý kiến sau.Nhưng thấy file exel của bác doan rất trực quan
tình hình là file exel bạn Doan gửi tính diện tích sai. tôi đã thử 2 kết
quả với Cad, Mapinfow diện tích file exel cho là ko đúng!
X Y
758102 1835607
758527 1835871
758618 1835863
758401 1835459
758289 1835440
758094 1835508
758102 1835607


file exel cho ra 695,788,780,17 m2
Trong khi đó Cad tính là 11.12 ha@!##@!##
 
Xin lỗi nhé, em mới sửa lại rồi đấy. Link đây: http://goo.gl/QoveO.
Em mới kiểm tra lại một số hình của bác thấy ổn rồi đấy.
 
Lần chỉnh sửa cuối:
Về nguyên tắc thì:
- Biết tọa độ của 3 điểm, sẽ tính được diện tích của 1 tam giác
- Với tứ giác, ta chia chúng thành 2 tam giác, tính diện tích từng tam giác rồi cộng lại
- Với ngũ giác, ta chia chúng thành 3 tam giác, tính diện tích từng tam giác rồi cộng lại
vân vân...
- Với đa giác 29 đỉnh, ta chia chúng thành 27 tam giác, tính diện tích từng tam giác rồi cộng lại
Vậy thôi ---> Cái này có thể lập trình được, chỉ cần có công thức tính diện tích tam giác như sau:
PHP:
Function TriArea(ByVal x1 As Double, ByVal x2 As Double, ByVal x3 As Double, _
                 ByVal y1 As Double, ByVal y2 As Double, ByVal y3 As Double) As Double
  Dim dA As Double, dB As Double, dC As Double, dP As Double
  dA = Sqr((x2 - x1) ^ 2 + (y2 - y1) ^ 2) '<--- Chieu dai canh A
  dB = Sqr((x3 - x2) ^ 2 + (y3 - y2) ^ 2) '<--- Chieu dai canh B
  dC = Sqr((x1 - x3) ^ 2 + (y1 - y3) ^ 2) '<--- Chieu dai canh C
  dP = (dA + dB + dC) / 2 '<--- nua chu vi
  TriArea = Sqr(dP * (dP - dA) * (dP - dB) * (dP - dC))
End Function
Phần còn lại tự suy luận


Cho minh thuat toan chia thanh tam giac khô ng cat nhau. Se duoc ket qua la TG1(1,2,3) Tg2(1,2,4) tuc la tam giac thu 1 se co 3 dinh la 1,2,3 ....
 
Chào bạn, công thức tính diện tích đa giác lồi theo tọa độ đỉnh là:
S = |∑(xⁿ+¹ - xⁿ)(yⁿ+¹ + yⁿ)/2|
Hoặc: S = |∑(xⁿ+¹ + xⁿ)(yⁿ+¹ - yⁿ)/2|
Trong đó n chạy từ 1 đến số đỉnh của đa giác, đỉnh thứ n+1 coi là đỉnh 1
Còn đây là file bạn cần: http://goo.gl/QoveO.
Công thức này hình như học hồi cấp 3 thì phải
Số mũ trong công thức trên chính là số thứ tự của phần tử trong mảng. Bản chất của thuật toán trên là cộng rồi trừ các hình thang vuông lại với nhau kết quả là ra diện tích đa giác.
 
Lần chỉnh sửa cuối:
chuyện rằng, trong địa chính, hôm trước vào phòng Tài nguyên, lúc xin cấp giấy phép gì gì đó, mình đưa 1 bảng toạ độ ra có 29 điểm (toạ độ mét, định dạng kiểu X,Y đề các), thằng kia nó cho vào máy tính dùng êxel cho ra diện tích của hình kia ngay, trong khi đó mình phải bắn lên Cad hoặc Map info mới tính được diện tích hình đó.
- Công thức phải ở dạng tổng quát: ko phụ thuộc số đỉnh, hình dạng đa giác__--____--__
Vốn không thạo lập hàm trong exel nên lên đây mong được các cao thủ chỉ giáo, nghe nói phải lập hàm kiểu tích phân gi gi đó.hic-=.,,-=.,,-=.,,

Hi bạn!
- Mình đã DEMO bài toán của bạn rồi.
- Yêu cầu dữ liệu:
++ Nhập tọa độ X, Y theo cột như đã có trong một số trả lời.
++ Tọa độ điểm đầu (X, Y) và điểm cuối phải như nhau. Nghĩa là khép kín đa giác.
- Xem clip hướng dẫn: http://www.mediafire.com/?2g2rbsnb8hhtquh
- File *xla chứa công thức thực hiện tính diện tích: http://www.mediafire.com/?gd71gm811350fam
- File *xls demo kết quả thực hiện: http://www.mediafire.com/?z5n6eioudymohv7
- Chúc bạn thành công!
 
bạn doan281 ơi, cho mình hỏi cái:
tọa độ này là tọa độ theo hệ tọa độ nào vậy? gốc tọa độ ở đâu? có phải theo hệ tọa độ địa lý quốc gia ở Quảng Ninh không?
 
Các bạn ơi cho mình hỏi trong excel10 có công thức tính diện tích từ tọa độ điểm ko vậy?
Mình đang làm bài tập lớn môn địa chính mà tính mãi không đc:-s
 
Web KT
Back
Top Bottom