estimate-area returns with `too many values to unpack` error
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 141
- Forks
- 27
- PR merge metrics
- No merged PRs in 30d
Description
I'm trying to get an estimate of the cost for the MTS publish process.
With the CLI and the `estimate-area` command, the program exists with an error.
```
*****/dist$ tilesets estimate-area -p 10m --no-validation wpt.geojson.l
Traceback (most recent call last):
File "*****/.local/bin/tilesets", line 8, in
sys.exit(cli())
File "/usr/lib/python3/dist-packages/click/core.py", line 829, in __call__
return self.main(*args, **kwargs)
File "/usr/lib/python3/dist-packages/click/core.py", line 782, in main
rv = self.invoke(ctx)
File "/usr/lib/python3/dist-packages/click/core.py", line 1259, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/usr/lib/python3/dist-packages/click/core.py", line 1066, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/usr/lib/python3/dist-packages/click/core.py", line 610, in invoke
return callback(*args, **kwargs)
File "*****/.local/lib/python3.9/site-packages/mapbox_tilesets/scripts/cli.py", line 776, in estimate_area
area = utils.calculate_tiles_area(features, precision)
File "*****/.local/lib/python3.9/site-packages/mapbox_tilesets/utils.py", line 210, in calculate_tiles_area
tiles = burn(features, zoom)
File "*****/.local/lib/python3.9/site-packages/supermercado/burntiles.py", line 78, in burn
bounds = find_extrema(polys)
File "*****/.local/lib/python3.9/site-packages/supermercado/burntiles.py", line 44, in find_extrema
*[_feature_extrema(f["geometry"]) for f in features]
File "*****/.local/lib/python3.9/site-packages/supermercado/burntiles.py", line 44, in
*[_feature_extrema(f["geometry"]) for f in features]
File "*****/.local/lib/python3.9/site-packages/supermercado/burntiles.py", line 35, in _feature_extrema
x, y = geometry["coordinates"]
ValueError: too many values to unpack (expected 2)
```
the provided file is NDGeojson of about 2500 lines with a pretty long object, but with a very simple geometry part. eg:
```json
{"type":"Feature","id":"61e05cbe6f0d7b000ea5cbbd","properties":{"trafficType":["VFR"],"magneticDeclination":1.734,"name":"CLERMONT FERRAND AUVERGNE","icaoCode":"LFLC","type":"Airport resp. Airfield IFR","country":"FR","elevation":[333,"m","MSL"],"frequencies":[[12222500,"MHz","CLERMONT APPROCHE et Information","Approach"],[11862500,"MHz","CLERMONT TWR et VDF","Tower"],[12195000,"MHz","CLERMONT SOL - GND","Ground"],[11937500,"MHz","CLERMONT APPROCHE et Information","Approach"],[13640500,"MHz","CLERMONT ATIS","ATIS"]],"runways":[{"alignedTrueNorth":false,"mainRunway":false,"turnDirection":2,"takeOffOnly":false,"landingOnly":false,"pilotCtrlLighting":false,"_id":"61e05cbe6f0d7b000ea5cbc3","operations":0,"surface":{"composition":[2],"mainComposite":2,"condition":0,"mtow":{"value":5.7,"unit":9}},"dimension":{"length":{"value":645,"unit":0},"width":{"value":60,"unit":0}},"designator":"01","trueHeading":7,"declaredDistance":{"tora":{"value":645,"unit":0},"lda":{"value":645,"unit":0}}},{"alignedTrueNorth":false,"mainRunway":false,"turnDirection":2,"takeOffOnly":false,"landingOnly":false,"pilotCtrlLighting":false,"_id":"61e05cbe6f0d7b000ea5cbc4","operations":0,"surface":{"composition":[2],"mainComposite":2,"condition":0,"mtow":{"value":5.7,"unit":9}},"dimension":{"length":{"value":645,"unit":0},"width":{"value":60,"unit":0}},"designator":"19","trueHeading":187,"declaredDistance":{"tora":{"value":645,"unit":0},"lda":{"value":645,"unit":0}}},{"alignedTrueNorth":false,"mainRunway":true,"turnDirection":2,"takeOffOnly":false,"landingOnly":false,"pilotCtrlLighting":false,"_id":"61e05cbe6f0d7b000ea5cbc5","operations":0,"surface":{"composition":[0],"mainComposite":0,"condition":0,"pcn":"78/F/C/W/T"},"dimension":{"length":{"value":3013,"unit":0},"width":{"value":45,"unit":0}},"designator":"08","trueHeading":81,"declaredDistance":{"tora":{"value":3013,"unit":0},"lda":{"value":3013,"unit":0}}},{"alignedTrueNorth":false,"mainRunway":true,"turnDirection":2,"takeOffOnly":false,"landingOnly":false,"pilotCtrlLighting":false,"visualApproachAids":[1],"_id":"61e05cbe6f0d7b000ea5cbc6","operations":0,"surface":{"composition":[0],"mainComposite":0,"condition":0,"pcn":"78/F/C/W/T"},"dimension":{"length":{"value":3013,"unit":0},"width":{"value":45,"unit":0}},"designator":"26","trueHeading":261,"declaredDistance":{"tora":{"value":3013,"unit":0},"lda":{"value":2870,"unit":0}}},{"alignedTrueNorth":false,"mainRunway":false,"turnDirection":2,"takeOffOnly":false,"landingOnly":false,"pilotCtrlLighting":false,"_id":"61e05cbe6f0d7b000ea5cbc7","operations":0,"surface":{"composition":[2],"mainComposite":2,"condition":0,"mtow":{"value":5.7,"unit":9}},"dimension":{"length":{"value":909,"unit":0},"width":{"value":50,"unit":0}},"designator":"08L","trueHeading":81,"declaredDistance":{"tora":{"value":909,"unit":0},"lda":{"value":909,"unit":0}}},{"alignedTrueNorth":false,"mainRunway":false,"turnDirection":2,"takeOffOnly":false,"landingOnly":false,"pilotCtrlLighting":false,"_id":"61e05cbe6f0d7b000ea5cbc8","operations":0,"surface":{"composition":[2],"mainComposite":2,"condition":0,"mtow":{"value":5.7,"unit":9}},"dimension":{"length":{"value":909,"unit":0},"width":{"value":50,"unit":0}},"designator":"26R","trueHeading":261,"declaredDistance":{"tora":{"value":909,"unit":0},"lda":{"value":909,"unit":0}}}],"updatedAt":"2022-01-13T17:09:18.810Z","elevationGeoid":{"geoidHeight":50.5352400000005,"hae":383.5352400000005},"misc":[]},"geometry":{"type":"Point","coordinates":[3.1625,45.786111,333]}}
```
`mtsds` CLI works with no issue
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the estimate_area entry point in mapbox_tilesets/scripts/cli.py and calculate_tiles_area in mapbox_tilesets/utils.py, then reproduce the command using the reported NDGeoJSON Point geometry. Trace how the geometry reaches supermercado's burn function and verify that estimate-area completes and returns an area estimate for the supplied input.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- cli
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100