我有一系列的GeoJSON对象,希望以编程的方式呈现在地图上。
我可以使用http://geojson.io并上传我的GeoJSON,但是如何以编程方式执行此操作并导出PNG或其他图像文件?
https://github.com/mapbox/geojson.io看起来不错,但是它公开发布到geojson.io网站上。
答案 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对象。
如果要使用自定义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)
我还使用示例函数在GitHub上创建了一个存储库: https://github.com/sarcoma/MapBox-Static-Style-Python-Script
答案 1 :(得分:0)
geojson-renderer是一个命令行工具,可在地图图块顶部呈现geojson内容。它可以产生SVG或PNG作为输出。地图图块的来源是可配置的。要从Python使用它,您可以掏空。