Hello,
I am trying to collect stop sign data from the downtown Chicago area. All I need is the coordinates of stop signs in said area. But, I am currently experiencing an error from “mapbox_vector_tile”. The error is as follows:
Warning (from warnings module):
File "C:\Users\"myusername"\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.9_qbz5n2kfra8p0\LocalCache\local-packages\Python39\site-packages\mapbox_vector_tile\decoder.py", line 24
self.tile.ParseFromString(pbf_data)
RuntimeWarning: Unexpected end-group tag: Not all data was converted
The code I am running is as follows:
import mercantile, mapbox_vector_tile, requests, json
from vt2geojson.tools import vt_bytes_to_geojson
# define an empty geojson as output
output= { "type": "FeatureCollection", "features": [] }
# Mapillary access token -- user should provide their own
access_token = 'MLY|XXX'
# a bounding box in [west_lng,_south_lat,east_lng,north_lat] format
west, south, east, north = [-87.6565881940041,41.867095746832085, -87.62416489250167,41.89259531146177]
# get the list of tiles with x and y coordinates which intersect our bounding box
# MUST be at zoom level 14 where the data is available, other zooms currently not supported
tiles = list(mercantile.tiles(west, south, east, north, 14))
# loop through list of tiles to get tile z/x/y to plug in to Mapillary endpoints and make request
for tile in tiles:
tile_url = 'https://tiles.mapillary.com/maps/vtp/mly_map_feature_traffic_sign/2/{}/{}/{}?access_token={}'.format(tile.z,tile.x,tile.y,access_token)
response = requests.get(tile_url)
data = vt_bytes_to_geojson(response.content, tile.x, tile.y, tile.z)
# push to output geojson object if yes
for feature in data['features']:
output['features'].append(feature)
# save a local geojson with the filtered data
with open('stop_signs.geojson', 'w') as f:
json.dump(output, f)
This in turn leaves the data variable as " {‘type’: ‘FeatureCollection’, ‘features’: } " with no actual data regarding traffic signs. Looking online the only thing I can find regarding this issue states that the error comes from the data being pulled being incorrect or corrupted.
Thank you for your time.