Tháng này, tôi đã lập trình khá nhiều về PHP và MySQL liên quan đến GIS. Tìm kiếm xung quanh mạng, tôi thực sự đã gặp khó khăn khi tìm thấy một số Tính toán địa lý để tìm khoảng cách giữa hai vị trí, vì vậy tôi muốn chia sẻ chúng ở đây. Show
Cách đơn giản để tính khoảng cách giữa hai điểm là sử dụng công thức Pitago để tính cạnh huyền của một tam giác (A² + B² = C²). Điều này được gọi là Khoảng cách Euclide. Đó là một khởi đầu thú vị nhưng nó không áp dụng với môn Địa lý vì khoảng cách giữa các đường vĩ độ và kinh độ là không phải là một khoảng cách bằng riêng biệt. Khi bạn càng đến gần đường xích đạo, các đường vĩ độ càng xa nhau. Nếu bạn sử dụng một số loại phương trình tam giác đơn giản, nó có thể đo khoảng cách chính xác ở một vị trí và sai khủng khiếp ở vị trí khác, do độ cong của Trái đất. Khoảng cách vòng tròn lớnCác tuyến đường di chuyển xa quanh Trái đất được gọi là Khoảng cách vòng tròn lớn. Đó là… khoảng cách ngắn nhất giữa hai điểm trên hình cầu khác với các điểm trong bản đồ phẳng. Kết hợp điều đó với thực tế là các đường vĩ độ và kinh độ không bằng nhau… và bạn đã có một phép tính khó. Đây là video giải thích tuyệt vời về cách các Vòng kết nối lớn hoạt động. Công thức HaversineKhoảng cách sử dụng độ cong của Trái đất được kết hợp trong Công thức Haversine, sử dụng lượng giác để cho phép độ cong của trái đất. Khi bạn đang tìm khoảng cách giữa 2 nơi trên trái đất (khi quạ bay), một đường thẳng thực sự là một đường cung. Điều này có thể áp dụng trong chuyến bay hàng không - bạn đã bao giờ nhìn vào bản đồ thực tế của các chuyến bay và nhận thấy chúng được hình cung? Đó là bởi vì bay trong vòm giữa hai điểm sẽ ngắn hơn so với trực tiếp đến vị trí. PHP: Tính khoảng cách giữa 2 điểm vĩ độ và kinh độDù sao, đây là công thức PHP để tính khoảng cách giữa hai điểm (cùng với chuyển đổi Mile so với Kilômét) được làm tròn đến hai chữ số thập phân. function getDistanceBetweenPointsNew($latitude1, $longitude1, $latitude2, $longitude2, $unit = 'miles') { $theta = $longitude1 - $longitude2; $distance = (sin(deg2rad($latitude1)) * sin(deg2rad($latitude2))) + (cos(deg2rad($latitude1)) * cos(deg2rad($latitude2)) * cos(deg2rad($theta))); $distance = acos($distance); $distance = rad2deg($distance); $distance = $distance * 60 * 1.1515; switch($unit) { case 'miles': break; case 'kilometers' : $distance = $distance * 1.609344; } return (round($distance,2)); }SQL: lấy tất cả hồ sơ trong một phạm vi By Tính cách Trong Miles Sử dụng Latitude và LongitudeCũng có thể sử dụng SQL để thực hiện một phép tính để tìm tất cả các bản ghi trong một khoảng cách cụ thể. Trong ví dụ này, tôi sẽ MyTable truy vấn trong MySQL để tìm tất cả các hồ sơ mà là nhỏ hơn hoặc bằng với biến $ khoảng cách (trong Miles) đến vị trí của tôi tại $ vĩ độ và kinh độ $: Truy vấn để lấy tất cả các bản ghi trong một khoảng cách bằng cách tính toán khoảng cách trong dặm giữa hai điểm của vĩ độ và kinh độ là: $query = "SELECT *, (((acos(sin((".$latitude."*pi()/180)) * sin((`latitude`*pi()/180)) + cos((".$latitude."*pi()/180)) * cos((`latitude`*pi()/180)) * cos(((".$longitude."- `longitude`)*pi()/180)))) * 180/pi()) * 60 * 1.1515) as distance FROM `table` WHERE distance <= ".$distance."Bạn sẽ cần phải tùy chỉnh điều này:
SQL: Truy xuất tất cả các bản ghi trong một phạm vi bằng cách tính toán khoảng cách theo ki lô mét sử dụng vĩ độ và kinh độVà đây là truy vấn SQL sử dụng km trong MySQL: $query = "SELECT *, (((acos(sin((".$latitude."*pi()/180)) * sin((`latitude`*pi()/180)) + cos((".$latitude."*pi()/180)) * cos((`latitude`*pi()/180)) * cos(((".$longitude."- `longitude`) * pi()/180)))) * 180/pi()) * 60 * 1.1515 * 1.609344) as distance FROM `table` WHERE distance <= ".$distance."Bạn sẽ cần phải tùy chỉnh điều này:
Tôi đã sử dụng mã này trong một nền tảng lập bản đồ doanh nghiệp mà chúng tôi đã sử dụng cho một cửa hàng bán lẻ với hơn 1,000 địa điểm trên khắp Bắc Mỹ và nó hoạt động rất tốt.
Vĩ độ và kinh độ là các phép đo vị trí trên trái đất. Nếu biết cách đọc vĩ độ và kinh độ trên bản đồ, bạn có thể xác định toạ độ địa lý của bất cứ điểm nào trên bản đồ. Mặc dù bạn có thể dễ dàng tìm được vĩ độ và kinh độ trên các bản đồ trực tuyến chỉ bằng một cú nhấp chuột, nhưng đôi khi cũng hữu ích nếu bạn biết cách đọc trên bản đồ giấy. Để đọc đúng vĩ độ và kinh độ, trước tiên bạn phải hiểu các khái niệm cơ bản của các phép đo này. Khi đã nắm được những điều cơ bản, bạn hãy học cách xác định các điểm vĩ độ và kinh độ trên bản đồ và xác định chính xác các vị trí.
Bài viết này có đồng tác giả là đội ngũ biên tập viên và các nhà nghiên cứu đã qua đào tạo, những người xác nhận tính chính xác và toàn diện của bài viết. Nhóm Quản lý Nội dung của wikiHow luôn cẩn trọng giám sát công việc của các biên tập viên để đảm bảo rằng mọi bài viết đều đạt tiêu chuẩn chất lượng cao. Bài viết này đã được xem 26.294 lần. Chuyên mục: Địa lý Trang này đã được đọc 26.294 lần. |