mapbox / mapbox/tippecanoe

LineString feature splits/breaks at tile edge

Open
#924 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
3.1k
Forks
430
PR merge metrics
No merged PRs in 30d

Description

Originally posted in mapbox-gl-js: [https://github.com/mapbox/mapbox-gl-js/issues/11073#issuecomment-936331366](GL-JS Issue)

My sample dataset is generated from zoom level 14-16. On level 16, several lines deviate from the correct path somehow. Vladimir suggested I check with tippecanoe to see can be done. His comment was that the coordinates go past the maximum possible buffer and result in the line being shifted.

Is the line not "dense" enough with points?

Link to viewable failure: https://jsfiddle.net/alexthomaseog/u2q3ev5k

tippecanoe command:
```
tippecanoe -f -Q -P -l outputlayer -e /tmp/outputsource -b0 -r1 --drop-densest-as-needed -pc -ps -z16 -Z14 //tmp/output.geojson
```

`//tmp/output.geojson` :
```
{"geometry":{"type":"LineString","coordinates":[[-103.84333237,32.06315212],[-103.8424836,32.06298158],[-103.84409085,32.05280362],[-103.84304467,32.0526831]]},"type":"Feature","properties":{"shape_length":0.012222915323124061}}
{"geometry":{"type":"LineString","coordinates":[[-103.84386138,32.05356729],[-103.84232055,32.063333]]},"type":"Feature","properties":{"shape_length":0.009886512980288725}}
{"geometry":{"type":"LineString","coordinates":[[-103.84221115,32.0634072],[-103.84375238,32.05363809]]},"type":"Feature","properties":{"shape_length":0.009889933775552704}}
{"geometry":{"type":"LineString","coordinates":[[-103.84318992,32.0528697],[-103.84376815,32.0529419],[-103.84387915,32.0529591],[-103.84387495,32.0529911],[-103.84348885,32.05546468],[-103.84292098,32.05901744],[-103.84239231,32.06240941],[-103.84219655,32.0634386],[-103.84223295,32.0634426]]},"type":"Feature","properties":{"shape_length":0.011345890692680561}}
{"geometry":{"type":"LineString","coordinates":[[-103.84309571,32.0527825],[-103.84398175,32.0528997],[-103.84400035,32.0529261],[-103.84397935,32.0529421],[-103.84397376,32.0529631],[-103.84371242,32.05462848],[-103.84295301,32.05950124],[-103.84246472,32.06244421],[-103.84233655,32.0633358]]},"type":"Feature","properties":{"shape_length":0.011475483112780932}}
{"geometry":{"type":"LineString","coordinates":[[-103.84216241,32.063362],[-103.84382501,32.0528987],[-103.84305398,32.0528099]]},"type":"Feature","properties":{"shape_length":0.011370695476310786}}
{"geometry":{"type":"LineString","coordinates":[[-103.84309131,32.0527349],[-103.84395315,32.0528331],[-103.84362883,32.05490348],[-103.8429118,32.05941704],[-103.8424909,32.06204961],[-103.8424853,32.06206721],[-103.84219516,32.06371999]]},"type":"Feature","properties":{"shape_length":0.011895731314378741}}

```

Contributor guide

Open the contributing guide

Research direction

Start by reproducing the supplied tippecanoe command with the provided GeoJSON and compare the affected LineString output at tile edges. Inspect the tile-edge clipping or buffering path; done means the lines no longer deviate or break at the edge while preserving the expected path.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
data
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.