Python 以编程方式将GeoJSON呈现到图像文件

Python 以编程方式将GeoJSON呈现到图像文件,python,geojson,Python,Geojson,我有一系列GeoJSON对象,我希望以编程方式在地图上渲染它们 我可以使用和上传我的GeoJSON,但如何通过编程实现并导出PNG或其他图像文件 看起来不错,但它公开发布到geojson.io站点。您需要获得Python的MapBox SDK:pip安装MapBox 然后您可以使用一个服务,比如:staticmapsv4(或者静态样式V1看起来也很有趣) 这是他们示例中的代码: main.py 运行:export-MAPBOX\u-ACCESS\u-TOKEN=“YOUR\u-MAP\u-B

我有一系列GeoJSON对象,我希望以编程方式在地图上渲染它们

我可以使用和上传我的GeoJSON,但如何通过编程实现并导出PNG或其他图像文件


看起来不错,但它公开发布到geojson.io站点。

您需要获得Python的MapBox SDK:
pip安装MapBox

然后您可以使用一个服务,比如:staticmapsv4(或者静态样式V1看起来也很有趣)

这是他们示例中的代码:

main.py

运行:
export-MAPBOX\u-ACCESS\u-TOKEN=“YOUR\u-MAP\u-BOX\u-TOKEN”和&python-main.py

上面的代码为我工作,并创建所提供数据周围区域的png,如下所示。
features
属性应该接受geojson对象

如果要使用自定义贴图框样式,则需要使用静态样式

main.py

我还使用示例函数在GitHub上创建了一个存储库:

是一个命令行工具,用于在地图分幅顶部呈现geojson内容。它可以生成SVG或PNG作为输出。地图分幅的来源是可配置的。要从Python中使用它,您可以使用它。

将“mapbox.satellite”更改为“mapbox.streets”可以大大提高图像质量。这只适用于小数据。如果数量较大,您会得到:
mapbox.errors.InputSizeError:GeoJSON对于静态maps API来说太大,必须少于4096个字符
,您需要就此提出一个新问题。@Martintoma您找到了大型GeoJSON的解决方案吗?
from mapbox import Static

service = Static()

portland = {
    'type': 'Feature',
    'properties': {'name': 'Portland, OR'},
    'geometry': {
        'type': 'Point',
        'coordinates': [-122.7282, 45.5801]}}
response = service.image('mapbox.satellite', features=[portland])

# add to a file
with open('./output_file.png', 'wb') as output:
    _ = output.write(response.content)
from mapbox import StaticStyle

service = StaticStyle()

portland = {
    'type': 'Feature',
    'properties': {'name': 'Portland, OR'},
    'geometry': {
        'type': 'Point',
        'coordinates': [-122.7282, 45.5801]}}
response = service.image('YOUR_USERNAME', 'YOUR_STYLE_ID', features=[portland])


# add to a file
with open('./output_file.png', 'wb') as output:
    _ = output.write(response.content)