Skip to content

Instantly share code, notes, and snippets.

@andrewxhill
Created April 14, 2016 21:49
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save andrewxhill/dd2d1e7e6a1a611e966089b85c77ec98 to your computer and use it in GitHub Desktop.
Get a static map from a viz.json using python
import sys
import urllib
import urllib2
import json
import requests
basemap = {
"type": "http",
"options": {
"urlTemplate": "http://{s}.basemaps.cartocdn.com/dark_nolabels/{z}/{x}/{y}.png"
, "subdomains": ["a", "b", "c"]
}
}
def getMapConfig(viz_json):
r = requests.get(viz_json)
layers = []
layers.append(basemap)
assert r.status_code == 200
data = r.json()
bounds = data['bounds']
center = json.loads(data['center'])
zoom = data['zoom']
for layer in data['layers']:
# print layer['type']
if layer['type'] == 'layergroup':
# print layer
cur_data = None
checkedLayers = 0
#f.write(","+str(len(layer['options']['layer_definition']['layers'])))
for la in layer['options']['layer_definition']['layers']:
if la['visible']==True:
layers.append({'type': 'mapnik', 'options': la['options']})
# return layers
return layers, center, bounds, zoom
def getNamedMap(username, api_key, map_config):
config = {
"version": "1.3.0",
"layers": map_config
}
r = requests.get('https://'+username+'.cartodb.com/api/v1/map',
# data={api_key: api_key},
headers={'content-type':'application/json'},
params={'config': json.dumps(config)}
)
return r.json()
username='andrew'
vj = 'https://team.cartodb.com/u/andrew/api/v2/viz/21891d8a-faad-11e5-acf8-0e5db1731f59/viz.json'
mapconfig,center, bounds, zoom = getMapConfig(vj)
print bounds
# print mapconfig
namedmap = getNamedMap(username, '95fa7deac70fec6caf848871e1194870f4a3cdba', mapconfig)
print 'https://'+username+'.cartodb.com/api/v1/map/static/center/'+namedmap['layergroupid']+'/'+str(zoom)+'/'+str(center[0])+'/'+str(center[1])+'/800/500.png'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment