如何使用geojson获取建筑物占地面积的叠加

问题描述 投票:0回答:0

我有这个方法返回图像以供实时语义分割端点使用。 ID 喜欢尝试 geojson 路线,而不是依赖图像/深度学习来获取建筑物占地面积和相关表面积。

给定纬度和经度,使用立交桥 API 获取建筑物占地面积 geojson 节点,然后传递这些节点以将图像覆盖在屋顶上。

我也对获得表面积感兴趣,但我想一旦图像处理工作正常,我就可以写出来。

我目前使用经过训练的深度学习模型对图像进行语义分割,但它并不可靠,因为卫星图像通常有树木或光线不佳。

这是我必须获得的图像(效果很好):

lat, lng = get_lat_lng()
base_url = "https://api.mapbox.com/styles/v1/mapbox/satellite-v9/static"coordinates = f"{lng},{lat},{19},1"size="512x512"access_token=os.environ.get('MAPBOX_API')

params = {"access_token": access_token}

image_url = f"{base_url}/{coordinates}/{size}"
response = requests.get(image_url, params=params)
image = open_image(response)
return image

有人有使用 overpy 获取经纬度并获取建筑物坐标的经验吗?理想情况下,我会将其作为参数传递到此处并查看我想要的图像。

感谢您对此的任何建议!

我在应用程序的单独文件中尝试了类似的操作,但它没有收集正确的 geojson 坐标,也没有绘制任何内容:

import requests
import overpy
from PIL import Image, ImageDraw
from io import BytesIO
from shapely.geometry import shape, Polygon

api = overpy.Overpass()
query = f'node(around:lat, lng);out;'
result = api.query(query)

building_coordinates = []
for node in result.nodes:
    building_coordinates.append((node.lon, node.lat))

building_polygon = Polygon(building_coordinates)
geojson_data = building_polygon.__geo_interface__
image_url = "https://api.mapbox.com/styles/v1/mapbox/satellite-v9/static/-77.3385,39.0342,18.08,0/512x512?before_layer=building&access_token=TOKEN"
response = requests.get(image_url)
map_image = Image.open(BytesIO(response.content))

draw = ImageDraw.Draw(map_image)
boundary = building_polygon.exterior.coords
scaled_boundary = [
    (int((lon + 180) * (map_image.width / 360)), int((90 - lat) * (map_image.height / 180)))
    for lon, lat in boundary
]
draw.polygon(scaled_boundary, outline="red")

map_image.save("overlay_image.png")
python api mapbox geojson
© www.soinside.com 2019 - 2024. All rights reserved.