2008-08-05 43 views
22

Tôi có một loạt các cặp kinh độ/kinh độ để ánh xạ tới các tọa độ x/y đã biết trên bản đồ (bị bóp méo về mặt địa lý).Làm cách nào để ánh xạ vĩ độ/kinh độ sang bản đồ bị méo?

Sau đó, tôi có thêm một cặp vĩ độ/kinh độ. Tôi muốn vẽ nó trên bản đồ là tốt nhất có thể. Làm thế nào để tôi làm việc này?

Lúc đầu, tôi quyết định tạo một hệ phương trình tuyến tính cho ba điểm vĩ độ/dài gần nhất và tính toán chuyển đổi từ các điểm này, nhưng điều này không hoạt động tốt chút nào. Vì đó là một hệ thống tuyến tính, tôi cũng không thể sử dụng nhiều điểm lân cận hơn.

Bạn không thể giả định North is up: tất cả những gì bạn có là ánh xạ lat/long-> x/y hiện có.

CHỈNH SỬA: nó không phải là phép chiếu Mercator hoặc bất kỳ thứ gì như thế. Nó bị bóp méo tùy ý để dễ đọc (nghĩ bản đồ tàu điện ngầm). Tôi chỉ muốn sử dụng 5 đến 10 ánh xạ gần nhất để sự biến dạng trên các phần khác của bản đồ không ảnh hưởng đến ánh xạ mà tôi đang cố tính toán.

Hơn nữa, toàn bộ bản đồ nằm trong một khu vực địa lý rất nhỏ nên không cần phải lo lắng về địa cầu - giả định bằng phẳng là đủ tốt.

+0

bạn đã thử http://trimaps.com chưa? – Gilbou

Trả lời

8

Có chi tiết cụ thể nào khác về loại biến dạng không? Ví dụ: nếu vĩ độ và kinh độ của bạn bị "bóp méo" trên bản đồ 2D của bạn bằng phép chiếu Mercator, phép tính chuyển đổi là readily available.

Nếu bản đồ bị bóp méo thực sự tùy ý, có rất nhiều điều bạn có thể thử, nhưng cách đơn giản nhất có thể là tính weighted average từ ánh xạ điểm hiện tại của bạn. Trọng số của bạn có thể là bình phương nghịch đảo của khoảng cách x/y từ điểm mới của bạn đến từng điểm hiện tại của bạn.

Một số giả:

estimate-latitude-longitude (x, y) 

    numerator-latitude := 0 
    numerator-longitude := 0 
    denominator := 0 

    for each point, 
     deltaX := x - point.x 
     deltaY := y - point.y 
     distSq := deltaX * deltaX + deltaY * deltaY 
     weight := 1/distSq 

     numerator-latitude += weight * point.latitude 
     numerator-longitude += weight * point.longitude 
     denominator += weight 

    return (numerator-latitude/denominator, numerator-longitude/denominator) 

Mã này sẽ cung cấp cho một xấp xỉ tương đối đơn giản. Nếu bạn có thể chính xác hơn về cách chiếu chiếu bóp méo tọa độ địa lý, bạn có thể làm tốt hơn nhiều.

0

vấn đề là hình cầu có thể bị bóp méo một số cách, và có tất cả những điểm được biết trên đường xích đạo, cho phép nói, sẽ không giúp bạn lập bản đồ điểm xa hơn.

Bạn cần điểm 'đóng' tốt hơn, sau đó bạn có thể giả định ba điểm này nằm trên mặt phẳng thứ tư và làm phép nội suy - cho biết khoảng cách kinh độ là một hàm, không phải là hằng số.

0

Ummm. Có lẽ tôi đang thiếu một cái gì đó về câu hỏi ở đây, nhưng nếu bạn có thông tin dài/lat, bạn cũng có hướng về phía bắc?

Dường như bạn cần ánh xạ tọa độ trắc địa đến một hệ tọa độ được chiếu. Ví dụ osgb để wgs84.

Toán học liên quan là không tầm thường, nhưng mã chỉ xuất hiện một vài dòng. Nếu tôi có nhiều thời gian hơn tôi muốn đăng nhiều hơn nhưng tôi cần một vòi sen vì vậy tôi sẽ nhàm chán và liên kết với các mục nhập wikipedia đó là khá tốt.

Lưu ý: Bài đăng đã được chỉnh sửa.

2

Được rồi. Từ một quan điểm lý thuyết, cho rằng sự biến dạng là "tùy ý", và bất kỳ giải pháp nào cũng yêu cầu bạn phải mô hình biến dạng tùy ý này, bạn rõ ràng không thể có được một "câu trả lời".Tuy nhiên, bất kỳ giải pháp nào sẽ liên quan đến việc áp đặt (thường là ngầm) một số mô hình biến dạng có thể hoặc có thể không phản ánh thực tế của tình huống.

Vì bạn dường như quan tâm nhất đến các mô hình cho rằng một số loại liên tục cục bộ của bản đồ méo, lựa chọn hiển nhiên nhất là sự lựa chọn của bạn: nội suy tuyến tính giữa các điểm gần nhất. Vượt ra ngoài đó sẽ yêu cầu kiến ​​thức phân tích toán học và toán học phức tạp hơn.

Bạn không chính xác, tuy nhiên, giả sử bạn không thể mở rộng thành nhiều điểm hơn. Bạn có thể bằng cách sử dụng phương pháp tiếp cận lỗi nhỏ nhất. Tìm câu trả lời tuyến tính để giảm thiểu lỗi của các điểm khác. Đây có lẽ là phần mở rộng thẳng tiến nhất. Nói cách khác, lấy 5 điểm gần nhất và cố gắng đưa ra một xấp xỉ tuyến tính để giảm thiểu lỗi của các điểm đó. Và sử dụng nó. Tôi sẽ thử điều này tiếp theo.

Nếu điều đó không hiệu quả, thì giả định tuyến tính trên diện tích của N bị hỏng. Tại thời điểm đó, bạn sẽ cần phải nâng cấp lên một mô hình bậc hai hoặc khối. Toán học sẽ trở nên bận rộn vào thời điểm đó.

Các vấn đề liên quan