Nhờ mấy a giúp lọc tọa độ trong excel và tính khoảng cách 2 tọa độ. em cảm ơn nhiều ạ

caonguyenpro2015

Thành viên mới
Tham gia ngày
8 Tháng bảy 2020
Bài viết
13
Được thích
0
Điểm
13
Tuổi
28
Mục đích nhờ mấy a giúp e.. em có 1 bảng tọa độ dò ở cột A, B. giờ đi dò 1 hàng tòa độ (kinh độ, vị độ) ở cột A,B cho dò với 1 dãy tọa độ ở cột E,F. làm sao mình tìm ra tọa độ ở cột A,B gần với vị trí nào ở tọa độ cột E,F nhất và khoảng cách điểm đó tới vị trí đó là nhiêu Km..
Xin chân thành cảm ơn mấy a nhiều ạ.
 

VetMini

Chuyên gia GPE
Tham gia ngày
21 Tháng mười hai 2012
Bài viết
9,584
Được thích
11,468
Điểm
1,560
Đây là bài tập Excel, lập trình VBA hay là bàì toán căn bản của trắc địa?

Nếu A:B có n điểm; và E:F có m điểm thì số khoảng cách là n*m.
Khoảng cách giữa (xA, yB) và (xE, yF) là ((xA-xE)^2 + (yB-yF)^2)^-2
Lấy MIN của chúng.
Hết.
Muốn làm công thức cũng được mà muốn VBA cũng không khó.

Ủa mà quên, tính kinh tuyến và vỹ tuyến nó khác:

Haversine
formula:
a = sin²(Δφ/2) + cos φ1 ⋅ cos φ2 ⋅ sin²(Δλ/2)
c = 2 ⋅ atan2( √a, √(1−a) )
d = R ⋅ c
trong đóφ là vỹ tuyến, λ là kinh tuyến, R là bán kính địa cầu ( trung bình = 6,371km);
lưu ý là đây là bài taons lượng giuacs, góc tính bằng Radian, không phải là độ!
 
Lần chỉnh sửa cuối:

caonguyenpro2015

Thành viên mới
Tham gia ngày
8 Tháng bảy 2020
Bài viết
13
Được thích
0
Điểm
13
Tuổi
28
Đây là bài tập Excel, lập trình VBA hay là bàì toán căn bản của trắc địa?

Nếu A:B có n điểm; và E:F có m điểm thì số khoảng cách là n*m.
Khoảng cách giữa (xA, yB) và (xE, yF) là ((xA-xE)^2 + (yB-yF)^2)^-2
Lấy MIN của chúng.
Hết.
Muốn làm công thức cũng được mà muốn VBA cũng không khó.
Ở file excel đính kèm có kết quả mình đo được bằng thủ công.. anh có thể làm giúp e trên file sao dò ra được kết quả tương đối vậy không a nhỉ. Do em làm thủ công vất vả quá. a làm bằng công thức or vba đều đc, miễn ra được kết quả nhanh nhất. em cảm ơn ạ
 

tigertiger

Coming back ...
Tham gia ngày
25 Tháng một 2007
Bài viết
1,441
Được thích
1,401
Điểm
860
Ở file excel đính kèm có kết quả mình đo được bằng thủ công.. anh có thể làm giúp e trên file sao dò ra được kết quả tương đối vậy không a nhỉ. Do em làm thủ công vất vả quá. a làm bằng công thức or vba đều đc, miễn ra được kết quả nhanh nhất. em cảm ơn ạ
Đây là vấn đề của Trắc đạc rồi, bạn đã có công thức của bác VetMini trên thì thử xem sao
Và xem lại phần chuyên môn trắc đạc, sổ tay chuyên ngành là có công thức tính đầy đủ, áp vào excel thì chỉ còn là chuyện nhỏ /vừa.

Kết quả thì quan trọng, nhưng quan trọng hơn đó là ....
 

caonguyenpro2015

Thành viên mới
Tham gia ngày
8 Tháng bảy 2020
Bài viết
13
Được thích
0
Điểm
13
Tuổi
28
Chuyển cái này sang Excel là được..

View attachment 240743
chuyển kiểu gì a nhỉ.. a làm trên file excel giúp em với. hic... với cách dò để tìm đc điểm gần nhất làm sao a
Bài đã được tự động gộp:

Đây là vấn đề của Trắc đạc rồi, bạn đã có công thức của bác VetMini trên thì thử xem sao
Và xem lại phần chuyên môn trắc đạc, sổ tay chuyên ngành là có công thức tính đầy đủ, áp vào excel thì chỉ còn là chuyện nhỏ /vừa.

Kết quả thì quan trọng, nhưng quan trọng hơn đó là ....
dạ cảm ơn anh.. do em không học chuyên bên ngành trắc địa. đây là 1 vấn đề liên quan tới công việc nên em nhờ mấy anh giúp để tìm ra cách làm nhanh, tiện lợi nhất ạ. khoảng cách thì áp công thức bác VetMini em tính ra rồi.. nhưng vấn đề đây là bên cột A,B có 1 dãy tọa độ, bên cột E,F có 1 dãy làm sao để lọc ra được cái tọa độ nào khớp với tỏa độ cột E,F có khoảng cách gần nhất.
 
Lần chỉnh sửa cuối:

tigertiger

Coming back ...
Tham gia ngày
25 Tháng một 2007
Bài viết
1,441
Được thích
1,401
Điểm
860
chuyển kiểu gì a nhỉ.. a làm trên file excel giúp em với. hic... với cách dò để tìm đc điểm gần nhất làm sao a
Bài đã được tự động gộp:


dạ cảm ơn anh.. do em không học chuyên bên ngành trắc địa. đây là 1 vấn đề liên quan tới công việc nên em nhờ mấy anh giúp để tìm ra cách làm nhanh, tiện lợi nhất ạ. khoảng cách thì áp công thức bác VetMini em tính ra rồi.. nhưng vấn đề đây là bên cột A,B có 1 dãy tọa độ, bên cột E,F có 1 dãy làm sao để lọc ra được cái tọa độ nào khớp với tỏa độ cột E,F có khoảng cách gần nhất.
Vậy nên nhờ người chuyên môn trước, không có kết quả khó tin tưởng
Vì liên quan đến tọa độ : kinh độ vĩ độ là liên quản đển chuẩn : tiêu chuẩn theo vn... nào - dữ liệu của bạn thuộc hệ tọa độ nào.. thì kết quả sẽ khác nhau
 

befaint

|||||||||||||
Tham gia ngày
6 Tháng một 2011
Bài viết
9,571
Được thích
11,219
Điểm
1,560
Khoảng cách nhỏ nhất:
Mã:
C4=AGGREGATE(15,6,6371*2*ATAN2(SQRT(1-(SIN(($F$2:$F$303*PI()/180-B4*PI()/180)/2)^2+COS(B4*PI()/180)*COS($F$2:$F$303*PI()/180)*SIN(($E$2:$E$305*PI()/180-A4*PI()/180)/2)^2)),SQRT(SIN(($F$2:$F$303*PI()/180-B4*PI()/180)/2)^2+COS(B4*PI()/180)*COS($F$2:$F$303*PI()/180)*SIN(($E$2:$E$305*PI()/180-A4*PI()/180)/2)^2)),1)
'Fill down
 
Lần chỉnh sửa cuối:

caonguyenpro2015

Thành viên mới
Tham gia ngày
8 Tháng bảy 2020
Bài viết
13
Được thích
0
Điểm
13
Tuổi
28
Khoảng cách nhỏ nhất:
Mã:
C4=AGGREGATE(15,6,6.371*2*ATAN2(SQRT((SIN(($F$2:$F$303-$B4)*PI()/180/2))^2+COS($F$2:$F$303*PI()/180)*COS($B4*PI()/180)*(SIN(($E$2:$E$303-$A4)*PI()/180/2))^2),SQRT(1-(SIN(($F$2:$F$303-$B4)*PI()/180/2))^2+COS($F$2:$F$303*PI()/180)*COS($B4*PI()/180)*(SIN(($E$2:$E$303-$A4)*PI()/180/2))^2)),1)
'Fill down
dạ sao không được a nhi.. lỗi #name? ấy anh.. hic. nhờ a kiểm tra lại giúp em với ạ.. em cảm ơn. hoặc cho em xin file excel a làm được không
 
Lần chỉnh sửa cuối:

VetMini

Chuyên gia GPE
Tham gia ngày
21 Tháng mười hai 2012
Bài viết
9,584
Được thích
11,468
Điểm
1,560
Ở trên tôi có nói rồi:
VBA
Dựa vào công thức trên, lập một hàm tính khoảng cách:
Function KhoangCach(lat1 as Double, lat2 as Double, lng1 as Double, lng2 As Double) As Double
Nếu toạ độ là độ thì thêm hàm:
Function DoQuRadian(d As Double) As Double

Code thực hiện:
nganNhat = 0
toaDoAB = 0
toaDoEF = 0
For i1 = 1 To UBound(AB)
For i2 = 1 To UBound(EF)
kcMoi = KhoangCach(AB(i1,1), EF(i2,1), AB(i1,2), EF(i2,2))
If kvMoi < nganNhat Then
nganNhat = kcMoi
toaDoAB = i1
toaDoEF = i2
End If
Next i2
Next i1
MsgBox "ngan nhat la: " & nganNhat & "; tai AB dong: " & toaDoAB & "; va EF dong: " & toaDoEF
 

caonguyenpro2015

Thành viên mới
Tham gia ngày
8 Tháng bảy 2020
Bài viết
13
Được thích
0
Điểm
13
Tuổi
28
Ở trên tôi có nói rồi:
VBA
Dựa vào công thức trên, lập một hàm tính khoảng cách:
Function KhoangCach(lat1 as Double, lat2 as Double, lng1 as Double, lng2 As Double) As Double
Nếu toạ độ là độ thì thêm hàm:
Function DoQuRadian(d As Double) As Double

Code thực hiện:
nganNhat = 0
toaDoAB = 0
toaDoEF = 0
For i1 = 1 To UBound(AB)
For i2 = 1 To UBound(EF)
kcMoi = KhoangCach(AB(i1,1), EF(i2,1), AB(i1,2), EF(i2,2))
If kvMoi < nganNhat Then
nganNhat = kcMoi
toaDoAB = i1
toaDoEF = i2
End If
Next i2
Next i1
MsgBox "ngan nhat la: " & nganNhat & "; tai AB dong: " & toaDoAB & "; va EF dong: " & toaDoEF
em cảm ơn ạ.. mảng code vba này em chịu thua.. hi
 

caonguyenpro2015

Thành viên mới
Tham gia ngày
8 Tháng bảy 2020
Bài viết
13
Được thích
0
Điểm
13
Tuổi
28
Khoảng cách nhỏ nhất:
Mã:
C4=AGGREGATE(15,6,6.371*2*ATAN2(SQRT((SIN(($F$2:$F$303-$B4)*PI()/180/2))^2+COS($F$2:$F$303*PI()/180)*COS($B4*PI()/180)*(SIN(($E$2:$E$303-$A4)*PI()/180/2))^2),SQRT(1-(SIN(($F$2:$F$303-$B4)*PI()/180/2))^2+COS($F$2:$F$303*PI()/180)*COS($B4*PI()/180)*(SIN(($E$2:$E$303-$A4)*PI()/180/2))^2)),1)
'Fill down
em muốn dò tọa độ dò có kinh độ vị độ tương ứng với vị trí nào có tọa độ kinh độ vinh độ ấy mà có khoảng cách nhỏ nhất.. mình theo hàm tính ra vậy rồi sao anh
 
Lần chỉnh sửa cuối:

caonguyenpro2015

Thành viên mới
Tham gia ngày
8 Tháng bảy 2020
Bài viết
13
Được thích
0
Điểm
13
Tuổi
28
Bạn ráng kiểm tra đi, mình viết xong thấy hoa mắt rồi ấy. :(
Hic. A giúp e với ạ.. e có cái bảng 1 bên là kết quả e đò được nhưng thủ công qua google maps.. không biết sao làm đc nhanh nhất lọc ra kết quả vậy.. a giúp e với có j em hậu tạ sau đc khôg a
 

befaint

|||||||||||||
Tham gia ngày
6 Tháng một 2011
Bài viết
9,571
Được thích
11,219
Điểm
1,560
khoang_cach: Sửa trên rồi nhá.


Mã:
vi_tri=LOOKUP(68+1,1/(AGGREGATE(15,6,6371*2*ATAN2(SQRT(1-(SIN(($F$2:$F$303*PI()/180-B4*PI()/180)/2)^2+COS(B4*PI()/180)*COS($F$2:$F$303*PI()/180)*SIN(($E$2:$E$305*PI()/180-A4*PI()/180)/2)^2)),SQRT(SIN(($F$2:$F$303*PI()/180-B4*PI()/180)/2)^2+COS(B4*PI()/180)*COS($F$2:$F$303*PI()/180)*SIN(($E$2:$E$305*PI()/180-A4*PI()/180)/2)^2)),1)=6371*2*ATAN2(SQRT(1-(SIN(($F$2:$F$303*PI()/180-B4*PI()/180)/2)^2+COS(B4*PI()/180)*COS($F$2:$F$303*PI()/180)*SIN(($E$2:$E$305*PI()/180-A4*PI()/180)/2)^2)),SQRT(SIN(($F$2:$F$303*PI()/180-B4*PI()/180)/2)^2+COS(B4*PI()/180)*COS($F$2:$F$303*PI()/180)*SIN(($E$2:$E$305*PI()/180-A4*PI()/180)/2)^2))),$D$2:$D$305)
'Fill down
 

caonguyenpro2015

Thành viên mới
Tham gia ngày
8 Tháng bảy 2020
Bài viết
13
Được thích
0
Điểm
13
Tuổi
28
khoang_cach: Sửa trên rồi nhá.


Mã:
vi_tri=LOOKUP(68+1,1/(AGGREGATE(15,6,6371*2*ATAN2(SQRT(1-(SIN(($F$2:$F$303*PI()/180-B4*PI()/180)/2)^2+COS(B4*PI()/180)*COS($F$2:$F$303*PI()/180)*SIN(($E$2:$E$305*PI()/180-A4*PI()/180)/2)^2)),SQRT(SIN(($F$2:$F$303*PI()/180-B4*PI()/180)/2)^2+COS(B4*PI()/180)*COS($F$2:$F$303*PI()/180)*SIN(($E$2:$E$305*PI()/180-A4*PI()/180)/2)^2)),1)=6371*2*ATAN2(SQRT(1-(SIN(($F$2:$F$303*PI()/180-B4*PI()/180)/2)^2+COS(B4*PI()/180)*COS($F$2:$F$303*PI()/180)*SIN(($E$2:$E$305*PI()/180-A4*PI()/180)/2)^2)),SQRT(SIN(($F$2:$F$303*PI()/180-B4*PI()/180)/2)^2+COS(B4*PI()/180)*COS($F$2:$F$303*PI()/180)*SIN(($E$2:$E$305*PI()/180-A4*PI()/180)/2)^2))),$D$2:$D$305)
'Fill down
File excel ở máy a làm. A gửi cho em luôn cái file đó được không ạ.
 
Top Bottom