WMTS: Chuyển đổi vị trí địa lý (lat, long) sang chỉ mục ô vuông, ở mức thu phóng cụ thể?


14

Tôi muốn biết làm thế nào để lấy các chỉ mục (x, y) của ô WMTS cho một vị trí địa lý nhất định (vĩ độ, kinh độ) và mức thu phóng.

Ví dụ, tôi có POI ở (48.675, 2.7), tôi muốn lấy ô bản đồ đường phố mở tương ứng cho zoom 10.

Tôi có thể làm toán được không? Tôi có cần một dịch vụ web không? Chính xác: Tôi phải làm điều này theo chương trình.



Một bài viết MSDN hữu ích về Lược đồ ốp lát Bing Maps cũng cung cấp một đoạn mồi tốt. Cả bài viết này và bài viết OSM đều giả định phép chiếu Web Mercator, nhưng nguyên tắc là giống nhau cho các hệ thống phối hợp dự kiến ​​khác.
kes

Câu trả lời:


22

Trang wiki OSM rất hoàn hảo: http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames#Lon..2Flat._to_tile_numbers_2

Dưới đây là câu trả lời được trích xuất (bằng mã giả) để tham khảo nhanh.

Đưa ra Kinh độ / vĩ độ / thu phóng cho số ô:

n = 2 ^ zoom
xtile = n * ((lon_deg + 180) / 360)
ytile = n * (1 - (log(tan(lat_rad) + sec(lat_rad)) / π)) / 2

Lưu ý rằng log()trong mã giả này đề cập đến nhật ký tự nhiên (thường là "ln ()" theo cú pháp toán học thông thường, nhưng thường là "log ()" trong nhiều ngôn ngữ lập trình).

Cho các số Ngói cho kinh độ / vĩ độ:

n = 2 ^ zoom
lon_deg = xtile / n * 360.0 - 180.0
lat_rad = arctan(sinh(π * (1 - 2 * ytile / n)))
lat_deg = lat_rad * 180.0 / π

2
chờ đã, định dạng slippy OSM là định dạng gạch WMTS?
gián điệp

5
Lưu ý rằng liên kết ở trên có triển khai bằng nhiều ngôn ngữ! (27 hiện tại)
Cyrille
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.