You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

技术求助:如何通过经纬度获取带特定经纬度高亮的OpenStreetMap区域图片

解决OpenStreetMap切片获取与经纬度高亮问题

一、正确获取OpenStreetMap瓦片切片

你之前尝试的Slippy瓦片坐标转换出错,大概率是公式应用有误,以下是经纬度转瓦片坐标的正确实现(以Python为例):

import math

def latlon_to_tile(lat, lon, zoom):
    n = 2.0 ** zoom
    x_tile = int((lon + 180.0) / 360.0 * n)
    y_tile = int((1.0 - math.log(math.tan(math.radians(lat)) + 1 / math.cos(math.radians(lat))) / math.pi) / 2.0 * n)
    return x_tile, y_tile

转换得到瓦片坐标后,拼接OpenStreetMap的瓦片URL即可获取图片:
https://tile.openstreetmap.org/{zoom}/{x}/{y}.png
注意:zoom范围通常为1-19,且需遵守OSM的请求规范,避免短时间内大量请求导致IP被限制。

二、在瓦片图片上高亮特定经纬度

拿到瓦片图片后,需要将目标经纬度转换为图片上的像素坐标,再绘制高亮标记,步骤如下:

  1. 先通过瓦片坐标反算该瓦片的左上角经纬度:
def tile_to_latlon(x_tile, y_tile, zoom):
    n = 2.0 ** zoom
    lon_deg = x_tile / n * 360.0 - 180.0
    lat_rad = math.atan(math.sinh(math.pi * (1 - 2 * y_tile / n)))
    lat_deg = math.degrees(lat_rad)
    return lat_deg, lon_deg
  1. 计算目标经纬度在图片中的像素位置(默认瓦片为256x256像素):
def latlon_to_pixel(lat, lon, tile_x, tile_y, zoom):
    tile_top_lat, tile_left_lon = tile_to_latlon(tile_x, tile_y, zoom)
    # 计算经纬度在瓦片内的相对比例,转换为像素坐标
    lon_ratio = (lon - tile_left_lon) / (360.0 / (2**zoom))
    lat_ratio = (tile_top_lat - lat) / (180.0 / (2**zoom))
    x_pixel = int(lon_ratio * 256)
    y_pixel = int(lat_ratio * 256)
    return x_pixel, y_pixel
  1. 使用Pillow库绘制高亮标记(比如红色圆点):
from PIL import Image, ImageDraw

# 假设已下载瓦片图片到本地,命名为tile.png
img = Image.open("tile.png")
draw = ImageDraw.Draw(img)

# 替换为你的目标经纬度和瓦片参数
target_lat, target_lon = 39.9042, 116.4074
zoom = 15
tile_x, tile_y = latlon_to_tile(target_lat, target_lon, zoom)

x_pixel, y_pixel = latlon_to_pixel(target_lat, target_lon, tile_x, tile_y, zoom)
# 绘制半径为5的红色圆点,带黑色边框
draw.ellipse((x_pixel-5, y_pixel-5, x_pixel+5, y_pixel+5), fill="red", outline="black", width=2)

img.save("highlighted_tile.png")

三、实用参考资源

  • OpenStreetMap官方Slippy瓦片文档:详细讲解瓦片坐标的推导逻辑,帮你排查转换错误
  • Pillow官方文档:系统学习图片加载、绘制等操作
  • OpenStreetMap瓦片使用规范:明确请求限制,避免违规操作

内容的提问来源于stack exchange,提问作者Tallion 22

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 10:20:35