From 90f9e843eddde3ee234758b71ea4957255c2cd7e Mon Sep 17 00:00:00 2001 From: Mr Martian Date: Fri, 21 Jun 2024 08:54:31 -0600 Subject: [PATCH] improved shape of BaseVectorFeature; MValues don't need a length property to rebuild --- docs/assets/navigation.js | 2 +- docs/assets/search.js | 2 +- docs/classes/BaseVectorLayer.html | 4 +- docs/classes/BaseVectorLine.html | 10 +- docs/classes/BaseVectorLine3D.html | 10 - docs/classes/BaseVectorLines3DFeature.html | 54 +- docs/classes/BaseVectorLinesFeature.html | 46 +- docs/classes/BaseVectorPoint3DFeature.html | 50 +- docs/classes/BaseVectorPointsFeature.html | 48 +- docs/classes/BaseVectorPolys3DFeature.html | 54 +- docs/classes/BaseVectorPolysFeature.html | 52 +- docs/classes/BaseVectorTile.html | 4 +- docs/classes/ColumnCacheReader.html | 6 +- docs/classes/ColumnCacheWriter.html | 6 +- docs/classes/MapboxVectorFeature.html | 6 +- docs/classes/MapboxVectorLayer.html | 4 +- docs/classes/OVectorFeatureBase.html | 4 +- docs/classes/OVectorFeatureBase2D.html | 6 +- docs/classes/OVectorFeatureBase3D.html | 4 +- docs/classes/OVectorLayer.html | 4 +- docs/classes/OVectorLines3DFeature.html | 4 +- docs/classes/OVectorLinesFeature.html | 6 +- docs/classes/OVectorPoints3DFeature.html | 4 +- docs/classes/OVectorPointsFeature.html | 6 +- docs/classes/OVectorPolys3DFeature.html | 4 +- docs/classes/OVectorPolysFeature.html | 6 +- docs/classes/Pbf.html | 4 +- docs/classes/VectorFeatureBase.html | 22 +- docs/classes/VectorFeatureLinesBase.html | 35 + docs/classes/VectorFeaturePointsBase.html | 33 + docs/classes/VectorFeaturePolysBase.html | 37 ++ docs/classes/VectorTile.html | 4 +- docs/enums/OColumnName.html | 4 +- docs/functions/createShapeFromData.html | 4 +- docs/functions/decodeExtent.html | 4 +- docs/functions/decodeOffset.html | 4 +- docs/functions/decodeShape.html | 4 +- docs/functions/decodeValue.html | 4 +- docs/functions/encodeExtent.html | 4 +- docs/functions/encodeOffset.html | 4 +- docs/functions/encodeShape.html | 4 +- docs/functions/encodeValue.html | 4 +- docs/functions/fromMapboxVectorFeature.html | 4 +- docs/functions/readFeature.html | 4 +- docs/functions/serializeS2.html | 4 +- docs/functions/updateShapeFromData.html | 4 +- docs/functions/validateTypes.html | 4 +- docs/functions/writeOVFeature.html | 4 +- docs/functions/writeOVLayer.html | 4 +- docs/functions/writeOVTile.html | 4 +- docs/hierarchy.html | 2 +- docs/index.html | 4 +- docs/interfaces/Point.html | 4 +- docs/interfaces/Point3D.html | 4 +- docs/interfaces/PositionReference.html | 4 +- docs/interfaces/RawData.html | 4 +- docs/interfaces/Shape.html | 4 +- docs/interfaces/ShapePair.html | 4 +- docs/interfaces/Tag.html | 4 +- docs/interfaces/VectorLine3DWithOffset.html | 4 +- docs/interfaces/VectorLineWithOffset.html | 4 +- docs/modules.html | 11 +- docs/types/BBox-1.html | 3 + docs/types/BBox.html | 5 +- docs/types/BBox3D.html | 4 +- docs/types/BaseVectorFeature.html | 4 +- docs/types/ColumnValue.html | 4 +- docs/types/ColumnValueRead.html | 4 +- docs/types/ColumnValueReadSimple.html | 4 +- docs/types/ColumnValueRef.html | 4 +- docs/types/Extents.html | 4 +- docs/types/OColumnBaseChunk.html | 4 +- docs/types/OColumnBaseWrite.html | 4 +- docs/types/OColumnNumbers.html | 4 +- docs/types/OProperties.html | 4 +- docs/types/OValue.html | 4 +- docs/types/OVectorFeature.html | 4 +- docs/types/OldVectorFeatureType.html | 4 +- docs/types/PrimitiveShapes.html | 4 +- docs/types/Properties.html | 4 +- docs/types/ReadFieldFunction.html | 4 +- docs/types/ShapeType.html | 4 +- docs/types/Value.html | 4 +- docs/types/VectorFeatureType.html | 4 +- docs/types/VectorGeometry.html | 4 +- docs/types/VectorLine.html | 4 +- docs/types/VectorLine3D.html | 4 +- docs/types/VectorLines.html | 4 +- docs/types/VectorLines3D.html | 4 +- docs/types/VectorLines3DWithOffset.html | 4 +- docs/types/VectorLinesWithOffset.html | 4 +- docs/types/VectorMultiPoly.html | 4 +- docs/types/VectorMultiPoly3D.html | 4 +- docs/types/VectorPoints.html | 4 +- docs/types/VectorPoints3D.html | 4 +- docs/types/VectorPoly.html | 4 +- docs/types/VectorPoly3D.html | 4 +- package.json | 2 +- src/base/vectorFeature.ts | 605 +++++------------- src/open/vectorFeature.ts | 12 +- src/vectorTile.spec.ts | 2 + test/baseVectorTile/baseVectorFeature.test.ts | 148 +++-- test/openVectorTile/vectorFeature.test.ts | 234 +++---- test/parseS2.test.ts | 4 - 104 files changed, 848 insertions(+), 965 deletions(-) delete mode 100644 docs/classes/BaseVectorLine3D.html create mode 100644 docs/classes/VectorFeatureLinesBase.html create mode 100644 docs/classes/VectorFeaturePointsBase.html create mode 100644 docs/classes/VectorFeaturePolysBase.html create mode 100644 docs/types/BBox-1.html diff --git a/docs/assets/navigation.js b/docs/assets/navigation.js index 01bc9e7..ffddea0 100644 --- a/docs/assets/navigation.js +++ b/docs/assets/navigation.js @@ -1 +1 @@ -window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAE5XYS1PbMBAA4P/ic6aU8GjLMaTppeAMZOih04Nir4kGv0aWIWmH/95RHBJZWkmrK7v7oawlWdbvf4mErUxukvS2KfuqvmcVJJOkZXKT3CRQ91V3poU+bWRVJpPkhdd5cvP1fXKsn7EOniCTjfjJdiBORlayroPuzEgYS+dTh8Vr8FK8Brp0MQ9ZF3O61l3MF8BkL4IjPGVG6FQ7Sl42vJakcY8zI3TKwEeJVLvc0To+zozQqXaUvOKlV1RxnzSsvVuWbeABWI6tLCuF6P0SXAa8IcXn3bF23WyH3+JsIJJENR27iZXi89LRf1a9t0E7J06cInsLlhWnYjsWlkVQHY1M43oY2vjQNKpLUunmsMuEB2vkkWWaG6P6tzg0jeqSVIK5XBe2sVwXvhrC8otafb6dlbar7h/NqZjXEkTBMvVTVGRcOr26Nkv1dWkWm6vRLO+45E39AAUIqDNwQEaWj3xgb3MmGQodYr7yxw1r8VHsI8HSJePCXa6iPmLFntHiFXv2lelHtl9cbtKi6AB/ongqDSfTNHg2a7YnSO5adRSYNVuj5vO3L+dXU6NOn3KnSmuy2bXHo4a1BRwYMyEkDueDJ1b2lqWFIhR1avFIKhypPfKqLX2jOyVFyYWXLELW962EWnYmcvhzqPrwHaae1+2mr19MxoxHePtznsfbx4nefV+tQVg/chwNWkvRtCAkBxs6hYIKOklT0vxMvYsmjVoxaZmP8le71haRnJC7FLzikr/Cfqu1OmWEw5qr5fSOq3W14FDmi77O1BvMpKyEkLgfO9awYyAkoJOANAeCDy36iQ0FP6CpQIodzn1Eadb4ikR37MsRn2G/X9zXIj7HmjxaKELxDaeLGg9+QEBM5zvcp5PsWPmuLyVXJ3LcPIYjNVdPtQSaOHzZ4NgQi3Fcw/qIUi1Xu+id8jWJ1p9MAJPDfrsQTTU+lxeHLa87Q9LG8vWlhuaQNTkMpwRM0+NBxpysJoPNU4QxvhpMBfl0QBBjZzYRZI8eIVD7+6LHg4y7L3o8yDj7ooWDiLMvWtiDFKKpvPdyJ9CR6sGFeoG7QS3sQToQnJX8LzxOMUQLm8hk+NLfT6FWQMYk5Ikm921OWYBImme4r6zkKl+94TuMGyV4oDd1jk6fPP0bZ4Qp41rPgpCLPYwZX6ZYin2fcn35/uc/kTZ1eT4aAAA=" \ No newline at end of file +window.navigationData = "data:application/octet-stream;base64,H4sIAAAAAAAAE5XYS1PbMBAA4P/ic1pKArTlGNL0UnAGGGCm04PirIkGv0aWIWmH/96RHWK9tbqyux/KWpJl/f6XcNjx5DJJr+qiK6sbUkIySRrCt8llAlVXtidS6POWl0UySV5otUkuv71PjvVz0sIDZLxmv8ge2GhkBWlbaE+0BFU6nTosWoGXohXgpXa2WALhHQuaY2aEjrWj5FVNK44at5oZoWMGriRi7WKP67iaGaFj7Sj5nhZeUcR90rBarki2hVsgG9taMFKQ3iOjPOANKT7vmjTrejf8FmcDLUlY07H+jRSflyr/WfTeBM2cOHG6wJjTRZw6Q6kzjOpoZBrXw9DGZ03DuigVbw67THiwWh5axrkxqn+Ls6ZhXZSKMFfr3DRW69xXg1h+UatPSe4nBQI95qHl4fkh6DExwi72OPqQF5btbxrcW6b/BWMxrTiwnGTi0YqIWjo9v9BL5X1KL9Z3J728pZzW1S3kwKDKwAFpWT7ylrwtCCdW6BDzld9tSWMfRR8Jlq4IZe5yEfUR9+TZWnxPnn1l4wY5WzxSvk3zvAX7E7Wn4nA0jYPn8/RphPi+EUejefqk1Xz5/vX0fKrU1Tuzrt59OsVUypN1rDWmqVl7PLQZm+mB0RNC4nDSeiBFZ1hSKEIR5z+PJMKR2h0tm8I3ujEpSs69ZB6yfuw4VLzVkcOfQ9WHb1DxvK62XfWiM3o8wutPzB6vjyO9m65cAzN+pBoNWitWN8A4BRMaQ0HFOklT1PxMvYsmjVoxabFR8u/3jSlackLuitGScvoK/SZtdEoLhzVXy/EdF+tqSaHYLLsqE+8+nTISQmI/dlvDjoGQYJ0EqDkQfGjRT2wo+Al1CZzt7dxHFGep10OyY14M+Qzz/SLH8I4xeaRQhOIbThs1HvvRwmI63/4+HWXHytddwak4RNvNYzhSc/VUSsCJw6eDHRtiMY5rWB9RrOVqF75Tvibh+pMxIHzYb5esLtUTfX7Y8toTS5oqX5xJ6AayegPDKcGmyfEgo09WnbHNUwujfW/oiuWjw4JoO7OOWPZoBYHK3xc5HmTcfZHjQcbZFykcRJx9kcIeJGd16b3hHEFHqgdn4gXuBqWwB2mBUVLQv3A3tSFSWEcmwx1BP4UaBhnhsEkkuWs2mAVoSfMM95UUVOSLN3xr45QED/QmztHpg6d/akaY0i5IDchyRWpj1GsYQzFvYi7O3v/8ByhBfZ06GwAA" \ No newline at end of file diff --git a/docs/assets/search.js b/docs/assets/search.js index 41ff381..0bfffc4 100644 --- a/docs/assets/search.js +++ b/docs/assets/search.js @@ -1 +1 @@ -window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file +window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file diff --git a/docs/classes/BaseVectorLayer.html b/docs/classes/BaseVectorLayer.html index 4fef54b..6d45df5 100644 --- a/docs/classes/BaseVectorLayer.html +++ b/docs/classes/BaseVectorLayer.html @@ -1,4 +1,4 @@ -BaseVectorLayer | open-vector-tile - v1.0.0

Class BaseVectorLayer

Base Vector Layer +BaseVectorLayer | open-vector-tile - v1.0.1

Class BaseVectorLayer

Base Vector Layer This is an intermediary for storing layer data in the Open Vector Tile format.

Constructors

Properties

extent @@ -28,4 +28,4 @@

Returns BaseVectorFeature

A base vector feature at the given index

\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/BaseVectorLine.html b/docs/classes/BaseVectorLine.html index 2cafefd..3bf4b64 100644 --- a/docs/classes/BaseVectorLine.html +++ b/docs/classes/BaseVectorLine.html @@ -1,10 +1,10 @@ -BaseVectorLine | open-vector-tile - v1.0.0

Class BaseVectorLine

Base Vector Lines Feature +BaseVectorLine | open-vector-tile - v1.0.1

Class BaseVectorLine<L>

Base Vector Lines Feature Common variables and methods shared by all vector lines and/or polygons features

-

Constructors

Type Parameters

Constructors

Properties

Constructors

Constructors

Properties

geometry: VectorLine

the geometry of the feature

+

Returns BaseVectorLine<L>

Properties

geometry: L

the geometry of the feature

offset: number = 0

the offset of the feature

-
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/classes/BaseVectorLine3D.html b/docs/classes/BaseVectorLine3D.html deleted file mode 100644 index 1f49a4f..0000000 --- a/docs/classes/BaseVectorLine3D.html +++ /dev/null @@ -1,10 +0,0 @@ -BaseVectorLine3D | open-vector-tile - v1.0.0

Class BaseVectorLine3D

Base Vector Line 3D -Common variables and methods shared by all 3D vector lines

-

Constructors

Properties

Constructors

Properties

geometry: VectorLine3D

the geometry of the feature

-
offset: number = 0

the offset of the feature

-
\ No newline at end of file diff --git a/docs/classes/BaseVectorLines3DFeature.html b/docs/classes/BaseVectorLines3DFeature.html index 78842bb..ebcf52e 100644 --- a/docs/classes/BaseVectorLines3DFeature.html +++ b/docs/classes/BaseVectorLines3DFeature.html @@ -1,35 +1,39 @@ -BaseVectorLines3DFeature | open-vector-tile - v1.0.0

Class BaseVectorLines3DFeature

Base Vector Lines 3D Feature +BaseVectorLines3DFeature | open-vector-tile - v1.0.1

Class BaseVectorLines3DFeature

Base Vector Lines 3D Feature Type 5 Extends from

See

VectorFeatureBase. Store either a single 3D line or a list of 3D lines

-

Hierarchy (view full)

Constructors

Properties

Hierarchy (view full)

Constructors

Accessors

Methods

Constructors

Properties

bbox: BBox3D = ...

the bbox of the feature

-
geometry: BaseVectorLine3D[]

the geometry of the feature

-
id?: number

the id of the feature if there is one

-
properties: OProperties = {}

the properties of the feature

-

Accessors

  • get hasBBox(): boolean
  • Returns boolean

    true if the feature has BBox

    -
  • get hasMValues(): boolean
  • Returns boolean

      +
  • Optional id: number

    the id of the feature if there is one

    +
  • Optional bbox: BBox3D

    the BBox of the feature

    +
  • Returns BaseVectorLines3DFeature

    Properties

    bbox?: BBox3D

    the BBox of the feature

    +

    the geometry of the feature

    +
    id?: number

    the id of the feature if there is one

    +
    properties: OProperties = {}

    the properties of the feature

    +

    Accessors

    • get hasBBox(): boolean
    • Returns boolean

        +
      • true if the feature has BBox
      • +
      +
    • get hasMValues(): boolean
    • Returns boolean

      • true if the feature has M values
      -
    • get hasOffsets(): boolean
    • Returns boolean

      true if the feature has offsets

      -

    Methods

    • Parameters

      • cache: ColumnCacheWriter

        the column cache to store the geometry

        -
      • mShape: Shape = {}

        the shape of the M values

        +
    • get hasOffsets(): boolean
    • Returns boolean

        +
      • true if the feature has offsets
      • +
      +

    Methods

    • Parameters

      • cache: ColumnCacheWriter

        the column cache to store the geometry

        +
      • mShape: Shape = {}

        the shape of the M-values to encode the values as

      Returns number

      the indexes in the points column where the geometry is stored

      -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/classes/BaseVectorLinesFeature.html b/docs/classes/BaseVectorLinesFeature.html index ce987fd..01de457 100644 --- a/docs/classes/BaseVectorLinesFeature.html +++ b/docs/classes/BaseVectorLinesFeature.html @@ -1,39 +1,39 @@ -BaseVectorLinesFeature | open-vector-tile - v1.0.0

    Class BaseVectorLinesFeature

    Base Vector Lines Feature +BaseVectorLinesFeature | open-vector-tile - v1.0.1

    Class BaseVectorLinesFeature

    Base Vector Lines Feature Type 2 Extends from

    See

    VectorFeatureBase. Store either a single line or a list of lines.

    -

    Hierarchy (view full)

    Constructors

    Properties

    Hierarchy (view full)

    Constructors

    • Parameters

      • geometry: BaseVectorLine[]

        the geometry of the feature

        -
      • bbox: BBox = ...

        the bbox of the feature if not provided will be [0, 0, 0, 0]

        +

    Accessors

    Methods

    Constructors

    Properties

    bbox: BBox = ...

    the bbox of the feature if not provided will be [0, 0, 0, 0]

    -
    geometry: BaseVectorLine[]

    the geometry of the feature

    -
    id?: number

    the id of the feature if there is one

    -
    properties: OProperties = {}

    the properties of the feature

    -

    Accessors

    • get hasBBox(): boolean
    • Returns boolean

        +
  • Optional bbox: BBox

    the BBox of the feature

    +
  • Returns BaseVectorLinesFeature

    Properties

    bbox?: BBox

    the BBox of the feature

    +

    the geometry of the feature

    +
    id?: number

    the id of the feature if there is one

    +
    properties: OProperties = {}

    the properties of the feature

    +

    Accessors

    • get hasBBox(): boolean
    • Returns boolean

      • true if the feature has BBox
      -
    • get hasMValues(): boolean
    • Returns boolean

        +
    • get hasMValues(): boolean
    • Returns boolean

      • true if the feature has M values
      -
    • get hasOffsets(): boolean
    • Returns boolean

        +
    • get hasOffsets(): boolean
    • Returns boolean

      • true if the feature has offsets
      -

    Methods

    • Parameters

      • cache: ColumnCacheWriter

        the column cache to store the geometry

        +

    Methods

    • Parameters

      • cache: ColumnCacheWriter

        the column cache to store the geometry

      • mShape: Shape = {}

        the shape of the M-values to encode the values as

      Returns number

      the indexes in the points column where the geometry is stored

      -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/classes/BaseVectorPoint3DFeature.html b/docs/classes/BaseVectorPoint3DFeature.html index 47fd301..1dfd7f5 100644 --- a/docs/classes/BaseVectorPoint3DFeature.html +++ b/docs/classes/BaseVectorPoint3DFeature.html @@ -1,31 +1,33 @@ -BaseVectorPoint3DFeature | open-vector-tile - v1.0.0

    Class BaseVectorPoint3DFeature

    Base Vector Point 3D Feature

    -

    Hierarchy (view full)

    Constructors

    Properties

    bbox -geometry +BaseVectorPoint3DFeature | open-vector-tile - v1.0.1

    Class BaseVectorPoint3DFeature

    Base Vector Point 3D Feature

    +

    Hierarchy (view full)

    Constructors

    Accessors

    Methods

    Constructors

    Properties

    bbox: BBox3D = ...

    the bbox of the feature

    -
    geometry: VectorPoints3D

    the geometry of the feature

    -
    id?: number

    the id of the feature if there is one

    -
    properties: OProperties = {}

    the properties of the feature

    -

    Accessors

    • get hasBBox(): boolean
    • Returns boolean

      true if the feature has BBox

      -
    • get hasMValues(): boolean
    • Points do not have this feature, so return false

      +
    • Optional id: number

      the id of the feature if there is one

      +
    • Optional bbox: BBox3D

      the BBox of the feature

      +

    Returns BaseVectorPoint3DFeature

    Properties

    bbox?: BBox3D

    the BBox of the feature

    +
    geometry: VectorPoints3D

    the geometry of the feature

    +
    id?: number

    the id of the feature if there is one

    +
    properties: OProperties = {}

    the properties of the feature

    +

    Accessors

    • get hasBBox(): boolean
    • Returns boolean

        +
      • true if the feature has BBox
      • +
      +
    • get hasMValues(): boolean
    • Points do not have this feature, so return false

      Returns boolean

      false always

      -
    • get hasOffsets(): boolean
    • Points do not have this feature, so return false

      +
    • get hasOffsets(): boolean
    • Points do not have this feature, so return false

      Returns boolean

      false always

      -

    Methods

    • Parameters

      • cache: ColumnCacheWriter

        the column cache to store the geometry

        +

    Methods

    • Parameters

      • cache: ColumnCacheWriter

        the column cache to store the geometry

      • mShape: Shape = {}

        the shape of the M-values to encode the values as

      Returns number

      the index in the points column where the geometry is stored

      -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/classes/BaseVectorPointsFeature.html b/docs/classes/BaseVectorPointsFeature.html index 3126564..9350180 100644 --- a/docs/classes/BaseVectorPointsFeature.html +++ b/docs/classes/BaseVectorPointsFeature.html @@ -1,37 +1,37 @@ -BaseVectorPointsFeature | open-vector-tile - v1.0.0

    Class BaseVectorPointsFeature

    Base Vector Points Feature +BaseVectorPointsFeature | open-vector-tile - v1.0.1

    Class BaseVectorPointsFeature

    Base Vector Points Feature Type 1 Extends from

    See

    VectorFeatureBase. Store either a single point or a list of points

    -

    Hierarchy (view full)

    Constructors

    Properties

    Hierarchy (view full)

    Constructors

    Accessors

    Methods

    Constructors

    Properties

    bbox: BBox = ...

    the BBox of the feature

    -
    geometry: VectorPoints

    the geometry of the feature

    -
    id?: number

    the id of the feature if there is one

    -
    properties: OProperties = {}

    the properties of the feature

    -

    Accessors

    • get hasBBox(): boolean
    • Returns boolean

        +
  • Optional id: number

    the id of the feature if there is one

    +
  • Optional bbox: BBox

    the BBox of the feature

    +
  • Returns BaseVectorPointsFeature

    Properties

    bbox?: BBox

    the BBox of the feature

    +
    geometry: VectorPoints

    the geometry of the feature

    +
    id?: number

    the id of the feature if there is one

    +
    properties: OProperties = {}

    the properties of the feature

    +

    Accessors

    • get hasBBox(): boolean
    • Returns boolean

      • true if the feature has BBox
      -
    • get hasMValues(): boolean
    • Points do not have this feature, so return false

      +
    • get hasMValues(): boolean
    • Points do not have this feature, so return false

      Returns boolean

      false always

      -
    • get hasOffsets(): boolean
    • Points do not have this feature, so return false

      +
    • get hasOffsets(): boolean
    • Points do not have this feature, so return false

      Returns boolean

      false always

      -

    Methods

    • Parameters

      • cache: ColumnCacheWriter

        the column cache to store the geometry

        +

    Methods

    • Parameters

      • cache: ColumnCacheWriter

        the column cache to store the geometry

      • mShape: Shape = {}

        the shape of the M-values to encode the values as

      Returns number

      the index in the points column where the geometry is stored

      -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/classes/BaseVectorPolys3DFeature.html b/docs/classes/BaseVectorPolys3DFeature.html index 3fad205..98bc454 100644 --- a/docs/classes/BaseVectorPolys3DFeature.html +++ b/docs/classes/BaseVectorPolys3DFeature.html @@ -1,39 +1,41 @@ -BaseVectorPolys3DFeature | open-vector-tile - v1.0.0

    Class BaseVectorPolys3DFeature

    Base Vector Polys 3D Feature +BaseVectorPolys3DFeature | open-vector-tile - v1.0.1

    Class BaseVectorPolys3DFeature

    Base Vector Polys 3D Feature Type 6 Extends from

    See

    VectorFeatureBase. Store either a single 3D poly or a list of 3D polys

    -

    Hierarchy (view full)

    Constructors

    Properties

    Hierarchy (view full)

    Constructors

    Accessors

    Methods

    Constructors

    Properties

    bbox: BBox3D = ...

    the bbox of the feature

    -
    geometry: BaseVectorLine3D[][]

    the geometry of the feature

    -
    id?: number

    the id of the feature if there is one

    -
    indices: number[] = []

    the indices of the geometry

    -
    properties: OProperties = {}

    the properties of the feature

    -

    Accessors

    • get hasBBox(): boolean
    • Returns boolean

      true if the feature has BBox

      -
    • get hasMValues(): boolean
    • Returns boolean

        +
  • Optional bbox: BBox3D

    the bbox of the feature

    +
  • Returns BaseVectorPolys3DFeature

    Properties

    bbox?: BBox3D

    the bbox of the feature

    +

    the geometry of the feature

    +
    id?: number

    the id of the feature if there is one

    +
    indices: number[] = []

    the indices of the geometry

    +
    properties: OProperties = {}

    the properties of the feature

    +

    Accessors

    • get hasBBox(): boolean
    • Returns boolean

        +
      • true if the feature has BBox
      • +
      +
    • get hasMValues(): boolean
    • Returns boolean

      • true if the feature has M values
      -
    • get hasOffsets(): boolean
    • Returns boolean

      true if the feature has offsets

      -

    Methods

    • Parameters

      • cache: ColumnCacheWriter

        the column cache to store the geometry

        -
      • mShape: Shape = {}

        the shape of the M values

        +
    • get hasOffsets(): boolean
    • Returns boolean

      true if the feature has offsets

      +

    Methods

    • Parameters

      • cache: ColumnCacheWriter

        the column cache to store the geometry

        +
      • mShape: Shape = {}

        the shape of the M-values to encode the values as

      Returns number

      the indexes in the points column where the geometry is stored

      -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/classes/BaseVectorPolysFeature.html b/docs/classes/BaseVectorPolysFeature.html index d5d28cc..25b9933 100644 --- a/docs/classes/BaseVectorPolysFeature.html +++ b/docs/classes/BaseVectorPolysFeature.html @@ -1,39 +1,41 @@ -BaseVectorPolysFeature | open-vector-tile - v1.0.0

    Class BaseVectorPolysFeature

    Base Vector Polys Feature +BaseVectorPolysFeature | open-vector-tile - v1.0.1

    Class BaseVectorPolysFeature

    Base Vector Polys Feature Type 3 Extends from

    See

    VectorFeatureBase. Store either a single polygon or a list of polygons

    -

    Hierarchy (view full)

    Constructors

    Properties

    Hierarchy (view full)

    Constructors

    Accessors

    Methods

    Constructors

    Properties

    bbox: BBox = ...

    the bbox of the feature

    -
    geometry: BaseVectorLine[][]

    the geometry of the feature

    -
    id?: number

    the id of the feature if there is one

    -
    indices: number[] = []

    the indices of the geometry

    -
    properties: OProperties = {}

    the properties of the feature

    -

    Accessors

    • get hasBBox(): boolean
    • Returns boolean

      true if the feature has BBox

      -
    • get hasMValues(): boolean
    • Returns boolean

        +
  • Optional bbox: BBox

    the bbox of the feature

    +
  • Returns BaseVectorPolysFeature

    Properties

    bbox?: BBox

    the bbox of the feature

    +
    geometry: BaseVectorLine<VectorLine>[][]

    the geometry of the feature

    +
    id?: number

    the id of the feature if there is one

    +
    indices: number[] = []

    the indices of the geometry

    +
    properties: OProperties = {}

    the properties of the feature

    +

    Accessors

    • get hasBBox(): boolean
    • Returns boolean

        +
      • true if the feature has BBox
      • +
      +
    • get hasMValues(): boolean
    • Returns boolean

      • true if the feature has M values
      -
    • get hasOffsets(): boolean
    • Returns boolean

      true if the feature has offsets

      -

    Methods

    • Parameters

      • cache: ColumnCacheWriter

        the column cache to store the geometry

        +
    • get hasOffsets(): boolean
    • Returns boolean

      true if the feature has offsets

      +

    Methods

    • Parameters

      • cache: ColumnCacheWriter

        the column cache to store the geometry

      • mShape: Shape = {}

        the shape of the M-values to encode the values as

      Returns number

      the indexes in the points column where the geometry is stored

      -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/classes/BaseVectorTile.html b/docs/classes/BaseVectorTile.html index 39030e1..e93dc05 100644 --- a/docs/classes/BaseVectorTile.html +++ b/docs/classes/BaseVectorTile.html @@ -1,4 +1,4 @@ -BaseVectorTile | open-vector-tile - v1.0.0

    Class BaseVectorTile

    Base Vector Tile +BaseVectorTile | open-vector-tile - v1.0.1

    Class BaseVectorTile

    Base Vector Tile This is an intermediary for storing feature data in the Open Vector Tile format. Convert from either a Mapbox vector tile or GeoJSON data.

    Constructors

    constructor @@ -10,4 +10,4 @@

    Returns BaseVectorTile

    • The converted Base Vector Tile
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/classes/ColumnCacheReader.html b/docs/classes/ColumnCacheReader.html index 02def09..8a41e19 100644 --- a/docs/classes/ColumnCacheReader.html +++ b/docs/classes/ColumnCacheReader.html @@ -1,4 +1,4 @@ -ColumnCacheReader | open-vector-tile - v1.0.0

    Class ColumnCacheReader

    Column Cache Reader +ColumnCacheReader | open-vector-tile - v1.0.1

    Class ColumnCacheReader

    Column Cache Reader Stores all data in a column format. Upon construction, all columns are decoded from the protobuf. This allows for quick and easy access to data in a column format.

    @@ -25,10 +25,10 @@

    for geometry types each column is individually weaved and delta encoded

    7: ColumnValueReadSimple<number> = []

    store M-Value indices, geometry indices, and geometry shapes

    8: ColumnValueRead<number[]> = []

    shapes and possibly value indices are stored in a number[] to be decoded by readShape

    -

    Stores both BBox and BBox3D in a single column

    +

    Stores both BBox and BBox3D in a single column

    Methods

    • Type Parameters

      • T

      Parameters

      • col: OColumnName

        the column to read/store the parsed data

      • index: number

        the index in the column to read/store the parsed data

      Returns T

      • the parsed data
      -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/classes/ColumnCacheWriter.html b/docs/classes/ColumnCacheWriter.html index a8b2fab..92d0dbf 100644 --- a/docs/classes/ColumnCacheWriter.html +++ b/docs/classes/ColumnCacheWriter.html @@ -1,4 +1,4 @@ -ColumnCacheWriter | open-vector-tile - v1.0.0

    Class ColumnCacheWriter

    The cache where all data is stored in a column format. +ColumnCacheWriter | open-vector-tile - v1.0.1

    Class ColumnCacheWriter

    The cache where all data is stored in a column format. Each column type has its own array of data. Number types maintain their own index for sorting purposes.

    Properties

    0 @@ -23,7 +23,7 @@
    6: Map<string, OColumnBaseChunk<Point3D[]>> = ...

    for geometry types each column is individually weaved and delta encoded

    7: Map<string, OColumnBaseChunk<number[]>> = ...

    Indices track geometry indices, geometry shapes, or other indexing data

    8: Map<string, OColumnBaseChunk<ColumnValue[]>> = ...

    Contains number arrays of how to rebuild objects

    -
    9: Map<string, OColumnBaseChunk<BBox | BBox3D>> = ...

    Features should be sorted by id prior to building a column

    +
    9: Map<string, OColumnBaseChunk<BBox | BBox3D>> = ...

    Features should be sorted by id prior to building a column

    Methods

    • Type Parameters

      • T

        one of the column types

      Parameters

      • col: OColumnName

        the column to add the value to

      • value: T

        the value to add

        @@ -42,4 +42,4 @@ all columns are stored as fields in the message

        Parameters

        • column: ColumnCacheWriter

          the column cache we want to write from

        • pbf: Pbf

          the pbf protocol we are writing to

          -

        Returns void

    \ No newline at end of file +

    Returns void

    \ No newline at end of file diff --git a/docs/classes/MapboxVectorFeature.html b/docs/classes/MapboxVectorFeature.html index 1d5047b..3e3cf15 100644 --- a/docs/classes/MapboxVectorFeature.html +++ b/docs/classes/MapboxVectorFeature.html @@ -1,4 +1,4 @@ -MapboxVectorFeature | open-vector-tile - v1.0.0

    Class MapboxVectorFeature

    Mapbox Vector Feature types are all bundled in one class +MapboxVectorFeature | open-vector-tile - v1.0.1

    Class MapboxVectorFeature

    Mapbox Vector Feature types are all bundled in one class to make it easier to read. Primarily contains an id, properties, and geometry. The now deprecated S2 model extends this class to include indices and tesselation data.

    Constructors

    constructor @@ -23,7 +23,7 @@

    Methods

    • Add tesselation data to the geometry

      Parameters

      • geometry: number[]

        the geometry to add the tesselation data to

      • multiplier: number

        the multiplier to apply the extent shift

        -

      Returns void

    Returns void

    • Returns BBox | BBox3D

      • a default bbox. Since no bbox is present, the default is [0, 0, 0, 0] also MapboxVectorTile's do not support 3D, so we only return a 2D bbox
      @@ -42,4 +42,4 @@
    • Returns number[]

      • an array of indices for the geometry
      -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/classes/MapboxVectorLayer.html b/docs/classes/MapboxVectorLayer.html index c7bc3fe..70f2109 100644 --- a/docs/classes/MapboxVectorLayer.html +++ b/docs/classes/MapboxVectorLayer.html @@ -1,4 +1,4 @@ -MapboxVectorLayer | open-vector-tile - v1.0.0

    Class MapboxVectorLayer

    A MapboxVectorLayer is a storage structure for the vector tile. +MapboxVectorLayer | open-vector-tile - v1.0.1

    Class MapboxVectorLayer

    A MapboxVectorLayer is a storage structure for the vector tile. It may contain either the old Mapbox layers or the new S2 layers. Parses extent, keys, values, and features. Features will utilize the extent, keys, and values.

    Constructors

    constructor @@ -10,4 +10,4 @@

    Returns MapboxVectorFeature

    • A feature at the given index
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/classes/OVectorFeatureBase.html b/docs/classes/OVectorFeatureBase.html index 3f9cb1a..c314c91 100644 --- a/docs/classes/OVectorFeatureBase.html +++ b/docs/classes/OVectorFeatureBase.html @@ -1,4 +1,4 @@ -OVectorFeatureBase | open-vector-tile - v1.0.0

    Class OVectorFeatureBase

    Vector Feature Base +OVectorFeatureBase | open-vector-tile - v1.0.1

    Class OVectorFeatureBase

    Vector Feature Base Common variables and functions shared by all vector features

    Hierarchy (view full)

    Constructors

    Properties

    bboxIndex @@ -45,4 +45,4 @@
  • multiplier: number

    the multiplier to multiply the geometry by

  • Returns void

    • Returns [geometry: number[], indices: number[]]

      an empty geometry

    • Returns number[]

      the indices for the feature

      -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/classes/OVectorFeatureBase2D.html b/docs/classes/OVectorFeatureBase2D.html index cb1793b..9e74c23 100644 --- a/docs/classes/OVectorFeatureBase2D.html +++ b/docs/classes/OVectorFeatureBase2D.html @@ -1,4 +1,4 @@ -OVectorFeatureBase2D | open-vector-tile - v1.0.0

    Class OVectorFeatureBase2D

    Vector Feature Base 2D. +OVectorFeatureBase2D | open-vector-tile - v1.0.1

    Class OVectorFeatureBase2D

    Vector Feature Base 2D. Extends from

    Hierarchy (view full)

    Constructors

    constructor @@ -45,7 +45,7 @@

    Methods

    • adds the tesselation to the geometry

      Parameters

      • geometry: number[]

        the input geometry to add to

      • multiplier: number

        the multiplier to multiply the geometry by

        -

      Returns void

    • Returns BBox

      the BBox of the feature (in lon-lat space)

      +

    Returns void

    • Returns BBox

      the BBox of the feature (in lon-lat space)

    • Returns [geometry: number[], indices: number[]]

      an empty geometry

    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/classes/OVectorFeatureBase3D.html b/docs/classes/OVectorFeatureBase3D.html index b86fecb..a05371c 100644 --- a/docs/classes/OVectorFeatureBase3D.html +++ b/docs/classes/OVectorFeatureBase3D.html @@ -1,4 +1,4 @@ -OVectorFeatureBase3D | open-vector-tile - v1.0.0

    Class OVectorFeatureBase3D

    Vector Feature Base 3D. +OVectorFeatureBase3D | open-vector-tile - v1.0.1

    Class OVectorFeatureBase3D

    Vector Feature Base 3D. Extends from

    Hierarchy (view full)

    Constructors

    constructor @@ -48,4 +48,4 @@

    Returns void

    • Returns BBox3D

      the BBox3D of the feature (in lon-lat space)

    • Returns [geometry: number[], indices: number[]]

      an empty geometry

    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/classes/OVectorLayer.html b/docs/classes/OVectorLayer.html index 1169d75..eb58a17 100644 --- a/docs/classes/OVectorLayer.html +++ b/docs/classes/OVectorLayer.html @@ -1,4 +1,4 @@ -OVectorLayer | open-vector-tile - v1.0.0

    The Open Vector Layer class represents a layer in an Open Vector Tile. +OVectorLayer | open-vector-tile - v1.0.1

    The Open Vector Layer class represents a layer in an Open Vector Tile. Contains an extent, name, version, and features. The features will utilize the layer extent to decode geometry.

    Constructors

    constructor @@ -23,4 +23,4 @@

    Returns OVectorFeature

    • A feature at the given index
    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/classes/OVectorLines3DFeature.html b/docs/classes/OVectorLines3DFeature.html index 6cea469..b86eb74 100644 --- a/docs/classes/OVectorLines3DFeature.html +++ b/docs/classes/OVectorLines3DFeature.html @@ -1,4 +1,4 @@ -OVectorLines3DFeature | open-vector-tile - v1.0.0

    Class OVectorLines3DFeature

    3D Lines Vector Feature +OVectorLines3DFeature | open-vector-tile - v1.0.1

    Class OVectorLines3DFeature

    3D Lines Vector Feature Type 5 Extends from

    See

    OVectorFeatureBase3D. @@ -56,4 +56,4 @@

    • Returns Point3D[]

      the geometry as a flattened array of points

    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/classes/OVectorLinesFeature.html b/docs/classes/OVectorLinesFeature.html index 72db14d..5af202f 100644 --- a/docs/classes/OVectorLinesFeature.html +++ b/docs/classes/OVectorLinesFeature.html @@ -1,4 +1,4 @@ -OVectorLinesFeature | open-vector-tile - v1.0.0

    Class OVectorLinesFeature

    Lines Vector Feature +OVectorLinesFeature | open-vector-tile - v1.0.1

    Class OVectorLinesFeature

    Lines Vector Feature Type 2 Extends from

    See

    OVectorFeatureBase2D. @@ -50,10 +50,10 @@

    Methods

    • adds the tesselation to the geometry

      Parameters

      • geometry: number[]

        the input geometry to add to

      • multiplier: number

        the multiplier to multiply the geometry by

        -

      Returns void

    • Returns BBox

      the BBox of the feature (in lon-lat space)

      +

    Returns void

    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/classes/OVectorPoints3DFeature.html b/docs/classes/OVectorPoints3DFeature.html index 52598bc..9ba7069 100644 --- a/docs/classes/OVectorPoints3DFeature.html +++ b/docs/classes/OVectorPoints3DFeature.html @@ -1,4 +1,4 @@ -OVectorPoints3DFeature | open-vector-tile - v1.0.0

    Class OVectorPoints3DFeature

    3D Point Vector Feature +OVectorPoints3DFeature | open-vector-tile - v1.0.1

    Class OVectorPoints3DFeature

    3D Point Vector Feature Type 4. Extends from

    See

    OVectorFeatureBase3D. @@ -57,4 +57,4 @@

    • Returns Point3D[]

      the geometry as a flattened array of points

    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/classes/OVectorPointsFeature.html b/docs/classes/OVectorPointsFeature.html index 0e5cff9..5ca9354 100644 --- a/docs/classes/OVectorPointsFeature.html +++ b/docs/classes/OVectorPointsFeature.html @@ -1,4 +1,4 @@ -OVectorPointsFeature | open-vector-tile - v1.0.0

    Class OVectorPointsFeature

    Points Vector Feature +OVectorPointsFeature | open-vector-tile - v1.0.1

    Class OVectorPointsFeature

    Points Vector Feature Type 1 Extends from

    See

    OVectorFeatureBase. @@ -50,10 +50,10 @@

    Methods

    • adds the tesselation to the geometry

      Parameters

      • geometry: number[]

        the input geometry to add to

      • multiplier: number

        the multiplier to multiply the geometry by

        -

      Returns void

    • Returns BBox

      the BBox of the feature (in lon-lat space)

      +

    Returns void

    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/classes/OVectorPolys3DFeature.html b/docs/classes/OVectorPolys3DFeature.html index ed19ed1..6207fbb 100644 --- a/docs/classes/OVectorPolys3DFeature.html +++ b/docs/classes/OVectorPolys3DFeature.html @@ -1,4 +1,4 @@ -OVectorPolys3DFeature | open-vector-tile - v1.0.0

    Class OVectorPolys3DFeature

    3D Polygons Vector Feature +OVectorPolys3DFeature | open-vector-tile - v1.0.1

    Class OVectorPolys3DFeature

    3D Polygons Vector Feature Type 6 Extends from

    • Returns Point3D[]

      the geometry as a flattened array of points

    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/classes/OVectorPolysFeature.html b/docs/classes/OVectorPolysFeature.html index a333722..dcd23eb 100644 --- a/docs/classes/OVectorPolysFeature.html +++ b/docs/classes/OVectorPolysFeature.html @@ -1,4 +1,4 @@ -OVectorPolysFeature | open-vector-tile - v1.0.0

    Class OVectorPolysFeature

    Polys Vector Feature +OVectorPolysFeature | open-vector-tile - v1.0.1

    Class OVectorPolysFeature

    Polys Vector Feature Type 3 Extends from

    See

    OVectorFeatureBase2D. @@ -51,11 +51,11 @@

    Methods

    • adds the tesselation to the geometry

      Parameters

      • geometry: number[]

        the geometry of the feature

      • multiplier: number

        the multiplier to apply the extent shift

        -

      Returns void

    • Returns BBox

      the BBox of the feature (in lon-lat space)

      +

    Returns void

    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/classes/Pbf.html b/docs/classes/Pbf.html index c311c0a..782d555 100644 --- a/docs/classes/Pbf.html +++ b/docs/classes/Pbf.html @@ -1,4 +1,4 @@ -Pbf | open-vector-tile - v1.0.0

    Create a new PBF instance and either read or write to it. +Pbf | open-vector-tile - v1.0.1

    Create a new PBF instance and either read or write to it. Follows the early Protobuf spec supporting various types of encoding including messages (which are usually representative of class objects).

    Reading:

    @@ -316,4 +316,4 @@ with an associated tag.

    Parameters

    • tag: number

      the tag to write to associate with the value.

    • val: number

      the unsigned number to write.

      -

    Returns void

    \ No newline at end of file +

    Returns void

    \ No newline at end of file diff --git a/docs/classes/VectorFeatureBase.html b/docs/classes/VectorFeatureBase.html index 6138595..e5a5127 100644 --- a/docs/classes/VectorFeatureBase.html +++ b/docs/classes/VectorFeatureBase.html @@ -1,10 +1,20 @@ -VectorFeatureBase | open-vector-tile - v1.0.0

    Class VectorFeatureBase

    Base Vector Feature +VectorFeatureBase | open-vector-tile - v1.0.1

    Class VectorFeatureBase<G, B>

    Base Vector Feature Common variables and methods shared by all vector features

    -

    Hierarchy (view full)

    Constructors

    Properties

    id? +

    Type Parameters

    Hierarchy (view full)

    Constructors

    Properties

    Constructors

    Accessors

    Constructors

    • Type Parameters

      Parameters

      • geometry: G

        the geometry of the feature

        +
      • properties: OProperties = {}

        the properties of the feature

      • Optional id: number

        the id of the feature if there is one

        -

      Returns VectorFeatureBase

    Properties

    id?: number

    the id of the feature if there is one

    +
  • Optional bbox: B

    the BBox of the feature

    +
  • Returns VectorFeatureBase<G, B>

    Properties

    bbox?: B

    the BBox of the feature

    +
    geometry: G

    the geometry of the feature

    +
    id?: number

    the id of the feature if there is one

    properties: OProperties = {}

    the properties of the feature

    -
    \ No newline at end of file +

    Accessors

    • get hasBBox(): boolean
    • Returns boolean

        +
      • true if the feature has BBox
      • +
      +
    \ No newline at end of file diff --git a/docs/classes/VectorFeatureLinesBase.html b/docs/classes/VectorFeatureLinesBase.html new file mode 100644 index 0000000..c61e79e --- /dev/null +++ b/docs/classes/VectorFeatureLinesBase.html @@ -0,0 +1,35 @@ +VectorFeatureLinesBase | open-vector-tile - v1.0.1

    Class VectorFeatureLinesBase<G, B>

    Base Vector Lines Feature

    +

    Type Parameters

    Hierarchy (view full)

    Constructors

    Properties

    bbox?: B

    the BBox of the feature

    +
    geometry: BaseVectorLine<G>[]

    the geometry of the feature

    +
    id?: number

    the id of the feature if there is one

    +
    properties: OProperties = {}

    the properties of the feature

    +

    Accessors

    • get hasBBox(): boolean
    • Returns boolean

        +
      • true if the feature has BBox
      • +
      +
    • get hasMValues(): boolean
    • Returns boolean

        +
      • true if the feature has M values
      • +
      +
    • get hasOffsets(): boolean
    • Returns boolean

        +
      • true if the feature has offsets
      • +
      +

    Methods

    • Parameters

      • cache: ColumnCacheWriter

        the column cache to store the geometry

        +
      • mShape: Shape = {}

        the shape of the M-values to encode the values as

        +

      Returns number

      the indexes in the points column where the geometry is stored

      +
    • Returns G[]

      the flattened geometry

      +
    \ No newline at end of file diff --git a/docs/classes/VectorFeaturePointsBase.html b/docs/classes/VectorFeaturePointsBase.html new file mode 100644 index 0000000..f97e96a --- /dev/null +++ b/docs/classes/VectorFeaturePointsBase.html @@ -0,0 +1,33 @@ +VectorFeaturePointsBase | open-vector-tile - v1.0.1

    Class VectorFeaturePointsBase<G, B>

    Base Vector Points Feature

    +

    Type Parameters

    Hierarchy (view full)

    Constructors

    Properties

    bbox?: B

    the BBox of the feature

    +
    geometry: G

    the geometry of the feature

    +
    id?: number

    the id of the feature if there is one

    +
    properties: OProperties = {}

    the properties of the feature

    +

    Accessors

    • get hasBBox(): boolean
    • Returns boolean

        +
      • true if the feature has BBox
      • +
      +
    • get hasMValues(): boolean
    • Points do not have this feature, so return false

      +

      Returns boolean

      false always

      +
    • get hasOffsets(): boolean
    • Points do not have this feature, so return false

      +

      Returns boolean

      false always

      +

    Methods

    • Parameters

      • cache: ColumnCacheWriter

        the column cache to store the geometry

        +
      • mShape: Shape = {}

        the shape of the M-values to encode the values as

        +

      Returns number

      the index in the points column where the geometry is stored

      +
    • Returns G

      the geometry

      +
    \ No newline at end of file diff --git a/docs/classes/VectorFeaturePolysBase.html b/docs/classes/VectorFeaturePolysBase.html new file mode 100644 index 0000000..e9c9e90 --- /dev/null +++ b/docs/classes/VectorFeaturePolysBase.html @@ -0,0 +1,37 @@ +VectorFeaturePolysBase | open-vector-tile - v1.0.1

    Class VectorFeaturePolysBase<G, B>

    Base Vector Polys Feature

    +

    Type Parameters

    Hierarchy (view full)

    Constructors

    Properties

    bbox?: B

    the bbox of the feature

    +
    geometry: BaseVectorLine<G>[][]

    the geometry of the feature

    +
    id?: number

    the id of the feature if there is one

    +
    indices: number[] = []

    the indices of the geometry

    +
    properties: OProperties = {}

    the properties of the feature

    +

    Accessors

    • get hasBBox(): boolean
    • Returns boolean

        +
      • true if the feature has BBox
      • +
      +
    • get hasMValues(): boolean
    • Returns boolean

        +
      • true if the feature has M values
      • +
      +
    • get hasOffsets(): boolean
    • Returns boolean

      true if the feature has offsets

      +

    Methods

    • Parameters

      • cache: ColumnCacheWriter

        the column cache to store the geometry

        +
      • mShape: Shape = {}

        the shape of the M-values to encode the values as

        +

      Returns number

      the indexes in the points column where the geometry is stored

      +
    • Returns G[][]

      the flattened geometry

      +
    \ No newline at end of file diff --git a/docs/classes/VectorTile.html b/docs/classes/VectorTile.html index 66d675e..4d045ad 100644 --- a/docs/classes/VectorTile.html +++ b/docs/classes/VectorTile.html @@ -1,4 +1,4 @@ -VectorTile | open-vector-tile - v1.0.0

    A Vector Tile may parse either Mapbox or OpenVector Tile Layers +VectorTile | open-vector-tile - v1.0.1

    A Vector Tile may parse either Mapbox or OpenVector Tile Layers The input is a Uint8Array that has encoded protobuffer messages.

    See

    Protobuf.

    Example:

    @@ -7,4 +7,4 @@

    Constructors

    Constructors

    • Parameters

      • data: Uint8Array

        the input data to parse

      • end: number = 0

        the size of the data, leave blank to parse the entire data

        -

      Returns VectorTile

    \ No newline at end of file +

    Returns VectorTile

    \ No newline at end of file diff --git a/docs/enums/OColumnName.html b/docs/enums/OColumnName.html index 4dc495a..6f1a0a0 100644 --- a/docs/enums/OColumnName.html +++ b/docs/enums/OColumnName.html @@ -1,4 +1,4 @@ -OColumnName | open-vector-tile - v1.0.0

    Enumeration OColumnName

    Column Types take up 3 bits. +OColumnName | open-vector-tile - v1.0.1

    Enumeration OColumnName

    Column Types take up 3 bits. ColumnNames define various common data structures to be stored in a column fashion

    Enumeration Members

    bbox double @@ -35,4 +35,4 @@
    string: 0

    stores

    unsigned: 1

    Note: IDs are stored in unsigned Number types are sorted prior to storing

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/functions/createShapeFromData.html b/docs/functions/createShapeFromData.html index f022ed2..c49c9b2 100644 --- a/docs/functions/createShapeFromData.html +++ b/docs/functions/createShapeFromData.html @@ -1,5 +1,5 @@ -createShapeFromData | open-vector-tile - v1.0.0

    Function createShapeFromData

    • Parameters

      • data: OProperties[] | Properties[]

        the data to create the shape from

        +createShapeFromData | open-vector-tile - v1.0.1

        Function createShapeFromData

        • Parameters

          Returns Shape

          • the shape type we want to create based upon the data
          -
        \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/functions/decodeExtent.html b/docs/functions/decodeExtent.html index fe525d7..78aaaa9 100644 --- a/docs/functions/decodeExtent.html +++ b/docs/functions/decodeExtent.html @@ -1,5 +1,5 @@ -decodeExtent | open-vector-tile - v1.0.0

    Function decodeExtent

    • Parameters

      • encExtent: number

        number are in 0, 1, 2, 3, 4

        +decodeExtent | open-vector-tile - v1.0.1

        Function decodeExtent

        • Parameters

          • encExtent: number

            number are in 0, 1, 2, 3, 4

          Returns Extents

          • remap to smaller values: 0 -> 512, 1 -> 1024, 2 -> 2048, 3 -> 4096, 4 -> 8192
          -
        \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/functions/decodeOffset.html b/docs/functions/decodeOffset.html index fdb1ec3..495b993 100644 --- a/docs/functions/decodeOffset.html +++ b/docs/functions/decodeOffset.html @@ -1,6 +1,6 @@ -decodeOffset | open-vector-tile - v1.0.0

    Function decodeOffset

    • Decode offset from a signed integer into a float or double

      +decodeOffset | open-vector-tile - v1.0.1

      Function decodeOffset

      • Decode offset from a signed integer into a float or double

        Parameters

        • offset: number

          the signed integer to be decompressed

        Returns number

        • a float or double that restores 3 decimal places
        -
      \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/functions/decodeShape.html b/docs/functions/decodeShape.html index 8fe0009..c738e3e 100644 --- a/docs/functions/decodeShape.html +++ b/docs/functions/decodeShape.html @@ -1,6 +1,6 @@ -decodeShape | open-vector-tile - v1.0.0

    Function decodeShape

    • Parameters

      • shapeIndex: number

        the index to the key indices and whether the value is an object or not

        +decodeShape | open-vector-tile - v1.0.1

        Function decodeShape

        • Parameters

          • shapeIndex: number

            the index to the key indices and whether the value is an object or not

          • cache: ColumnCacheReader

            the cache where all data is stored in a column format

          Returns Shape

          • The shape object
          -
        \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/functions/decodeValue.html b/docs/functions/decodeValue.html index 2a6b2aa..c8fa622 100644 --- a/docs/functions/decodeValue.html +++ b/docs/functions/decodeValue.html @@ -1,5 +1,5 @@ -decodeValue | open-vector-tile - v1.0.0

    Function decodeValue

    • Parameters

      • valueIndex: number

        the index of the encoded value in the cache

        +decodeValue | open-vector-tile - v1.0.1

        Function decodeValue

        • Parameters

          • valueIndex: number

            the index of the encoded value in the cache

          • shape: Shape

            the shape of the value to decode

          • cache: ColumnCacheReader

            the cache where all data is stored in a column format

          Returns OProperties

          The decoded value

          -
        \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/functions/encodeExtent.html b/docs/functions/encodeExtent.html index 1745a52..3c947dc 100644 --- a/docs/functions/encodeExtent.html +++ b/docs/functions/encodeExtent.html @@ -1,5 +1,5 @@ -encodeExtent | open-vector-tile - v1.0.0

    Function encodeExtent

    • Parameters

      • extent: Extents

        number are in 512, 1024, 2048, 4096, 8192

        +encodeExtent | open-vector-tile - v1.0.1

        Function encodeExtent

        • Parameters

          • extent: Extents

            number are in 512, 1024, 2048, 4096, 8192

          Returns number

          • remap to smaller values: 0 -> 512, 1 -> 1024, 2 -> 2048, 3 -> 4096, 4 -> 8192
          -
        \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/functions/encodeOffset.html b/docs/functions/encodeOffset.html index 2970e92..ccc5abc 100644 --- a/docs/functions/encodeOffset.html +++ b/docs/functions/encodeOffset.html @@ -1,6 +1,6 @@ -encodeOffset | open-vector-tile - v1.0.0

    Function encodeOffset

    • Encode offset values into a signed integer to reduce byte cost without too much loss

      +encodeOffset | open-vector-tile - v1.0.1

      Function encodeOffset

      • Encode offset values into a signed integer to reduce byte cost without too much loss

        Parameters

        • offset: number

          float or double value to be compressed

        Returns number

        • a signed integer that saves 3 decimal places
        -
      \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/functions/encodeShape.html b/docs/functions/encodeShape.html index dcdcda9..a0accbc 100644 --- a/docs/functions/encodeShape.html +++ b/docs/functions/encodeShape.html @@ -1,4 +1,4 @@ -encodeShape | open-vector-tile - v1.0.0

    Function encodeShape

    • Create shapes

      +encodeShape | open-vector-tile - v1.0.1

      Function encodeShape

      • Create shapes

        Used by Layer's and Feature's M-Values Must be an object of key values all keys will be the same, values will be different @@ -9,4 +9,4 @@

      Returns number

      • The index of where the shape was stored in the cache
      -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/functions/encodeValue.html b/docs/functions/encodeValue.html index b87aeb6..1fe9ef7 100644 --- a/docs/functions/encodeValue.html +++ b/docs/functions/encodeValue.html @@ -1,7 +1,7 @@ -encodeValue | open-vector-tile - v1.0.0

    Function encodeValue

    • Parameters

      • value: OProperties

        the value to encode

        +encodeValue | open-vector-tile - v1.0.1

        Function encodeValue

        • Parameters

          Returns number

          • The index of where the value was stored in the cache
          -
        \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/functions/fromMapboxVectorFeature.html b/docs/functions/fromMapboxVectorFeature.html index ef5ca2a..d6e95d1 100644 --- a/docs/functions/fromMapboxVectorFeature.html +++ b/docs/functions/fromMapboxVectorFeature.html @@ -1,5 +1,5 @@ -fromMapboxVectorFeature | open-vector-tile - v1.0.0

    Function fromMapboxVectorFeature

    • Parameters

      • feature: MapboxVectorFeature

        A mapbox vector feature that's been parsed from protobuf data

        +fromMapboxVectorFeature | open-vector-tile - v1.0.1

        Function fromMapboxVectorFeature

        \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/functions/readFeature.html b/docs/functions/readFeature.html index fc2c1d5..6587ce5 100644 --- a/docs/functions/readFeature.html +++ b/docs/functions/readFeature.html @@ -1,4 +1,4 @@ -readFeature | open-vector-tile - v1.0.0

    Function readFeature

    • Parameters

      • bytes: Uint8Array

        the bytes to read from

        +readFeature | open-vector-tile - v1.0.1

        Function readFeature

        • Parameters

          • bytes: Uint8Array

            the bytes to read from

          • extent: Extents

            the extent of the vector layer to help decode the geometry

          • cache: ColumnCacheReader

            the column cache to read from

          • shape: Shape

            the shape of the feature's properties data

            @@ -6,4 +6,4 @@

          Returns OVectorFeature

          • the decoded feature
          -
        \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/functions/serializeS2.html b/docs/functions/serializeS2.html index 86f5353..b50282f 100644 --- a/docs/functions/serializeS2.html +++ b/docs/functions/serializeS2.html @@ -1,8 +1,8 @@ -serializeS2 | open-vector-tile - v1.0.0

    Function serializeS2

    • Parameters

      • tile: BaseVectorTile | VectorTile

        the tile to serialize. Either a BaseVectorTile or a MapboxVectorTile

        +serializeS2 | open-vector-tile - v1.0.1

        Function serializeS2

        • Parameters

          Returns Uint8Array

          • a Uint8Array of the tile

          Deprecated

          • use writeOVTile instead
          -
        \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/functions/updateShapeFromData.html b/docs/functions/updateShapeFromData.html index a96aba6..202a70d 100644 --- a/docs/functions/updateShapeFromData.html +++ b/docs/functions/updateShapeFromData.html @@ -1,4 +1,4 @@ -updateShapeFromData | open-vector-tile - v1.0.0

    Function updateShapeFromData

    • Update/Mutate the shape from the data provided

      +updateShapeFromData | open-vector-tile - v1.0.1

      Function updateShapeFromData

      • Update/Mutate the shape from the data provided

        Parameters

        Returns void

      \ No newline at end of file +

    Returns void

    \ No newline at end of file diff --git a/docs/functions/validateTypes.html b/docs/functions/validateTypes.html index 3e08a6f..b9ac09c 100644 --- a/docs/functions/validateTypes.html +++ b/docs/functions/validateTypes.html @@ -1,4 +1,4 @@ -validateTypes | open-vector-tile - v1.0.0

    Function validateTypes

    • This is primarily to check if the type is a primitive. +validateTypes | open-vector-tile - v1.0.1

      Function validateTypes

      • This is primarily to check if the type is a primitive. If the primitive is a number, find the "depth", the most complex is f64, then i64, then u64. Otherwise, if the primitives don't match, throw an error. If the type is NOT a primitive, ensure that all types in the array match

        @@ -6,4 +6,4 @@

      Returns ShapeType

      • a single type from the list to validate the correct type to be parsed from values later
      -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/functions/writeOVFeature.html b/docs/functions/writeOVFeature.html index 5f152b0..229c007 100644 --- a/docs/functions/writeOVFeature.html +++ b/docs/functions/writeOVFeature.html @@ -1,8 +1,8 @@ -writeOVFeature | open-vector-tile - v1.0.0

    Function writeOVFeature

    • Parameters

      • feature: BaseVectorFeature

        BaseVectorFeature to build a buffer from

        +writeOVFeature | open-vector-tile - v1.0.1

        Function writeOVFeature

        • Parameters

          • feature: BaseVectorFeature

            BaseVectorFeature to build a buffer from

          • shape: Shape

            The shape of the feature's properties data

          • mShape: Shape = {}

            The shape of the feature's m-values if they exist

          • cache: ColumnCacheWriter

            where to store all feature data to in columns

          Returns Buffer

          • Compressed indexes for the feature
          -
        \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/functions/writeOVLayer.html b/docs/functions/writeOVLayer.html index 68ddaf1..6214e44 100644 --- a/docs/functions/writeOVLayer.html +++ b/docs/functions/writeOVLayer.html @@ -1,4 +1,4 @@ -writeOVLayer | open-vector-tile - v1.0.0

    Function writeOVLayer

    • Because of the Column Cache, a layer will contain:

      +writeOVLayer | open-vector-tile - v1.0.1

      Function writeOVLayer

      • Because of the Column Cache, a layer will contain:

        • version 1 byte
        • extent (1 byte) - 1 -> 1024, 2 -> 2048, 3 -> 4096, 4 -> 8192
        • @@ -10,4 +10,4 @@
      • layer: BaseVectorLayer

        the layer to encode into the Protobuffer

    • pbf: Pbf

      the pbf protocol we are writing to

    • verbose: boolean = false

      set to true to print out write information

      -

    Returns void

    \ No newline at end of file +

    Returns void

    \ No newline at end of file diff --git a/docs/functions/writeOVTile.html b/docs/functions/writeOVTile.html index 0472767..ac4aa0e 100644 --- a/docs/functions/writeOVTile.html +++ b/docs/functions/writeOVTile.html @@ -1,7 +1,7 @@ -writeOVTile | open-vector-tile - v1.0.0

    Function writeOVTile

    • Write a tile to a Protobuf. and return a buffer

      +writeOVTile | open-vector-tile - v1.0.1

      Function writeOVTile

      • Write a tile to a Protobuf. and return a buffer

        Parameters

        • tile: BaseVectorTile | VectorTile

          the tile may be a base vector tile or a S2/Mapbox vector tile

        • verbose: boolean = false

          whether to print debug messages

        Returns Uint8Array

        • a protobuffer encoded buffer using the Open Vector Tile Spec
        -
      \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/hierarchy.html b/docs/hierarchy.html index 0701d3e..11242ea 100644 --- a/docs/hierarchy.html +++ b/docs/hierarchy.html @@ -1 +1 @@ -open-vector-tile - v1.0.0
    \ No newline at end of file +open-vector-tile - v1.0.1
    \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 9646b9a..baad4e1 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,4 +1,4 @@ -open-vector-tile - v1.0.0

    open-vector-tile - v1.0.0

    open-vector-tile GitHub Actions Workflow Status npm crate downloads bundle docs-ts docs-rust doc-coverage code-coverage Discord

    About

    A Modified TypeScript implementation of the Mapbox Vector Tile library. It is backwards compatible but offers a lot of new features and improvements including (but not limited to):

    +open-vector-tile - v1.0.1

    open-vector-tile - v1.0.1

    open-vector-tile GitHub Actions Workflow Status npm crate downloads bundle docs-ts docs-rust doc-coverage code-coverage Discord

    About

    A Modified TypeScript implementation of the Mapbox Vector Tile library. It is backwards compatible but offers a lot of new features and improvements including (but not limited to):

    • 🔗 lightweight zero dependency builds.
    • 🌴 Proper module treeshake.
    • @@ -53,4 +53,4 @@

      Generating Coverage Report

      To generate the coverage report, use the following command:

      cargo tarpaulin
      # bacon
      bacon coverage # or type `l` inside the tool
      -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/interfaces/Point.html b/docs/interfaces/Point.html index 8bdabcb..3e253f0 100644 --- a/docs/interfaces/Point.html +++ b/docs/interfaces/Point.html @@ -1,3 +1,3 @@ -Point | open-vector-tile - v1.0.0

    Interface Point

    Open Vector Spec can be an x,y but also may contain an MValue if the geometry is +Point | open-vector-tile - v1.0.1

    Interface Point

    Open Vector Spec can be an x,y but also may contain an MValue if the geometry is a line or polygon

    -
    interface Point {}
    \ No newline at end of file +
    interface Point {}
    \ No newline at end of file diff --git a/docs/interfaces/Point3D.html b/docs/interfaces/Point3D.html index 1a5bc1d..9558a5a 100644 --- a/docs/interfaces/Point3D.html +++ b/docs/interfaces/Point3D.html @@ -1,3 +1,3 @@ -Point3D | open-vector-tile - v1.0.0

    Interface Point3D

    Open Vector Spec can be an x,y,z but also may contain an MValue if the geometry +Point3D | open-vector-tile - v1.0.1

    Interface Point3D

    Open Vector Spec can be an x,y,z but also may contain an MValue if the geometry is a line or polygon

    -
    interface Point3D {}
    \ No newline at end of file +
    interface Point3D {}
    \ No newline at end of file diff --git a/docs/interfaces/PositionReference.html b/docs/interfaces/PositionReference.html index bb12554..5884924 100644 --- a/docs/interfaces/PositionReference.html +++ b/docs/interfaces/PositionReference.html @@ -1,3 +1,3 @@ -PositionReference | open-vector-tile - v1.0.0

    Interface PositionReference

    Represents a reference to the position in the protobuf to deserialize.

    +PositionReference | open-vector-tile - v1.0.1

    Interface PositionReference

    Represents a reference to the position in the protobuf to deserialize.

    Param: pos

    The position in the protobuf data.

    -
    interface PositionReference {}
    \ No newline at end of file +
    interface PositionReference {}
    \ No newline at end of file diff --git a/docs/interfaces/RawData.html b/docs/interfaces/RawData.html index 108ee40..21c5dcc 100644 --- a/docs/interfaces/RawData.html +++ b/docs/interfaces/RawData.html @@ -1,3 +1,3 @@ -RawData | open-vector-tile - v1.0.0

    Interface RawData<T>

    Represents a reference to the position in the protobuf to deserialize.

    +RawData | open-vector-tile - v1.0.1

    Interface RawData<T>

    Represents a reference to the position in the protobuf to deserialize.

    Param: pos

    The position in the protobuf data.

    -
    interface RawData<T> {}

    Type Parameters

    • T
    \ No newline at end of file +
    interface RawData<T> {}

    Type Parameters

    • T
    \ No newline at end of file diff --git a/docs/interfaces/Shape.html b/docs/interfaces/Shape.html index e148513..2cc9df9 100644 --- a/docs/interfaces/Shape.html +++ b/docs/interfaces/Shape.html @@ -1,2 +1,2 @@ -Shape | open-vector-tile - v1.0.0

    Interface Shape

    The Shape Object

    -
    interface Shape {}
    \ No newline at end of file +Shape | open-vector-tile - v1.0.1

    Interface Shape

    The Shape Object

    +
    interface Shape {}
    \ No newline at end of file diff --git a/docs/interfaces/ShapePair.html b/docs/interfaces/ShapePair.html index af1c2d7..fdd2751 100644 --- a/docs/interfaces/ShapePair.html +++ b/docs/interfaces/ShapePair.html @@ -1,6 +1,6 @@ -ShapePair | open-vector-tile - v1.0.0

    Interface ShapePair

    A shape pair for stronger compression and decoding

    +ShapePair | open-vector-tile - v1.0.1

    Interface ShapePair

    A shape pair for stronger compression and decoding

    interface ShapePair {
        countOrCol: number;
        type: 0 | 1 | 2;
    }

    Properties

    Properties

    countOrCol: number

    the length if object or array; or the column to read from

    type: 0 | 1 | 2

    The type (0 - array, 1 - object, 2 - value)

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/interfaces/Tag.html b/docs/interfaces/Tag.html index 0f01f77..46dd9c2 100644 --- a/docs/interfaces/Tag.html +++ b/docs/interfaces/Tag.html @@ -1,6 +1,6 @@ -Tag | open-vector-tile - v1.0.0

    Interface Tag

    A tag is a pair of a number and a type.

    +Tag | open-vector-tile - v1.0.1

    Interface Tag

    A tag is a pair of a number and a type.

    interface Tag {
        tag: number;
        type: number;
    }

    Properties

    Properties

    tag: number

    the number of the tag

    type: number

    the type of the tag

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/interfaces/VectorLine3DWithOffset.html b/docs/interfaces/VectorLine3DWithOffset.html index fbf0755..f78e753 100644 --- a/docs/interfaces/VectorLine3DWithOffset.html +++ b/docs/interfaces/VectorLine3DWithOffset.html @@ -1,6 +1,6 @@ -VectorLine3DWithOffset | open-vector-tile - v1.0.0

    Interface VectorLine3DWithOffset

    Built array line data with associated offset to help render dashed lines across tiles.

    +VectorLine3DWithOffset | open-vector-tile - v1.0.1

    Interface VectorLine3DWithOffset

    Built array line data with associated offset to help render dashed lines across tiles.

    interface VectorLine3DWithOffset {
        geometry: VectorLine3D;
        offset: number;
    }

    Properties

    Properties

    geometry: VectorLine3D

    the line data

    offset: number

    the offset of the line to start processing the dash position

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/interfaces/VectorLineWithOffset.html b/docs/interfaces/VectorLineWithOffset.html index 6ca2fa5..04c2a35 100644 --- a/docs/interfaces/VectorLineWithOffset.html +++ b/docs/interfaces/VectorLineWithOffset.html @@ -1,6 +1,6 @@ -VectorLineWithOffset | open-vector-tile - v1.0.0

    Interface VectorLineWithOffset

    Built array line data with associated offset to help render dashed lines across tiles.

    +VectorLineWithOffset | open-vector-tile - v1.0.1

    Interface VectorLineWithOffset

    Built array line data with associated offset to help render dashed lines across tiles.

    interface VectorLineWithOffset {
        geometry: VectorLine;
        offset: number;
    }

    Properties

    Properties

    geometry: VectorLine

    the line data

    offset: number

    the offset of the line to start processing the dash position

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/modules.html b/docs/modules.html index b20d950..9317873 100644 --- a/docs/modules.html +++ b/docs/modules.html @@ -1,7 +1,6 @@ -open-vector-tile - v1.0.0

    open-vector-tile - v1.0.0

    Index

    Enumerations

    OColumnName +open-vector-tile - v1.0.1
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/types/BBox-1.html b/docs/types/BBox-1.html new file mode 100644 index 0000000..7b182c6 --- /dev/null +++ b/docs/types/BBox-1.html @@ -0,0 +1,3 @@ +BBox | open-vector-tile - v1.0.1

    Type alias BBox

    BBox: [left: number, bottom: number, right: number, top: number]

    A BBOX is defined in lon-lat space and helps with zooming motion to +see the entire line or polygon

    +
    \ No newline at end of file diff --git a/docs/types/BBox.html b/docs/types/BBox.html index 87533ce..2b8a482 100644 --- a/docs/types/BBox.html +++ b/docs/types/BBox.html @@ -1,3 +1,2 @@ -BBox | open-vector-tile - v1.0.0

    Type alias BBox

    BBox: [left: number, bottom: number, right: number, top: number]

    A BBOX is defined in lon-lat space and helps with zooming motion to -see the entire line or polygon

    -
    \ No newline at end of file +BBOX | open-vector-tile - v1.0.1

    Type alias BBOX

    BBOX: BBox | BBox3D

    A 2D or 3D Bounding Box

    +
    \ No newline at end of file diff --git a/docs/types/BBox3D.html b/docs/types/BBox3D.html index ac11c2f..8a87665 100644 --- a/docs/types/BBox3D.html +++ b/docs/types/BBox3D.html @@ -1,3 +1,3 @@ -BBox3D | open-vector-tile - v1.0.0

    Type alias BBox3D

    BBox3D: [left: number, bottom: number, right: number, top: number, near: number, far: number]

    A BBOX is defined in lon-lat space and helps with zooming motion to +BBox3D | open-vector-tile - v1.0.1

    Type alias BBox3D

    BBox3D: [left: number, bottom: number, right: number, top: number, near: number, far: number]

    A BBOX is defined in lon-lat space and helps with zooming motion to see the entire 3D line or polygon

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/types/BaseVectorFeature.html b/docs/types/BaseVectorFeature.html index dc8c85c..f2a5ae6 100644 --- a/docs/types/BaseVectorFeature.html +++ b/docs/types/BaseVectorFeature.html @@ -1,2 +1,2 @@ -BaseVectorFeature | open-vector-tile - v1.0.0

    Type alias BaseVectorFeature

    A type that encompasses all vector tile feature types

    -
    \ No newline at end of file +BaseVectorFeature | open-vector-tile - v1.0.1

    Type alias BaseVectorFeature

    A type that encompasses all vector tile feature types

    +
    \ No newline at end of file diff --git a/docs/types/ColumnValue.html b/docs/types/ColumnValue.html index 2d42caa..39b7671 100644 --- a/docs/types/ColumnValue.html +++ b/docs/types/ColumnValue.html @@ -1,4 +1,4 @@ -ColumnValue | open-vector-tile - v1.0.0

    Type alias ColumnValue

    ColumnValue: number | ColumnValueRef

    A value is a collection of lookup devices. A number is decoded by the appropriate function, +ColumnValue | open-vector-tile - v1.0.1

    Type alias ColumnValue

    ColumnValue: number | ColumnValueRef

    A value is a collection of lookup devices. A number is decoded by the appropriate function, but the object is a reference to one of the number columns. Number types are eventually sorted, so we track the column and index with the data.

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/types/ColumnValueRead.html b/docs/types/ColumnValueRead.html index daf3bc8..21073a6 100644 --- a/docs/types/ColumnValueRead.html +++ b/docs/types/ColumnValueRead.html @@ -1,7 +1,7 @@ -ColumnValueRead | open-vector-tile - v1.0.0

    Type alias ColumnValueRead<T>

    ColumnValueRead<T>: (RawData<T> | PositionReference)[]

    note: base1 type allows you to decode as needed for each grouping of data. +ColumnValueRead | open-vector-tile - v1.0.1

    Type alias ColumnValueRead<T>

    ColumnValueRead<T>: (RawData<T> | PositionReference)[]

    note: base1 type allows you to decode as needed for each grouping of data. for instance OColumnString is an array of strings, but you may only need a few strings on use. Store either data itself or a reference to the position in the protobuf to deserialize

    Type Parameters

    • T

      Any Type

    Param: data

    the data parsed and available. Kept to reduce fetch duplication

    Param: pos

    the position in the protobuf to fetch the data

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/types/ColumnValueReadSimple.html b/docs/types/ColumnValueReadSimple.html index 47caf41..c67ec30 100644 --- a/docs/types/ColumnValueReadSimple.html +++ b/docs/types/ColumnValueReadSimple.html @@ -1,3 +1,3 @@ -ColumnValueReadSimple | open-vector-tile - v1.0.0

    Type alias ColumnValueReadSimple<T>

    ColumnValueReadSimple<T>: (T | PositionReference)[]

    Store either data itself or a reference to the position in the protobuf to deserialize

    +ColumnValueReadSimple | open-vector-tile - v1.0.1

    Type alias ColumnValueReadSimple<T>

    ColumnValueReadSimple<T>: (T | PositionReference)[]

    Store either data itself or a reference to the position in the protobuf to deserialize

    Type Parameters

    • T

      Any Type; the raw data parsed and available. Kept to reduce fetch duplication

      -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/types/ColumnValueRef.html b/docs/types/ColumnValueRef.html index fa97df1..19b4a2b 100644 --- a/docs/types/ColumnValueRef.html +++ b/docs/types/ColumnValueRef.html @@ -1,3 +1,3 @@ -ColumnValueRef | open-vector-tile - v1.0.0

    Type alias ColumnValueRef

    ColumnValueRef: OColumnBaseChunk<unknown>

    All columns are stored as an object to be able to reference them later. +ColumnValueRef | open-vector-tile - v1.0.1

    Type alias ColumnValueRef

    ColumnValueRef: OColumnBaseChunk<unknown>

    All columns are stored as an object to be able to reference them later. Some columns will use this to sort, others will simply be used to store the raw data.

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/types/Extents.html b/docs/types/Extents.html index b6e9668..0b702fa 100644 --- a/docs/types/Extents.html +++ b/docs/types/Extents.html @@ -1,2 +1,2 @@ -Extents | open-vector-tile - v1.0.0

    Type alias Extents

    Extents: 8192 | 4096 | 2048 | 1024 | 512

    Extents are the tile size limits of what a user can use to encode a geometry.

    -
    \ No newline at end of file +Extents | open-vector-tile - v1.0.1

    Type alias Extents

    Extents: 8192 | 4096 | 2048 | 1024 | 512

    Extents are the tile size limits of what a user can use to encode a geometry.

    +
    \ No newline at end of file diff --git a/docs/types/OColumnBaseChunk.html b/docs/types/OColumnBaseChunk.html index a8ceb33..8a47034 100644 --- a/docs/types/OColumnBaseChunk.html +++ b/docs/types/OColumnBaseChunk.html @@ -1,7 +1,7 @@ -OColumnBaseChunk | open-vector-tile - v1.0.0

    Type alias OColumnBaseChunk<T>

    OColumnBaseChunk<T>: {
        col: OColumnName;
        count: number;
        data: T;
        index: number;
    }

    Numbers track their own index for sorting purposes

    +OColumnBaseChunk | open-vector-tile - v1.0.1

    Type alias OColumnBaseChunk<T>

    OColumnBaseChunk<T>: {
        col: OColumnName;
        count: number;
        data: T;
        index: number;
    }

    Numbers track their own index for sorting purposes

    Type Parameters

    • T

    Type declaration

    • col: OColumnName

      The column type

    • count: number

      track how many times this chunk is reused

    • data: T

      The raw data in the column

    • index: number

      The index in the column. Will be updated during the writing phase when converted from a map to an array

      -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/types/OColumnBaseWrite.html b/docs/types/OColumnBaseWrite.html index faa8545..6789928 100644 --- a/docs/types/OColumnBaseWrite.html +++ b/docs/types/OColumnBaseWrite.html @@ -1,2 +1,2 @@ -OColumnBaseWrite | open-vector-tile - v1.0.0

    Type alias OColumnBaseWrite<K, V>

    OColumnBaseWrite<K, V>: Map<K, OColumnBaseChunk<V>>

    A building block for all column types.

    -

    Type Parameters

    • K
    • V = K
    \ No newline at end of file +OColumnBaseWrite | open-vector-tile - v1.0.1

    Type alias OColumnBaseWrite<K, V>

    OColumnBaseWrite<K, V>: Map<K, OColumnBaseChunk<V>>

    A building block for all column types.

    +

    Type Parameters

    • K
    • V = K
    \ No newline at end of file diff --git a/docs/types/OColumnNumbers.html b/docs/types/OColumnNumbers.html index b4923cb..cfe3da3 100644 --- a/docs/types/OColumnNumbers.html +++ b/docs/types/OColumnNumbers.html @@ -1,2 +1,2 @@ -OColumnNumbers | open-vector-tile - v1.0.0

    Type alias OColumnNumbers

    OColumnNumbers: signed | unsigned | float | double

    Just the number types in the store

    -
    \ No newline at end of file +OColumnNumbers | open-vector-tile - v1.0.1

    Type alias OColumnNumbers

    OColumnNumbers: signed | unsigned | float | double

    Just the number types in the store

    +
    \ No newline at end of file diff --git a/docs/types/OProperties.html b/docs/types/OProperties.html index 01fc5e4..42ecb5f 100644 --- a/docs/types/OProperties.html +++ b/docs/types/OProperties.html @@ -1,3 +1,3 @@ -OProperties | open-vector-tile - v1.0.0

    Type alias OProperties

    OProperties: Record<string, OValue>

    Some components inside the OpenVectorTile spec require the starting with an object of key-value pairs. +OProperties | open-vector-tile - v1.0.1

    Type alias OProperties

    OProperties: Record<string, OValue>

    Some components inside the OpenVectorTile spec require the starting with an object of key-value pairs. MValuesand feature properties are such a case.

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/types/OValue.html b/docs/types/OValue.html index 219d1f2..c8dc161 100644 --- a/docs/types/OValue.html +++ b/docs/types/OValue.html @@ -1,4 +1,4 @@ -OValue | open-vector-tile - v1.0.0

    Type alias OValue

    OValue: string | number | boolean | null | OValue[] | {
        [key: string]: OValue;
    }

    The new OpenVectorTile type can create complex nested objects. +OValue | open-vector-tile - v1.0.1

    Type alias OValue

    OValue: string | number | boolean | null | OValue[] | {
        [key: string]: OValue;
    }

    The new OpenVectorTile type can create complex nested objects. May either be a string, number, boolean, null, an array of those types, or an object of those types Object keys are always strings, values can be any basic type, an array, or a nested object.

    -

    Type declaration

    \ No newline at end of file +

    Type declaration

    \ No newline at end of file diff --git a/docs/types/OVectorFeature.html b/docs/types/OVectorFeature.html index 7f2958d..baa98b3 100644 --- a/docs/types/OVectorFeature.html +++ b/docs/types/OVectorFeature.html @@ -1,2 +1,2 @@ -OVectorFeature | open-vector-tile - v1.0.0

    Type alias OVectorFeature

    All feature class types. Points, Lines, and Polys for both 2D and 3D

    -
    \ No newline at end of file +OVectorFeature | open-vector-tile - v1.0.1

    Type alias OVectorFeature

    All feature class types. Points, Lines, and Polys for both 2D and 3D

    +
    \ No newline at end of file diff --git a/docs/types/OldVectorFeatureType.html b/docs/types/OldVectorFeatureType.html index fd631be..fd5726a 100644 --- a/docs/types/OldVectorFeatureType.html +++ b/docs/types/OldVectorFeatureType.html @@ -1,2 +1,2 @@ -OldVectorFeatureType | open-vector-tile - v1.0.0

    Type alias OldVectorFeatureType

    OldVectorFeatureType: 1 | 2 | 3 | 4

    Mapbox Vector Feature types.

    -
    \ No newline at end of file +OldVectorFeatureType | open-vector-tile - v1.0.1

    Type alias OldVectorFeatureType

    OldVectorFeatureType: 1 | 2 | 3 | 4

    Mapbox Vector Feature types.

    +
    \ No newline at end of file diff --git a/docs/types/PrimitiveShapes.html b/docs/types/PrimitiveShapes.html index aa533c7..7e1730d 100644 --- a/docs/types/PrimitiveShapes.html +++ b/docs/types/PrimitiveShapes.html @@ -1,2 +1,2 @@ -PrimitiveShapes | open-vector-tile - v1.0.0

    Type alias PrimitiveShapes

    PrimitiveShapes: "string" | "f32" | "f64" | "u64" | "i64" | "bool" | "null"

    Primitive types that can be found in a shape

    -
    \ No newline at end of file +PrimitiveShapes | open-vector-tile - v1.0.1

    Type alias PrimitiveShapes

    PrimitiveShapes: "string" | "f32" | "f64" | "u64" | "i64" | "bool" | "null"

    Primitive types that can be found in a shape

    +
    \ No newline at end of file diff --git a/docs/types/Properties.html b/docs/types/Properties.html index 462e521..68dc35f 100644 --- a/docs/types/Properties.html +++ b/docs/types/Properties.html @@ -1,3 +1,3 @@ -Properties | open-vector-tile - v1.0.0

    Type alias Properties

    Properties: Record<string, Value>

    A Mapbox Properties is a storage structure for the vector feature. keys are strings, values are +Properties | open-vector-tile - v1.0.1

    Type alias Properties

    Properties: Record<string, Value>

    A Mapbox Properties is a storage structure for the vector feature. keys are strings, values are any basic type of Value

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/types/ReadFieldFunction.html b/docs/types/ReadFieldFunction.html index 97c9606..3b35857 100644 --- a/docs/types/ReadFieldFunction.html +++ b/docs/types/ReadFieldFunction.html @@ -1,3 +1,3 @@ -ReadFieldFunction | open-vector-tile - v1.0.0

    Type alias ReadFieldFunction<U>

    ReadFieldFunction<U>: ((tag, input, pbf) => void)

    User defined function to read in fields from a Pbf instance into input.

    +ReadFieldFunction | open-vector-tile - v1.0.1

    Type alias ReadFieldFunction<U>

    ReadFieldFunction<U>: ((tag, input, pbf) => void)

    User defined function to read in fields from a Pbf instance into input.

    Type Parameters

    • U

      the input type

      -

    Type declaration

      • (tag, input, pbf): void
      • Parameters

        • tag: number
        • input: U
        • pbf: Pbf

        Returns void

    \ No newline at end of file +

    Type declaration

      • (tag, input, pbf): void
      • Parameters

        • tag: number
        • input: U
        • pbf: Pbf

        Returns void

    \ No newline at end of file diff --git a/docs/types/ShapeType.html b/docs/types/ShapeType.html index 728ffcb..837bfc6 100644 --- a/docs/types/ShapeType.html +++ b/docs/types/ShapeType.html @@ -1,4 +1,4 @@ -ShapeType | open-vector-tile - v1.0.0

    Type alias ShapeType

    Shape types that can be found in a shapes object. +ShapeType | open-vector-tile - v1.0.1

    Type alias ShapeType

    Shape types that can be found in a shapes object. Either a primitive, an array containing any type, or a nested shape. If the type is an array, all elements must be the same type

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/types/Value.html b/docs/types/Value.html index 83a9173..3ff6329 100644 --- a/docs/types/Value.html +++ b/docs/types/Value.html @@ -1,3 +1,3 @@ -Value | open-vector-tile - v1.0.0

    Type alias Value

    Value: string | number | boolean | null

    Value is the old type used by Mapbox vector tiles. Properties can not be nested, so we only +Value | open-vector-tile - v1.0.1

    Type alias Value

    Value: string | number | boolean | null

    Value is the old type used by Mapbox vector tiles. Properties can not be nested, so we only support string, number, boolean, and null

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/types/VectorFeatureType.html b/docs/types/VectorFeatureType.html index df1d809..f69db1c 100644 --- a/docs/types/VectorFeatureType.html +++ b/docs/types/VectorFeatureType.html @@ -1,2 +1,2 @@ -VectorFeatureType | open-vector-tile - v1.0.0

    Type alias VectorFeatureType

    VectorFeatureType: 1 | 2 | 3 | 4 | 5 | 6

    Open Vector Tile Feature types.

    -
    \ No newline at end of file +VectorFeatureType | open-vector-tile - v1.0.1

    Type alias VectorFeatureType

    VectorFeatureType: 1 | 2 | 3 | 4 | 5 | 6

    Open Vector Tile Feature types.

    +
    \ No newline at end of file diff --git a/docs/types/VectorGeometry.html b/docs/types/VectorGeometry.html index 1ca18b9..77478d1 100644 --- a/docs/types/VectorGeometry.html +++ b/docs/types/VectorGeometry.html @@ -1,2 +1,2 @@ -VectorGeometry | open-vector-tile - v1.0.0

    Type alias VectorGeometry

    An enumeration of all the geometry types

    -
    \ No newline at end of file +VectorGeometry | open-vector-tile - v1.0.1

    Type alias VectorGeometry

    An enumeration of all the geometry types

    +
    \ No newline at end of file diff --git a/docs/types/VectorLine.html b/docs/types/VectorLine.html index e0cc9df..357431b 100644 --- a/docs/types/VectorLine.html +++ b/docs/types/VectorLine.html @@ -1,2 +1,2 @@ -VectorLine | open-vector-tile - v1.0.0

    Type alias VectorLine

    VectorLine: Point[]

    A set of points

    -
    \ No newline at end of file +VectorLine | open-vector-tile - v1.0.1

    Type alias VectorLine

    VectorLine: Point[]

    A set of points

    +
    \ No newline at end of file diff --git a/docs/types/VectorLine3D.html b/docs/types/VectorLine3D.html index 42b3891..08a28cb 100644 --- a/docs/types/VectorLine3D.html +++ b/docs/types/VectorLine3D.html @@ -1,2 +1,2 @@ -VectorLine3D | open-vector-tile - v1.0.0

    Type alias VectorLine3D

    VectorLine3D: Point3D[]

    A set of 3D points

    -
    \ No newline at end of file +VectorLine3D | open-vector-tile - v1.0.1

    Type alias VectorLine3D

    VectorLine3D: Point3D[]

    A set of 3D points

    +
    \ No newline at end of file diff --git a/docs/types/VectorLines.html b/docs/types/VectorLines.html index 44b6e0d..702c6e3 100644 --- a/docs/types/VectorLines.html +++ b/docs/types/VectorLines.html @@ -1,2 +1,2 @@ -VectorLines | open-vector-tile - v1.0.0

    Type alias VectorLines

    VectorLines: VectorLine[]

    A set of lines

    -
    \ No newline at end of file +VectorLines | open-vector-tile - v1.0.1

    Type alias VectorLines

    VectorLines: VectorLine[]

    A set of lines

    +
    \ No newline at end of file diff --git a/docs/types/VectorLines3D.html b/docs/types/VectorLines3D.html index c7b6c7a..ae74fc6 100644 --- a/docs/types/VectorLines3D.html +++ b/docs/types/VectorLines3D.html @@ -1,2 +1,2 @@ -VectorLines3D | open-vector-tile - v1.0.0

    Type alias VectorLines3D

    VectorLines3D: VectorLine3D[]

    A set of 3D lines

    -
    \ No newline at end of file +VectorLines3D | open-vector-tile - v1.0.1

    Type alias VectorLines3D

    VectorLines3D: VectorLine3D[]

    A set of 3D lines

    +
    \ No newline at end of file diff --git a/docs/types/VectorLines3DWithOffset.html b/docs/types/VectorLines3DWithOffset.html index 17075e3..a326196 100644 --- a/docs/types/VectorLines3DWithOffset.html +++ b/docs/types/VectorLines3DWithOffset.html @@ -1,2 +1,2 @@ -VectorLines3DWithOffset | open-vector-tile - v1.0.0

    Type alias VectorLines3DWithOffset

    VectorLines3DWithOffset: VectorLine3DWithOffset[]

    Built array line data with associated offset to help render dashed lines across tiles.

    -
    \ No newline at end of file +VectorLines3DWithOffset | open-vector-tile - v1.0.1

    Type alias VectorLines3DWithOffset

    VectorLines3DWithOffset: VectorLine3DWithOffset[]

    Built array line data with associated offset to help render dashed lines across tiles.

    +
    \ No newline at end of file diff --git a/docs/types/VectorLinesWithOffset.html b/docs/types/VectorLinesWithOffset.html index eaa60c2..3bc9e19 100644 --- a/docs/types/VectorLinesWithOffset.html +++ b/docs/types/VectorLinesWithOffset.html @@ -1,2 +1,2 @@ -VectorLinesWithOffset | open-vector-tile - v1.0.0

    Type alias VectorLinesWithOffset

    VectorLinesWithOffset: VectorLineWithOffset[]

    Built array line data with associated offset to help render dashed lines across tiles.

    -
    \ No newline at end of file +VectorLinesWithOffset | open-vector-tile - v1.0.1

    Type alias VectorLinesWithOffset

    VectorLinesWithOffset: VectorLineWithOffset[]

    Built array line data with associated offset to help render dashed lines across tiles.

    +
    \ No newline at end of file diff --git a/docs/types/VectorMultiPoly.html b/docs/types/VectorMultiPoly.html index 271d889..c9741db 100644 --- a/docs/types/VectorMultiPoly.html +++ b/docs/types/VectorMultiPoly.html @@ -1,2 +1,2 @@ -VectorMultiPoly | open-vector-tile - v1.0.0

    Type alias VectorMultiPoly

    VectorMultiPoly: Point[][][]

    A set of multiple polygons

    -
    \ No newline at end of file +VectorMultiPoly | open-vector-tile - v1.0.1

    Type alias VectorMultiPoly

    VectorMultiPoly: Point[][][]

    A set of multiple polygons

    +
    \ No newline at end of file diff --git a/docs/types/VectorMultiPoly3D.html b/docs/types/VectorMultiPoly3D.html index 9a2a7ab..3b58815 100644 --- a/docs/types/VectorMultiPoly3D.html +++ b/docs/types/VectorMultiPoly3D.html @@ -1,2 +1,2 @@ -VectorMultiPoly3D | open-vector-tile - v1.0.0

    Type alias VectorMultiPoly3D

    VectorMultiPoly3D: Point3D[][][]

    A set of multiple 3D polygons

    -
    \ No newline at end of file +VectorMultiPoly3D | open-vector-tile - v1.0.1

    Type alias VectorMultiPoly3D

    VectorMultiPoly3D: Point3D[][][]

    A set of multiple 3D polygons

    +
    \ No newline at end of file diff --git a/docs/types/VectorPoints.html b/docs/types/VectorPoints.html index df887a1..af5c0ef 100644 --- a/docs/types/VectorPoints.html +++ b/docs/types/VectorPoints.html @@ -1,2 +1,2 @@ -VectorPoints | open-vector-tile - v1.0.0

    Type alias VectorPoints

    VectorPoints: Point[]

    A set of points

    -
    \ No newline at end of file +VectorPoints | open-vector-tile - v1.0.1

    Type alias VectorPoints

    VectorPoints: Point[]

    A set of points

    +
    \ No newline at end of file diff --git a/docs/types/VectorPoints3D.html b/docs/types/VectorPoints3D.html index 3f87fe3..db749ef 100644 --- a/docs/types/VectorPoints3D.html +++ b/docs/types/VectorPoints3D.html @@ -1,2 +1,2 @@ -VectorPoints3D | open-vector-tile - v1.0.0

    Type alias VectorPoints3D

    VectorPoints3D: Point3D[]

    A set of 3D points

    -
    \ No newline at end of file +VectorPoints3D | open-vector-tile - v1.0.1

    Type alias VectorPoints3D

    VectorPoints3D: Point3D[]

    A set of 3D points

    +
    \ No newline at end of file diff --git a/docs/types/VectorPoly.html b/docs/types/VectorPoly.html index 8bedac5..0f3f1ef 100644 --- a/docs/types/VectorPoly.html +++ b/docs/types/VectorPoly.html @@ -1,2 +1,2 @@ -VectorPoly | open-vector-tile - v1.0.0

    Type alias VectorPoly

    VectorPoly: Point[][]

    A set of polygons

    -
    \ No newline at end of file +VectorPoly | open-vector-tile - v1.0.1

    Type alias VectorPoly

    VectorPoly: Point[][]

    A set of polygons

    +
    \ No newline at end of file diff --git a/docs/types/VectorPoly3D.html b/docs/types/VectorPoly3D.html index 940a4a0..ee475a8 100644 --- a/docs/types/VectorPoly3D.html +++ b/docs/types/VectorPoly3D.html @@ -1,2 +1,2 @@ -VectorPoly3D | open-vector-tile - v1.0.0

    Type alias VectorPoly3D

    VectorPoly3D: Point3D[][]

    A set of 3D polygons

    -
    \ No newline at end of file +VectorPoly3D | open-vector-tile - v1.0.1

    Type alias VectorPoly3D

    VectorPoly3D: Point3D[][]

    A set of 3D polygons

    +
    \ No newline at end of file diff --git a/package.json b/package.json index a7cc892..37bdc99 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "open-vector-tile", - "version": "1.0.0", + "version": "1.0.2", "description": "This library reads/writes Vector Tiles 2.0", "keywords": [ "vector", diff --git a/src/base/vectorFeature.ts b/src/base/vectorFeature.ts index 99ae1c7..facbffc 100644 --- a/src/base/vectorFeature.ts +++ b/src/base/vectorFeature.ts @@ -6,17 +6,15 @@ import type { ColumnCacheWriter } from '../open/columnCache'; import type MapboxVectorFeature from '../mapbox/vectorFeature'; import type { Shape } from '../open/shape'; import type { + BBOX, BBox, BBox3D, OProperties, Point, - Point3D, VectorLine, VectorLine3D, VectorLines, - VectorLines3D, VectorMultiPoly, - VectorMultiPoly3D, VectorPoints, VectorPoints3D, } from '../vectorTile.spec'; @@ -25,40 +23,35 @@ import type { * Base Vector Feature * Common variables and methods shared by all vector features */ -export class VectorFeatureBase { +export class VectorFeatureBase { + type = 0; /** + * @param geometry - the geometry of the feature * @param properties - the properties of the feature * @param id - the id of the feature if there is one + * @param bbox - the BBox of the feature */ constructor( + public geometry: G, public properties: OProperties = {}, public id?: number, + public bbox?: B, ) {} -} -/** - * Base Vector Points Feature - * Type 1 - * Extends from @see {@link VectorFeatureBase}. - * Store either a single point or a list of points - */ -export class BaseVectorPointsFeature extends VectorFeatureBase { - type = 1; - /** - * @param geometry - the geometry of the feature - * @param properties - the properties of the feature - * @param id - the id of the feature - * @param bbox - the BBox of the feature - */ - constructor( - public geometry: VectorPoints, - properties: OProperties = {}, - id?: number, - public bbox: BBox = [0, 0, 0, 0], - ) { - super(properties, id); + /** @returns - true if the feature has BBox */ + get hasBBox(): boolean { + const bbox = this.bbox as BBOX | undefined; + return bbox !== undefined && bbox.some((v) => v !== 0); } +} + +//! Points & Points3D +/** Base Vector Points Feature */ +export class VectorFeaturePointsBase< + G = VectorPoints | VectorPoints3D, + B = BBOX, +> extends VectorFeatureBase { /** * Points do not have this feature, so return false * @returns false always @@ -72,14 +65,20 @@ export class BaseVectorPointsFeature extends VectorFeatureBase { * @returns false always */ get hasMValues(): boolean { - return this.geometry.some(({ m }) => m !== undefined); + const geometry = this.geometry as VectorPoints | VectorPoints3D; + return geometry.some(({ m }) => m !== undefined); } - /** - * @returns - true if the feature has BBox - */ - get hasBBox(): boolean { - return this.bbox.some((v) => v !== 0); + /** @returns the geometry */ + loadGeometry(): G { + return this.geometry; + } + + /** @returns the M-Values */ + getMValues(): undefined | OProperties[] { + if (!this.hasMValues) return undefined; + const geometry = this.geometry as VectorPoints | VectorPoints3D; + return geometry.map(({ m }) => m ?? {}); } /** @@ -88,113 +87,117 @@ export class BaseVectorPointsFeature extends VectorFeatureBase { * @returns the index in the points column where the geometry is stored */ addGeometryToCache(cache: ColumnCacheWriter, mShape: Shape = {}): number { - if (this.geometry.length === 1) { - const { x, y } = this.geometry[0]; - return weave2D(zigzag(x), zigzag(y)); + const { hasMValues } = this; + const geometry = this.geometry as VectorPoints | VectorPoints3D; + const is3D = this.type === 4; + const columnName = is3D ? OColumnName.points3D : OColumnName.points; + if (geometry.length === 1) { + if (is3D) { + const { x, y, z } = (geometry as VectorPoints3D)[0]; + return weave3D(zigzag(x), zigzag(y), zigzag(z)); + } else { + const { x, y } = geometry[0]; + return weave2D(zigzag(x), zigzag(y)); + } } // othwerise store the collection of points const indices: number[] = []; - indices.push(cache.addColumnData(OColumnName.points, this.geometry)); + indices.push(cache.addColumnData(columnName, geometry)); // store length of mvalues and the mvalues indexes if they exist - if (this.hasMValues) { - indices.push(this.geometry.length); - for (const { m } of this.geometry) { + if (hasMValues) { + for (const { m } of geometry) { indices.push(encodeValue(m ?? {}, mShape, cache)); } } return cache.addColumnData(OColumnName.indices, indices); } +} - /** @returns the geometry */ - loadGeometry(): VectorPoints { - return this.geometry; - } - - /** @returns the M-Values */ - getMValues(): undefined | OProperties[] { - if (!this.hasMValues) return undefined; - return this.geometry.map(({ m }) => m ?? {}); - } +/** + * Base Vector Points Feature + * Type 1 + * Extends from @see {@link VectorFeatureBase}. + * Store either a single point or a list of points + */ +export class BaseVectorPointsFeature extends VectorFeaturePointsBase { + type = 1; +} +/** + * Base Vector Point 3D Feature + */ +export class BaseVectorPoint3DFeature extends VectorFeaturePointsBase { + type = 4; } +//! Lines & Lines3D + /** * Base Vector Lines Feature * Common variables and methods shared by all vector lines and/or polygons features */ -export class BaseVectorLine { +export class BaseVectorLine { /** * @param geometry - the geometry of the feature * @param offset - the offset of the feature */ constructor( - public geometry: VectorLine, + public geometry: L, public offset: number = 0, ) {} } -/** - * Base Vector Lines Feature - * Type 2 - * Extends from @see {@link VectorFeatureBase}. - * Store either a single line or a list of lines. - */ -export class BaseVectorLinesFeature extends VectorFeatureBase { - type = 2; - /** - * @param geometry - the geometry of the feature - * @param bbox - the bbox of the feature if not provided will be [0, 0, 0, 0] - * @param properties - the properties of the feature - * @param id - the id of the feature if there is one - */ - constructor( - public geometry: BaseVectorLine[], - public bbox: BBox = [0, 0, 0, 0], - properties: OProperties = {}, - id?: number, - ) { - super(properties, id); - } - - /** - * @returns - true if the feature has offsets - */ +/** Base Vector Lines Feature */ +export class VectorFeatureLinesBase< + G = VectorLine | VectorLine3D, + B = BBOX, +> extends VectorFeatureBase[], B> { + /** @returns - true if the feature has offsets */ get hasOffsets(): boolean { - return this.geometry.some(({ offset }) => offset > 0); - } - - /** - * @returns - true if the feature has BBox - */ - get hasBBox(): boolean { - return this.bbox.some((v) => v !== 0); + const geometry = this.geometry as BaseVectorLine[]; + return geometry.some(({ offset }) => offset > 0); } /** * @returns - true if the feature has M values */ get hasMValues(): boolean { - return this.geometry.some((line) => { - return line.geometry.some(({ m }) => m !== undefined); + return this.geometry.some(({ geometry }) => { + return (geometry as VectorLine | VectorLine3D).some(({ m }) => m !== undefined); }); } + /** @returns the flattened geometry */ + loadGeometry(): G[] { + return this.geometry.map(({ geometry }) => geometry); + } + + /** @returns the flattened M values */ + getMValues(): undefined | OProperties[] { + if (!this.hasMValues) return undefined; + return this.geometry.flatMap(({ geometry }) => + (geometry as VectorLine | VectorLine3D).map(({ m }) => m ?? {}), + ); + } + /** * @param cache - the column cache to store the geometry * @param mShape - the shape of the M-values to encode the values as * @returns the indexes in the points column where the geometry is stored */ addGeometryToCache(cache: ColumnCacheWriter, mShape: Shape = {}): number { + const { hasOffsets, hasMValues } = this; + const geometry = this.geometry as BaseVectorLine[]; + const columnName = this.type === 5 ? OColumnName.points3D : OColumnName.points; const indices: number[] = []; // store number of lines - if (this.geometry.length !== 1) indices.push(this.geometry.length); - for (const line of this.geometry) { + if (geometry.length !== 1) indices.push(geometry.length); + for (const line of geometry) { // store offset for current line - if (this.hasOffsets) indices.push(encodeOffset(line.offset)); + if (hasOffsets) indices.push(encodeOffset(line.offset)); // store geometry data and track its index position - indices.push(cache.addColumnData(OColumnName.points, line.geometry)); + indices.push(cache.addColumnData(columnName, line.geometry)); // store length of mvalues and the mvalues indexes if they exist - if (this.hasMValues) { - indices.push(line.geometry.length); + if (hasMValues) { for (const { m } of line.geometry) { indices.push(encodeValue(m ?? {}, mShape, cache)); } @@ -202,49 +205,52 @@ export class BaseVectorLinesFeature extends VectorFeatureBase { } return cache.addColumnData(OColumnName.indices, indices); } - - /** - * @returns the flattened geometry - */ - loadGeometry(): VectorLines { - return this.geometry.map((line) => line.geometry); - } - - /** - * @returns the flattened M-values - */ - getMValues(): undefined | OProperties[] { - if (!this.hasMValues) return undefined; - return this.geometry.flatMap((line) => line.geometry.map((point) => point.m ?? {})); - } } /** - * Base Vector Polys Feature - * Type 3 + * Base Vector Lines Feature + * Type 2 * Extends from @see {@link VectorFeatureBase}. - * Store either a single polygon or a list of polygons + * Store either a single line or a list of lines. */ -export class BaseVectorPolysFeature extends VectorFeatureBase { - type = 3; +export class BaseVectorLinesFeature extends VectorFeatureLinesBase { + type = 2; +} +/** + * Base Vector Lines 3D Feature + * Type 5 + * Extends from @see {@link VectorFeatureBase}. + * Store either a single 3D line or a list of 3D lines + */ +export class BaseVectorLines3DFeature extends VectorFeatureLinesBase { + type = 5; +} + +//! Polys & Polys3D + +/** Base Vector Polys Feature */ +export class VectorFeaturePolysBase< + G = VectorLine | VectorLine3D, + B = BBOX, +> extends VectorFeatureBase[][], B> { tesselation: Point[]; /** * @param geometry - the geometry of the feature * @param indices - the indices of the geometry * @param tesselation - the tesselation of the geometry - * @param bbox - the bbox of the feature * @param properties - the properties of the feature * @param id - the id of the feature + * @param bbox - the bbox of the feature */ constructor( - public geometry: BaseVectorLine[][], + public geometry: BaseVectorLine[][], public indices: number[] = [], tesselation: number[] = [], - public bbox: BBox = [0, 0, 0, 0], properties: OProperties = {}, id?: number, + public bbox?: B, ) { - super(properties, id); + super(geometry, properties, id, bbox); this.tesselation = this.#fixTesselation(tesselation); } @@ -271,58 +277,21 @@ export class BaseVectorPolysFeature extends VectorFeatureBase { return this.geometry.some((poly) => poly.some(({ offset }) => offset > 0)); } - /** - * @returns true if the feature has BBox - */ - get hasBBox(): boolean { - return this.bbox.some((v) => v !== 0); - } - /** * @returns - true if the feature has M values */ get hasMValues(): boolean { return this.geometry.some((poly) => - poly.some((line) => { - return line.geometry.some(({ m }) => m !== undefined); + poly.some(({ geometry }) => { + return (geometry as VectorLine | VectorLine3D).some(({ m }) => m !== undefined); }), ); } - /** - * @param cache - the column cache to store the geometry - * @param mShape - the shape of the M-values to encode the values as - * @returns the indexes in the points column where the geometry is stored - */ - addGeometryToCache(cache: ColumnCacheWriter, mShape: Shape = {}): number { - const indices: number[] = []; - // store number of polygons - if (this.geometry.length > 1) indices.push(this.geometry.length); - for (const poly of this.geometry) { - // store number of lines in the polygon - indices.push(poly.length); - // store each line - for (const line of poly) { - // store offset for current line - if (this.hasOffsets) indices.push(encodeOffset(line.offset)); - // store geometry data and track its index position - indices.push(cache.addColumnData(OColumnName.points, line.geometry)); - // store length of mvalues and the mvalues indexes if they exist - if (this.hasMValues) { - indices.push(line.geometry.length); - for (const { m } of line.geometry) { - indices.push(encodeValue(m ?? {}, mShape, cache)); - } - } - } - } - return cache.addColumnData(OColumnName.indices, indices); - } - /** * @returns the flattened geometry */ - loadGeometry(): VectorMultiPoly { + loadGeometry(): G[][] { return this.geometry.map((poly) => poly.map((line) => line.geometry)); } @@ -332,193 +301,53 @@ export class BaseVectorPolysFeature extends VectorFeatureBase { getMValues(): undefined | OProperties[] { if (!this.hasMValues) return undefined; return this.geometry.flatMap((poly) => { - return poly.flatMap((line) => { - return line.geometry.map((point) => point.m ?? {}); + return poly.flatMap(({ geometry }) => { + return (geometry as VectorLine | VectorLine3D).map((point) => point.m ?? {}); }); }); } -} - -/** - * Base Vector Point 3D Feature - */ -export class BaseVectorPoint3DFeature extends VectorFeatureBase { - type = 4; - /** - * @param geometry - the geometry of the feature - * @param properties - the properties of the feature - * @param id - the id of the feature - * @param bbox - the bbox of the feature - */ - constructor( - public geometry: VectorPoints3D, - properties: OProperties = {}, - id?: number, - public bbox: BBox3D = [0, 0, 0, 0, 0, 0], - ) { - super(properties, id); - } - - /** - * Points do not have this feature, so return false - * @returns false always - */ - get hasOffsets(): boolean { - return false; - } - - /** - * Points do not have this feature, so return false - * @returns false always - */ - get hasMValues(): boolean { - return this.geometry.some(({ m }) => m !== undefined); - } - - /** - * @returns true if the feature has BBox - */ - get hasBBox(): boolean { - return this.bbox.some((v) => v !== 0); - } /** * @param cache - the column cache to store the geometry * @param mShape - the shape of the M-values to encode the values as - * @returns the index in the points column where the geometry is stored + * @returns the indexes in the points column where the geometry is stored */ addGeometryToCache(cache: ColumnCacheWriter, mShape: Shape = {}): number { - if (this.geometry.length === 1) { - const { x, y, z } = this.geometry[0]; - return weave3D(zigzag(x), zigzag(y), zigzag(z)); - } - // othwerise store the collection of points + const { hasOffsets, hasMValues } = this; + const geometry = this.geometry as BaseVectorLine[][]; + const columnName = this.type === 6 ? OColumnName.points3D : OColumnName.points; const indices: number[] = []; - indices.push(cache.addColumnData(OColumnName.points3D, this.geometry)); - // store length of mvalues and the mvalues indexes if they exist - if (this.hasMValues) { - indices.push(this.geometry.length); - for (const { m } of this.geometry) { - indices.push(encodeValue(m ?? {}, mShape, cache)); + // store number of polygons + if (this.geometry.length > 1) indices.push(geometry.length); + for (const poly of geometry) { + // store number of lines in the polygon + indices.push(poly.length); + // store each line + for (const line of poly) { + // store offset for current line + if (hasOffsets) indices.push(encodeOffset(line.offset)); + // store geometry data and track its index position + indices.push(cache.addColumnData(columnName, line.geometry)); + // store length of mvalues and the mvalues indexes if they exist + if (hasMValues) { + for (const { m } of line.geometry as VectorLine | VectorLine3D) { + indices.push(encodeValue(m ?? {}, mShape, cache)); + } + } } } return cache.addColumnData(OColumnName.indices, indices); } - - /** - * @returns the geometry - */ - loadGeometry(): VectorPoints3D { - return this.geometry; - } - - /** @returns the M-Values */ - getMValues(): undefined | OProperties[] { - if (!this.hasMValues) return undefined; - return this.geometry.map(({ m }) => m ?? {}); - } -} - -/** - * Base Vector Line 3D - * Common variables and methods shared by all 3D vector lines - */ -export class BaseVectorLine3D { - /** - * @param geometry - the geometry of the feature - * @param offset - the offset of the feature - */ - constructor( - public geometry: VectorLine3D, - public offset: number = 0, - ) {} } /** - * Base Vector Lines 3D Feature - * Type 5 + * Base Vector Polys Feature + * Type 3 * Extends from @see {@link VectorFeatureBase}. - * Store either a single 3D line or a list of 3D lines + * Store either a single polygon or a list of polygons */ -export class BaseVectorLines3DFeature extends VectorFeatureBase { - type = 5; - /** - * @param geometry - the geometry of the feature - * @param bbox - the bbox of the feature - * @param properties - the properties of the feature - * @param id - the id of the feature - */ - constructor( - public geometry: BaseVectorLine3D[], - public bbox: BBox3D = [0, 0, 0, 0, 0, 0], - properties: OProperties = {}, - id?: number, - ) { - super(properties, id); - } - - /** - * @returns true if the feature has offsets - */ - get hasOffsets(): boolean { - return this.geometry.some(({ offset }) => offset > 0); - } - - /** - * @returns true if the feature has BBox - */ - get hasBBox(): boolean { - return this.bbox.some((v) => v !== 0); - } - - /** - * @returns - true if the feature has M values - */ - get hasMValues(): boolean { - return this.geometry.some((line) => { - return line.geometry.some(({ m }) => m !== undefined); - }); - } - - /** - * @param cache - the column cache to store the geometry - * @param mShape - the shape of the M values - * @returns the indexes in the points column where the geometry is stored - */ - addGeometryToCache(cache: ColumnCacheWriter, mShape: Shape = {}): number { - const indices: number[] = []; - // store number of lines - if (this.geometry.length > 1) indices.push(this.geometry.length); - for (const line of this.geometry) { - // store offset for current line - if (this.hasOffsets) indices.push(encodeOffset(line.offset)); - // store geometry data and track its index position - indices.push(cache.addColumnData(OColumnName.points3D, line.geometry)); - // store length of mvalues and the mvalues indexes if they exist - if (this.hasMValues) { - indices.push(line.geometry.length); - for (const { m } of line.geometry) { - indices.push(encodeValue(m ?? {}, mShape, cache)); - } - } - } - return cache.addColumnData(OColumnName.indices, indices); - } - - /** - * @returns the flattened geometry - */ - loadGeometry(): VectorLines3D { - return this.geometry.map(({ geometry }) => geometry); - } - - /** - * @returns the flattened M values - */ - getMValues(): undefined | OProperties[] { - if (!this.hasMValues) return undefined; - return this.geometry.flatMap((line) => line.geometry.map(({ m }) => m ?? {})); - } +export class BaseVectorPolysFeature extends VectorFeaturePolysBase { + type = 3; } /** @@ -527,119 +356,8 @@ export class BaseVectorLines3DFeature extends VectorFeatureBase { * Extends from @see {@link VectorFeatureBase}. * Store either a single 3D poly or a list of 3D polys */ -export class BaseVectorPolys3DFeature extends VectorFeatureBase { +export class BaseVectorPolys3DFeature extends VectorFeaturePolysBase { type = 6; - tesselation: Point3D[]; - - /** - * @param geometry - the geometry of the feature - * @param indices - the indices of the geometry - * @param tesselation - the tesselation of the geometry - * @param bbox - the bbox of the feature - * @param properties - the properties of the feature - * @param id - the id of the feature - */ - constructor( - public geometry: BaseVectorLine3D[][], - public indices: number[] = [], - tesselation: number[] = [], - public bbox: BBox3D = [0, 0, 0, 0, 0, 0], - properties: OProperties = {}, - id?: number, - ) { - super(properties, id); - this.tesselation = this.#fixTesselation(tesselation); - } - - /** - * @param tesselation - the tesselation of the geometry but flattened - * @returns - the tesselation of the geometry as a list of points - */ - #fixTesselation(tesselation: number[]): Point3D[] { - if (tesselation.length % 3 !== 0) { - throw new Error('The input tesselation must have an even number of elements.'); - } - return tesselation.reduce((acc, _, index, array) => { - if (index % 3 === 0) { - acc.push({ x: array[index], y: array[index + 1], z: array[index + 2] }); - } - return acc; - }, [] as Point3D[]); - } - - /** - * @returns true if the feature has BBox - */ - get hasBBox(): boolean { - return this.bbox.some((v) => v !== 0); - } - - /** - * @returns true if the feature has offsets - */ - get hasOffsets(): boolean { - return this.geometry.some((poly) => poly.some(({ offset }) => offset > 0)); - } - - /** - * @returns - true if the feature has M values - */ - get hasMValues(): boolean { - return this.geometry.some((poly) => - poly.some(({ geometry }) => { - return geometry.some(({ m }) => m !== undefined); - }), - ); - } - - /** - * @param cache - the column cache to store the geometry - * @param mShape - the shape of the M values - * @returns the indexes in the points column where the geometry is stored - */ - addGeometryToCache(cache: ColumnCacheWriter, mShape: Shape = {}): number { - const indices: number[] = []; - // store number of polygons - if (this.geometry.length > 1) indices.push(this.geometry.length); - for (const poly of this.geometry) { - // store number of lines in the polygon - indices.push(poly.length); - // store each line - for (const { offset, geometry } of poly) { - // store offset for current line - if (this.hasOffsets) indices.push(encodeOffset(offset)); - // store geometry data and track its index position - indices.push(cache.addColumnData(OColumnName.points3D, geometry)); - // store length of mvalues and the mvalues indexes if they exist - if (this.hasMValues) { - indices.push(geometry.length); - for (const { m } of geometry) { - indices.push(encodeValue(m ?? {}, mShape, cache)); - } - } - } - } - return cache.addColumnData(OColumnName.indices, indices); - } - - /** - * @returns the flattened geometry - */ - loadGeometry(): VectorMultiPoly3D { - return this.geometry.map((poly) => poly.map(({ geometry }) => geometry)); - } - - /** - * @returns the flattened M values - */ - getMValues(): undefined | OProperties[] { - if (!this.hasMValues) return undefined; - return this.geometry.flatMap((poly) => { - return poly.flatMap(({ geometry }) => { - return geometry.map(({ m }) => m ?? {}); - }); - }); - } } /** @@ -668,11 +386,11 @@ export function fromMapboxVectorFeature(feature: MapboxVectorFeature): BaseVecto return new BaseVectorPointsFeature(geometry as VectorPoints, properties, id); case 2: { const geo = geometry as VectorLines; - const baseLines: BaseVectorLine[] = []; + const baseLines: BaseVectorLine[] = []; for (const line of geo) { baseLines.push(new BaseVectorLine(line)); } - return new BaseVectorLinesFeature(baseLines, undefined, properties, id); + return new BaseVectorLinesFeature(baseLines, properties, id); } case 3: case 4: { @@ -685,14 +403,7 @@ export function fromMapboxVectorFeature(feature: MapboxVectorFeature): BaseVecto } baseMultPoly.push(baseLines); } - return new BaseVectorPolysFeature( - baseMultPoly, - indices, - tesselation, - undefined, - properties, - id, - ); + return new BaseVectorPolysFeature(baseMultPoly, indices, tesselation, properties, id); } default: throw new Error(`Unknown feature type: ${feature.type}`); diff --git a/src/open/vectorFeature.ts b/src/open/vectorFeature.ts index 0195872..d546685 100644 --- a/src/open/vectorFeature.ts +++ b/src/open/vectorFeature.ts @@ -142,7 +142,7 @@ export class OVectorPointsFeature extends OVectorFeatureBase2D { this.geometry = cache.getColumn(OColumnName.points, geometryIndex); // load m values if they exist if (hasMValues) { - const length = indices[indexPos++]; + const length = this.geometry.length; for (let j = 0; j < length; j++) { const valueIndex = indices[indexPos++]; this.geometry[j].m = decodeValue(valueIndex, this.mShape, cache); @@ -185,7 +185,7 @@ export class OVectorLinesFeature extends OVectorFeatureBase2D { const geometry: VectorLine = cache.getColumn(OColumnName.points, indices[indexPos++]); // inject m values if they exist if (hasMValues) { - const length = indices[indexPos++]; + const length = geometry.length; for (let j = 0; j < length; j++) { const valueIndex = indices[indexPos++]; geometry[j].m = decodeValue(valueIndex, this.mShape, cache); @@ -237,7 +237,7 @@ export class OVectorPolysFeature extends OVectorFeatureBase2D { const geometry: VectorLine = cache.getColumn(OColumnName.points, indices[indexPos++]); // inject m values if they exist if (hasMValues) { - const length = indices[indexPos++]; + const length = geometry.length; for (let j = 0; j < length; j++) { const valueIndex = indices[indexPos++]; geometry[j].m = decodeValue(valueIndex, this.mShape, cache); @@ -353,7 +353,7 @@ export class OVectorPoints3DFeature extends OVectorFeatureBase3D { this.geometry = cache.getColumn(OColumnName.points3D, geometryIndex); // load m values if they exist if (hasMValues) { - const length = indices[indexPos++]; + const length = this.geometry.length; for (let j = 0; j < length; j++) { const valueIndex = indices[indexPos++]; this.geometry[j].m = decodeValue(valueIndex, this.mShape, cache); @@ -395,7 +395,7 @@ export class OVectorLines3DFeature extends OVectorFeatureBase3D { const geometry: VectorLine3D = cache.getColumn(OColumnName.points3D, indices[indexPos++]); // inject m values if they exist if (hasMValues) { - const length = indices[indexPos++]; + const length = geometry.length; for (let j = 0; j < length; j++) { const valueIndex = indices[indexPos++]; geometry[j].m = decodeValue(valueIndex, this.mShape, cache); @@ -445,7 +445,7 @@ export class OVectorPolys3DFeature extends OVectorFeatureBase3D { const geometry: VectorLine3D = cache.getColumn(OColumnName.points3D, indices[indexPos++]); // inject m values if they exist if (hasMValues) { - const length = indices[indexPos++]; + const length = geometry.length; for (let j = 0; j < length; j++) { const valueIndex = indices[indexPos++]; geometry[j].m = decodeValue(valueIndex, this.mShape, cache); diff --git a/src/vectorTile.spec.ts b/src/vectorTile.spec.ts index 9ca93a5..2675f15 100644 --- a/src/vectorTile.spec.ts +++ b/src/vectorTile.spec.ts @@ -15,6 +15,8 @@ export type BBox3D = [ near: number, far: number, ]; +/** A 2D or 3D Bounding Box */ +export type BBOX = BBox | BBox3D; /** * Value is the old type used by Mapbox vector tiles. Properties can not be nested, so we only diff --git a/test/baseVectorTile/baseVectorFeature.test.ts b/test/baseVectorTile/baseVectorFeature.test.ts index 4331823..1e5ddbe 100644 --- a/test/baseVectorTile/baseVectorFeature.test.ts +++ b/test/baseVectorTile/baseVectorFeature.test.ts @@ -1,13 +1,13 @@ import { Pbf } from '../../src/pbf'; import { BaseVectorLine, - BaseVectorLine3D, BaseVectorLines3DFeature, BaseVectorLinesFeature, BaseVectorPoint3DFeature, BaseVectorPointsFeature, BaseVectorPolys3DFeature, BaseVectorPolysFeature, + VectorFeatureBase, decodeOffset, encodeOffset, } from '../../src/base'; @@ -21,6 +21,13 @@ describe('encodeOffset and decodeOffset', () => { }); }); +describe('VectorFeatureBase', () => { + const base = new VectorFeatureBase([0, 1], { a: 1 }, 100, [0, 1, 2, 3]); + expect(base).toBeInstanceOf(VectorFeatureBase); + expect(base.id).toEqual(100); + expect(base.properties).toEqual({ a: 1 }); +}); + describe('BaseVectorPointsFeature', () => { const point = new BaseVectorPointsFeature([{ x: 0, y: 0 }], { name: 'a' }, 1); const point2 = new BaseVectorPointsFeature( @@ -66,6 +73,11 @@ describe('BaseVectorPointsFeature', () => { expect(point2.properties).toEqual({ name: 'b' }); }); + it('getMValues', () => { + expect(point.getMValues()).toBeUndefined(); + expect(point2.getMValues()).toEqual([{ size: 1 }, { size: 2 }]); + }); + it('adds geometry to cache', () => { const pbf = new Pbf(); const cache = new ColumnCacheWriter(); @@ -74,9 +86,7 @@ describe('BaseVectorPointsFeature', () => { pbf.writeMessage(5, ColumnCacheWriter.write, cache); const rawData = pbf.commit(); expect(rawData).toEqual( - new Uint8Array([ - 42, 18, 42, 8, 176, 205, 133, 71, 247, 198, 133, 71, 58, 4, 0, 4, 3, 0, 66, 0, - ]), + new Uint8Array([42, 17, 42, 8, 176, 205, 133, 71, 247, 198, 133, 71, 58, 3, 0, 0, 0, 66, 0]), ); const parsePBF = new Pbf(rawData); @@ -135,6 +145,11 @@ describe('BaseVectorPoint3DFeature', () => { expect(point2.properties).toEqual({ name: 'b' }); }); + it('getMValues', () => { + expect(point.getMValues()).toBeUndefined(); + expect(point2.getMValues()).toEqual([{ width: 2 }, { width: 3 }]); + }); + it('adds geometry to cache', () => { const pbf = new Pbf(); const cache = new ColumnCacheWriter(); @@ -144,7 +159,7 @@ describe('BaseVectorPoint3DFeature', () => { const rawData = pbf.commit(); expect(rawData).toEqual( new Uint8Array([ - 42, 22, 50, 12, 224, 203, 234, 141, 234, 40, 207, 247, 225, 141, 234, 40, 58, 4, 0, 4, 3, 0, + 42, 21, 50, 12, 224, 203, 234, 141, 234, 40, 207, 247, 225, 141, 234, 40, 58, 3, 0, 0, 0, 66, 0, ]), ); @@ -164,7 +179,6 @@ describe('BaseVectorLinesFeature', () => { { x: 2, y: 3 }, ]), ], - undefined, { name: 'a' }, 1, ); @@ -185,9 +199,9 @@ describe('BaseVectorLinesFeature', () => { 4.4, ), ], - [0, 1, 500, 600], { name: 'b' }, 100, + [0, 1, 500, 600], ); it('geometry', () => { @@ -249,9 +263,9 @@ describe('BaseVectorLinesFeature', () => { const rawData = pbf.commit(); expect(rawData).toEqual( new Uint8Array([ - 42, 57, 8, 2, 8, 3, 8, 4, 8, 5, 42, 8, 253, 128, 133, 68, 184, 206, 148, 3, 42, 8, 176, 205, - 133, 71, 247, 198, 133, 71, 58, 15, 4, 196, 51, 199, 51, 4, 3, 2, 222, 68, 221, 68, 2, 0, 2, - 66, 1, 0, 66, 1, 1, 66, 1, 2, 66, 1, 3, + 42, 55, 8, 2, 8, 3, 8, 4, 8, 5, 42, 8, 253, 128, 133, 68, 184, 206, 148, 3, 42, 8, 176, 205, + 133, 71, 247, 198, 133, 71, 58, 13, 4, 196, 51, 199, 51, 0, 2, 222, 68, 221, 68, 2, 2, 66, + 1, 0, 66, 1, 1, 66, 1, 2, 66, 1, 3, ]), ); @@ -263,25 +277,24 @@ describe('BaseVectorLinesFeature', () => { describe('BaseVectorLines3DFeature', () => { const lineA = new BaseVectorLines3DFeature( [ - new BaseVectorLine3D([ + new BaseVectorLine([ { x: 0, y: 1, z: 2 }, { x: 2, y: 3, z: 4 }, ]), ], - undefined, { name: 'a' }, 1, ); const lineB = new BaseVectorLines3DFeature( [ - new BaseVectorLine3D( + new BaseVectorLine( [ { x: -200, y: 5_123, z: 6_789, m: { width: 2 } }, { x: 1_234, y: 5_678, z: 7_890, m: { width: 3 } }, ], 3.3, ), - new BaseVectorLine3D( + new BaseVectorLine( [ { x: 1_234, y: 5_678, z: 7_890, m: { width: 4 } }, { x: 2, y: 3, z: 4, m: { width: 5 } }, @@ -289,14 +302,14 @@ describe('BaseVectorLines3DFeature', () => { 4.4, ), ], - [0, 1, 500, 600, 4, 1_000], { name: 'b' }, 100, + [0, 1, 500, 600, 4, 1_000], ); it('geometry', () => { expect(lineA.geometry).toEqual([ - new BaseVectorLine3D([ + new BaseVectorLine([ { x: 0, y: 1, z: 2 }, { x: 2, y: 3, z: 4 }, ]), @@ -308,14 +321,14 @@ describe('BaseVectorLines3DFeature', () => { ], ]); expect(lineB.geometry).toEqual([ - new BaseVectorLine3D( + new BaseVectorLine( [ { x: -200, y: 5_123, z: 6_789, m: { width: 2 } }, { x: 1_234, y: 5_678, z: 7_890, m: { width: 3 } }, ], 3.3, ), - new BaseVectorLine3D( + new BaseVectorLine( [ { x: 1_234, y: 5_678, z: 7_890, m: { width: 4 } }, { x: 2, y: 3, z: 4, m: { width: 5 } }, @@ -350,6 +363,11 @@ describe('BaseVectorLines3DFeature', () => { expect(lineB.properties).toEqual({ name: 'b' }); }); + it('getMValues', () => { + expect(lineA.getMValues()).toBeUndefined(); + expect(lineB.getMValues()).toEqual([{ width: 2 }, { width: 3 }, { width: 4 }, { width: 5 }]); + }); + it('adds geometry and mvalues to cache', () => { const pbf = new Pbf(); const cache = new ColumnCacheWriter(); @@ -359,9 +377,9 @@ describe('BaseVectorLines3DFeature', () => { const rawData = pbf.commit(); expect(rawData).toEqual( new Uint8Array([ - 42, 65, 8, 2, 8, 3, 8, 4, 8, 5, 50, 12, 249, 149, 128, 169, 208, 104, 240, 241, 163, 204, - 168, 1, 50, 12, 192, 203, 170, 173, 248, 105, 239, 245, 161, 173, 248, 105, 58, 15, 4, 196, - 51, 199, 51, 4, 3, 2, 222, 68, 221, 68, 2, 0, 2, 66, 1, 0, 66, 1, 1, 66, 1, 2, 66, 1, 3, + 42, 63, 8, 2, 8, 3, 8, 4, 8, 5, 50, 12, 249, 149, 128, 169, 208, 104, 240, 241, 163, 204, + 168, 1, 50, 12, 192, 203, 170, 173, 248, 105, 239, 245, 161, 173, 248, 105, 58, 13, 4, 196, + 51, 199, 51, 0, 2, 222, 68, 221, 68, 2, 2, 66, 1, 0, 66, 1, 1, 66, 1, 2, 66, 1, 3, ]), ); @@ -441,7 +459,6 @@ describe('BaseVectorPolysFeature', () => { ], undefined, undefined, - undefined, { name: 'a' }, 200, ); @@ -479,7 +496,6 @@ describe('BaseVectorPolysFeature', () => { ], undefined, undefined, - undefined, { name: 'b' }, 200, ); @@ -559,6 +575,24 @@ describe('BaseVectorPolysFeature', () => { expect(polyB.hasBBox).toEqual(false); }); + it('getMValues', () => { + expect(polyA.getMValues()).toBeUndefined(); + expect(polyB.getMValues()).toEqual([ + { a: 1 }, + { b: 2 }, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + ]); + }); + it('addGeometryToCache', () => { const pbf = new Pbf(); const cache = new ColumnCacheWriter(); @@ -569,9 +603,9 @@ describe('BaseVectorPolysFeature', () => { const rawData = pbf.commit(); expect(rawData).toEqual( new Uint8Array([ - 42, 77, 16, 0, 16, 2, 16, 4, 42, 3, 228, 7, 48, 42, 3, 164, 24, 48, 42, 3, 228, 25, 48, 42, - 3, 164, 30, 48, 42, 3, 228, 31, 48, 42, 3, 164, 96, 48, 58, 27, 4, 2, 5, 4, 3, 2, 0, 2, 0, - 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 4, 3, 0, 0, 6, 5, 0, 0, 66, 2, 1, 0, 66, 2, 0, 2, 66, 2, 0, 0, + 42, 71, 16, 0, 16, 2, 16, 4, 42, 3, 228, 7, 48, 42, 3, 164, 24, 48, 42, 3, 228, 25, 48, 42, + 3, 164, 30, 48, 42, 3, 228, 31, 48, 42, 3, 164, 96, 48, 58, 21, 4, 2, 5, 0, 2, 0, 2, 0, 0, + 0, 0, 2, 0, 1, 0, 4, 3, 0, 6, 5, 0, 66, 2, 1, 0, 66, 2, 0, 2, 66, 2, 0, 0, ]), ); }); @@ -581,15 +615,15 @@ describe('BaseVectorPolys3DFeature', () => { const polyA = new BaseVectorPolys3DFeature( [ [ - new BaseVectorLine3D([ + new BaseVectorLine([ { x: 1, y: 2, z: 3 }, { x: 3, y: 4, z: 5 }, ]), - new BaseVectorLine3D([ + new BaseVectorLine([ { x: 5, y: 6, z: 7 }, { x: 7, y: 8, z: 9 }, ]), - new BaseVectorLine3D([ + new BaseVectorLine([ { x: 9, y: 10, z: 11 }, { x: 11, y: 12, z: 13 }, ]), @@ -597,7 +631,6 @@ describe('BaseVectorPolys3DFeature', () => { ], undefined, undefined, - undefined, { name: 'a' }, 200, ); @@ -605,29 +638,29 @@ describe('BaseVectorPolys3DFeature', () => { const polyB = new BaseVectorPolys3DFeature( [ [ - new BaseVectorLine3D([ + new BaseVectorLine([ { x: 13, y: 14, z: 15, m: { a: 1 } }, { x: 15, y: 16, z: 17, m: { b: 2 } }, ]), - new BaseVectorLine3D([ + new BaseVectorLine([ { x: 17, y: 18, z: 19 }, { x: 19, y: 20, z: 21 }, ]), - new BaseVectorLine3D([ + new BaseVectorLine([ { x: 21, y: 22, z: 23 }, { x: 23, y: 24, z: 25 }, ]), ], [ - new BaseVectorLine3D([ + new BaseVectorLine([ { x: 25, y: 26, z: 27 }, { x: 27, y: 28, z: 29 }, ]), - new BaseVectorLine3D([ + new BaseVectorLine([ { x: 29, y: 30, z: 31 }, { x: 31, y: 32, z: 33 }, ]), - new BaseVectorLine3D([ + new BaseVectorLine([ { x: 33, y: 34, z: 35 }, { x: 35, y: 36, z: 37 }, ]), @@ -635,7 +668,6 @@ describe('BaseVectorPolys3DFeature', () => { ], undefined, undefined, - undefined, { name: 'b' }, 200, ); @@ -643,15 +675,15 @@ describe('BaseVectorPolys3DFeature', () => { it('geometry', () => { expect(polyA.geometry).toEqual([ [ - new BaseVectorLine3D([ + new BaseVectorLine([ { x: 1, y: 2, z: 3 }, { x: 3, y: 4, z: 5 }, ]), - new BaseVectorLine3D([ + new BaseVectorLine([ { x: 5, y: 6, z: 7 }, { x: 7, y: 8, z: 9 }, ]), - new BaseVectorLine3D([ + new BaseVectorLine([ { x: 9, y: 10, z: 11 }, { x: 11, y: 12, z: 13 }, ]), @@ -660,29 +692,29 @@ describe('BaseVectorPolys3DFeature', () => { expect(polyB.geometry).toEqual([ [ - new BaseVectorLine3D([ + new BaseVectorLine([ { x: 13, y: 14, z: 15, m: { a: 1 } }, { x: 15, y: 16, z: 17, m: { b: 2 } }, ]), - new BaseVectorLine3D([ + new BaseVectorLine([ { x: 17, y: 18, z: 19 }, { x: 19, y: 20, z: 21 }, ]), - new BaseVectorLine3D([ + new BaseVectorLine([ { x: 21, y: 22, z: 23 }, { x: 23, y: 24, z: 25 }, ]), ], [ - new BaseVectorLine3D([ + new BaseVectorLine([ { x: 25, y: 26, z: 27 }, { x: 27, y: 28, z: 29 }, ]), - new BaseVectorLine3D([ + new BaseVectorLine([ { x: 29, y: 30, z: 31 }, { x: 31, y: 32, z: 33 }, ]), - new BaseVectorLine3D([ + new BaseVectorLine([ { x: 33, y: 34, z: 35 }, { x: 35, y: 36, z: 37 }, ]), @@ -715,6 +747,24 @@ describe('BaseVectorPolys3DFeature', () => { expect(polyB.hasBBox).toEqual(false); }); + it('getMValues', () => { + expect(polyA.getMValues()).toBeUndefined(); + expect(polyB.getMValues()).toEqual([ + { a: 1 }, + { b: 2 }, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + {}, + ]); + }); + it('addGeometryToCache', () => { const pbf = new Pbf(); const cache = new ColumnCacheWriter(); @@ -725,10 +775,10 @@ describe('BaseVectorPolys3DFeature', () => { const rawData = pbf.commit(); expect(rawData).toEqual( new Uint8Array([ - 42, 89, 16, 0, 16, 2, 16, 4, 50, 5, 168, 255, 1, 192, 3, 50, 5, 168, 131, 14, 192, 3, 50, 5, + 42, 83, 16, 0, 16, 2, 16, 4, 50, 5, 168, 255, 1, 192, 3, 50, 5, 168, 131, 14, 192, 3, 50, 5, 168, 159, 14, 192, 3, 50, 5, 168, 227, 15, 192, 3, 50, 5, 168, 255, 15, 192, 3, 50, 5, 168, - 131, 112, 192, 3, 58, 27, 4, 2, 5, 4, 3, 2, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 4, 3, 0, - 0, 6, 5, 0, 0, 66, 2, 1, 0, 66, 2, 0, 2, 66, 2, 0, 0, + 131, 112, 192, 3, 58, 21, 4, 2, 5, 0, 2, 0, 2, 0, 0, 0, 0, 2, 0, 1, 0, 4, 3, 0, 6, 5, 0, 66, + 2, 1, 0, 66, 2, 0, 2, 66, 2, 0, 0, ]), ); }); diff --git a/test/openVectorTile/vectorFeature.test.ts b/test/openVectorTile/vectorFeature.test.ts index 6bfed64..28b9e1a 100644 --- a/test/openVectorTile/vectorFeature.test.ts +++ b/test/openVectorTile/vectorFeature.test.ts @@ -1,7 +1,6 @@ import { Pbf } from '../../src/pbf'; import { BaseVectorLine, - BaseVectorLine3D, BaseVectorLines3DFeature, BaseVectorLinesFeature, BaseVectorPoint3DFeature, @@ -231,7 +230,6 @@ describe('encodeLineFeature and decodeLineFeature', () => { { x: 1, y: 0 }, ]), ], - undefined, { name: 'a' }, 1, ); @@ -252,9 +250,9 @@ describe('encodeLineFeature and decodeLineFeature', () => { 102.2, ), ], - [-120.22, -2, 102.111, 50.5], { name: 'b' }, 2, + [-120.22, -2, 102.111, 50.5], ); const dataA = writeOVFeature(basePointFeatureA, shape, mShape, col); const dataB = writeOVFeature(basePointFeatureB, shape, mShape, col); @@ -358,25 +356,24 @@ describe('encodeLine3DFeature and decodeLine3DFeature', () => { const mShape: Shape = { width: 'i64' }; const basePointFeatureA = new BaseVectorLines3DFeature( [ - new BaseVectorLine3D([ + new BaseVectorLine([ { x: 3_805, y: 5_645, z: 1_000 }, { x: 1, y: 0, z: 2 }, ]), ], - undefined, { name: 'a' }, 1, ); const basePointFeatureB = new BaseVectorLines3DFeature( [ - new BaseVectorLine3D( + new BaseVectorLine( [ { x: 1, y: 0, z: 2, m: { width: 2 } }, { x: 2, y: -1, z: -3, m: { width: -3 } }, ], 2.2, ), - new BaseVectorLine3D( + new BaseVectorLine( [ { x: 0, y: -2, z: 200 }, { x: 300, y: 500, z: 502 }, @@ -384,9 +381,9 @@ describe('encodeLine3DFeature and decodeLine3DFeature', () => { 102.2, ), ], - [0.11, -2, 165.5, 45.5, -102.2, 30.667], { name: 'b' }, 2, + [0.11, -2, 165.5, 45.5, -102.2, 30.667], ); const dataA = writeOVFeature(basePointFeatureA, shape, mShape, col); const dataB = writeOVFeature(basePointFeatureB, shape, mShape, col); @@ -489,6 +486,7 @@ describe('encodePolysFeature and decodePolysFeature', () => { const pbf = new Pbf(); const col = new ColumnCacheWriter(); const shape: Shape = { name: 'string' }; + const mShape: Shape = { width: 'i64' }; const basePolyFeatureA = new BaseVectorPolysFeature( [ [ @@ -508,7 +506,6 @@ describe('encodePolysFeature and decodePolysFeature', () => { ], undefined, undefined, - undefined, { name: 'a' }, 55, ); @@ -517,8 +514,8 @@ describe('encodePolysFeature and decodePolysFeature', () => { [ new BaseVectorLine( [ - { x: 1, y: 0 }, - { x: 2, y: -1 }, + { x: 1, y: 0, m: { width: 2 } }, + { x: 2, y: -1, m: { width: -3 } }, ], 4.4, ), @@ -533,8 +530,8 @@ describe('encodePolysFeature and decodePolysFeature', () => { [ new BaseVectorLine( [ - { x: 0, y: -2 }, - { x: 300, y: 500 }, + { x: 0, y: -2, m: { width: 0 } }, + { x: 300, y: 500, m: { width: 55 } }, ], 102.2, ), @@ -555,7 +552,7 @@ describe('encodePolysFeature and decodePolysFeature', () => { 5.5, ), new BaseVectorLine([ - { x: 300, y: 500 }, + { x: 300, y: 500, m: { width: -1_222 } }, { x: 0, y: -2 }, ]), new BaseVectorLine([ @@ -566,13 +563,13 @@ describe('encodePolysFeature and decodePolysFeature', () => { ], [0, 1, 5, 2], [1, 2, 3, 4, 5, 6], - [0.1, 1.1, 2.3, 3.3], { name: 'b' }, 5_555, + [0.1, 1.1, 2.3, 3.3], ); const dataA = writeOVFeature(basePolyFeatureA, shape, undefined, col); - const dataB = writeOVFeature(basePolyFeatureB, shape, undefined, col); + const dataB = writeOVFeature(basePolyFeatureB, shape, mShape, col); // store column pbf.writeMessage(5, ColumnCacheWriter.write, col); // store features @@ -591,7 +588,13 @@ describe('encodePolysFeature and decodePolysFeature', () => { expect(decodeBytesB).toEqual(new Uint8Array(dataB)); // read out the features const decodedPolyFeatureA = readFeature(decodeBytesA, 4_096, cache, shape) as OVectorPolysFeature; - const decodedPolyFeatureB = readFeature(decodeBytesB, 4_096, cache, shape) as OVectorPolysFeature; + const decodedPolyFeatureB = readFeature( + decodeBytesB, + 4_096, + cache, + shape, + mShape, + ) as OVectorPolysFeature; it('point features are decoded correctly', () => { // ensure data type is accurate: @@ -629,102 +632,102 @@ describe('encodePolysFeature and decodePolysFeature', () => { expect(decodedPolyFeatureB.loadGeometry()).toEqual([ [ [ - { x: 1, y: 0 }, - { x: 2, y: -1 }, + { x: 1, y: 0, m: { width: 2 } }, + { x: 2, y: -1, m: { width: -3 } }, ], [ - { x: 2, y: -1 }, - { x: 0, y: -2 }, + { x: 2, y: -1, m: { width: 0 } }, + { x: 0, y: -2, m: { width: 0 } }, ], ], [ [ - { x: 0, y: -2 }, - { x: 300, y: 500 }, + { x: 0, y: -2, m: { width: 0 } }, + { x: 300, y: 500, m: { width: 55 } }, ], [ - { x: 300, y: 500 }, - { x: 0, y: 0 }, + { x: 300, y: 500, m: { width: 0 } }, + { x: 0, y: 0, m: { width: 0 } }, ], ], [ [ - { x: 0, y: 0 }, - { x: 300, y: 500 }, + { x: 0, y: 0, m: { width: 0 } }, + { x: 300, y: 500, m: { width: 0 } }, ], [ - { x: 300, y: 500 }, - { x: 0, y: -2 }, + { x: 300, y: 500, m: { width: -1_222 } }, + { x: 0, y: -2, m: { width: 0 } }, ], [ - { x: 0, y: -2 }, - { x: 300, y: 500 }, + { x: 0, y: -2, m: { width: 0 } }, + { x: 300, y: 500, m: { width: 0 } }, ], ], ]); expect(decodedPolyFeatureB.loadPoints()).toEqual([ - { x: 1, y: 0 }, - { x: 2, y: -1 }, - { x: 2, y: -1 }, - { x: 0, y: -2 }, - { x: 0, y: -2 }, - { x: 300, y: 500 }, - { x: 300, y: 500 }, - { x: 0, y: 0 }, - { x: 0, y: 0 }, - { x: 300, y: 500 }, - { x: 300, y: 500 }, - { x: 0, y: -2 }, - { x: 0, y: -2 }, - { x: 300, y: 500 }, + { x: 1, y: 0, m: { width: 2 } }, + { x: 2, y: -1, m: { width: -3 } }, + { x: 2, y: -1, m: { width: 0 } }, + { x: 0, y: -2, m: { width: 0 } }, + { x: 0, y: -2, m: { width: 0 } }, + { x: 300, y: 500, m: { width: 55 } }, + { x: 300, y: 500, m: { width: 0 } }, + { x: 0, y: 0, m: { width: 0 } }, + { x: 0, y: 0, m: { width: 0 } }, + { x: 300, y: 500, m: { width: 0 } }, + { x: 300, y: 500, m: { width: -1_222 } }, + { x: 0, y: -2, m: { width: 0 } }, + { x: 0, y: -2, m: { width: 0 } }, + { x: 300, y: 500, m: { width: 0 } }, ]); expect(decodedPolyFeatureB.loadLines()).toEqual([ { geometry: [ - { x: 1, y: 0 }, - { x: 2, y: -1 }, + { x: 1, y: 0, m: { width: 2 } }, + { x: 2, y: -1, m: { width: -3 } }, ], offset: 4.4, }, { geometry: [ - { x: 2, y: -1 }, - { x: 0, y: -2 }, + { x: 2, y: -1, m: { width: 0 } }, + { x: 0, y: -2, m: { width: 0 } }, ], offset: 1004, }, { geometry: [ - { x: 0, y: -2 }, - { x: 300, y: 500 }, + { x: 0, y: -2, m: { width: 0 } }, + { x: 300, y: 500, m: { width: 55 } }, ], offset: 102.2, }, { geometry: [ - { x: 300, y: 500 }, - { x: 0, y: 0 }, + { x: 300, y: 500, m: { width: 0 } }, + { x: 0, y: 0, m: { width: 0 } }, ], offset: 2.2, }, { geometry: [ - { x: 0, y: 0 }, - { x: 300, y: 500 }, + { x: 0, y: 0, m: { width: 0 } }, + { x: 300, y: 500, m: { width: 0 } }, ], offset: 5.5, }, { geometry: [ - { x: 300, y: 500 }, - { x: 0, y: -2 }, + { x: 300, y: 500, m: { width: -1_222 } }, + { x: 0, y: -2, m: { width: 0 } }, ], offset: 0, }, { geometry: [ - { x: 0, y: -2 }, - { x: 300, y: 500 }, + { x: 0, y: -2, m: { width: 0 } }, + { x: 300, y: 500, m: { width: 0 } }, ], offset: 0, }, @@ -748,18 +751,19 @@ describe('encodePolys3DFeature and decodePolys3DFeature', () => { const pbf = new Pbf(); const col = new ColumnCacheWriter(); const shape: Shape = { name: 'string' }; + const mShape: Shape = { width: 'i64' }; const basePolyFeatureA = new BaseVectorPolys3DFeature( [ [ - new BaseVectorLine3D([ + new BaseVectorLine([ { x: 3_805, y: 5_645, z: 4_001 }, { x: 1, y: 0, z: 3 }, ]), - new BaseVectorLine3D([ + new BaseVectorLine([ { x: 1, y: 0, z: 3 }, { x: 2, y: -1, z: -9 }, ]), - new BaseVectorLine3D([ + new BaseVectorLine([ { x: 2, y: -1, z: -9 }, { x: 0, y: -2, z: 0 }, ]), @@ -767,21 +771,20 @@ describe('encodePolys3DFeature and decodePolys3DFeature', () => { ], undefined, undefined, - undefined, { name: 'a' }, 55, ); const basePolyFeatureB = new BaseVectorPolys3DFeature( [ [ - new BaseVectorLine3D( + new BaseVectorLine( [ - { x: 1, y: 0, z: 3 }, + { x: 1, y: 0, z: 3, m: { width: 55 } }, { x: 2, y: -1, z: -9 }, ], 4.4, ), - new BaseVectorLine3D( + new BaseVectorLine( [ { x: 2, y: -1, z: -3 }, { x: 0, y: -2, z: 22 }, @@ -790,14 +793,14 @@ describe('encodePolys3DFeature and decodePolys3DFeature', () => { ), ], [ - new BaseVectorLine3D( + new BaseVectorLine( [ { x: 0, y: -2, z: 0 }, { x: 300, y: 500, z: 300 }, ], 102.2, ), - new BaseVectorLine3D( + new BaseVectorLine( [ { x: 300, y: 500, z: 100 }, { x: 0, y: 0, z: 0 }, @@ -806,18 +809,18 @@ describe('encodePolys3DFeature and decodePolys3DFeature', () => { ), ], [ - new BaseVectorLine3D( + new BaseVectorLine( [ { x: 0, y: 0, z: 0 }, { x: 300, y: 500, z: 300 }, ], 5.5, ), - new BaseVectorLine3D([ + new BaseVectorLine([ { x: 300, y: 500, z: 300 }, { x: 0, y: -2, z: 0 }, ]), - new BaseVectorLine3D([ + new BaseVectorLine([ { x: 0, y: -2, z: 0 }, { x: 300, y: 500, z: 200 }, ]), @@ -825,13 +828,13 @@ describe('encodePolys3DFeature and decodePolys3DFeature', () => { ], [0, 1, 5, 2], [1, 2, 3, 4, 5, 6], - [0.1, 1.1, 2.3, 3.3, -50, 120], { name: 'b' }, 5_555, + [0.1, 1.1, 2.3, 3.3, -50, 120], ); const dataA = writeOVFeature(basePolyFeatureA, shape, undefined, col); - const dataB = writeOVFeature(basePolyFeatureB, shape, undefined, col); + const dataB = writeOVFeature(basePolyFeatureB, shape, mShape, col); // store column pbf.writeMessage(5, ColumnCacheWriter.write, col); // store features @@ -860,6 +863,7 @@ describe('encodePolys3DFeature and decodePolys3DFeature', () => { 4_096, cache, shape, + mShape, ) as OVectorPolys3DFeature; it('point features are decoded correctly', () => { @@ -898,102 +902,102 @@ describe('encodePolys3DFeature and decodePolys3DFeature', () => { expect(decodedPolyFeatureB.loadGeometry()).toEqual([ [ [ - { x: 1, y: 0, z: 3 }, - { x: 2, y: -1, z: -9 }, + { x: 1, y: 0, z: 3, m: { width: 55 } }, + { x: 2, y: -1, z: -9, m: { width: 0 } }, ], [ - { x: 2, y: -1, z: -3 }, - { x: 0, y: -2, z: 22 }, + { x: 2, y: -1, z: -3, m: { width: 0 } }, + { x: 0, y: -2, z: 22, m: { width: 0 } }, ], ], [ [ - { x: 0, y: -2, z: 0 }, - { x: 300, y: 500, z: 300 }, + { x: 0, y: -2, z: 0, m: { width: 0 } }, + { x: 300, y: 500, z: 300, m: { width: 0 } }, ], [ - { x: 300, y: 500, z: 100 }, - { x: 0, y: 0, z: 0 }, + { x: 300, y: 500, z: 100, m: { width: 0 } }, + { x: 0, y: 0, z: 0, m: { width: 0 } }, ], ], [ [ - { x: 0, y: 0, z: 0 }, - { x: 300, y: 500, z: 300 }, + { x: 0, y: 0, z: 0, m: { width: 0 } }, + { x: 300, y: 500, z: 300, m: { width: 0 } }, ], [ - { x: 300, y: 500, z: 300 }, - { x: 0, y: -2, z: 0 }, + { x: 300, y: 500, z: 300, m: { width: 0 } }, + { x: 0, y: -2, z: 0, m: { width: 0 } }, ], [ - { x: 0, y: -2, z: 0 }, - { x: 300, y: 500, z: 200 }, + { x: 0, y: -2, z: 0, m: { width: 0 } }, + { x: 300, y: 500, z: 200, m: { width: 0 } }, ], ], ]); expect(decodedPolyFeatureB.loadPoints()).toEqual([ - { x: 1, y: 0, z: 3 }, - { x: 2, y: -1, z: -9 }, - { x: 2, y: -1, z: -3 }, - { x: 0, y: -2, z: 22 }, - { x: 0, y: -2, z: 0 }, - { x: 300, y: 500, z: 300 }, - { x: 300, y: 500, z: 100 }, - { x: 0, y: 0, z: 0 }, - { x: 0, y: 0, z: 0 }, - { x: 300, y: 500, z: 300 }, - { x: 300, y: 500, z: 300 }, - { x: 0, y: -2, z: 0 }, - { x: 0, y: -2, z: 0 }, - { x: 300, y: 500, z: 200 }, + { x: 1, y: 0, z: 3, m: { width: 55 } }, + { x: 2, y: -1, z: -9, m: { width: 0 } }, + { x: 2, y: -1, z: -3, m: { width: 0 } }, + { x: 0, y: -2, z: 22, m: { width: 0 } }, + { x: 0, y: -2, z: 0, m: { width: 0 } }, + { x: 300, y: 500, z: 300, m: { width: 0 } }, + { x: 300, y: 500, z: 100, m: { width: 0 } }, + { x: 0, y: 0, z: 0, m: { width: 0 } }, + { x: 0, y: 0, z: 0, m: { width: 0 } }, + { x: 300, y: 500, z: 300, m: { width: 0 } }, + { x: 300, y: 500, z: 300, m: { width: 0 } }, + { x: 0, y: -2, z: 0, m: { width: 0 } }, + { x: 0, y: -2, z: 0, m: { width: 0 } }, + { x: 300, y: 500, z: 200, m: { width: 0 } }, ]); expect(decodedPolyFeatureB.loadLines()).toEqual([ { geometry: [ - { x: 1, y: 0, z: 3 }, - { x: 2, y: -1, z: -9 }, + { x: 1, y: 0, z: 3, m: { width: 55 } }, + { x: 2, y: -1, z: -9, m: { width: 0 } }, ], offset: 4.4, }, { geometry: [ - { x: 2, y: -1, z: -3 }, - { x: 0, y: -2, z: 22 }, + { x: 2, y: -1, z: -3, m: { width: 0 } }, + { x: 0, y: -2, z: 22, m: { width: 0 } }, ], offset: 1004, }, { geometry: [ - { x: 0, y: -2, z: 0 }, - { x: 300, y: 500, z: 300 }, + { x: 0, y: -2, z: 0, m: { width: 0 } }, + { x: 300, y: 500, z: 300, m: { width: 0 } }, ], offset: 102.2, }, { geometry: [ - { x: 300, y: 500, z: 100 }, - { x: 0, y: 0, z: 0 }, + { x: 300, y: 500, z: 100, m: { width: 0 } }, + { x: 0, y: 0, z: 0, m: { width: 0 } }, ], offset: 2.2, }, { geometry: [ - { x: 0, y: 0, z: 0 }, - { x: 300, y: 500, z: 300 }, + { x: 0, y: 0, z: 0, m: { width: 0 } }, + { x: 300, y: 500, z: 300, m: { width: 0 } }, ], offset: 5.5, }, { geometry: [ - { x: 300, y: 500, z: 300 }, - { x: 0, y: -2, z: 0 }, + { x: 300, y: 500, z: 300, m: { width: 0 } }, + { x: 0, y: -2, z: 0, m: { width: 0 } }, ], offset: 0, }, { geometry: [ - { x: 0, y: -2, z: 0 }, - { x: 300, y: 500, z: 200 }, + { x: 0, y: -2, z: 0, m: { width: 0 } }, + { x: 300, y: 500, z: 200, m: { width: 0 } }, ], offset: 0, }, diff --git a/test/parseS2.test.ts b/test/parseS2.test.ts index a1dee67..b3d96e4 100644 --- a/test/parseS2.test.ts +++ b/test/parseS2.test.ts @@ -73,7 +73,6 @@ describe('serialize and parse vector tile lines', () => { { x: 1879, y: 1879 }, ]), ], - undefined, { name: 2.2 }, 100, ); @@ -91,7 +90,6 @@ describe('serialize and parse vector tile lines', () => { { x: 3469, y: 3469 }, ]), ], - undefined, { name: true }, 200, ); @@ -208,7 +206,6 @@ describe('serialize and parse vector tile polygons', () => { ], undefined, undefined, - undefined, { a: -100, b: 500 }, 0, ); @@ -258,7 +255,6 @@ describe('serialize and parse vector tile polygons', () => { ], [0, 1, 2], [1, 2, 3, 4, 5, 6, 7, 8], - undefined, { name: 'c' }, 1234, );