以编程方式将GeoJSON渲染到图像文件

时间:2018-07-17 13:17:33

标签: python geojson

我有一系列的GeoJSON对象,希望以编程的方式呈现在地图上。

我可以使用http://geojson.io并上传我的GeoJSON,但是如何以编程方式执行此操作并导出PNG或其他图像文件?

https://github.com/mapbox/geojson.io看起来不错,但是它公开发布到geojson.io网站上。

2 个答案:

答案 0 :(得分:1)

您需要掌握适用于Python的MapBox SDK:pip install mapbox

https://github.com/mapbox/mapbox-sdk-py

然后,您可以使用以下服务:静态地图V4(或者,静态样式V1也很有趣)

https://www.mapbox.com/api-documentation/pages/static_classic.html

这是他们示例中的代码:https://github.com/mapbox/mapbox-sdk-py/blob/master/docs/static.md#static-maps

main.py

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)

运行:export MAPBOX_ACCESS_TOKEN="YOUR_MAP_BOX_TOKEN" && python main.py

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

Output of python script: main.py

如果要使用自定义MapBox样式,则需要使用静态样式V1

https://www.mapbox.com/api-documentation/?language=Python#static

main.py

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)

Styled map output

我还使用示例函数在GitHub上创建了一个存储库: https://github.com/sarcoma/MapBox-Static-Style-Python-Script

答案 1 :(得分:0)

geojson-renderer是一个命令行工具,可在地图图块顶部呈现geojson内容。它可以产生SVG或PNG作为输出。地图图块的来源是可配置的。要从Python使用它,您可以掏空。