node-red-contrib-tak-registration 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +19 -19
- package/node_modules/@turf/along/LICENSE +20 -0
- package/node_modules/@turf/along/README.md +69 -0
- package/node_modules/@turf/along/dist/es/index.js +50 -0
- package/node_modules/@turf/along/dist/es/package.json +1 -0
- package/node_modules/@turf/along/dist/js/index.d.ts +22 -0
- package/node_modules/@turf/along/dist/js/index.js +56 -0
- package/node_modules/@turf/along/package.json +95 -0
- package/node_modules/@turf/angle/LICENSE +20 -0
- package/node_modules/@turf/angle/README.md +64 -0
- package/node_modules/@turf/angle/dist/es/index.js +50 -0
- package/node_modules/@turf/angle/dist/es/package.json +1 -0
- package/node_modules/@turf/angle/dist/js/index.d.ts +22 -0
- package/node_modules/@turf/angle/dist/js/index.js +55 -0
- package/node_modules/@turf/angle/package.json +102 -0
- package/node_modules/@turf/area/LICENSE +20 -0
- package/node_modules/@turf/area/README.md +54 -0
- package/node_modules/@turf/area/dist/es/index.js +114 -0
- package/node_modules/@turf/area/dist/es/package.json +1 -0
- package/node_modules/@turf/area/dist/js/index.d.ts +17 -0
- package/node_modules/@turf/area/dist/js/index.js +117 -0
- package/node_modules/@turf/area/package.json +94 -0
- package/node_modules/@turf/bbox/LICENSE +20 -0
- package/node_modules/@turf/bbox/README.md +53 -0
- package/node_modules/@turf/bbox/dist/es/index.js +35 -0
- package/node_modules/@turf/bbox/dist/es/package.json +1 -0
- package/node_modules/@turf/bbox/dist/js/index.d.ts +17 -0
- package/node_modules/@turf/bbox/dist/js/index.js +37 -0
- package/node_modules/@turf/bbox/package.json +108 -0
- package/node_modules/@turf/bbox-clip/LICENSE +20 -0
- package/node_modules/@turf/bbox-clip/README.md +68 -0
- package/node_modules/@turf/bbox-clip/dist/es/index.js +68 -0
- package/node_modules/@turf/bbox-clip/dist/es/lib/lineclip.js +107 -0
- package/node_modules/@turf/bbox-clip/dist/es/package.json +1 -0
- package/node_modules/@turf/bbox-clip/dist/js/index.d.ts +20 -0
- package/node_modules/@turf/bbox-clip/dist/js/index.js +71 -0
- package/node_modules/@turf/bbox-clip/dist/js/lib/lineclip.d.ts +3 -0
- package/node_modules/@turf/bbox-clip/dist/js/lib/lineclip.js +111 -0
- package/node_modules/@turf/bbox-clip/package.json +108 -0
- package/node_modules/@turf/bbox-polygon/LICENSE +20 -0
- package/node_modules/@turf/bbox-polygon/README.md +66 -0
- package/node_modules/@turf/bbox-polygon/dist/es/index.js +36 -0
- package/node_modules/@turf/bbox-polygon/dist/es/package.json +1 -0
- package/node_modules/@turf/bbox-polygon/dist/js/index.d.ts +22 -0
- package/node_modules/@turf/bbox-polygon/dist/js/index.js +39 -0
- package/node_modules/@turf/bbox-polygon/package.json +92 -0
- package/node_modules/@turf/bearing/LICENSE +20 -0
- package/node_modules/@turf/bearing/README.md +67 -0
- package/node_modules/@turf/bearing/dist/es/index.js +57 -0
- package/node_modules/@turf/bearing/dist/es/package.json +1 -0
- package/node_modules/@turf/bearing/dist/js/index.d.ts +26 -0
- package/node_modules/@turf/bearing/dist/js/index.js +60 -0
- package/node_modules/@turf/bearing/package.json +96 -0
- package/node_modules/@turf/bezier-spline/LICENSE +20 -0
- package/node_modules/@turf/bezier-spline/README.md +79 -0
- package/node_modules/@turf/bezier-spline/dist/es/index.js +60 -0
- package/node_modules/@turf/bezier-spline/dist/es/lib/spline.js +158 -0
- package/node_modules/@turf/bezier-spline/dist/es/package.json +1 -0
- package/node_modules/@turf/bezier-spline/dist/js/index.d.ts +37 -0
- package/node_modules/@turf/bezier-spline/dist/js/index.js +65 -0
- package/node_modules/@turf/bezier-spline/dist/js/lib/spline.d.ts +62 -0
- package/node_modules/@turf/bezier-spline/dist/js/lib/spline.js +160 -0
- package/node_modules/@turf/bezier-spline/package.json +93 -0
- package/node_modules/@turf/boolean-clockwise/LICENSE +20 -0
- package/node_modules/@turf/boolean-clockwise/README.md +60 -0
- package/node_modules/@turf/boolean-clockwise/dist/es/index.js +30 -0
- package/node_modules/@turf/boolean-clockwise/dist/es/package.json +1 -0
- package/node_modules/@turf/boolean-clockwise/dist/js/index.d.ts +17 -0
- package/node_modules/@turf/boolean-clockwise/dist/js/index.js +33 -0
- package/node_modules/@turf/boolean-clockwise/package.json +110 -0
- package/node_modules/@turf/boolean-contains/LICENSE +20 -0
- package/node_modules/@turf/boolean-contains/README.md +63 -0
- package/node_modules/@turf/boolean-contains/dist/es/index.js +225 -0
- package/node_modules/@turf/boolean-contains/dist/es/package.json +1 -0
- package/node_modules/@turf/boolean-contains/dist/js/index.d.ts +46 -0
- package/node_modules/@turf/boolean-contains/dist/js/index.js +241 -0
- package/node_modules/@turf/boolean-contains/package.json +107 -0
- package/node_modules/@turf/boolean-crosses/LICENSE +20 -0
- package/node_modules/@turf/boolean-crosses/README.md +64 -0
- package/node_modules/@turf/boolean-crosses/dist/es/index.js +166 -0
- package/node_modules/@turf/boolean-crosses/dist/es/package.json +1 -0
- package/node_modules/@turf/boolean-crosses/dist/js/index.d.ts +21 -0
- package/node_modules/@turf/boolean-crosses/dist/js/index.js +171 -0
- package/node_modules/@turf/boolean-crosses/package.json +106 -0
- package/node_modules/@turf/boolean-disjoint/LICENSE +20 -0
- package/node_modules/@turf/boolean-disjoint/README.md +60 -0
- package/node_modules/@turf/boolean-disjoint/dist/es/index.js +168 -0
- package/node_modules/@turf/boolean-disjoint/dist/es/package.json +1 -0
- package/node_modules/@turf/boolean-disjoint/dist/js/index.d.ts +17 -0
- package/node_modules/@turf/boolean-disjoint/dist/js/index.js +173 -0
- package/node_modules/@turf/boolean-disjoint/package.json +106 -0
- package/node_modules/@turf/boolean-equal/LICENSE +20 -0
- package/node_modules/@turf/boolean-equal/README.md +66 -0
- package/node_modules/@turf/boolean-equal/dist/es/index.js +30 -0
- package/node_modules/@turf/boolean-equal/dist/es/package.json +1 -0
- package/node_modules/@turf/boolean-equal/dist/js/index.d.ts +21 -0
- package/node_modules/@turf/boolean-equal/dist/js/index.js +35 -0
- package/node_modules/@turf/boolean-equal/package.json +112 -0
- package/node_modules/@turf/boolean-intersects/LICENSE +20 -0
- package/node_modules/@turf/boolean-intersects/README.md +55 -0
- package/node_modules/@turf/boolean-intersects/dist/es/index.js +28 -0
- package/node_modules/@turf/boolean-intersects/dist/es/package.json +1 -0
- package/node_modules/@turf/boolean-intersects/dist/js/index.d.ts +16 -0
- package/node_modules/@turf/boolean-intersects/dist/js/index.js +34 -0
- package/node_modules/@turf/boolean-intersects/package.json +104 -0
- package/node_modules/@turf/boolean-overlap/LICENSE +20 -0
- package/node_modules/@turf/boolean-overlap/README.md +73 -0
- package/node_modules/@turf/boolean-overlap/dist/es/index.js +80 -0
- package/node_modules/@turf/boolean-overlap/dist/es/package.json +1 -0
- package/node_modules/@turf/boolean-overlap/dist/js/index.d.ts +23 -0
- package/node_modules/@turf/boolean-overlap/dist/js/index.js +86 -0
- package/node_modules/@turf/boolean-overlap/package.json +110 -0
- package/node_modules/@turf/boolean-parallel/LICENSE +20 -0
- package/node_modules/@turf/boolean-parallel/README.md +57 -0
- package/node_modules/@turf/boolean-parallel/dist/es/index.js +71 -0
- package/node_modules/@turf/boolean-parallel/dist/es/package.json +1 -0
- package/node_modules/@turf/boolean-parallel/dist/js/index.d.ts +17 -0
- package/node_modules/@turf/boolean-parallel/dist/js/index.js +76 -0
- package/node_modules/@turf/boolean-parallel/package.json +100 -0
- package/node_modules/@turf/boolean-point-in-polygon/LICENSE +20 -0
- package/node_modules/@turf/boolean-point-in-polygon/README.md +76 -0
- package/node_modules/@turf/boolean-point-in-polygon/dist/es/index.js +115 -0
- package/node_modules/@turf/boolean-point-in-polygon/dist/es/package.json +1 -0
- package/node_modules/@turf/boolean-point-in-polygon/dist/js/index.d.ts +28 -0
- package/node_modules/@turf/boolean-point-in-polygon/dist/js/index.js +118 -0
- package/node_modules/@turf/boolean-point-in-polygon/package.json +104 -0
- package/node_modules/@turf/boolean-point-on-line/LICENSE +20 -0
- package/node_modules/@turf/boolean-point-on-line/README.md +60 -0
- package/node_modules/@turf/boolean-point-on-line/dist/es/index.js +102 -0
- package/node_modules/@turf/boolean-point-on-line/dist/es/package.json +1 -0
- package/node_modules/@turf/boolean-point-on-line/dist/js/index.d.ts +23 -0
- package/node_modules/@turf/boolean-point-on-line/dist/js/index.js +104 -0
- package/node_modules/@turf/boolean-point-on-line/package.json +100 -0
- package/node_modules/@turf/boolean-within/LICENSE +20 -0
- package/node_modules/@turf/boolean-within/README.md +58 -0
- package/node_modules/@turf/boolean-within/dist/es/index.js +215 -0
- package/node_modules/@turf/boolean-within/dist/es/package.json +1 -0
- package/node_modules/@turf/boolean-within/dist/js/index.d.ts +20 -0
- package/node_modules/@turf/boolean-within/dist/js/index.js +220 -0
- package/node_modules/@turf/boolean-within/package.json +108 -0
- package/node_modules/@turf/buffer/LICENSE +20 -0
- package/node_modules/@turf/buffer/README.md +76 -0
- package/node_modules/@turf/buffer/dist/es/index.js +175 -0
- package/node_modules/@turf/buffer/dist/es/package.json +1 -0
- package/node_modules/@turf/buffer/dist/js/index.js +182 -0
- package/node_modules/@turf/buffer/index.d.ts +61 -0
- package/node_modules/@turf/buffer/package.json +112 -0
- package/node_modules/@turf/center/LICENSE +20 -0
- package/node_modules/@turf/center/README.md +71 -0
- package/node_modules/@turf/center/dist/es/index.js +34 -0
- package/node_modules/@turf/center/dist/es/package.json +1 -0
- package/node_modules/@turf/center/dist/js/index.d.ts +31 -0
- package/node_modules/@turf/center/dist/js/index.js +39 -0
- package/node_modules/@turf/center/package.json +101 -0
- package/node_modules/@turf/center-mean/LICENSE +20 -0
- package/node_modules/@turf/center-mean/README.md +75 -0
- package/node_modules/@turf/center-mean/dist/es/index.js +51 -0
- package/node_modules/@turf/center-mean/dist/es/package.json +1 -0
- package/node_modules/@turf/center-mean/dist/js/index.d.ts +35 -0
- package/node_modules/@turf/center-mean/dist/js/index.js +53 -0
- package/node_modules/@turf/center-mean/package.json +108 -0
- package/node_modules/@turf/center-median/LICENSE +20 -0
- package/node_modules/@turf/center-median/README.md +103 -0
- package/node_modules/@turf/center-median/dist/es/index.js +135 -0
- package/node_modules/@turf/center-median/dist/es/package.json +1 -0
- package/node_modules/@turf/center-median/dist/js/index.d.ts +62 -0
- package/node_modules/@turf/center-median/dist/js/index.js +140 -0
- package/node_modules/@turf/center-median/package.json +103 -0
- package/node_modules/@turf/center-of-mass/LICENSE +20 -0
- package/node_modules/@turf/center-of-mass/README.md +67 -0
- package/node_modules/@turf/center-of-mass/dist/es/index.js +81 -0
- package/node_modules/@turf/center-of-mass/dist/es/package.json +1 -0
- package/node_modules/@turf/center-of-mass/dist/js/index.d.ts +21 -0
- package/node_modules/@turf/center-of-mass/dist/js/index.js +86 -0
- package/node_modules/@turf/center-of-mass/package.json +95 -0
- package/node_modules/@turf/centroid/LICENSE +20 -0
- package/node_modules/@turf/centroid/README.md +62 -0
- package/node_modules/@turf/centroid/dist/es/index.js +32 -0
- package/node_modules/@turf/centroid/dist/es/package.json +1 -0
- package/node_modules/@turf/centroid/dist/js/index.d.ts +22 -0
- package/node_modules/@turf/centroid/dist/js/index.js +34 -0
- package/node_modules/@turf/centroid/package.json +101 -0
- package/node_modules/@turf/circle/LICENSE +20 -0
- package/node_modules/@turf/circle/README.md +71 -0
- package/node_modules/@turf/circle/dist/es/index.js +41 -0
- package/node_modules/@turf/circle/dist/es/package.json +1 -0
- package/node_modules/@turf/circle/dist/js/index.d.ts +27 -0
- package/node_modules/@turf/circle/dist/js/index.js +46 -0
- package/node_modules/@turf/circle/package.json +99 -0
- package/node_modules/@turf/clean-coords/LICENSE +20 -0
- package/node_modules/@turf/clean-coords/README.md +61 -0
- package/node_modules/@turf/clean-coords/dist/es/index.js +159 -0
- package/node_modules/@turf/clean-coords/dist/es/package.json +1 -0
- package/node_modules/@turf/clean-coords/dist/js/index.d.ts +22 -0
- package/node_modules/@turf/clean-coords/dist/js/index.js +161 -0
- package/node_modules/@turf/clean-coords/package.json +103 -0
- package/node_modules/@turf/clone/LICENSE +20 -0
- package/node_modules/@turf/clone/README.md +49 -0
- package/node_modules/@turf/clone/dist/es/index.js +157 -0
- package/node_modules/@turf/clone/dist/es/package.json +1 -0
- package/node_modules/@turf/clone/dist/js/index.d.ts +15 -0
- package/node_modules/@turf/clone/dist/js/index.js +159 -0
- package/node_modules/@turf/clone/package.json +109 -0
- package/node_modules/@turf/clusters/LICENSE +20 -0
- package/node_modules/@turf/clusters/README.md +208 -0
- package/node_modules/@turf/clusters/dist/es/index.js +294 -0
- package/node_modules/@turf/clusters/dist/es/package.json +1 -0
- package/node_modules/@turf/clusters/dist/js/index.d.ts +197 -0
- package/node_modules/@turf/clusters/dist/js/index.js +303 -0
- package/node_modules/@turf/clusters/package.json +98 -0
- package/node_modules/@turf/clusters-dbscan/LICENSE +20 -0
- package/node_modules/@turf/clusters-dbscan/README.md +73 -0
- package/node_modules/@turf/clusters-dbscan/dist/es/index.js +70 -0
- package/node_modules/@turf/clusters-dbscan/dist/es/package.json +1 -0
- package/node_modules/@turf/clusters-dbscan/dist/js/index.d.ts +35 -0
- package/node_modules/@turf/clusters-dbscan/dist/js/index.js +75 -0
- package/node_modules/@turf/clusters-dbscan/package.json +118 -0
- package/node_modules/@turf/clusters-kmeans/LICENSE +20 -0
- package/node_modules/@turf/clusters-kmeans/README.md +69 -0
- package/node_modules/@turf/clusters-kmeans/dist/es/index.js +57 -0
- package/node_modules/@turf/clusters-kmeans/dist/es/package.json +1 -0
- package/node_modules/@turf/clusters-kmeans/dist/js/index.d.ts +31 -0
- package/node_modules/@turf/clusters-kmeans/dist/js/index.js +62 -0
- package/node_modules/@turf/clusters-kmeans/package.json +119 -0
- package/node_modules/@turf/collect/LICENSE +20 -0
- package/node_modules/@turf/collect/README.md +73 -0
- package/node_modules/@turf/collect/dist/es/index.js +68 -0
- package/node_modules/@turf/collect/dist/es/package.json +1 -0
- package/node_modules/@turf/collect/dist/js/index.d.ts +33 -0
- package/node_modules/@turf/collect/dist/js/index.js +73 -0
- package/node_modules/@turf/collect/node_modules/quickselect/LICENSE +15 -0
- package/node_modules/@turf/collect/node_modules/quickselect/README.md +28 -0
- package/node_modules/@turf/collect/node_modules/quickselect/index.js +54 -0
- package/node_modules/@turf/collect/node_modules/quickselect/package.json +69 -0
- package/node_modules/@turf/collect/node_modules/quickselect/quickselect.js +63 -0
- package/node_modules/@turf/collect/node_modules/rbush/LICENSE +21 -0
- package/node_modules/@turf/collect/node_modules/rbush/README.md +291 -0
- package/node_modules/@turf/collect/node_modules/rbush/index.js +562 -0
- package/node_modules/@turf/collect/node_modules/rbush/package.json +85 -0
- package/node_modules/@turf/collect/node_modules/rbush/rbush.js +626 -0
- package/node_modules/@turf/collect/node_modules/rbush/rbush.min.js +1 -0
- package/node_modules/@turf/collect/package.json +101 -0
- package/node_modules/@turf/combine/LICENSE +20 -0
- package/node_modules/@turf/combine/README.md +81 -0
- package/node_modules/@turf/combine/dist/es/index.js +79 -0
- package/node_modules/@turf/combine/dist/es/package.json +1 -0
- package/node_modules/@turf/combine/dist/js/index.d.ts +27 -0
- package/node_modules/@turf/combine/dist/js/index.js +81 -0
- package/node_modules/@turf/combine/package.json +91 -0
- package/node_modules/@turf/concave/LICENSE +20 -0
- package/node_modules/@turf/concave/README.md +81 -0
- package/node_modules/@turf/concave/dist/es/index.js +83 -0
- package/node_modules/@turf/concave/dist/es/lib/turf-dissolve.js +71 -0
- package/node_modules/@turf/concave/dist/es/lib/turf-line-dissolve.js +105 -0
- package/node_modules/@turf/concave/dist/es/lib/turf-polygon-dissolve.js +36 -0
- package/node_modules/@turf/concave/dist/es/package.json +1 -0
- package/node_modules/@turf/concave/dist/js/index.d.ts +33 -0
- package/node_modules/@turf/concave/dist/js/index.js +88 -0
- package/node_modules/@turf/concave/dist/js/lib/turf-dissolve.d.ts +15 -0
- package/node_modules/@turf/concave/dist/js/lib/turf-dissolve.js +76 -0
- package/node_modules/@turf/concave/dist/js/lib/turf-line-dissolve.d.ts +14 -0
- package/node_modules/@turf/concave/dist/js/lib/turf-line-dissolve.js +110 -0
- package/node_modules/@turf/concave/dist/js/lib/turf-polygon-dissolve.d.ts +12 -0
- package/node_modules/@turf/concave/dist/js/lib/turf-polygon-dissolve.js +42 -0
- package/node_modules/@turf/concave/package.json +138 -0
- package/node_modules/@turf/convex/LICENSE +20 -0
- package/node_modules/@turf/convex/README.md +83 -0
- package/node_modules/@turf/convex/dist/es/index.js +51 -0
- package/node_modules/@turf/convex/dist/es/package.json +1 -0
- package/node_modules/@turf/convex/dist/js/index.d.ts +33 -0
- package/node_modules/@turf/convex/dist/js/index.js +57 -0
- package/node_modules/@turf/convex/package.json +94 -0
- package/node_modules/@turf/destination/LICENSE +20 -0
- package/node_modules/@turf/destination/README.md +75 -0
- package/node_modules/@turf/destination/dist/es/index.js +47 -0
- package/node_modules/@turf/destination/dist/es/package.json +1 -0
- package/node_modules/@turf/destination/dist/js/index.d.ts +31 -0
- package/node_modules/@turf/destination/dist/js/index.js +50 -0
- package/node_modules/@turf/destination/package.json +102 -0
- package/node_modules/@turf/difference/LICENSE +20 -0
- package/node_modules/@turf/difference/README.md +77 -0
- package/node_modules/@turf/difference/dist/es/index.js +53 -0
- package/node_modules/@turf/difference/dist/es/package.json +1 -0
- package/node_modules/@turf/difference/dist/js/index.js +60 -0
- package/node_modules/@turf/difference/index.d.ts +9 -0
- package/node_modules/@turf/difference/package.json +88 -0
- package/node_modules/@turf/dissolve/LICENSE +20 -0
- package/node_modules/@turf/dissolve/README.md +96 -0
- package/node_modules/@turf/dissolve/dist/es/index.js +81 -0
- package/node_modules/@turf/dissolve/dist/es/package.json +1 -0
- package/node_modules/@turf/dissolve/dist/js/index.js +89 -0
- package/node_modules/@turf/dissolve/index.d.ts +11 -0
- package/node_modules/@turf/dissolve/package.json +91 -0
- package/node_modules/@turf/distance/LICENSE +20 -0
- package/node_modules/@turf/distance/README.md +69 -0
- package/node_modules/@turf/distance/dist/es/index.js +39 -0
- package/node_modules/@turf/distance/dist/es/package.json +1 -0
- package/node_modules/@turf/distance/dist/js/index.d.ts +27 -0
- package/node_modules/@turf/distance/dist/js/index.js +41 -0
- package/node_modules/@turf/distance/package.json +109 -0
- package/node_modules/@turf/distance-weight/LICENSE +20 -0
- package/node_modules/@turf/distance-weight/README.md +64 -0
- package/node_modules/@turf/distance-weight/dist/es/index.js +105 -0
- package/node_modules/@turf/distance-weight/dist/es/package.json +1 -0
- package/node_modules/@turf/distance-weight/dist/js/index.d.ts +37 -0
- package/node_modules/@turf/distance-weight/dist/js/index.js +112 -0
- package/node_modules/@turf/distance-weight/package.json +99 -0
- package/node_modules/@turf/ellipse/LICENSE +20 -0
- package/node_modules/@turf/ellipse/README.md +72 -0
- package/node_modules/@turf/ellipse/dist/es/index.js +104 -0
- package/node_modules/@turf/ellipse/dist/es/package.json +1 -0
- package/node_modules/@turf/ellipse/dist/js/index.js +112 -0
- package/node_modules/@turf/ellipse/index.d.ts +15 -0
- package/node_modules/@turf/ellipse/package.json +101 -0
- package/node_modules/@turf/envelope/LICENSE +20 -0
- package/node_modules/@turf/envelope/README.md +61 -0
- package/node_modules/@turf/envelope/dist/es/index.js +26 -0
- package/node_modules/@turf/envelope/dist/es/package.json +1 -0
- package/node_modules/@turf/envelope/dist/js/index.js +34 -0
- package/node_modules/@turf/envelope/index.d.ts +6 -0
- package/node_modules/@turf/envelope/package.json +90 -0
- package/node_modules/@turf/explode/LICENSE +20 -0
- package/node_modules/@turf/explode/README.md +59 -0
- package/node_modules/@turf/explode/dist/es/index.js +35 -0
- package/node_modules/@turf/explode/dist/es/package.json +1 -0
- package/node_modules/@turf/explode/dist/js/index.js +38 -0
- package/node_modules/@turf/explode/index.d.ts +6 -0
- package/node_modules/@turf/explode/package.json +92 -0
- package/node_modules/@turf/flatten/LICENSE +20 -0
- package/node_modules/@turf/flatten/README.md +63 -0
- package/node_modules/@turf/flatten/dist/es/index.js +32 -0
- package/node_modules/@turf/flatten/dist/es/package.json +1 -0
- package/node_modules/@turf/flatten/dist/js/index.js +35 -0
- package/node_modules/@turf/flatten/index.d.ts +27 -0
- package/node_modules/@turf/flatten/package.json +100 -0
- package/node_modules/@turf/flip/LICENSE +20 -0
- package/node_modules/@turf/flip/README.md +57 -0
- package/node_modules/@turf/flip/dist/es/index.js +42 -0
- package/node_modules/@turf/flip/dist/es/package.json +1 -0
- package/node_modules/@turf/flip/dist/js/index.js +49 -0
- package/node_modules/@turf/flip/index.d.ts +8 -0
- package/node_modules/@turf/flip/package.json +90 -0
- package/node_modules/@turf/great-circle/LICENSE +20 -0
- package/node_modules/@turf/great-circle/README.md +74 -0
- package/node_modules/@turf/great-circle/dist/es/index.js +333 -0
- package/node_modules/@turf/great-circle/dist/es/package.json +1 -0
- package/node_modules/@turf/great-circle/dist/js/index.js +336 -0
- package/node_modules/@turf/great-circle/index.d.ts +20 -0
- package/node_modules/@turf/great-circle/package.json +105 -0
- package/node_modules/@turf/helpers/LICENSE +20 -0
- package/node_modules/@turf/helpers/README.md +579 -0
- package/node_modules/@turf/helpers/dist/es/index.js +696 -0
- package/node_modules/@turf/helpers/dist/es/lib/geojson.js +7 -0
- package/node_modules/@turf/helpers/dist/es/package.json +1 -0
- package/node_modules/@turf/helpers/dist/js/index.d.ts +482 -0
- package/node_modules/@turf/helpers/dist/js/index.js +724 -0
- package/node_modules/@turf/helpers/dist/js/lib/geojson.d.ts +193 -0
- package/node_modules/@turf/helpers/dist/js/lib/geojson.js +9 -0
- package/node_modules/@turf/helpers/package.json +211 -0
- package/node_modules/@turf/hex-grid/LICENSE +20 -0
- package/node_modules/@turf/hex-grid/README.md +82 -0
- package/node_modules/@turf/hex-grid/dist/es/index.js +157 -0
- package/node_modules/@turf/hex-grid/dist/es/package.json +1 -0
- package/node_modules/@turf/hex-grid/dist/js/index.d.ts +33 -0
- package/node_modules/@turf/hex-grid/dist/js/index.js +162 -0
- package/node_modules/@turf/hex-grid/package.json +126 -0
- package/node_modules/@turf/interpolate/LICENSE +20 -0
- package/node_modules/@turf/interpolate/README.md +74 -0
- package/node_modules/@turf/interpolate/dist/es/index.js +107 -0
- package/node_modules/@turf/interpolate/dist/es/package.json +1 -0
- package/node_modules/@turf/interpolate/dist/js/index.js +121 -0
- package/node_modules/@turf/interpolate/index.d.ts +25 -0
- package/node_modules/@turf/interpolate/package.json +105 -0
- package/node_modules/@turf/intersect/LICENSE +20 -0
- package/node_modules/@turf/intersect/README.md +81 -0
- package/node_modules/@turf/intersect/dist/es/index.js +50 -0
- package/node_modules/@turf/intersect/dist/es/package.json +1 -0
- package/node_modules/@turf/intersect/dist/js/index.d.ts +40 -0
- package/node_modules/@turf/intersect/dist/js/index.js +56 -0
- package/node_modules/@turf/intersect/package.json +96 -0
- package/node_modules/@turf/invariant/LICENSE +20 -0
- package/node_modules/@turf/invariant/README.md +202 -0
- package/node_modules/@turf/invariant/dist/es/index.js +223 -0
- package/node_modules/@turf/invariant/dist/es/package.json +1 -0
- package/node_modules/@turf/invariant/dist/js/index.d.ts +105 -0
- package/node_modules/@turf/invariant/dist/js/index.js +233 -0
- package/node_modules/@turf/invariant/package.json +154 -0
- package/node_modules/@turf/isobands/LICENSE +20 -0
- package/node_modules/@turf/isobands/README.md +64 -0
- package/node_modules/@turf/isobands/dist/es/index.js +3793 -0
- package/node_modules/@turf/isobands/dist/es/package.json +1 -0
- package/node_modules/@turf/isobands/dist/js/index.js +3804 -0
- package/node_modules/@turf/isobands/index.d.ts +19 -0
- package/node_modules/@turf/isobands/package.json +110 -0
- package/node_modules/@turf/isolines/LICENSE +20 -0
- package/node_modules/@turf/isolines/README.md +86 -0
- package/node_modules/@turf/isolines/dist/es/index.js +647 -0
- package/node_modules/@turf/isolines/dist/es/package.json +1 -0
- package/node_modules/@turf/isolines/dist/js/index.js +655 -0
- package/node_modules/@turf/isolines/index.d.ts +19 -0
- package/node_modules/@turf/isolines/package.json +106 -0
- package/node_modules/@turf/kinks/LICENSE +20 -0
- package/node_modules/@turf/kinks/README.md +79 -0
- package/node_modules/@turf/kinks/dist/es/index.js +136 -0
- package/node_modules/@turf/kinks/dist/es/lib/sweepline-intersections.js +288 -0
- package/node_modules/@turf/kinks/dist/es/package.json +1 -0
- package/node_modules/@turf/kinks/dist/js/index.d.ts +24 -0
- package/node_modules/@turf/kinks/dist/js/index.js +139 -0
- package/node_modules/@turf/kinks/dist/js/lib/sweepline-intersections.d.ts +2 -0
- package/node_modules/@turf/kinks/dist/js/lib/sweepline-intersections.js +290 -0
- package/node_modules/@turf/kinks/package.json +90 -0
- package/node_modules/@turf/length/LICENSE +20 -0
- package/node_modules/@turf/length/README.md +67 -0
- package/node_modules/@turf/length/dist/es/index.js +26 -0
- package/node_modules/@turf/length/dist/es/package.json +1 -0
- package/node_modules/@turf/length/dist/js/index.d.ts +20 -0
- package/node_modules/@turf/length/dist/js/index.js +32 -0
- package/node_modules/@turf/length/package.json +106 -0
- package/node_modules/@turf/line-arc/LICENSE +20 -0
- package/node_modules/@turf/line-arc/README.md +71 -0
- package/node_modules/@turf/line-arc/dist/es/index.js +70 -0
- package/node_modules/@turf/line-arc/dist/es/package.json +1 -0
- package/node_modules/@turf/line-arc/dist/js/index.d.ts +29 -0
- package/node_modules/@turf/line-arc/dist/js/index.js +76 -0
- package/node_modules/@turf/line-arc/package.json +92 -0
- package/node_modules/@turf/line-chunk/LICENSE +20 -0
- package/node_modules/@turf/line-chunk/README.md +74 -0
- package/node_modules/@turf/line-chunk/dist/es/index.js +87 -0
- package/node_modules/@turf/line-chunk/dist/es/package.json +1 -0
- package/node_modules/@turf/line-chunk/dist/js/index.js +95 -0
- package/node_modules/@turf/line-chunk/index.d.ts +25 -0
- package/node_modules/@turf/line-chunk/package.json +111 -0
- package/node_modules/@turf/line-intersect/LICENSE +20 -0
- package/node_modules/@turf/line-intersect/README.md +66 -0
- package/node_modules/@turf/line-intersect/dist/es/index.js +107 -0
- package/node_modules/@turf/line-intersect/dist/es/package.json +1 -0
- package/node_modules/@turf/line-intersect/dist/js/index.d.ts +18 -0
- package/node_modules/@turf/line-intersect/dist/js/index.js +112 -0
- package/node_modules/@turf/line-intersect/package.json +112 -0
- package/node_modules/@turf/line-offset/LICENSE +20 -0
- package/node_modules/@turf/line-offset/README.md +69 -0
- package/node_modules/@turf/line-offset/dist/es/index.js +243 -0
- package/node_modules/@turf/line-offset/dist/es/package.json +1 -0
- package/node_modules/@turf/line-offset/dist/js/index.js +246 -0
- package/node_modules/@turf/line-offset/index.d.ts +12 -0
- package/node_modules/@turf/line-offset/package.json +105 -0
- package/node_modules/@turf/line-overlap/LICENSE +20 -0
- package/node_modules/@turf/line-overlap/README.md +71 -0
- package/node_modules/@turf/line-overlap/dist/es/index.js +128 -0
- package/node_modules/@turf/line-overlap/dist/es/package.json +1 -0
- package/node_modules/@turf/line-overlap/dist/js/index.d.ts +23 -0
- package/node_modules/@turf/line-overlap/dist/js/index.js +133 -0
- package/node_modules/@turf/line-overlap/package.json +108 -0
- package/node_modules/@turf/line-segment/LICENSE +20 -0
- package/node_modules/@turf/line-segment/README.md +68 -0
- package/node_modules/@turf/line-segment/dist/es/index.js +93 -0
- package/node_modules/@turf/line-segment/dist/es/package.json +1 -0
- package/node_modules/@turf/line-segment/dist/js/index.d.ts +17 -0
- package/node_modules/@turf/line-segment/dist/js/index.js +95 -0
- package/node_modules/@turf/line-segment/package.json +96 -0
- package/node_modules/@turf/line-slice/LICENSE +20 -0
- package/node_modules/@turf/line-slice/README.md +74 -0
- package/node_modules/@turf/line-slice/dist/es/index.js +60 -0
- package/node_modules/@turf/line-slice/dist/es/package.json +1 -0
- package/node_modules/@turf/line-slice/dist/js/index.js +67 -0
- package/node_modules/@turf/line-slice/index.d.ts +10 -0
- package/node_modules/@turf/line-slice/package.json +93 -0
- package/node_modules/@turf/line-slice-along/LICENSE +20 -0
- package/node_modules/@turf/line-slice-along/README.md +72 -0
- package/node_modules/@turf/line-slice-along/dist/es/index.js +87 -0
- package/node_modules/@turf/line-slice-along/dist/es/package.json +1 -0
- package/node_modules/@turf/line-slice-along/dist/js/index.js +96 -0
- package/node_modules/@turf/line-slice-along/index.d.ts +13 -0
- package/node_modules/@turf/line-slice-along/package.json +90 -0
- package/node_modules/@turf/line-split/LICENSE +20 -0
- package/node_modules/@turf/line-split/README.md +57 -0
- package/node_modules/@turf/line-split/dist/es/index.js +215 -0
- package/node_modules/@turf/line-split/dist/es/package.json +1 -0
- package/node_modules/@turf/line-split/dist/js/index.js +228 -0
- package/node_modules/@turf/line-split/index.d.ts +22 -0
- package/node_modules/@turf/line-split/package.json +103 -0
- package/node_modules/@turf/line-to-polygon/LICENSE +20 -0
- package/node_modules/@turf/line-to-polygon/README.md +69 -0
- package/node_modules/@turf/line-to-polygon/dist/es/index.js +130 -0
- package/node_modules/@turf/line-to-polygon/dist/es/package.json +1 -0
- package/node_modules/@turf/line-to-polygon/dist/js/index.d.ts +27 -0
- package/node_modules/@turf/line-to-polygon/dist/js/index.js +135 -0
- package/node_modules/@turf/line-to-polygon/package.json +102 -0
- package/node_modules/@turf/mask/LICENSE +20 -0
- package/node_modules/@turf/mask/README.md +74 -0
- package/node_modules/@turf/mask/dist/es/index.js +79 -0
- package/node_modules/@turf/mask/dist/es/package.json +1 -0
- package/node_modules/@turf/mask/dist/js/index.js +86 -0
- package/node_modules/@turf/mask/index.d.ts +14 -0
- package/node_modules/@turf/mask/package.json +89 -0
- package/node_modules/@turf/meta/LICENSE +20 -0
- package/node_modules/@turf/meta/README.md +858 -0
- package/node_modules/@turf/meta/dist/es/index.js +1401 -0
- package/node_modules/@turf/meta/dist/es/package.json +1 -0
- package/node_modules/@turf/meta/dist/js/index.js +1421 -0
- package/node_modules/@turf/meta/index.d.ts +301 -0
- package/node_modules/@turf/meta/package.json +169 -0
- package/node_modules/@turf/midpoint/LICENSE +20 -0
- package/node_modules/@turf/midpoint/README.md +61 -0
- package/node_modules/@turf/midpoint/dist/es/index.js +31 -0
- package/node_modules/@turf/midpoint/dist/es/package.json +1 -0
- package/node_modules/@turf/midpoint/dist/js/index.js +40 -0
- package/node_modules/@turf/midpoint/index.d.ts +6 -0
- package/node_modules/@turf/midpoint/package.json +89 -0
- package/node_modules/@turf/moran-index/LICENSE +20 -0
- package/node_modules/@turf/moran-index/README.md +107 -0
- package/node_modules/@turf/moran-index/dist/es/index.js +133 -0
- package/node_modules/@turf/moran-index/dist/es/package.json +1 -0
- package/node_modules/@turf/moran-index/dist/js/index.d.ts +63 -0
- package/node_modules/@turf/moran-index/dist/js/index.js +139 -0
- package/node_modules/@turf/moran-index/package.json +97 -0
- package/node_modules/@turf/nearest-point/LICENSE +20 -0
- package/node_modules/@turf/nearest-point/README.md +69 -0
- package/node_modules/@turf/nearest-point/dist/es/index.js +49 -0
- package/node_modules/@turf/nearest-point/dist/es/package.json +1 -0
- package/node_modules/@turf/nearest-point/dist/js/index.d.ts +34 -0
- package/node_modules/@turf/nearest-point/dist/js/index.js +54 -0
- package/node_modules/@turf/nearest-point/package.json +97 -0
- package/node_modules/@turf/nearest-point-on-line/LICENSE +20 -0
- package/node_modules/@turf/nearest-point-on-line/README.md +83 -0
- package/node_modules/@turf/nearest-point-on-line/dist/es/index.js +88 -0
- package/node_modules/@turf/nearest-point-on-line/dist/es/package.json +1 -0
- package/node_modules/@turf/nearest-point-on-line/dist/js/index.d.ts +39 -0
- package/node_modules/@turf/nearest-point-on-line/dist/js/index.js +93 -0
- package/node_modules/@turf/nearest-point-on-line/package.json +98 -0
- package/node_modules/@turf/nearest-point-to-line/LICENSE +20 -0
- package/node_modules/@turf/nearest-point-to-line/README.md +86 -0
- package/node_modules/@turf/nearest-point-to-line/dist/es/index.js +91 -0
- package/node_modules/@turf/nearest-point-to-line/dist/es/package.json +1 -0
- package/node_modules/@turf/nearest-point-to-line/dist/js/index.d.ts +32 -0
- package/node_modules/@turf/nearest-point-to-line/dist/js/index.js +96 -0
- package/node_modules/@turf/nearest-point-to-line/package.json +106 -0
- package/node_modules/@turf/planepoint/LICENSE +20 -0
- package/node_modules/@turf/planepoint/README.md +79 -0
- package/node_modules/@turf/planepoint/dist/es/index.js +77 -0
- package/node_modules/@turf/planepoint/dist/es/package.json +1 -0
- package/node_modules/@turf/planepoint/dist/js/index.js +80 -0
- package/node_modules/@turf/planepoint/index.d.ts +9 -0
- package/node_modules/@turf/planepoint/package.json +88 -0
- package/node_modules/@turf/point-grid/LICENSE +20 -0
- package/node_modules/@turf/point-grid/README.md +80 -0
- package/node_modules/@turf/point-grid/dist/es/index.js +72 -0
- package/node_modules/@turf/point-grid/dist/es/package.json +1 -0
- package/node_modules/@turf/point-grid/dist/js/index.d.ts +28 -0
- package/node_modules/@turf/point-grid/dist/js/index.js +77 -0
- package/node_modules/@turf/point-grid/package.json +108 -0
- package/node_modules/@turf/point-on-feature/LICENSE +20 -0
- package/node_modules/@turf/point-on-feature/README.md +73 -0
- package/node_modules/@turf/point-on-feature/dist/es/index.js +149 -0
- package/node_modules/@turf/point-on-feature/dist/es/package.json +1 -0
- package/node_modules/@turf/point-on-feature/dist/js/index.js +159 -0
- package/node_modules/@turf/point-on-feature/index.d.ts +6 -0
- package/node_modules/@turf/point-on-feature/package.json +93 -0
- package/node_modules/@turf/point-to-line-distance/LICENSE +20 -0
- package/node_modules/@turf/point-to-line-distance/README.md +71 -0
- package/node_modules/@turf/point-to-line-distance/dist/es/index.js +106 -0
- package/node_modules/@turf/point-to-line-distance/dist/es/package.json +1 -0
- package/node_modules/@turf/point-to-line-distance/dist/js/index.d.ts +26 -0
- package/node_modules/@turf/point-to-line-distance/dist/js/index.js +111 -0
- package/node_modules/@turf/point-to-line-distance/package.json +106 -0
- package/node_modules/@turf/points-within-polygon/LICENSE +20 -0
- package/node_modules/@turf/points-within-polygon/README.md +86 -0
- package/node_modules/@turf/points-within-polygon/dist/es/index.js +71 -0
- package/node_modules/@turf/points-within-polygon/dist/es/package.json +1 -0
- package/node_modules/@turf/points-within-polygon/dist/js/index.js +78 -0
- package/node_modules/@turf/points-within-polygon/index.d.ts +21 -0
- package/node_modules/@turf/points-within-polygon/package.json +90 -0
- package/node_modules/@turf/polygon-smooth/LICENSE +20 -0
- package/node_modules/@turf/polygon-smooth/README.md +70 -0
- package/node_modules/@turf/polygon-smooth/dist/es/index.js +162 -0
- package/node_modules/@turf/polygon-smooth/dist/es/package.json +1 -0
- package/node_modules/@turf/polygon-smooth/dist/js/index.js +165 -0
- package/node_modules/@turf/polygon-smooth/index.d.ts +16 -0
- package/node_modules/@turf/polygon-smooth/package.json +95 -0
- package/node_modules/@turf/polygon-tangents/LICENSE +20 -0
- package/node_modules/@turf/polygon-tangents/README.md +67 -0
- package/node_modules/@turf/polygon-tangents/dist/es/index.js +147 -0
- package/node_modules/@turf/polygon-tangents/dist/es/package.json +1 -0
- package/node_modules/@turf/polygon-tangents/dist/js/index.js +156 -0
- package/node_modules/@turf/polygon-tangents/index.d.ts +16 -0
- package/node_modules/@turf/polygon-tangents/package.json +104 -0
- package/node_modules/@turf/polygon-to-line/LICENSE +20 -0
- package/node_modules/@turf/polygon-to-line/README.md +71 -0
- package/node_modules/@turf/polygon-to-line/dist/es/index.js +75 -0
- package/node_modules/@turf/polygon-to-line/dist/es/package.json +1 -0
- package/node_modules/@turf/polygon-to-line/dist/js/index.d.ts +37 -0
- package/node_modules/@turf/polygon-to-line/dist/js/index.js +81 -0
- package/node_modules/@turf/polygon-to-line/package.json +95 -0
- package/node_modules/@turf/polygonize/LICENSE +20 -0
- package/node_modules/@turf/polygonize/README.md +69 -0
- package/node_modules/@turf/polygonize/dist/es/index.js +46 -0
- package/node_modules/@turf/polygonize/dist/es/lib/Edge.js +77 -0
- package/node_modules/@turf/polygonize/dist/es/lib/EdgeRing.js +199 -0
- package/node_modules/@turf/polygonize/dist/es/lib/Graph.js +302 -0
- package/node_modules/@turf/polygonize/dist/es/lib/Node.js +93 -0
- package/node_modules/@turf/polygonize/dist/es/lib/util.js +66 -0
- package/node_modules/@turf/polygonize/dist/es/package.json +1 -0
- package/node_modules/@turf/polygonize/dist/js/index.d.ts +20 -0
- package/node_modules/@turf/polygonize/dist/js/index.js +52 -0
- package/node_modules/@turf/polygonize/dist/js/lib/Edge.d.ts +55 -0
- package/node_modules/@turf/polygonize/dist/js/lib/Edge.js +79 -0
- package/node_modules/@turf/polygonize/dist/js/lib/EdgeRing.d.ts +122 -0
- package/node_modules/@turf/polygonize/dist/js/lib/EdgeRing.js +204 -0
- package/node_modules/@turf/polygonize/dist/js/lib/Graph.d.ts +124 -0
- package/node_modules/@turf/polygonize/dist/js/lib/Graph.js +307 -0
- package/node_modules/@turf/polygonize/dist/js/lib/Node.d.ts +40 -0
- package/node_modules/@turf/polygonize/dist/js/lib/Node.js +95 -0
- package/node_modules/@turf/polygonize/dist/js/lib/util.d.ts +46 -0
- package/node_modules/@turf/polygonize/dist/js/lib/util.js +75 -0
- package/node_modules/@turf/polygonize/package.json +105 -0
- package/node_modules/@turf/projection/LICENSE +20 -0
- package/node_modules/@turf/projection/README.md +78 -0
- package/node_modules/@turf/projection/dist/es/index.js +137 -0
- package/node_modules/@turf/projection/dist/es/package.json +1 -0
- package/node_modules/@turf/projection/dist/js/index.d.ts +37 -0
- package/node_modules/@turf/projection/dist/js/index.js +144 -0
- package/node_modules/@turf/projection/package.json +113 -0
- package/node_modules/@turf/random/LICENSE +20 -0
- package/node_modules/@turf/random/README.md +129 -0
- package/node_modules/@turf/random/dist/es/index.js +188 -0
- package/node_modules/@turf/random/dist/es/package.json +1 -0
- package/node_modules/@turf/random/dist/js/index.d.ts +72 -0
- package/node_modules/@turf/random/dist/js/index.js +194 -0
- package/node_modules/@turf/random/package.json +88 -0
- package/node_modules/@turf/rectangle-grid/LICENSE +20 -0
- package/node_modules/@turf/rectangle-grid/README.md +60 -0
- package/node_modules/@turf/rectangle-grid/dist/es/index.js +77 -0
- package/node_modules/@turf/rectangle-grid/dist/es/package.json +1 -0
- package/node_modules/@turf/rectangle-grid/dist/js/index.d.ts +32 -0
- package/node_modules/@turf/rectangle-grid/dist/js/index.js +82 -0
- package/node_modules/@turf/rectangle-grid/package.json +104 -0
- package/node_modules/@turf/rewind/LICENSE +20 -0
- package/node_modules/@turf/rewind/README.md +64 -0
- package/node_modules/@turf/rewind/dist/es/index.js +134 -0
- package/node_modules/@turf/rewind/dist/es/package.json +1 -0
- package/node_modules/@turf/rewind/dist/js/index.js +142 -0
- package/node_modules/@turf/rewind/index.d.ts +12 -0
- package/node_modules/@turf/rewind/package.json +110 -0
- package/node_modules/@turf/rhumb-bearing/LICENSE +20 -0
- package/node_modules/@turf/rhumb-bearing/README.md +66 -0
- package/node_modules/@turf/rhumb-bearing/dist/es/index.js +69 -0
- package/node_modules/@turf/rhumb-bearing/dist/es/package.json +1 -0
- package/node_modules/@turf/rhumb-bearing/dist/js/index.d.ts +26 -0
- package/node_modules/@turf/rhumb-bearing/dist/js/index.js +71 -0
- package/node_modules/@turf/rhumb-bearing/package.json +112 -0
- package/node_modules/@turf/rhumb-destination/LICENSE +20 -0
- package/node_modules/@turf/rhumb-destination/README.md +73 -0
- package/node_modules/@turf/rhumb-destination/dist/es/index.js +86 -0
- package/node_modules/@turf/rhumb-destination/dist/es/package.json +1 -0
- package/node_modules/@turf/rhumb-destination/dist/js/index.d.ts +30 -0
- package/node_modules/@turf/rhumb-destination/dist/js/index.js +88 -0
- package/node_modules/@turf/rhumb-destination/package.json +116 -0
- package/node_modules/@turf/rhumb-distance/LICENSE +20 -0
- package/node_modules/@turf/rhumb-distance/README.md +67 -0
- package/node_modules/@turf/rhumb-distance/dist/es/index.js +84 -0
- package/node_modules/@turf/rhumb-distance/dist/es/package.json +1 -0
- package/node_modules/@turf/rhumb-distance/dist/js/index.d.ts +27 -0
- package/node_modules/@turf/rhumb-distance/dist/js/index.js +86 -0
- package/node_modules/@turf/rhumb-distance/package.json +113 -0
- package/node_modules/@turf/sample/LICENSE +20 -0
- package/node_modules/@turf/sample/README.md +62 -0
- package/node_modules/@turf/sample/dist/es/index.js +50 -0
- package/node_modules/@turf/sample/dist/es/package.json +1 -0
- package/node_modules/@turf/sample/dist/js/index.js +53 -0
- package/node_modules/@turf/sample/index.d.ts +9 -0
- package/node_modules/@turf/sample/package.json +85 -0
- package/node_modules/@turf/sector/LICENSE +20 -0
- package/node_modules/@turf/sector/README.md +74 -0
- package/node_modules/@turf/sector/dist/es/index.js +75 -0
- package/node_modules/@turf/sector/dist/es/package.json +1 -0
- package/node_modules/@turf/sector/dist/js/index.js +83 -0
- package/node_modules/@turf/sector/index.d.ts +16 -0
- package/node_modules/@turf/sector/package.json +91 -0
- package/node_modules/@turf/shortest-path/LICENSE +20 -0
- package/node_modules/@turf/shortest-path/README.md +86 -0
- package/node_modules/@turf/shortest-path/dist/es/index.js +589 -0
- package/node_modules/@turf/shortest-path/dist/es/package.json +1 -0
- package/node_modules/@turf/shortest-path/dist/js/index.js +601 -0
- package/node_modules/@turf/shortest-path/index.d.ts +22 -0
- package/node_modules/@turf/shortest-path/package.json +106 -0
- package/node_modules/@turf/simplify/LICENSE +20 -0
- package/node_modules/@turf/simplify/README.md +87 -0
- package/node_modules/@turf/simplify/dist/es/index.js +300 -0
- package/node_modules/@turf/simplify/dist/es/package.json +1 -0
- package/node_modules/@turf/simplify/dist/js/index.js +308 -0
- package/node_modules/@turf/simplify/index.d.ts +13 -0
- package/node_modules/@turf/simplify/package.json +104 -0
- package/node_modules/@turf/square/LICENSE +20 -0
- package/node_modules/@turf/square/README.md +51 -0
- package/node_modules/@turf/square/dist/es/index.js +44 -0
- package/node_modules/@turf/square/dist/es/package.json +1 -0
- package/node_modules/@turf/square/dist/js/index.js +51 -0
- package/node_modules/@turf/square/index.d.ts +6 -0
- package/node_modules/@turf/square/package.json +87 -0
- package/node_modules/@turf/square-grid/LICENSE +20 -0
- package/node_modules/@turf/square-grid/README.md +58 -0
- package/node_modules/@turf/square-grid/dist/es/index.js +28 -0
- package/node_modules/@turf/square-grid/dist/es/package.json +1 -0
- package/node_modules/@turf/square-grid/dist/js/index.d.ts +29 -0
- package/node_modules/@turf/square-grid/dist/js/index.js +34 -0
- package/node_modules/@turf/square-grid/package.json +95 -0
- package/node_modules/@turf/standard-deviational-ellipse/LICENSE +20 -0
- package/node_modules/@turf/standard-deviational-ellipse/README.md +94 -0
- package/node_modules/@turf/standard-deviational-ellipse/dist/es/index.js +151 -0
- package/node_modules/@turf/standard-deviational-ellipse/dist/es/package.json +1 -0
- package/node_modules/@turf/standard-deviational-ellipse/dist/js/index.js +160 -0
- package/node_modules/@turf/standard-deviational-ellipse/index.d.ts +37 -0
- package/node_modules/@turf/standard-deviational-ellipse/package.json +101 -0
- package/node_modules/@turf/tag/LICENSE +20 -0
- package/node_modules/@turf/tag/README.md +70 -0
- package/node_modules/@turf/tag/dist/es/index.js +56 -0
- package/node_modules/@turf/tag/dist/es/package.json +1 -0
- package/node_modules/@turf/tag/dist/js/index.js +64 -0
- package/node_modules/@turf/tag/index.d.ts +11 -0
- package/node_modules/@turf/tag/package.json +93 -0
- package/node_modules/@turf/tesselate/LICENSE +20 -0
- package/node_modules/@turf/tesselate/README.md +61 -0
- package/node_modules/@turf/tesselate/dist/es/index.js +79 -0
- package/node_modules/@turf/tesselate/dist/es/package.json +1 -0
- package/node_modules/@turf/tesselate/dist/js/index.js +86 -0
- package/node_modules/@turf/tesselate/index.d.ts +6 -0
- package/node_modules/@turf/tesselate/package.json +106 -0
- package/node_modules/@turf/tin/LICENSE +20 -0
- package/node_modules/@turf/tin/README.md +79 -0
- package/node_modules/@turf/tin/dist/es/index.js +240 -0
- package/node_modules/@turf/tin/dist/es/package.json +1 -0
- package/node_modules/@turf/tin/dist/js/index.d.ts +44 -0
- package/node_modules/@turf/tin/dist/js/index.js +243 -0
- package/node_modules/@turf/tin/package.json +90 -0
- package/node_modules/@turf/transform-rotate/LICENSE +20 -0
- package/node_modules/@turf/transform-rotate/README.md +67 -0
- package/node_modules/@turf/transform-rotate/dist/es/index.js +62 -0
- package/node_modules/@turf/transform-rotate/dist/es/package.json +1 -0
- package/node_modules/@turf/transform-rotate/dist/js/index.js +73 -0
- package/node_modules/@turf/transform-rotate/index.d.ts +13 -0
- package/node_modules/@turf/transform-rotate/package.json +107 -0
- package/node_modules/@turf/transform-scale/LICENSE +20 -0
- package/node_modules/@turf/transform-scale/README.md +66 -0
- package/node_modules/@turf/transform-scale/dist/es/index.js +144 -0
- package/node_modules/@turf/transform-scale/dist/es/package.json +1 -0
- package/node_modules/@turf/transform-scale/dist/js/index.js +157 -0
- package/node_modules/@turf/transform-scale/index.d.ts +13 -0
- package/node_modules/@turf/transform-scale/package.json +115 -0
- package/node_modules/@turf/transform-translate/LICENSE +20 -0
- package/node_modules/@turf/transform-translate/README.md +66 -0
- package/node_modules/@turf/transform-translate/dist/es/index.js +72 -0
- package/node_modules/@turf/transform-translate/dist/es/package.json +1 -0
- package/node_modules/@turf/transform-translate/dist/js/index.js +80 -0
- package/node_modules/@turf/transform-translate/index.d.ts +15 -0
- package/node_modules/@turf/transform-translate/package.json +105 -0
- package/node_modules/@turf/triangle-grid/LICENSE +20 -0
- package/node_modules/@turf/triangle-grid/README.md +72 -0
- package/node_modules/@turf/triangle-grid/dist/es/index.js +139 -0
- package/node_modules/@turf/triangle-grid/dist/es/package.json +1 -0
- package/node_modules/@turf/triangle-grid/dist/js/index.d.ts +28 -0
- package/node_modules/@turf/triangle-grid/dist/js/index.js +144 -0
- package/node_modules/@turf/triangle-grid/package.json +99 -0
- package/node_modules/@turf/truncate/LICENSE +20 -0
- package/node_modules/@turf/truncate/README.md +66 -0
- package/node_modules/@turf/truncate/dist/es/index.js +76 -0
- package/node_modules/@turf/truncate/dist/es/package.json +1 -0
- package/node_modules/@turf/truncate/dist/js/index.d.ts +30 -0
- package/node_modules/@turf/truncate/dist/js/index.js +78 -0
- package/node_modules/@turf/truncate/package.json +100 -0
- package/node_modules/@turf/turf/LICENSE +20 -0
- package/node_modules/@turf/turf/README.md +31 -0
- package/node_modules/@turf/turf/dist/es/index.js +118 -0
- package/node_modules/@turf/turf/dist/es/package.json +1 -0
- package/node_modules/@turf/turf/dist/js/index.js +984 -0
- package/node_modules/@turf/turf/index.d.ts +146 -0
- package/node_modules/@turf/turf/package.json +216 -0
- package/node_modules/@turf/turf/turf.min.js +88 -0
- package/node_modules/@turf/union/LICENSE +20 -0
- package/node_modules/@turf/union/README.md +77 -0
- package/node_modules/@turf/union/dist/es/index.js +46 -0
- package/node_modules/@turf/union/dist/es/package.json +1 -0
- package/node_modules/@turf/union/dist/js/index.d.ts +35 -0
- package/node_modules/@turf/union/dist/js/index.js +51 -0
- package/node_modules/@turf/union/package.json +94 -0
- package/node_modules/@turf/unkink-polygon/LICENSE +20 -0
- package/node_modules/@turf/unkink-polygon/README.md +60 -0
- package/node_modules/@turf/unkink-polygon/dist/es/index.js +790 -0
- package/node_modules/@turf/unkink-polygon/dist/es/package.json +1 -0
- package/node_modules/@turf/unkink-polygon/dist/js/index.js +799 -0
- package/node_modules/@turf/unkink-polygon/index.d.ts +13 -0
- package/node_modules/@turf/unkink-polygon/node_modules/quickselect/LICENSE +15 -0
- package/node_modules/@turf/unkink-polygon/node_modules/quickselect/README.md +28 -0
- package/node_modules/@turf/unkink-polygon/node_modules/quickselect/index.js +54 -0
- package/node_modules/@turf/unkink-polygon/node_modules/quickselect/package.json +69 -0
- package/node_modules/@turf/unkink-polygon/node_modules/quickselect/quickselect.js +63 -0
- package/node_modules/@turf/unkink-polygon/node_modules/rbush/LICENSE +21 -0
- package/node_modules/@turf/unkink-polygon/node_modules/rbush/README.md +291 -0
- package/node_modules/@turf/unkink-polygon/node_modules/rbush/index.js +562 -0
- package/node_modules/@turf/unkink-polygon/node_modules/rbush/package.json +85 -0
- package/node_modules/@turf/unkink-polygon/node_modules/rbush/rbush.js +626 -0
- package/node_modules/@turf/unkink-polygon/node_modules/rbush/rbush.min.js +1 -0
- package/node_modules/@turf/unkink-polygon/package.json +94 -0
- package/node_modules/@turf/voronoi/LICENSE +20 -0
- package/node_modules/@turf/voronoi/README.md +68 -0
- package/node_modules/@turf/voronoi/dist/es/index.js +66 -0
- package/node_modules/@turf/voronoi/dist/es/package.json +1 -0
- package/node_modules/@turf/voronoi/dist/js/index.js +69 -0
- package/node_modules/@turf/voronoi/index.d.ts +9 -0
- package/node_modules/@turf/voronoi/package.json +109 -0
- package/node_modules/@types/geojson/LICENSE +21 -0
- package/node_modules/@types/geojson/README.md +16 -0
- package/node_modules/@types/geojson/index.d.ts +175 -0
- package/node_modules/@types/geojson/package.json +69 -0
- package/node_modules/axios/CHANGELOG.md +15 -0
- package/node_modules/axios/README.md +1 -0
- package/node_modules/axios/dist/axios.js +49 -33
- package/node_modules/axios/dist/axios.map +1 -1
- package/node_modules/axios/dist/axios.min.js +1 -3
- package/node_modules/axios/dist/axios.min.map +1 -1
- package/node_modules/axios/lib/adapters/http.js +19 -3
- package/node_modules/axios/lib/adapters/xhr.js +2 -2
- package/node_modules/axios/lib/core/Axios.js +0 -7
- package/node_modules/axios/lib/core/transformData.js +1 -1
- package/node_modules/axios/lib/{defaults.js → defaults/index.js} +7 -10
- package/node_modules/axios/lib/defaults/transitional.js +7 -0
- package/node_modules/axios/lib/env/data.js +1 -1
- package/node_modules/axios/package.json +69 -41
- package/node_modules/call-bind/.eslintignore +1 -0
- package/node_modules/call-bind/.eslintrc +17 -0
- package/node_modules/call-bind/.github/FUNDING.yml +12 -0
- package/node_modules/call-bind/.nycrc +13 -0
- package/node_modules/call-bind/CHANGELOG.md +42 -0
- package/node_modules/call-bind/LICENSE +21 -0
- package/node_modules/call-bind/README.md +2 -0
- package/node_modules/call-bind/callBound.js +15 -0
- package/node_modules/call-bind/index.js +47 -0
- package/node_modules/call-bind/package.json +111 -0
- package/node_modules/call-bind/test/callBound.js +55 -0
- package/node_modules/call-bind/test/index.js +66 -0
- package/node_modules/commander/CHANGELOG.md +419 -0
- package/node_modules/commander/LICENSE +22 -0
- package/node_modules/commander/Readme.md +428 -0
- package/node_modules/commander/index.js +1224 -0
- package/node_modules/commander/package.json +71 -0
- package/node_modules/commander/typings/index.d.ts +310 -0
- package/node_modules/concaveman/.travis.yml +4 -0
- package/node_modules/concaveman/LICENSE +15 -0
- package/node_modules/concaveman/README.md +52 -0
- package/node_modules/concaveman/index.js +383 -0
- package/node_modules/concaveman/package.json +69 -0
- package/node_modules/d3-array/.eslintrc.json +15 -0
- package/node_modules/d3-array/LICENSE +27 -0
- package/node_modules/d3-array/README.md +382 -0
- package/node_modules/d3-array/dist/d3-array.js +590 -0
- package/node_modules/d3-array/dist/d3-array.min.js +2 -0
- package/node_modules/d3-array/package.json +70 -0
- package/node_modules/d3-array/rollup.config.js +36 -0
- package/node_modules/d3-array/src/array.js +4 -0
- package/node_modules/d3-array/src/ascending.js +3 -0
- package/node_modules/d3-array/src/bisect.js +7 -0
- package/node_modules/d3-array/src/bisector.js +33 -0
- package/node_modules/d3-array/src/constant.js +5 -0
- package/node_modules/d3-array/src/cross.js +21 -0
- package/node_modules/d3-array/src/descending.js +3 -0
- package/node_modules/d3-array/src/deviation.js +6 -0
- package/node_modules/d3-array/src/extent.js +37 -0
- package/node_modules/d3-array/src/histogram.js +75 -0
- package/node_modules/d3-array/src/identity.js +3 -0
- package/node_modules/d3-array/src/index.js +27 -0
- package/node_modules/d3-array/src/max.js +34 -0
- package/node_modules/d3-array/src/mean.js +25 -0
- package/node_modules/d3-array/src/median.js +28 -0
- package/node_modules/d3-array/src/merge.js +21 -0
- package/node_modules/d3-array/src/min.js +34 -0
- package/node_modules/d3-array/src/number.js +3 -0
- package/node_modules/d3-array/src/pairs.js +10 -0
- package/node_modules/d3-array/src/permute.js +5 -0
- package/node_modules/d3-array/src/quantile.js +14 -0
- package/node_modules/d3-array/src/range.js +13 -0
- package/node_modules/d3-array/src/scan.js +20 -0
- package/node_modules/d3-array/src/shuffle.js +14 -0
- package/node_modules/d3-array/src/sum.js +20 -0
- package/node_modules/d3-array/src/threshold/freedmanDiaconis.js +9 -0
- package/node_modules/d3-array/src/threshold/scott.js +5 -0
- package/node_modules/d3-array/src/threshold/sturges.js +3 -0
- package/node_modules/d3-array/src/ticks.js +51 -0
- package/node_modules/d3-array/src/transpose.js +15 -0
- package/node_modules/d3-array/src/variance.js +33 -0
- package/node_modules/d3-array/src/zip.js +5 -0
- package/node_modules/d3-array/yarn.lock +939 -0
- package/node_modules/d3-geo/.eslintrc +13 -0
- package/node_modules/d3-geo/LICENSE +48 -0
- package/node_modules/d3-geo/README.md +619 -0
- package/node_modules/d3-geo/build/d3-geo.js +2987 -0
- package/node_modules/d3-geo/build/d3-geo.min.js +2 -0
- package/node_modules/d3-geo/img/albers.png +0 -0
- package/node_modules/d3-geo/img/albersUsa-parameters.png +0 -0
- package/node_modules/d3-geo/img/albersUsa.png +0 -0
- package/node_modules/d3-geo/img/azimuthalEqualArea.png +0 -0
- package/node_modules/d3-geo/img/azimuthalEquidistant.png +0 -0
- package/node_modules/d3-geo/img/conicConformal.png +0 -0
- package/node_modules/d3-geo/img/conicEqualArea.png +0 -0
- package/node_modules/d3-geo/img/conicEquidistant.png +0 -0
- package/node_modules/d3-geo/img/equirectangular.png +0 -0
- package/node_modules/d3-geo/img/gnomonic.png +0 -0
- package/node_modules/d3-geo/img/graticule.png +0 -0
- package/node_modules/d3-geo/img/mercator.png +0 -0
- package/node_modules/d3-geo/img/naturalEarth1.png +0 -0
- package/node_modules/d3-geo/img/orthographic.png +0 -0
- package/node_modules/d3-geo/img/stereographic.png +0 -0
- package/node_modules/d3-geo/img/transverseMercator.png +0 -0
- package/node_modules/d3-geo/index.js +30 -0
- package/node_modules/d3-geo/package.json +72 -0
- package/node_modules/d3-geo/rollup.config.js +15 -0
- package/node_modules/d3-geo/src/adder.js +40 -0
- package/node_modules/d3-geo/src/area.js +74 -0
- package/node_modules/d3-geo/src/bounds.js +176 -0
- package/node_modules/d3-geo/src/cartesian.js +33 -0
- package/node_modules/d3-geo/src/centroid.js +140 -0
- package/node_modules/d3-geo/src/circle.js +72 -0
- package/node_modules/d3-geo/src/clip/antimeridian.js +92 -0
- package/node_modules/d3-geo/src/clip/buffer.js +24 -0
- package/node_modules/d3-geo/src/clip/circle.js +181 -0
- package/node_modules/d3-geo/src/clip/extent.js +187 -0
- package/node_modules/d3-geo/src/clip/index.js +135 -0
- package/node_modules/d3-geo/src/clip/line.js +59 -0
- package/node_modules/d3-geo/src/clip/polygon.js +101 -0
- package/node_modules/d3-geo/src/compose.js +12 -0
- package/node_modules/d3-geo/src/constant.js +5 -0
- package/node_modules/d3-geo/src/contains.js +84 -0
- package/node_modules/d3-geo/src/distance.js +10 -0
- package/node_modules/d3-geo/src/graticule.js +105 -0
- package/node_modules/d3-geo/src/identity.js +3 -0
- package/node_modules/d3-geo/src/interpolate.js +36 -0
- package/node_modules/d3-geo/src/length.js +53 -0
- package/node_modules/d3-geo/src/math.js +35 -0
- package/node_modules/d3-geo/src/noop.js +1 -0
- package/node_modules/d3-geo/src/path/area.js +50 -0
- package/node_modules/d3-geo/src/path/bounds.js +28 -0
- package/node_modules/d3-geo/src/path/centroid.js +100 -0
- package/node_modules/d3-geo/src/path/context.js +45 -0
- package/node_modules/d3-geo/src/path/index.js +61 -0
- package/node_modules/d3-geo/src/path/measure.js +45 -0
- package/node_modules/d3-geo/src/path/string.js +59 -0
- package/node_modules/d3-geo/src/pointEqual.js +5 -0
- package/node_modules/d3-geo/src/polygonContains.js +68 -0
- package/node_modules/d3-geo/src/projection/albers.js +10 -0
- package/node_modules/d3-geo/src/projection/albersUsa.js +103 -0
- package/node_modules/d3-geo/src/projection/azimuthal.js +26 -0
- package/node_modules/d3-geo/src/projection/azimuthalEqualArea.js +17 -0
- package/node_modules/d3-geo/src/projection/azimuthalEquidistant.js +17 -0
- package/node_modules/d3-geo/src/projection/conic.js +15 -0
- package/node_modules/d3-geo/src/projection/conicConformal.js +35 -0
- package/node_modules/d3-geo/src/projection/conicEqualArea.js +30 -0
- package/node_modules/d3-geo/src/projection/conicEquidistant.js +29 -0
- package/node_modules/d3-geo/src/projection/cylindricalEqualArea.js +15 -0
- package/node_modules/d3-geo/src/projection/equirectangular.js +12 -0
- package/node_modules/d3-geo/src/projection/fit.js +31 -0
- package/node_modules/d3-geo/src/projection/gnomonic.js +16 -0
- package/node_modules/d3-geo/src/projection/identity.js +52 -0
- package/node_modules/d3-geo/src/projection/index.js +106 -0
- package/node_modules/d3-geo/src/projection/mercator.js +52 -0
- package/node_modules/d3-geo/src/projection/naturalEarth1.js +28 -0
- package/node_modules/d3-geo/src/projection/orthographic.js +15 -0
- package/node_modules/d3-geo/src/projection/resample.js +102 -0
- package/node_modules/d3-geo/src/projection/stereographic.js +18 -0
- package/node_modules/d3-geo/src/projection/transverseMercator.js +27 -0
- package/node_modules/d3-geo/src/rotation.js +76 -0
- package/node_modules/d3-geo/src/stream.js +69 -0
- package/node_modules/d3-geo/src/transform.js +26 -0
- package/node_modules/d3-voronoi/.eslintrc +9 -0
- package/node_modules/d3-voronoi/.npmignore +3 -0
- package/node_modules/d3-voronoi/LICENSE +50 -0
- package/node_modules/d3-voronoi/README.md +160 -0
- package/node_modules/d3-voronoi/build/d3-voronoi.js +999 -0
- package/node_modules/d3-voronoi/build/d3-voronoi.min.js +2 -0
- package/node_modules/d3-voronoi/graph.png +0 -0
- package/node_modules/d3-voronoi/index.js +1 -0
- package/node_modules/d3-voronoi/package.json +65 -0
- package/node_modules/d3-voronoi/src/Beach.js +193 -0
- package/node_modules/d3-voronoi/src/Cell.js +126 -0
- package/node_modules/d3-voronoi/src/Circle.js +78 -0
- package/node_modules/d3-voronoi/src/Diagram.js +142 -0
- package/node_modules/d3-voronoi/src/Edge.js +168 -0
- package/node_modules/d3-voronoi/src/RedBlackTree.js +237 -0
- package/node_modules/d3-voronoi/src/constant.js +5 -0
- package/node_modules/d3-voronoi/src/point.js +7 -0
- package/node_modules/d3-voronoi/src/voronoi.js +48 -0
- package/node_modules/deep-equal/.eslintrc +22 -0
- package/node_modules/deep-equal/.travis.yml +12 -0
- package/node_modules/deep-equal/CHANGELOG.md +120 -0
- package/node_modules/deep-equal/LICENSE +21 -0
- package/node_modules/deep-equal/example/cmp.js +11 -0
- package/node_modules/deep-equal/index.js +112 -0
- package/node_modules/deep-equal/lib/is_arguments.js +1 -0
- package/node_modules/deep-equal/lib/keys.js +1 -0
- package/node_modules/deep-equal/package.json +117 -0
- package/node_modules/deep-equal/readme.markdown +57 -0
- package/node_modules/deep-equal/test/_tape.js +21 -0
- package/node_modules/deep-equal/test/cmp.js +344 -0
- package/node_modules/define-properties/.editorconfig +13 -0
- package/node_modules/define-properties/.eslintrc +12 -0
- package/node_modules/define-properties/.jscs.json +175 -0
- package/node_modules/define-properties/.travis.yml +233 -0
- package/node_modules/define-properties/CHANGELOG.md +44 -0
- package/node_modules/define-properties/LICENSE +21 -0
- package/node_modules/define-properties/README.md +86 -0
- package/node_modules/define-properties/index.js +58 -0
- package/node_modules/define-properties/package.json +97 -0
- package/node_modules/define-properties/test/index.js +125 -0
- package/node_modules/density-clustering/.jscsrc +64 -0
- package/node_modules/density-clustering/.jshintrc +5 -0
- package/node_modules/density-clustering/.remote-sync.json +13 -0
- package/node_modules/density-clustering/CHANGELOG.md +11 -0
- package/node_modules/density-clustering/LICENSE +22 -0
- package/node_modules/density-clustering/README.md +171 -0
- package/node_modules/density-clustering/bower.json +40 -0
- package/node_modules/density-clustering/example/browser.html +20 -0
- package/node_modules/density-clustering/example/dbscan.js +11 -0
- package/node_modules/density-clustering/example/kmeans.js +11 -0
- package/node_modules/density-clustering/example/optics.js +12 -0
- package/node_modules/density-clustering/example/priorityQueue.js +12 -0
- package/node_modules/density-clustering/gulpfile.js +30 -0
- package/node_modules/density-clustering/lib/DBSCAN.js +236 -0
- package/node_modules/density-clustering/lib/KMEANS.js +213 -0
- package/node_modules/density-clustering/lib/OPTICS.js +269 -0
- package/node_modules/density-clustering/lib/PriorityQueue.js +180 -0
- package/node_modules/density-clustering/lib/Utils.js +37 -0
- package/node_modules/density-clustering/lib/index.js +9 -0
- package/node_modules/density-clustering/package.json +70 -0
- package/node_modules/density-clustering/test/DBSCAN.test.js +73 -0
- package/node_modules/density-clustering/test/KMEANS.test.js +70 -0
- package/node_modules/density-clustering/test/OPTICS.test.js +98 -0
- package/node_modules/density-clustering/test/PriorityQueue.test.js +27 -0
- package/node_modules/earcut/LICENSE +15 -0
- package/node_modules/earcut/README.md +246 -0
- package/node_modules/earcut/dist/earcut.dev.js +690 -0
- package/node_modules/earcut/dist/earcut.min.js +1 -0
- package/node_modules/earcut/package.json +77 -0
- package/node_modules/earcut/src/earcut.js +684 -0
- package/node_modules/follow-redirects/index.js +82 -77
- package/node_modules/follow-redirects/package.json +13 -13
- package/node_modules/function-bind/.editorconfig +20 -0
- package/node_modules/function-bind/.eslintrc +15 -0
- package/node_modules/function-bind/.jscs.json +176 -0
- package/node_modules/function-bind/.npmignore +22 -0
- package/node_modules/function-bind/.travis.yml +168 -0
- package/node_modules/function-bind/LICENSE +20 -0
- package/node_modules/function-bind/README.md +48 -0
- package/node_modules/function-bind/implementation.js +52 -0
- package/node_modules/function-bind/index.js +5 -0
- package/node_modules/function-bind/package.json +96 -0
- package/node_modules/function-bind/test/.eslintrc +9 -0
- package/node_modules/function-bind/test/index.js +252 -0
- package/node_modules/geojson-equality/.npmignore +2 -0
- package/node_modules/geojson-equality/LICENSE.md +22 -0
- package/node_modules/geojson-equality/README.md +78 -0
- package/node_modules/geojson-equality/dist/geojson-equality.js +295 -0
- package/node_modules/geojson-equality/dist/geojson-equality.js.map +21 -0
- package/node_modules/geojson-equality/dist/geojson-equality.min.js +1 -0
- package/node_modules/geojson-equality/index.js +161 -0
- package/node_modules/geojson-equality/package.json +74 -0
- package/node_modules/geojson-equality/test/mocha.opts +1 -0
- package/node_modules/geojson-equality/test/test.js +364 -0
- package/node_modules/geojson-rbush/LICENSE +20 -0
- package/node_modules/geojson-rbush/README.md +213 -0
- package/node_modules/geojson-rbush/index.d.ts +19 -0
- package/node_modules/geojson-rbush/index.js +208 -0
- package/node_modules/geojson-rbush/package.json +89 -0
- package/node_modules/get-intrinsic/.eslintignore +1 -0
- package/node_modules/get-intrinsic/.eslintrc +43 -0
- package/node_modules/get-intrinsic/.github/FUNDING.yml +12 -0
- package/node_modules/get-intrinsic/.nycrc +13 -0
- package/node_modules/get-intrinsic/CHANGELOG.md +64 -0
- package/node_modules/get-intrinsic/LICENSE +21 -0
- package/node_modules/get-intrinsic/README.md +65 -0
- package/node_modules/get-intrinsic/index.js +330 -0
- package/node_modules/get-intrinsic/package.json +106 -0
- package/node_modules/get-intrinsic/test/GetIntrinsic.js +260 -0
- package/node_modules/has/LICENSE-MIT +22 -0
- package/node_modules/has/README.md +18 -0
- package/node_modules/has/package.json +73 -0
- package/node_modules/has/src/index.js +5 -0
- package/node_modules/has/test/index.js +10 -0
- package/node_modules/has-symbols/.eslintrc +11 -0
- package/node_modules/has-symbols/.github/FUNDING.yml +12 -0
- package/node_modules/has-symbols/.nycrc +9 -0
- package/node_modules/has-symbols/CHANGELOG.md +75 -0
- package/node_modules/has-symbols/LICENSE +21 -0
- package/node_modules/has-symbols/README.md +46 -0
- package/node_modules/has-symbols/index.js +13 -0
- package/node_modules/has-symbols/package.json +127 -0
- package/node_modules/has-symbols/shams.js +42 -0
- package/node_modules/has-symbols/test/index.js +22 -0
- package/node_modules/has-symbols/test/shams/core-js.js +28 -0
- package/node_modules/has-symbols/test/shams/get-own-property-symbols.js +28 -0
- package/node_modules/has-symbols/test/tests.js +56 -0
- package/node_modules/has-tostringtag/.eslintrc +11 -0
- package/node_modules/has-tostringtag/.github/FUNDING.yml +12 -0
- package/node_modules/has-tostringtag/CHANGELOG.md +20 -0
- package/node_modules/has-tostringtag/LICENSE +21 -0
- package/node_modules/has-tostringtag/README.md +46 -0
- package/node_modules/has-tostringtag/index.js +7 -0
- package/node_modules/has-tostringtag/package.json +111 -0
- package/node_modules/has-tostringtag/shams.js +7 -0
- package/node_modules/has-tostringtag/test/index.js +21 -0
- package/node_modules/has-tostringtag/test/shams/core-js.js +28 -0
- package/node_modules/has-tostringtag/test/shams/get-own-property-symbols.js +28 -0
- package/node_modules/has-tostringtag/test/tests.js +14 -0
- package/node_modules/is-arguments/.editorconfig +20 -0
- package/node_modules/is-arguments/.eslintignore +1 -0
- package/node_modules/is-arguments/.eslintrc +10 -0
- package/node_modules/is-arguments/.github/FUNDING.yml +12 -0
- package/node_modules/is-arguments/.nycrc +9 -0
- package/node_modules/is-arguments/CHANGELOG.md +179 -0
- package/node_modules/is-arguments/LICENSE +20 -0
- package/node_modules/is-arguments/README.md +47 -0
- package/node_modules/is-arguments/index.js +33 -0
- package/node_modules/is-arguments/package.json +116 -0
- package/node_modules/is-arguments/test/index.js +44 -0
- package/node_modules/is-date-object/.editorconfig +20 -0
- package/node_modules/is-date-object/.eslintignore +1 -0
- package/node_modules/is-date-object/.eslintrc +9 -0
- package/node_modules/is-date-object/.github/FUNDING.yml +12 -0
- package/node_modules/is-date-object/.nycrc +10 -0
- package/node_modules/is-date-object/CHANGELOG.md +114 -0
- package/node_modules/is-date-object/LICENSE +22 -0
- package/node_modules/is-date-object/README.md +52 -0
- package/node_modules/is-date-object/index.js +22 -0
- package/node_modules/is-date-object/package.json +110 -0
- package/node_modules/is-date-object/test/index.js +36 -0
- package/node_modules/is-regex/.editorconfig +20 -0
- package/node_modules/is-regex/.eslintignore +1 -0
- package/node_modules/is-regex/.eslintrc +19 -0
- package/node_modules/is-regex/.nycrc +10 -0
- package/node_modules/is-regex/CHANGELOG.md +197 -0
- package/node_modules/is-regex/LICENSE +20 -0
- package/node_modules/is-regex/README.md +52 -0
- package/node_modules/is-regex/index.js +58 -0
- package/node_modules/is-regex/package.json +114 -0
- package/node_modules/is-regex/test/index.js +104 -0
- package/node_modules/object-assign/index.js +90 -0
- package/node_modules/object-assign/license +21 -0
- package/node_modules/object-assign/package.json +76 -0
- package/node_modules/object-assign/readme.md +61 -0
- package/node_modules/object-is/.eslintignore +1 -0
- package/node_modules/object-is/.eslintrc +5 -0
- package/node_modules/object-is/.nycrc +13 -0
- package/node_modules/object-is/CHANGELOG.md +150 -0
- package/node_modules/object-is/LICENSE +20 -0
- package/node_modules/object-is/README.md +60 -0
- package/node_modules/object-is/auto.js +3 -0
- package/node_modules/object-is/implementation.js +19 -0
- package/node_modules/object-is/index.js +18 -0
- package/node_modules/object-is/package.json +114 -0
- package/node_modules/object-is/polyfill.js +7 -0
- package/node_modules/object-is/shim.js +14 -0
- package/node_modules/object-is/test/implementation.js +12 -0
- package/node_modules/object-is/test/index.js +12 -0
- package/node_modules/object-is/test/shimmed.js +28 -0
- package/node_modules/object-is/test/tests.js +57 -0
- package/node_modules/object-keys/.editorconfig +13 -0
- package/node_modules/object-keys/.eslintrc +17 -0
- package/node_modules/object-keys/.travis.yml +277 -0
- package/node_modules/object-keys/CHANGELOG.md +232 -0
- package/node_modules/object-keys/LICENSE +21 -0
- package/node_modules/object-keys/README.md +76 -0
- package/node_modules/object-keys/implementation.js +122 -0
- package/node_modules/object-keys/index.js +32 -0
- package/node_modules/object-keys/isArguments.js +17 -0
- package/node_modules/object-keys/package.json +118 -0
- package/node_modules/object-keys/test/index.js +5 -0
- package/node_modules/point-in-polygon/LICENSE +21 -0
- package/node_modules/point-in-polygon/example/inside.js +6 -0
- package/node_modules/point-in-polygon/flat.js +15 -0
- package/node_modules/point-in-polygon/index.js +12 -0
- package/node_modules/point-in-polygon/nested.js +18 -0
- package/node_modules/point-in-polygon/package.json +61 -0
- package/node_modules/point-in-polygon/readme.markdown +51 -0
- package/node_modules/point-in-polygon/test/box-offset.js +24 -0
- package/node_modules/point-in-polygon/test/box.js +34 -0
- package/node_modules/point-in-polygon/test/flat-offset.js +24 -0
- package/node_modules/point-in-polygon/test/flat.js +24 -0
- package/node_modules/polygon-clipping/CHANGELOG.md +129 -0
- package/node_modules/polygon-clipping/LICENSE.md +11 -0
- package/node_modules/polygon-clipping/README.md +99 -0
- package/node_modules/polygon-clipping/dist/polygon-clipping.cjs.js +1826 -0
- package/node_modules/polygon-clipping/dist/polygon-clipping.d.ts +11 -0
- package/node_modules/polygon-clipping/dist/polygon-clipping.esm.js +1820 -0
- package/node_modules/polygon-clipping/dist/polygon-clipping.umd.js +2557 -0
- package/node_modules/polygon-clipping/dist/polygon-clipping.umd.min.js +10 -0
- package/node_modules/polygon-clipping/dist/polygon-clipping.umd.min.js.map +1 -0
- package/node_modules/polygon-clipping/package.json +113 -0
- package/node_modules/quickselect/LICENSE +15 -0
- package/node_modules/quickselect/README.md +28 -0
- package/node_modules/quickselect/index.js +54 -0
- package/node_modules/quickselect/package.json +70 -0
- package/node_modules/quickselect/quickselect.js +63 -0
- package/node_modules/rbush/LICENSE +21 -0
- package/node_modules/rbush/README.md +218 -0
- package/node_modules/rbush/index.js +512 -0
- package/node_modules/rbush/package.json +87 -0
- package/node_modules/rbush/rbush.js +574 -0
- package/node_modules/rbush/rbush.min.js +1 -0
- package/node_modules/regexp.prototype.flags/.editorconfig +13 -0
- package/node_modules/regexp.prototype.flags/.eslintrc +18 -0
- package/node_modules/regexp.prototype.flags/.nycrc +9 -0
- package/node_modules/regexp.prototype.flags/CHANGELOG.md +184 -0
- package/node_modules/regexp.prototype.flags/LICENSE +22 -0
- package/node_modules/regexp.prototype.flags/README.md +54 -0
- package/node_modules/regexp.prototype.flags/auto.js +3 -0
- package/node_modules/regexp.prototype.flags/implementation.js +33 -0
- package/node_modules/regexp.prototype.flags/index.js +18 -0
- package/node_modules/regexp.prototype.flags/package.json +124 -0
- package/node_modules/regexp.prototype.flags/polyfill.js +36 -0
- package/node_modules/regexp.prototype.flags/shim.js +26 -0
- package/node_modules/regexp.prototype.flags/test/implementation.js +20 -0
- package/node_modules/regexp.prototype.flags/test/index.js +17 -0
- package/node_modules/regexp.prototype.flags/test/shimmed.js +47 -0
- package/node_modules/regexp.prototype.flags/test/tests.js +141 -0
- package/node_modules/robust-predicates/LICENSE +24 -0
- package/node_modules/robust-predicates/README.md +82 -0
- package/node_modules/robust-predicates/esm/incircle.js +765 -0
- package/node_modules/robust-predicates/esm/insphere.js +775 -0
- package/node_modules/robust-predicates/esm/orient2d.js +186 -0
- package/node_modules/robust-predicates/esm/orient3d.js +462 -0
- package/node_modules/robust-predicates/esm/util.js +138 -0
- package/node_modules/robust-predicates/index.js +5 -0
- package/node_modules/robust-predicates/package.json +95 -0
- package/node_modules/robust-predicates/umd/incircle.js +910 -0
- package/node_modules/robust-predicates/umd/incircle.min.js +1 -0
- package/node_modules/robust-predicates/umd/insphere.js +925 -0
- package/node_modules/robust-predicates/umd/insphere.min.js +1 -0
- package/node_modules/robust-predicates/umd/orient2d.js +284 -0
- package/node_modules/robust-predicates/umd/orient2d.min.js +1 -0
- package/node_modules/robust-predicates/umd/orient3d.js +603 -0
- package/node_modules/robust-predicates/umd/orient3d.min.js +1 -0
- package/node_modules/robust-predicates/umd/predicates.js +2341 -0
- package/node_modules/robust-predicates/umd/predicates.min.js +1 -0
- package/node_modules/skmeans/.gitattributes +17 -0
- package/node_modules/skmeans/.npmignore +52 -0
- package/node_modules/skmeans/Gruntfile.js +49 -0
- package/node_modules/skmeans/README.md +62 -0
- package/node_modules/skmeans/browser.js +19 -0
- package/node_modules/skmeans/dist/browser/skmeans.js +339 -0
- package/node_modules/skmeans/dist/browser/skmeans.js.map +1 -0
- package/node_modules/skmeans/dist/browser/skmeans.min.js +3 -0
- package/node_modules/skmeans/dist/index.html +15 -0
- package/node_modules/skmeans/dist/node/Gruntfile.js +49 -0
- package/node_modules/skmeans/dist/node/Gruntfile.js.map +1 -0
- package/node_modules/skmeans/dist/node/browser.js +19 -0
- package/node_modules/skmeans/dist/node/browser.js.map +1 -0
- package/node_modules/skmeans/dist/node/distance.js +39 -0
- package/node_modules/skmeans/dist/node/distance.js.map +1 -0
- package/node_modules/skmeans/dist/node/kinit.js +110 -0
- package/node_modules/skmeans/dist/node/kinit.js.map +1 -0
- package/node_modules/skmeans/dist/node/main.js +161 -0
- package/node_modules/skmeans/dist/node/main.js.map +1 -0
- package/node_modules/skmeans/distance.js +37 -0
- package/node_modules/skmeans/kinit.js +102 -0
- package/node_modules/skmeans/main.js +147 -0
- package/node_modules/skmeans/package.json +68 -0
- package/node_modules/skmeans/test/data/random_pts.js +1 -0
- package/node_modules/skmeans/test/data/well-separated.js +1 -0
- package/node_modules/skmeans/test/multi.js +15 -0
- package/node_modules/skmeans/test/stats.js +65 -0
- package/node_modules/skmeans/test/test.js +42 -0
- package/node_modules/skmeans/test/test_rand.js +23 -0
- package/node_modules/skmeans/test/test_ws.js +23 -0
- package/node_modules/skmeans/test/uni.js +15 -0
- package/node_modules/splaytree/Readme.md +221 -0
- package/node_modules/splaytree/dist/splay.esm.js +673 -0
- package/node_modules/splaytree/dist/splay.esm.js.map +1 -0
- package/node_modules/splaytree/dist/splay.js +681 -0
- package/node_modules/splaytree/dist/splay.js.map +1 -0
- package/node_modules/splaytree/package.json +123 -0
- package/node_modules/splaytree/src/index.ts +667 -0
- package/node_modules/splaytree/src/node.ts +15 -0
- package/node_modules/splaytree/src/types.ts +2 -0
- package/node_modules/splaytree/typings/index.d.ts +82 -0
- package/node_modules/splaytree/typings/node.d.ts +8 -0
- package/node_modules/splaytree/typings/types.d.ts +2 -0
- package/node_modules/tinyqueue/LICENSE +15 -0
- package/node_modules/tinyqueue/README.md +59 -0
- package/node_modules/tinyqueue/index.d.ts +11 -0
- package/node_modules/tinyqueue/index.js +79 -0
- package/node_modules/tinyqueue/package.json +78 -0
- package/node_modules/tinyqueue/tinyqueue.js +93 -0
- package/node_modules/tinyqueue/tinyqueue.min.js +1 -0
- package/node_modules/topojson-client/LICENSE +13 -0
- package/node_modules/topojson-client/README.md +242 -0
- package/node_modules/topojson-client/bin/topo2geo +106 -0
- package/node_modules/topojson-client/bin/topomerge +216 -0
- package/node_modules/topojson-client/bin/topoquantize +74 -0
- package/node_modules/topojson-client/dist/topojson-client.js +508 -0
- package/node_modules/topojson-client/dist/topojson-client.min.js +2 -0
- package/node_modules/topojson-client/package.json +77 -0
- package/node_modules/topojson-client/src/bbox.js +39 -0
- package/node_modules/topojson-client/src/bisect.js +9 -0
- package/node_modules/topojson-client/src/feature.js +70 -0
- package/node_modules/topojson-client/src/identity.js +3 -0
- package/node_modules/topojson-client/src/index.js +8 -0
- package/node_modules/topojson-client/src/merge.js +103 -0
- package/node_modules/topojson-client/src/mesh.js +53 -0
- package/node_modules/topojson-client/src/neighbors.js +45 -0
- package/node_modules/topojson-client/src/quantize.js +54 -0
- package/node_modules/topojson-client/src/reverse.js +4 -0
- package/node_modules/topojson-client/src/stitch.js +73 -0
- package/node_modules/topojson-client/src/transform.js +19 -0
- package/node_modules/topojson-client/src/untransform.js +23 -0
- package/node_modules/topojson-server/LICENSE +13 -0
- package/node_modules/topojson-server/README.md +75 -0
- package/node_modules/topojson-server/bin/geo2topo +125 -0
- package/node_modules/topojson-server/dist/topojson-server.js +838 -0
- package/node_modules/topojson-server/dist/topojson-server.min.js +2 -0
- package/node_modules/topojson-server/package.json +75 -0
- package/node_modules/topojson-server/src/bounds.js +46 -0
- package/node_modules/topojson-server/src/cut.js +62 -0
- package/node_modules/topojson-server/src/dedup.js +187 -0
- package/node_modules/topojson-server/src/delta.js +30 -0
- package/node_modules/topojson-server/src/extract.js +67 -0
- package/node_modules/topojson-server/src/geometry.js +39 -0
- package/node_modules/topojson-server/src/hash/hashmap.js +70 -0
- package/node_modules/topojson-server/src/hash/hashset.js +53 -0
- package/node_modules/topojson-server/src/hash/point-equal.js +3 -0
- package/node_modules/topojson-server/src/hash/point-hash.js +13 -0
- package/node_modules/topojson-server/src/index.js +1 -0
- package/node_modules/topojson-server/src/join.js +116 -0
- package/node_modules/topojson-server/src/object.js +1 -0
- package/node_modules/topojson-server/src/prequantize.js +72 -0
- package/node_modules/topojson-server/src/topology.js +80 -0
- package/node_modules/turf-jsts/README.md +19 -0
- package/node_modules/turf-jsts/jsts.js +18750 -0
- package/node_modules/turf-jsts/jsts.min.js +1 -0
- package/node_modules/turf-jsts/jsts.mjs +18742 -0
- package/node_modules/turf-jsts/package.json +100 -0
- package/node_modules/turf-jsts/src/Array.js +36 -0
- package/node_modules/turf-jsts/src/Map.js +150 -0
- package/node_modules/turf-jsts/src/Math.js +6 -0
- package/node_modules/turf-jsts/src/Number.js +18 -0
- package/node_modules/turf-jsts/src/extend.js +5 -0
- package/node_modules/turf-jsts/src/hasInterface.js +3 -0
- package/node_modules/turf-jsts/src/index.js +18 -0
- package/node_modules/turf-jsts/src/inherits.js +4 -0
- package/node_modules/turf-jsts/src/java/io/ByteArrayOutputStream.js +1 -0
- package/node_modules/turf-jsts/src/java/io/IOException.js +1 -0
- package/node_modules/turf-jsts/src/java/io/InputStream.js +1 -0
- package/node_modules/turf-jsts/src/java/io/LineNumberReader.js +1 -0
- package/node_modules/turf-jsts/src/java/io/OutputStream.js +1 -0
- package/node_modules/turf-jsts/src/java/io/PrintStream.js +1 -0
- package/node_modules/turf-jsts/src/java/io/Serializable.js +1 -0
- package/node_modules/turf-jsts/src/java/io/StringReader.js +1 -0
- package/node_modules/turf-jsts/src/java/io/StringWriter.js +1 -0
- package/node_modules/turf-jsts/src/java/io/Writer.js +1 -0
- package/node_modules/turf-jsts/src/java/lang/Character.js +4 -0
- package/node_modules/turf-jsts/src/java/lang/Cloneable.js +1 -0
- package/node_modules/turf-jsts/src/java/lang/Comparable.js +1 -0
- package/node_modules/turf-jsts/src/java/lang/Double.js +7 -0
- package/node_modules/turf-jsts/src/java/lang/Exception.js +1 -0
- package/node_modules/turf-jsts/src/java/lang/IllegalArgumentException.js +8 -0
- package/node_modules/turf-jsts/src/java/lang/Integer.js +14 -0
- package/node_modules/turf-jsts/src/java/lang/RuntimeException.js +8 -0
- package/node_modules/turf-jsts/src/java/lang/StringBuffer.js +16 -0
- package/node_modules/turf-jsts/src/java/lang/System.js +15 -0
- package/node_modules/turf-jsts/src/java/text/DecimalFormat.js +1 -0
- package/node_modules/turf-jsts/src/java/text/DecimalFormatSymbols.js +1 -0
- package/node_modules/turf-jsts/src/java/util/ArrayList.js +181 -0
- package/node_modules/turf-jsts/src/java/util/Arrays.js +60 -0
- package/node_modules/turf-jsts/src/java/util/Collection.js +58 -0
- package/node_modules/turf-jsts/src/java/util/Collections.js +34 -0
- package/node_modules/turf-jsts/src/java/util/Comparator.js +1 -0
- package/node_modules/turf-jsts/src/java/util/EmptyStackException.js +15 -0
- package/node_modules/turf-jsts/src/java/util/HashMap.js +61 -0
- package/node_modules/turf-jsts/src/java/util/HashSet.js +151 -0
- package/node_modules/turf-jsts/src/java/util/IndexOutOfBoundsException.js +15 -0
- package/node_modules/turf-jsts/src/java/util/Iterator.js +24 -0
- package/node_modules/turf-jsts/src/java/util/LinkedList.js +14 -0
- package/node_modules/turf-jsts/src/java/util/List.js +32 -0
- package/node_modules/turf-jsts/src/java/util/Map.js +53 -0
- package/node_modules/turf-jsts/src/java/util/NoSuchElementException.js +15 -0
- package/node_modules/turf-jsts/src/java/util/OperationNotSupported.js +15 -0
- package/node_modules/turf-jsts/src/java/util/Set.js +21 -0
- package/node_modules/turf-jsts/src/java/util/SortedMap.js +10 -0
- package/node_modules/turf-jsts/src/java/util/SortedSet.js +11 -0
- package/node_modules/turf-jsts/src/java/util/Stack.js +132 -0
- package/node_modules/turf-jsts/src/java/util/TreeMap.js +246 -0
- package/node_modules/turf-jsts/src/java/util/TreeSet.js +157 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/JTSVersion.js +32 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/algorithm/Angle.js +105 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/algorithm/BoundaryNodeRule.js +66 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/algorithm/CGAlgorithms.js +194 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/algorithm/CGAlgorithms3D.js +65 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/algorithm/CGAlgorithmsDD.js +72 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/algorithm/Centroid.js +127 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/algorithm/ConvexHull.js +252 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/algorithm/HCoordinate.js +105 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/algorithm/InteriorPointArea.js +137 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/algorithm/InteriorPointLine.js +68 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/algorithm/InteriorPointPoint.js +45 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/algorithm/LineIntersector.js +156 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/algorithm/MCPointInRing.js +102 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/algorithm/MinimumBoundingCircle.js +170 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/algorithm/MinimumDiameter.js +165 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/algorithm/NonRobustCGAlgorithms.js +123 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/algorithm/NonRobustLineIntersector.js +147 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/algorithm/NotRepresentableException.js +13 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/algorithm/PointInRing.js +9 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/algorithm/PointLocator.js +120 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/algorithm/RayCrossingCounter.js +95 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/algorithm/RectangleLineIntersector.js +46 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/algorithm/RobustDeterminant.js +202 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/algorithm/RobustLineIntersector.js +231 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/algorithm/SimplePointInRing.js +19 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/algorithm/distance/DiscreteHausdorffDistance.js +139 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/algorithm/distance/DistanceToPoint.js +61 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/algorithm/distance/PointPairDistance.js +79 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/algorithm/locate/IndexedPointInAreaLocator.js +95 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/algorithm/locate/PointOnGeometryLocator.js +9 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/algorithm/locate/SimplePointInAreaLocator.js +54 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/algorithm/match/AreaSimilarityMeasure.js +15 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/algorithm/match/HausdorffSimilarityMeasure.js +27 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/algorithm/match/SimilarityMeasure.js +9 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/algorithm/match/SimilarityMeasureCombiner.js +11 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/algorithm.js +42 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/densify/Densifier.js +93 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/densify.js +2 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/dissolve/DissolveEdgeGraph.js +14 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/dissolve/DissolveHalfEdge.js +21 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/dissolve/LineDissolver.js +152 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/dissolve.js +4 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/edgegraph/EdgeGraph.js +63 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/edgegraph/EdgeGraphBuilder.js +53 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/edgegraph/HalfEdge.js +143 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/edgegraph/MarkHalfEdge.js +41 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/edgegraph.js +5 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/Coordinate.js +202 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/CoordinateArrays.js +247 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/CoordinateFilter.js +9 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/CoordinateList.js +127 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/CoordinateSequence.js +26 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/CoordinateSequenceComparator.js +67 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/CoordinateSequenceFactory.js +23 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/CoordinateSequenceFilter.js +11 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/CoordinateSequences.js +104 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/Dimension.js +60 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/Envelope.js +347 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/Geometry.js +209 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/GeometryCollection.js +216 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/GeometryCollectionIterator.js +68 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/GeometryComponentFilter.js +9 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/GeometryFactory.js +260 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/GeometryFilter.js +9 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/IntersectionMatrix.js +232 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/LineSegment.js +276 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/LineString.js +212 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/Lineal.js +8 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/LinearRing.js +57 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/Location.js +28 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/MultiLineString.js +69 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/MultiPoint.js +55 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/MultiPolygon.js +66 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/OctagonalEnvelope.js +278 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/Point.js +145 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/Polygon.js +282 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/Polygonal.js +8 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/PrecisionModel.js +136 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/Puntal.js +8 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/TopologyException.js +23 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/Triangle.js +143 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/impl/CoordinateArraySequence.js +152 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/impl/CoordinateArraySequenceFactory.js +40 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/prep/AbstractPreparedPolygonContains.js +62 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/prep/BasicPreparedGeometry.js +72 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/prep/PreparedGeometry.js +19 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/prep/PreparedGeometryFactory.js +26 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/prep/PreparedLineString.js +25 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/prep/PreparedLineStringIntersects.js +39 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/prep/PreparedPoint.js +14 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/prep/PreparedPolygon.js +59 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/prep/PreparedPolygonContains.js +21 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/prep/PreparedPolygonContainsProperly.js +29 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/prep/PreparedPolygonCovers.js +25 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/prep/PreparedPolygonIntersects.js +30 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/prep/PreparedPolygonPredicate.js +63 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/util/AffineTransformation.js +445 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/util/AffineTransformationBuilder.js +49 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/util/AffineTransformationFactory.js +72 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/util/ComponentCoordinateExtracter.js +24 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/util/GeometryCollectionMapper.js +26 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/util/GeometryCombiner.js +80 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/util/GeometryEditor.js +156 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/util/GeometryExtracter.js +36 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/util/GeometryMapper.js +36 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/util/GeometryTransformer.js +127 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/util/LineStringExtracter.js +37 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/util/LinearComponentExtracter.js +98 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/util/NoninvertibleTransformationException.js +10 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/util/PointExtracter.js +38 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/util/PolygonExtracter.js +34 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/util/ShortCircuitedGeometryVisitor.js +25 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom/util/SineStarFactory.js +50 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geom.js +73 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geomgraph/Depth.js +92 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geomgraph/DirectedEdge.js +147 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geomgraph/DirectedEdgeStar.js +239 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geomgraph/Edge.js +193 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geomgraph/EdgeEnd.js +103 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geomgraph/EdgeEndStar.js +177 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geomgraph/EdgeIntersection.js +55 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geomgraph/EdgeIntersectionList.js +78 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geomgraph/EdgeList.js +61 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geomgraph/EdgeNodingValidator.js +32 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geomgraph/EdgeRing.js +163 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geomgraph/GeometryGraph.js +255 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geomgraph/GraphComponent.js +53 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geomgraph/Label.js +147 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geomgraph/Node.js +95 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geomgraph/NodeFactory.js +13 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geomgraph/NodeMap.js +68 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geomgraph/PlanarGraph.js +142 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geomgraph/Position.js +16 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geomgraph/Quadrant.js +60 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geomgraph/TopologyLocation.js +129 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geomgraph/index/EdgeSetIntersector.js +8 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geomgraph/index/MonotoneChain.js +19 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geomgraph/index/MonotoneChainEdge.js +83 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geomgraph/index/MonotoneChainIndexer.js +41 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geomgraph/index/SegmentIntersector.js +115 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geomgraph/index/SimpleEdgeSetIntersector.js +53 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geomgraph/index/SimpleMCSweepLineIntersector.js +101 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geomgraph/index/SimpleSweepLineIntersector.js +101 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geomgraph/index/SweepLineEvent.js +65 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geomgraph/index/SweepLineSegment.js +31 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/geomgraph.js +34 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/ArrayListVisitor.js +20 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/ItemVisitor.js +9 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/SpatialIndex.js +18 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/bintree/Bintree.js +74 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/bintree/Interval.js +73 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/bintree/Key.js +46 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/bintree/Node.js +94 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/bintree/NodeBase.js +97 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/bintree/Root.js +37 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/chain/MonotoneChain.js +107 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/chain/MonotoneChainBuilder.js +67 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/chain/MonotoneChainOverlapAction.js +31 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/chain/MonotoneChainSelectAction.js +25 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/intervalrtree/IntervalRTreeBranchNode.js +31 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/intervalrtree/IntervalRTreeLeafNode.js +24 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/intervalrtree/IntervalRTreeNode.js +49 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/intervalrtree/SortedPackedIntervalRTree.js +68 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/intervalrtree.js +5 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/kdtree/KdNode.js +68 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/kdtree/KdNodeVisitor.js +9 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/kdtree/KdTree.js +201 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/kdtree.js +4 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/quadtree/DoubleBits.js +86 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/quadtree/IntervalSize.js +19 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/quadtree/Key.js +57 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/quadtree/Node.js +114 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/quadtree/NodeBase.js +131 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/quadtree/Quadtree.js +81 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/quadtree/Root.js +39 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/quadtree.js +8 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/strtree/AbstractNode.js +45 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/strtree/AbstractSTRtree.js +296 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/strtree/Boundable.js +9 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/strtree/BoundablePair.js +83 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/strtree/GeometryItemDistance.js +15 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/strtree/Interval.js +46 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/strtree/ItemBoundable.js +25 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/strtree/ItemDistance.js +9 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/strtree/SIRtree.js +88 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/strtree/STRtree.js +234 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/strtree.js +11 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/sweepline/SweepLineEvent.js +53 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/sweepline/SweepLineIndex.js +53 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/sweepline/SweepLineInterval.js +34 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/sweepline/SweepLineOverlapAction.js +9 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index/sweepline.js +5 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/index.js +2 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/io/GeoJSONParser.js +439 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/io/GeoJSONReader.js +59 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/io/GeoJSONWriter.js +36 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/io/OL3Parser.js +181 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/io/WKTParser.js +398 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/io/WKTReader.js +62 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/io/WKTWriter.js +53 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/io.js +8 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/linearref/ExtractLineByLocation.js +69 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/linearref/LengthIndexOfPoint.js +65 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/linearref/LengthIndexedLine.js +86 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/linearref/LengthLocationMap.js +106 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/linearref/LinearGeometryBuilder.js +74 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/linearref/LinearIterator.js +88 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/linearref/LinearLocation.js +207 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/linearref/LocationIndexOfLine.js +33 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/linearref/LocationIndexOfPoint.js +68 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/linearref/LocationIndexedLine.js +65 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/linearref.js +11 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/math/DD.js +639 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/math/MathUtil.js +71 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/math/Matrix.js +54 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/math/Plane3D.js +41 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/math/Vector2D.js +180 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/math/Vector3D.js +97 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/monkey.js +167 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/noding/BasicSegmentString.js +46 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/noding/FastNodingValidator.js +64 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/noding/FastSegmentSetIntersectionFinder.js +31 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/noding/InteriorIntersectionFinder.js +96 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/noding/InteriorIntersectionFinderAdder.js +41 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/noding/IntersectionAdder.js +90 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/noding/IteratedNoder.js +54 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/noding/MCIndexNoder.js +91 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/noding/MCIndexSegmentSetMutualIntersector.js +88 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/noding/NodableSegmentString.js +11 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/noding/NodedSegmentString.js +103 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/noding/Noder.js +10 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/noding/NodingValidator.js +105 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/noding/Octant.js +40 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/noding/OrientedCoordinateArray.js +46 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/noding/ScaledNoder.js +99 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/noding/SegmentIntersectionDetector.js +81 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/noding/SegmentIntersector.js +10 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/noding/SegmentNode.js +50 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/noding/SegmentNodeList.js +210 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/noding/SegmentPointComparator.js +48 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/noding/SegmentSetMutualIntersector.js +9 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/noding/SegmentString.js +14 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/noding/SegmentStringDissolver.js +58 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/noding/SegmentStringUtil.js +49 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/noding/SimpleNoder.js +37 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/noding/SimpleSegmentSetMutualIntersector.js +35 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/noding/SinglePassNoder.js +20 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/noding/snapround/GeometryNoder.js +63 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/noding/snapround/HotPixel.js +126 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/noding/snapround/MCIndexPointSnapper.js +75 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/noding/snapround/MCIndexSnapRounder.js +90 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/noding/snapround/SimpleSnapRounder.js +109 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/noding.js +3 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/boundary/BoundaryOp.js +117 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/boundary.js +2 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/buffer/BufferBuilder.js +150 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/buffer/BufferInputLineSimplifier.js +98 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/buffer/BufferOp.js +139 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/buffer/BufferParameters.js +95 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/buffer/BufferSubgraph.js +151 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/buffer/OffsetCurveBuilder.js +170 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/buffer/OffsetCurveSetBuilder.js +122 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/buffer/OffsetSegmentGenerator.js +289 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/buffer/OffsetSegmentString.js +68 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/buffer/RightmostEdgeFinder.js +95 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/buffer/SubgraphDepthLocater.js +111 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/buffer/validate/BufferCurveMaximumDistanceFinder.js +92 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/buffer/validate/BufferDistanceValidator.js +107 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/buffer/validate/BufferResultValidator.js +116 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/buffer/validate/DistanceToPointFinder.js +61 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/buffer/validate/PointPairDistance.js +75 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/buffer.js +19 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/distance/ConnectedElementLocationFilter.js +28 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/distance/ConnectedElementPointFilter.js +27 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/distance/DistanceOp.js +239 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/distance/FacetSequence.js +114 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/distance/FacetSequenceTreeBuilder.js +57 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/distance/GeometryLocation.js +38 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/distance/IndexedFacetDistance.js +45 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/distance.js +8 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/distance3d/AxisPlaneCoordinateSequence.js +80 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/distance3d/Distance3DOp.js +312 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/distance3d/PlanarPolygon3D.js +117 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/distance3d.js +4 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/geometrygraph/GeometryGraphOp.js +46 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/geometrygraph.js +2 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/issimple/IsSimpleOp.js +164 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/issimple.js +2 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/linemerge/EdgeString.js +46 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/linemerge/LineMergeDirectedEdge.js +28 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/linemerge/LineMergeEdge.js +17 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/linemerge/LineMergeGraph.js +38 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/linemerge/LineMerger.js +116 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/linemerge/LineSequencer.js +249 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/linemerge.js +7 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/overlay/ConsistentPolygonRingChecker.js +74 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/overlay/EdgeSetNoder.js +32 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/overlay/LineBuilder.js +96 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/overlay/MaximalEdgeRing.js +43 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/overlay/MinimalEdgeRing.js +21 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/overlay/OverlayNodeFactory.js +15 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/overlay/OverlayOp.js +332 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/overlay/PointBuilder.js +45 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/overlay/PolygonBuilder.js +152 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/overlay/snap/GeometrySnapper.js +115 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/overlay/snap/LineStringSnapper.js +93 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/overlay/snap/SnapIfNeededOverlayOp.js +57 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/overlay/snap/SnapOverlayOp.js +73 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/overlay/validate/FuzzyPointLocator.js +77 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/overlay/validate/OffsetPointGenerator.js +55 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/overlay/validate/OverlayResultValidator.js +88 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/overlay.js +21 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/polygonize/EdgeRing.js +232 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/polygonize/PolygonizeDirectedEdge.js +41 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/polygonize/PolygonizeEdge.js +17 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/polygonize/PolygonizeGraph.js +249 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/polygonize/Polygonizer.js +186 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/polygonize.js +6 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/predicate/RectangleContains.js +64 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/predicate/RectangleIntersects.js +158 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/predicate.js +3 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/relate/EdgeEndBuilder.js +64 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/relate/EdgeEndBundle.js +96 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/relate/EdgeEndBundleStar.js +26 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/relate/RelateComputer.js +172 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/relate/RelateNode.js +21 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/relate/RelateNodeFactory.js +15 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/relate/RelateNodeGraph.js +52 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/relate/RelateOp.js +109 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/relate.js +9 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/union/CascadedPolygonUnion.js +157 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/union/PointGeometryUnion.js +47 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/union/UnaryUnionOp.js +105 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/union/UnionInteracting.js +75 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/union/UnionOp.js +21 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/union.js +6 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/valid/ConnectedInteriorTester.js +121 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/valid/ConsistentAreaTester.js +54 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/valid/IndexedNestedRingTester.js +60 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/valid/IsValidOp.js +324 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/valid/QuadtreeNestedRingTester.js +61 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/valid/RepeatedPointTester.js +56 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/valid/SimpleNestedRingTester.js +46 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/valid/SweeplineNestedRingTester.js +57 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/valid/TopologyValidationError.js +48 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation/valid.js +10 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/operation.js +4 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/planargraph/DirectedEdge.js +101 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/planargraph/DirectedEdgeStar.js +79 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/planargraph/Edge.js +51 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/planargraph/GraphComponent.js +56 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/planargraph/Node.js +60 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/planargraph/NodeMap.js +29 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/planargraph/PlanarGraph.js +100 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/planargraph/Subgraph.js +43 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/planargraph/algorithm/ConnectedSubgraphFinder.js +52 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/precision/CommonBits.js +67 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/precision/CommonBitsOp.js +63 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/precision/CommonBitsRemover.js +87 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/precision/CoordinatePrecisionReducerFilter.js +25 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/precision/EnhancedPrecisionOp.js +116 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/precision/GeometryPrecisionReducer.js +82 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/precision/MinimumClearance.js +132 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/precision/PrecisionReducerCoordinateOperation.js +39 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/precision/SimpleMinimumClearance.js +126 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/precision.js +10 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/shape/GeometricShapeBuilder.js +54 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/shape/fractal/KochSnowflakeBuilder.js +66 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/shape/fractal/SierpinskiCarpetBuilder.js +57 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/shape/random/RandomPointsBuilder.js +56 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/shape/random/RandomPointsInGridBuilder.js +70 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/simplify/DouglasPeuckerLineSimplifier.js +64 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/simplify/DouglasPeuckerSimplifier.js +90 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/simplify/LineSegmentIndex.js +63 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/simplify/TaggedLineSegment.js +36 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/simplify/TaggedLineString.js +78 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/simplify/TaggedLineStringSimplifier.js +129 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/simplify/TaggedLinesSimplifier.js +29 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/simplify/TopologyPreservingSimplifier.js +88 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/simplify/VWLineSimplifier.js +135 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/simplify/VWSimplifier.js +90 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/simplify.js +11 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/triangulate/ConformingDelaunayTriangulationBuilder.js +95 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/triangulate/ConformingDelaunayTriangulator.js +216 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/triangulate/ConstraintEnforcementException.js +29 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/triangulate/ConstraintSplitPointFinder.js +9 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/triangulate/ConstraintVertex.js +34 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/triangulate/ConstraintVertexFactory.js +9 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/triangulate/DelaunayTriangulationBuilder.js +84 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/triangulate/IncrementalDelaunayTriangulator.js +50 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/triangulate/MidpointSplitPointFinder.js +16 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/triangulate/NonEncroachingSplitPointFinder.js +31 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/triangulate/Segment.js +96 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/triangulate/SplitSegment.js +56 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/triangulate/VertexTaggedGeometryDataMapper.js +48 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/triangulate/VoronoiDiagramBuilder.js +77 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/triangulate/quadedge/EdgeConnectedTriangleTraversal.js +39 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/triangulate/quadedge/LastFoundQuadEdgeLocator.js +32 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/triangulate/quadedge/LocateFailureException.js +32 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/triangulate/quadedge/QuadEdge.js +146 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/triangulate/quadedge/QuadEdgeLocator.js +9 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/triangulate/quadedge/QuadEdgeSubdivision.js +456 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/triangulate/quadedge/QuadEdgeTriangle.js +191 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/triangulate/quadedge/QuadEdgeUtil.js +19 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/triangulate/quadedge/TraversalVisitor.js +9 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/triangulate/quadedge/TrianglePredicate.js +113 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/triangulate/quadedge/TriangleVisitor.js +9 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/triangulate/quadedge/Vertex.js +210 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/triangulate/quadedge.js +5 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/triangulate.js +15 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/util/Assert.js +53 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/util/AssertionFailedException.js +19 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/util/CollectionUtil.js +35 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/util/CoordinateArrayFilter.js +22 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/util/CoordinateCountFilter.js +19 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/util/GeometricShapeFactory.js +266 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/util/Memory.js +47 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/util/NumberUtil.js +11 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/util/ObjectCounter.js +44 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/util/PriorityQueue.js +55 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/util/StringUtil.js +79 -0
- package/node_modules/turf-jsts/src/org/locationtech/jts/util/UniqueCoordinateArrayFilter.js +33 -0
- package/package.json +21 -12
- package/tak-registration.html +27 -5
- package/tak-registration.js +229 -27
|
@@ -0,0 +1,2987 @@
|
|
|
1
|
+
// https://d3js.org/d3-geo/ Version 1.7.1. Copyright 2017 Mike Bostock.
|
|
2
|
+
(function (global, factory) {
|
|
3
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-array')) :
|
|
4
|
+
typeof define === 'function' && define.amd ? define(['exports', 'd3-array'], factory) :
|
|
5
|
+
(factory((global.d3 = global.d3 || {}),global.d3));
|
|
6
|
+
}(this, (function (exports,d3Array) { 'use strict';
|
|
7
|
+
|
|
8
|
+
// Adds floating point numbers with twice the normal precision.
|
|
9
|
+
// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and
|
|
10
|
+
// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)
|
|
11
|
+
// 305–363 (1997).
|
|
12
|
+
// Code adapted from GeographicLib by Charles F. F. Karney,
|
|
13
|
+
// http://geographiclib.sourceforge.net/
|
|
14
|
+
|
|
15
|
+
var adder = function() {
|
|
16
|
+
return new Adder;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
function Adder() {
|
|
20
|
+
this.reset();
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
Adder.prototype = {
|
|
24
|
+
constructor: Adder,
|
|
25
|
+
reset: function() {
|
|
26
|
+
this.s = // rounded value
|
|
27
|
+
this.t = 0; // exact error
|
|
28
|
+
},
|
|
29
|
+
add: function(y) {
|
|
30
|
+
add(temp, y, this.t);
|
|
31
|
+
add(this, temp.s, this.s);
|
|
32
|
+
if (this.s) this.t += temp.t;
|
|
33
|
+
else this.s = temp.t;
|
|
34
|
+
},
|
|
35
|
+
valueOf: function() {
|
|
36
|
+
return this.s;
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
var temp = new Adder;
|
|
41
|
+
|
|
42
|
+
function add(adder, a, b) {
|
|
43
|
+
var x = adder.s = a + b,
|
|
44
|
+
bv = x - a,
|
|
45
|
+
av = x - bv;
|
|
46
|
+
adder.t = (a - av) + (b - bv);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
var epsilon = 1e-6;
|
|
50
|
+
var epsilon2 = 1e-12;
|
|
51
|
+
var pi = Math.PI;
|
|
52
|
+
var halfPi = pi / 2;
|
|
53
|
+
var quarterPi = pi / 4;
|
|
54
|
+
var tau = pi * 2;
|
|
55
|
+
|
|
56
|
+
var degrees = 180 / pi;
|
|
57
|
+
var radians = pi / 180;
|
|
58
|
+
|
|
59
|
+
var abs = Math.abs;
|
|
60
|
+
var atan = Math.atan;
|
|
61
|
+
var atan2 = Math.atan2;
|
|
62
|
+
var cos = Math.cos;
|
|
63
|
+
var ceil = Math.ceil;
|
|
64
|
+
var exp = Math.exp;
|
|
65
|
+
|
|
66
|
+
var log = Math.log;
|
|
67
|
+
var pow = Math.pow;
|
|
68
|
+
var sin = Math.sin;
|
|
69
|
+
var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };
|
|
70
|
+
var sqrt = Math.sqrt;
|
|
71
|
+
var tan = Math.tan;
|
|
72
|
+
|
|
73
|
+
function acos(x) {
|
|
74
|
+
return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
function asin(x) {
|
|
78
|
+
return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
function haversin(x) {
|
|
82
|
+
return (x = sin(x / 2)) * x;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
function noop() {}
|
|
86
|
+
|
|
87
|
+
function streamGeometry(geometry, stream) {
|
|
88
|
+
if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {
|
|
89
|
+
streamGeometryType[geometry.type](geometry, stream);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
var streamObjectType = {
|
|
94
|
+
Feature: function(object, stream) {
|
|
95
|
+
streamGeometry(object.geometry, stream);
|
|
96
|
+
},
|
|
97
|
+
FeatureCollection: function(object, stream) {
|
|
98
|
+
var features = object.features, i = -1, n = features.length;
|
|
99
|
+
while (++i < n) streamGeometry(features[i].geometry, stream);
|
|
100
|
+
}
|
|
101
|
+
};
|
|
102
|
+
|
|
103
|
+
var streamGeometryType = {
|
|
104
|
+
Sphere: function(object, stream) {
|
|
105
|
+
stream.sphere();
|
|
106
|
+
},
|
|
107
|
+
Point: function(object, stream) {
|
|
108
|
+
object = object.coordinates;
|
|
109
|
+
stream.point(object[0], object[1], object[2]);
|
|
110
|
+
},
|
|
111
|
+
MultiPoint: function(object, stream) {
|
|
112
|
+
var coordinates = object.coordinates, i = -1, n = coordinates.length;
|
|
113
|
+
while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);
|
|
114
|
+
},
|
|
115
|
+
LineString: function(object, stream) {
|
|
116
|
+
streamLine(object.coordinates, stream, 0);
|
|
117
|
+
},
|
|
118
|
+
MultiLineString: function(object, stream) {
|
|
119
|
+
var coordinates = object.coordinates, i = -1, n = coordinates.length;
|
|
120
|
+
while (++i < n) streamLine(coordinates[i], stream, 0);
|
|
121
|
+
},
|
|
122
|
+
Polygon: function(object, stream) {
|
|
123
|
+
streamPolygon(object.coordinates, stream);
|
|
124
|
+
},
|
|
125
|
+
MultiPolygon: function(object, stream) {
|
|
126
|
+
var coordinates = object.coordinates, i = -1, n = coordinates.length;
|
|
127
|
+
while (++i < n) streamPolygon(coordinates[i], stream);
|
|
128
|
+
},
|
|
129
|
+
GeometryCollection: function(object, stream) {
|
|
130
|
+
var geometries = object.geometries, i = -1, n = geometries.length;
|
|
131
|
+
while (++i < n) streamGeometry(geometries[i], stream);
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
function streamLine(coordinates, stream, closed) {
|
|
136
|
+
var i = -1, n = coordinates.length - closed, coordinate;
|
|
137
|
+
stream.lineStart();
|
|
138
|
+
while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);
|
|
139
|
+
stream.lineEnd();
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
function streamPolygon(coordinates, stream) {
|
|
143
|
+
var i = -1, n = coordinates.length;
|
|
144
|
+
stream.polygonStart();
|
|
145
|
+
while (++i < n) streamLine(coordinates[i], stream, 1);
|
|
146
|
+
stream.polygonEnd();
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
var geoStream = function(object, stream) {
|
|
150
|
+
if (object && streamObjectType.hasOwnProperty(object.type)) {
|
|
151
|
+
streamObjectType[object.type](object, stream);
|
|
152
|
+
} else {
|
|
153
|
+
streamGeometry(object, stream);
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
var areaRingSum = adder();
|
|
158
|
+
|
|
159
|
+
var areaSum = adder();
|
|
160
|
+
var lambda00;
|
|
161
|
+
var phi00;
|
|
162
|
+
var lambda0;
|
|
163
|
+
var cosPhi0;
|
|
164
|
+
var sinPhi0;
|
|
165
|
+
|
|
166
|
+
var areaStream = {
|
|
167
|
+
point: noop,
|
|
168
|
+
lineStart: noop,
|
|
169
|
+
lineEnd: noop,
|
|
170
|
+
polygonStart: function() {
|
|
171
|
+
areaRingSum.reset();
|
|
172
|
+
areaStream.lineStart = areaRingStart;
|
|
173
|
+
areaStream.lineEnd = areaRingEnd;
|
|
174
|
+
},
|
|
175
|
+
polygonEnd: function() {
|
|
176
|
+
var areaRing = +areaRingSum;
|
|
177
|
+
areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);
|
|
178
|
+
this.lineStart = this.lineEnd = this.point = noop;
|
|
179
|
+
},
|
|
180
|
+
sphere: function() {
|
|
181
|
+
areaSum.add(tau);
|
|
182
|
+
}
|
|
183
|
+
};
|
|
184
|
+
|
|
185
|
+
function areaRingStart() {
|
|
186
|
+
areaStream.point = areaPointFirst;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
function areaRingEnd() {
|
|
190
|
+
areaPoint(lambda00, phi00);
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
function areaPointFirst(lambda, phi) {
|
|
194
|
+
areaStream.point = areaPoint;
|
|
195
|
+
lambda00 = lambda, phi00 = phi;
|
|
196
|
+
lambda *= radians, phi *= radians;
|
|
197
|
+
lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
function areaPoint(lambda, phi) {
|
|
201
|
+
lambda *= radians, phi *= radians;
|
|
202
|
+
phi = phi / 2 + quarterPi; // half the angular distance from south pole
|
|
203
|
+
|
|
204
|
+
// Spherical excess E for a spherical triangle with vertices: south pole,
|
|
205
|
+
// previous point, current point. Uses a formula derived from Cagnoli’s
|
|
206
|
+
// theorem. See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).
|
|
207
|
+
var dLambda = lambda - lambda0,
|
|
208
|
+
sdLambda = dLambda >= 0 ? 1 : -1,
|
|
209
|
+
adLambda = sdLambda * dLambda,
|
|
210
|
+
cosPhi = cos(phi),
|
|
211
|
+
sinPhi = sin(phi),
|
|
212
|
+
k = sinPhi0 * sinPhi,
|
|
213
|
+
u = cosPhi0 * cosPhi + k * cos(adLambda),
|
|
214
|
+
v = k * sdLambda * sin(adLambda);
|
|
215
|
+
areaRingSum.add(atan2(v, u));
|
|
216
|
+
|
|
217
|
+
// Advance the previous points.
|
|
218
|
+
lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
var area = function(object) {
|
|
222
|
+
areaSum.reset();
|
|
223
|
+
geoStream(object, areaStream);
|
|
224
|
+
return areaSum * 2;
|
|
225
|
+
};
|
|
226
|
+
|
|
227
|
+
function spherical(cartesian) {
|
|
228
|
+
return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
function cartesian(spherical) {
|
|
232
|
+
var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);
|
|
233
|
+
return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
function cartesianDot(a, b) {
|
|
237
|
+
return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
function cartesianCross(a, b) {
|
|
241
|
+
return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
// TODO return a
|
|
245
|
+
function cartesianAddInPlace(a, b) {
|
|
246
|
+
a[0] += b[0], a[1] += b[1], a[2] += b[2];
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
function cartesianScale(vector, k) {
|
|
250
|
+
return [vector[0] * k, vector[1] * k, vector[2] * k];
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
// TODO return d
|
|
254
|
+
function cartesianNormalizeInPlace(d) {
|
|
255
|
+
var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);
|
|
256
|
+
d[0] /= l, d[1] /= l, d[2] /= l;
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
var lambda0$1;
|
|
260
|
+
var phi0;
|
|
261
|
+
var lambda1;
|
|
262
|
+
var phi1;
|
|
263
|
+
var lambda2;
|
|
264
|
+
var lambda00$1;
|
|
265
|
+
var phi00$1;
|
|
266
|
+
var p0;
|
|
267
|
+
var deltaSum = adder();
|
|
268
|
+
var ranges;
|
|
269
|
+
var range$1;
|
|
270
|
+
|
|
271
|
+
var boundsStream = {
|
|
272
|
+
point: boundsPoint,
|
|
273
|
+
lineStart: boundsLineStart,
|
|
274
|
+
lineEnd: boundsLineEnd,
|
|
275
|
+
polygonStart: function() {
|
|
276
|
+
boundsStream.point = boundsRingPoint;
|
|
277
|
+
boundsStream.lineStart = boundsRingStart;
|
|
278
|
+
boundsStream.lineEnd = boundsRingEnd;
|
|
279
|
+
deltaSum.reset();
|
|
280
|
+
areaStream.polygonStart();
|
|
281
|
+
},
|
|
282
|
+
polygonEnd: function() {
|
|
283
|
+
areaStream.polygonEnd();
|
|
284
|
+
boundsStream.point = boundsPoint;
|
|
285
|
+
boundsStream.lineStart = boundsLineStart;
|
|
286
|
+
boundsStream.lineEnd = boundsLineEnd;
|
|
287
|
+
if (areaRingSum < 0) lambda0$1 = -(lambda1 = 180), phi0 = -(phi1 = 90);
|
|
288
|
+
else if (deltaSum > epsilon) phi1 = 90;
|
|
289
|
+
else if (deltaSum < -epsilon) phi0 = -90;
|
|
290
|
+
range$1[0] = lambda0$1, range$1[1] = lambda1;
|
|
291
|
+
}
|
|
292
|
+
};
|
|
293
|
+
|
|
294
|
+
function boundsPoint(lambda, phi) {
|
|
295
|
+
ranges.push(range$1 = [lambda0$1 = lambda, lambda1 = lambda]);
|
|
296
|
+
if (phi < phi0) phi0 = phi;
|
|
297
|
+
if (phi > phi1) phi1 = phi;
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
function linePoint(lambda, phi) {
|
|
301
|
+
var p = cartesian([lambda * radians, phi * radians]);
|
|
302
|
+
if (p0) {
|
|
303
|
+
var normal = cartesianCross(p0, p),
|
|
304
|
+
equatorial = [normal[1], -normal[0], 0],
|
|
305
|
+
inflection = cartesianCross(equatorial, normal);
|
|
306
|
+
cartesianNormalizeInPlace(inflection);
|
|
307
|
+
inflection = spherical(inflection);
|
|
308
|
+
var delta = lambda - lambda2,
|
|
309
|
+
sign$$1 = delta > 0 ? 1 : -1,
|
|
310
|
+
lambdai = inflection[0] * degrees * sign$$1,
|
|
311
|
+
phii,
|
|
312
|
+
antimeridian = abs(delta) > 180;
|
|
313
|
+
if (antimeridian ^ (sign$$1 * lambda2 < lambdai && lambdai < sign$$1 * lambda)) {
|
|
314
|
+
phii = inflection[1] * degrees;
|
|
315
|
+
if (phii > phi1) phi1 = phii;
|
|
316
|
+
} else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign$$1 * lambda2 < lambdai && lambdai < sign$$1 * lambda)) {
|
|
317
|
+
phii = -inflection[1] * degrees;
|
|
318
|
+
if (phii < phi0) phi0 = phii;
|
|
319
|
+
} else {
|
|
320
|
+
if (phi < phi0) phi0 = phi;
|
|
321
|
+
if (phi > phi1) phi1 = phi;
|
|
322
|
+
}
|
|
323
|
+
if (antimeridian) {
|
|
324
|
+
if (lambda < lambda2) {
|
|
325
|
+
if (angle(lambda0$1, lambda) > angle(lambda0$1, lambda1)) lambda1 = lambda;
|
|
326
|
+
} else {
|
|
327
|
+
if (angle(lambda, lambda1) > angle(lambda0$1, lambda1)) lambda0$1 = lambda;
|
|
328
|
+
}
|
|
329
|
+
} else {
|
|
330
|
+
if (lambda1 >= lambda0$1) {
|
|
331
|
+
if (lambda < lambda0$1) lambda0$1 = lambda;
|
|
332
|
+
if (lambda > lambda1) lambda1 = lambda;
|
|
333
|
+
} else {
|
|
334
|
+
if (lambda > lambda2) {
|
|
335
|
+
if (angle(lambda0$1, lambda) > angle(lambda0$1, lambda1)) lambda1 = lambda;
|
|
336
|
+
} else {
|
|
337
|
+
if (angle(lambda, lambda1) > angle(lambda0$1, lambda1)) lambda0$1 = lambda;
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
} else {
|
|
342
|
+
ranges.push(range$1 = [lambda0$1 = lambda, lambda1 = lambda]);
|
|
343
|
+
}
|
|
344
|
+
if (phi < phi0) phi0 = phi;
|
|
345
|
+
if (phi > phi1) phi1 = phi;
|
|
346
|
+
p0 = p, lambda2 = lambda;
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
function boundsLineStart() {
|
|
350
|
+
boundsStream.point = linePoint;
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
function boundsLineEnd() {
|
|
354
|
+
range$1[0] = lambda0$1, range$1[1] = lambda1;
|
|
355
|
+
boundsStream.point = boundsPoint;
|
|
356
|
+
p0 = null;
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
function boundsRingPoint(lambda, phi) {
|
|
360
|
+
if (p0) {
|
|
361
|
+
var delta = lambda - lambda2;
|
|
362
|
+
deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);
|
|
363
|
+
} else {
|
|
364
|
+
lambda00$1 = lambda, phi00$1 = phi;
|
|
365
|
+
}
|
|
366
|
+
areaStream.point(lambda, phi);
|
|
367
|
+
linePoint(lambda, phi);
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
function boundsRingStart() {
|
|
371
|
+
areaStream.lineStart();
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
function boundsRingEnd() {
|
|
375
|
+
boundsRingPoint(lambda00$1, phi00$1);
|
|
376
|
+
areaStream.lineEnd();
|
|
377
|
+
if (abs(deltaSum) > epsilon) lambda0$1 = -(lambda1 = 180);
|
|
378
|
+
range$1[0] = lambda0$1, range$1[1] = lambda1;
|
|
379
|
+
p0 = null;
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
// Finds the left-right distance between two longitudes.
|
|
383
|
+
// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want
|
|
384
|
+
// the distance between ±180° to be 360°.
|
|
385
|
+
function angle(lambda0, lambda1) {
|
|
386
|
+
return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
function rangeCompare(a, b) {
|
|
390
|
+
return a[0] - b[0];
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
function rangeContains(range$$1, x) {
|
|
394
|
+
return range$$1[0] <= range$$1[1] ? range$$1[0] <= x && x <= range$$1[1] : x < range$$1[0] || range$$1[1] < x;
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
var bounds = function(feature) {
|
|
398
|
+
var i, n, a, b, merged, deltaMax, delta;
|
|
399
|
+
|
|
400
|
+
phi1 = lambda1 = -(lambda0$1 = phi0 = Infinity);
|
|
401
|
+
ranges = [];
|
|
402
|
+
geoStream(feature, boundsStream);
|
|
403
|
+
|
|
404
|
+
// First, sort ranges by their minimum longitudes.
|
|
405
|
+
if (n = ranges.length) {
|
|
406
|
+
ranges.sort(rangeCompare);
|
|
407
|
+
|
|
408
|
+
// Then, merge any ranges that overlap.
|
|
409
|
+
for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {
|
|
410
|
+
b = ranges[i];
|
|
411
|
+
if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {
|
|
412
|
+
if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];
|
|
413
|
+
if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];
|
|
414
|
+
} else {
|
|
415
|
+
merged.push(a = b);
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
// Finally, find the largest gap between the merged ranges.
|
|
420
|
+
// The final bounding box will be the inverse of this gap.
|
|
421
|
+
for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {
|
|
422
|
+
b = merged[i];
|
|
423
|
+
if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0$1 = b[0], lambda1 = a[1];
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
ranges = range$1 = null;
|
|
428
|
+
|
|
429
|
+
return lambda0$1 === Infinity || phi0 === Infinity
|
|
430
|
+
? [[NaN, NaN], [NaN, NaN]]
|
|
431
|
+
: [[lambda0$1, phi0], [lambda1, phi1]];
|
|
432
|
+
};
|
|
433
|
+
|
|
434
|
+
var W0;
|
|
435
|
+
var W1;
|
|
436
|
+
var X0;
|
|
437
|
+
var Y0;
|
|
438
|
+
var Z0;
|
|
439
|
+
var X1;
|
|
440
|
+
var Y1;
|
|
441
|
+
var Z1;
|
|
442
|
+
var X2;
|
|
443
|
+
var Y2;
|
|
444
|
+
var Z2;
|
|
445
|
+
var lambda00$2;
|
|
446
|
+
var phi00$2;
|
|
447
|
+
var x0;
|
|
448
|
+
var y0;
|
|
449
|
+
var z0; // previous point
|
|
450
|
+
|
|
451
|
+
var centroidStream = {
|
|
452
|
+
sphere: noop,
|
|
453
|
+
point: centroidPoint,
|
|
454
|
+
lineStart: centroidLineStart,
|
|
455
|
+
lineEnd: centroidLineEnd,
|
|
456
|
+
polygonStart: function() {
|
|
457
|
+
centroidStream.lineStart = centroidRingStart;
|
|
458
|
+
centroidStream.lineEnd = centroidRingEnd;
|
|
459
|
+
},
|
|
460
|
+
polygonEnd: function() {
|
|
461
|
+
centroidStream.lineStart = centroidLineStart;
|
|
462
|
+
centroidStream.lineEnd = centroidLineEnd;
|
|
463
|
+
}
|
|
464
|
+
};
|
|
465
|
+
|
|
466
|
+
// Arithmetic mean of Cartesian vectors.
|
|
467
|
+
function centroidPoint(lambda, phi) {
|
|
468
|
+
lambda *= radians, phi *= radians;
|
|
469
|
+
var cosPhi = cos(phi);
|
|
470
|
+
centroidPointCartesian(cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi));
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
function centroidPointCartesian(x, y, z) {
|
|
474
|
+
++W0;
|
|
475
|
+
X0 += (x - X0) / W0;
|
|
476
|
+
Y0 += (y - Y0) / W0;
|
|
477
|
+
Z0 += (z - Z0) / W0;
|
|
478
|
+
}
|
|
479
|
+
|
|
480
|
+
function centroidLineStart() {
|
|
481
|
+
centroidStream.point = centroidLinePointFirst;
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
function centroidLinePointFirst(lambda, phi) {
|
|
485
|
+
lambda *= radians, phi *= radians;
|
|
486
|
+
var cosPhi = cos(phi);
|
|
487
|
+
x0 = cosPhi * cos(lambda);
|
|
488
|
+
y0 = cosPhi * sin(lambda);
|
|
489
|
+
z0 = sin(phi);
|
|
490
|
+
centroidStream.point = centroidLinePoint;
|
|
491
|
+
centroidPointCartesian(x0, y0, z0);
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
function centroidLinePoint(lambda, phi) {
|
|
495
|
+
lambda *= radians, phi *= radians;
|
|
496
|
+
var cosPhi = cos(phi),
|
|
497
|
+
x = cosPhi * cos(lambda),
|
|
498
|
+
y = cosPhi * sin(lambda),
|
|
499
|
+
z = sin(phi),
|
|
500
|
+
w = atan2(sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);
|
|
501
|
+
W1 += w;
|
|
502
|
+
X1 += w * (x0 + (x0 = x));
|
|
503
|
+
Y1 += w * (y0 + (y0 = y));
|
|
504
|
+
Z1 += w * (z0 + (z0 = z));
|
|
505
|
+
centroidPointCartesian(x0, y0, z0);
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
function centroidLineEnd() {
|
|
509
|
+
centroidStream.point = centroidPoint;
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,
|
|
513
|
+
// J. Applied Mechanics 42, 239 (1975).
|
|
514
|
+
function centroidRingStart() {
|
|
515
|
+
centroidStream.point = centroidRingPointFirst;
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
function centroidRingEnd() {
|
|
519
|
+
centroidRingPoint(lambda00$2, phi00$2);
|
|
520
|
+
centroidStream.point = centroidPoint;
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
function centroidRingPointFirst(lambda, phi) {
|
|
524
|
+
lambda00$2 = lambda, phi00$2 = phi;
|
|
525
|
+
lambda *= radians, phi *= radians;
|
|
526
|
+
centroidStream.point = centroidRingPoint;
|
|
527
|
+
var cosPhi = cos(phi);
|
|
528
|
+
x0 = cosPhi * cos(lambda);
|
|
529
|
+
y0 = cosPhi * sin(lambda);
|
|
530
|
+
z0 = sin(phi);
|
|
531
|
+
centroidPointCartesian(x0, y0, z0);
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
function centroidRingPoint(lambda, phi) {
|
|
535
|
+
lambda *= radians, phi *= radians;
|
|
536
|
+
var cosPhi = cos(phi),
|
|
537
|
+
x = cosPhi * cos(lambda),
|
|
538
|
+
y = cosPhi * sin(lambda),
|
|
539
|
+
z = sin(phi),
|
|
540
|
+
cx = y0 * z - z0 * y,
|
|
541
|
+
cy = z0 * x - x0 * z,
|
|
542
|
+
cz = x0 * y - y0 * x,
|
|
543
|
+
m = sqrt(cx * cx + cy * cy + cz * cz),
|
|
544
|
+
w = asin(m), // line weight = angle
|
|
545
|
+
v = m && -w / m; // area weight multiplier
|
|
546
|
+
X2 += v * cx;
|
|
547
|
+
Y2 += v * cy;
|
|
548
|
+
Z2 += v * cz;
|
|
549
|
+
W1 += w;
|
|
550
|
+
X1 += w * (x0 + (x0 = x));
|
|
551
|
+
Y1 += w * (y0 + (y0 = y));
|
|
552
|
+
Z1 += w * (z0 + (z0 = z));
|
|
553
|
+
centroidPointCartesian(x0, y0, z0);
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
var centroid = function(object) {
|
|
557
|
+
W0 = W1 =
|
|
558
|
+
X0 = Y0 = Z0 =
|
|
559
|
+
X1 = Y1 = Z1 =
|
|
560
|
+
X2 = Y2 = Z2 = 0;
|
|
561
|
+
geoStream(object, centroidStream);
|
|
562
|
+
|
|
563
|
+
var x = X2,
|
|
564
|
+
y = Y2,
|
|
565
|
+
z = Z2,
|
|
566
|
+
m = x * x + y * y + z * z;
|
|
567
|
+
|
|
568
|
+
// If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.
|
|
569
|
+
if (m < epsilon2) {
|
|
570
|
+
x = X1, y = Y1, z = Z1;
|
|
571
|
+
// If the feature has zero length, fall back to arithmetic mean of point vectors.
|
|
572
|
+
if (W1 < epsilon) x = X0, y = Y0, z = Z0;
|
|
573
|
+
m = x * x + y * y + z * z;
|
|
574
|
+
// If the feature still has an undefined ccentroid, then return.
|
|
575
|
+
if (m < epsilon2) return [NaN, NaN];
|
|
576
|
+
}
|
|
577
|
+
|
|
578
|
+
return [atan2(y, x) * degrees, asin(z / sqrt(m)) * degrees];
|
|
579
|
+
};
|
|
580
|
+
|
|
581
|
+
var constant = function(x) {
|
|
582
|
+
return function() {
|
|
583
|
+
return x;
|
|
584
|
+
};
|
|
585
|
+
};
|
|
586
|
+
|
|
587
|
+
var compose = function(a, b) {
|
|
588
|
+
|
|
589
|
+
function compose(x, y) {
|
|
590
|
+
return x = a(x, y), b(x[0], x[1]);
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
if (a.invert && b.invert) compose.invert = function(x, y) {
|
|
594
|
+
return x = b.invert(x, y), x && a.invert(x[0], x[1]);
|
|
595
|
+
};
|
|
596
|
+
|
|
597
|
+
return compose;
|
|
598
|
+
};
|
|
599
|
+
|
|
600
|
+
function rotationIdentity(lambda, phi) {
|
|
601
|
+
return [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
rotationIdentity.invert = rotationIdentity;
|
|
605
|
+
|
|
606
|
+
function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {
|
|
607
|
+
return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))
|
|
608
|
+
: rotationLambda(deltaLambda))
|
|
609
|
+
: (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)
|
|
610
|
+
: rotationIdentity);
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
function forwardRotationLambda(deltaLambda) {
|
|
614
|
+
return function(lambda, phi) {
|
|
615
|
+
return lambda += deltaLambda, [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];
|
|
616
|
+
};
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
function rotationLambda(deltaLambda) {
|
|
620
|
+
var rotation = forwardRotationLambda(deltaLambda);
|
|
621
|
+
rotation.invert = forwardRotationLambda(-deltaLambda);
|
|
622
|
+
return rotation;
|
|
623
|
+
}
|
|
624
|
+
|
|
625
|
+
function rotationPhiGamma(deltaPhi, deltaGamma) {
|
|
626
|
+
var cosDeltaPhi = cos(deltaPhi),
|
|
627
|
+
sinDeltaPhi = sin(deltaPhi),
|
|
628
|
+
cosDeltaGamma = cos(deltaGamma),
|
|
629
|
+
sinDeltaGamma = sin(deltaGamma);
|
|
630
|
+
|
|
631
|
+
function rotation(lambda, phi) {
|
|
632
|
+
var cosPhi = cos(phi),
|
|
633
|
+
x = cos(lambda) * cosPhi,
|
|
634
|
+
y = sin(lambda) * cosPhi,
|
|
635
|
+
z = sin(phi),
|
|
636
|
+
k = z * cosDeltaPhi + x * sinDeltaPhi;
|
|
637
|
+
return [
|
|
638
|
+
atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),
|
|
639
|
+
asin(k * cosDeltaGamma + y * sinDeltaGamma)
|
|
640
|
+
];
|
|
641
|
+
}
|
|
642
|
+
|
|
643
|
+
rotation.invert = function(lambda, phi) {
|
|
644
|
+
var cosPhi = cos(phi),
|
|
645
|
+
x = cos(lambda) * cosPhi,
|
|
646
|
+
y = sin(lambda) * cosPhi,
|
|
647
|
+
z = sin(phi),
|
|
648
|
+
k = z * cosDeltaGamma - y * sinDeltaGamma;
|
|
649
|
+
return [
|
|
650
|
+
atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),
|
|
651
|
+
asin(k * cosDeltaPhi - x * sinDeltaPhi)
|
|
652
|
+
];
|
|
653
|
+
};
|
|
654
|
+
|
|
655
|
+
return rotation;
|
|
656
|
+
}
|
|
657
|
+
|
|
658
|
+
var rotation = function(rotate) {
|
|
659
|
+
rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);
|
|
660
|
+
|
|
661
|
+
function forward(coordinates) {
|
|
662
|
+
coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);
|
|
663
|
+
return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;
|
|
664
|
+
}
|
|
665
|
+
|
|
666
|
+
forward.invert = function(coordinates) {
|
|
667
|
+
coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);
|
|
668
|
+
return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;
|
|
669
|
+
};
|
|
670
|
+
|
|
671
|
+
return forward;
|
|
672
|
+
};
|
|
673
|
+
|
|
674
|
+
// Generates a circle centered at [0°, 0°], with a given radius and precision.
|
|
675
|
+
function circleStream(stream, radius, delta, direction, t0, t1) {
|
|
676
|
+
if (!delta) return;
|
|
677
|
+
var cosRadius = cos(radius),
|
|
678
|
+
sinRadius = sin(radius),
|
|
679
|
+
step = direction * delta;
|
|
680
|
+
if (t0 == null) {
|
|
681
|
+
t0 = radius + direction * tau;
|
|
682
|
+
t1 = radius - step / 2;
|
|
683
|
+
} else {
|
|
684
|
+
t0 = circleRadius(cosRadius, t0);
|
|
685
|
+
t1 = circleRadius(cosRadius, t1);
|
|
686
|
+
if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;
|
|
687
|
+
}
|
|
688
|
+
for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {
|
|
689
|
+
point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);
|
|
690
|
+
stream.point(point[0], point[1]);
|
|
691
|
+
}
|
|
692
|
+
}
|
|
693
|
+
|
|
694
|
+
// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].
|
|
695
|
+
function circleRadius(cosRadius, point) {
|
|
696
|
+
point = cartesian(point), point[0] -= cosRadius;
|
|
697
|
+
cartesianNormalizeInPlace(point);
|
|
698
|
+
var radius = acos(-point[1]);
|
|
699
|
+
return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;
|
|
700
|
+
}
|
|
701
|
+
|
|
702
|
+
var circle = function() {
|
|
703
|
+
var center = constant([0, 0]),
|
|
704
|
+
radius = constant(90),
|
|
705
|
+
precision = constant(6),
|
|
706
|
+
ring,
|
|
707
|
+
rotate,
|
|
708
|
+
stream = {point: point};
|
|
709
|
+
|
|
710
|
+
function point(x, y) {
|
|
711
|
+
ring.push(x = rotate(x, y));
|
|
712
|
+
x[0] *= degrees, x[1] *= degrees;
|
|
713
|
+
}
|
|
714
|
+
|
|
715
|
+
function circle() {
|
|
716
|
+
var c = center.apply(this, arguments),
|
|
717
|
+
r = radius.apply(this, arguments) * radians,
|
|
718
|
+
p = precision.apply(this, arguments) * radians;
|
|
719
|
+
ring = [];
|
|
720
|
+
rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;
|
|
721
|
+
circleStream(stream, r, p, 1);
|
|
722
|
+
c = {type: "Polygon", coordinates: [ring]};
|
|
723
|
+
ring = rotate = null;
|
|
724
|
+
return c;
|
|
725
|
+
}
|
|
726
|
+
|
|
727
|
+
circle.center = function(_) {
|
|
728
|
+
return arguments.length ? (center = typeof _ === "function" ? _ : constant([+_[0], +_[1]]), circle) : center;
|
|
729
|
+
};
|
|
730
|
+
|
|
731
|
+
circle.radius = function(_) {
|
|
732
|
+
return arguments.length ? (radius = typeof _ === "function" ? _ : constant(+_), circle) : radius;
|
|
733
|
+
};
|
|
734
|
+
|
|
735
|
+
circle.precision = function(_) {
|
|
736
|
+
return arguments.length ? (precision = typeof _ === "function" ? _ : constant(+_), circle) : precision;
|
|
737
|
+
};
|
|
738
|
+
|
|
739
|
+
return circle;
|
|
740
|
+
};
|
|
741
|
+
|
|
742
|
+
var clipBuffer = function() {
|
|
743
|
+
var lines = [],
|
|
744
|
+
line;
|
|
745
|
+
return {
|
|
746
|
+
point: function(x, y) {
|
|
747
|
+
line.push([x, y]);
|
|
748
|
+
},
|
|
749
|
+
lineStart: function() {
|
|
750
|
+
lines.push(line = []);
|
|
751
|
+
},
|
|
752
|
+
lineEnd: noop,
|
|
753
|
+
rejoin: function() {
|
|
754
|
+
if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));
|
|
755
|
+
},
|
|
756
|
+
result: function() {
|
|
757
|
+
var result = lines;
|
|
758
|
+
lines = [];
|
|
759
|
+
line = null;
|
|
760
|
+
return result;
|
|
761
|
+
}
|
|
762
|
+
};
|
|
763
|
+
};
|
|
764
|
+
|
|
765
|
+
var clipLine = function(a, b, x0, y0, x1, y1) {
|
|
766
|
+
var ax = a[0],
|
|
767
|
+
ay = a[1],
|
|
768
|
+
bx = b[0],
|
|
769
|
+
by = b[1],
|
|
770
|
+
t0 = 0,
|
|
771
|
+
t1 = 1,
|
|
772
|
+
dx = bx - ax,
|
|
773
|
+
dy = by - ay,
|
|
774
|
+
r;
|
|
775
|
+
|
|
776
|
+
r = x0 - ax;
|
|
777
|
+
if (!dx && r > 0) return;
|
|
778
|
+
r /= dx;
|
|
779
|
+
if (dx < 0) {
|
|
780
|
+
if (r < t0) return;
|
|
781
|
+
if (r < t1) t1 = r;
|
|
782
|
+
} else if (dx > 0) {
|
|
783
|
+
if (r > t1) return;
|
|
784
|
+
if (r > t0) t0 = r;
|
|
785
|
+
}
|
|
786
|
+
|
|
787
|
+
r = x1 - ax;
|
|
788
|
+
if (!dx && r < 0) return;
|
|
789
|
+
r /= dx;
|
|
790
|
+
if (dx < 0) {
|
|
791
|
+
if (r > t1) return;
|
|
792
|
+
if (r > t0) t0 = r;
|
|
793
|
+
} else if (dx > 0) {
|
|
794
|
+
if (r < t0) return;
|
|
795
|
+
if (r < t1) t1 = r;
|
|
796
|
+
}
|
|
797
|
+
|
|
798
|
+
r = y0 - ay;
|
|
799
|
+
if (!dy && r > 0) return;
|
|
800
|
+
r /= dy;
|
|
801
|
+
if (dy < 0) {
|
|
802
|
+
if (r < t0) return;
|
|
803
|
+
if (r < t1) t1 = r;
|
|
804
|
+
} else if (dy > 0) {
|
|
805
|
+
if (r > t1) return;
|
|
806
|
+
if (r > t0) t0 = r;
|
|
807
|
+
}
|
|
808
|
+
|
|
809
|
+
r = y1 - ay;
|
|
810
|
+
if (!dy && r < 0) return;
|
|
811
|
+
r /= dy;
|
|
812
|
+
if (dy < 0) {
|
|
813
|
+
if (r > t1) return;
|
|
814
|
+
if (r > t0) t0 = r;
|
|
815
|
+
} else if (dy > 0) {
|
|
816
|
+
if (r < t0) return;
|
|
817
|
+
if (r < t1) t1 = r;
|
|
818
|
+
}
|
|
819
|
+
|
|
820
|
+
if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;
|
|
821
|
+
if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;
|
|
822
|
+
return true;
|
|
823
|
+
};
|
|
824
|
+
|
|
825
|
+
var pointEqual = function(a, b) {
|
|
826
|
+
return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;
|
|
827
|
+
};
|
|
828
|
+
|
|
829
|
+
function Intersection(point, points, other, entry) {
|
|
830
|
+
this.x = point;
|
|
831
|
+
this.z = points;
|
|
832
|
+
this.o = other; // another intersection
|
|
833
|
+
this.e = entry; // is an entry?
|
|
834
|
+
this.v = false; // visited
|
|
835
|
+
this.n = this.p = null; // next & previous
|
|
836
|
+
}
|
|
837
|
+
|
|
838
|
+
// A generalized polygon clipping algorithm: given a polygon that has been cut
|
|
839
|
+
// into its visible line segments, and rejoins the segments by interpolating
|
|
840
|
+
// along the clip edge.
|
|
841
|
+
var clipPolygon = function(segments, compareIntersection, startInside, interpolate, stream) {
|
|
842
|
+
var subject = [],
|
|
843
|
+
clip = [],
|
|
844
|
+
i,
|
|
845
|
+
n;
|
|
846
|
+
|
|
847
|
+
segments.forEach(function(segment) {
|
|
848
|
+
if ((n = segment.length - 1) <= 0) return;
|
|
849
|
+
var n, p0 = segment[0], p1 = segment[n], x;
|
|
850
|
+
|
|
851
|
+
// If the first and last points of a segment are coincident, then treat as a
|
|
852
|
+
// closed ring. TODO if all rings are closed, then the winding order of the
|
|
853
|
+
// exterior ring should be checked.
|
|
854
|
+
if (pointEqual(p0, p1)) {
|
|
855
|
+
stream.lineStart();
|
|
856
|
+
for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);
|
|
857
|
+
stream.lineEnd();
|
|
858
|
+
return;
|
|
859
|
+
}
|
|
860
|
+
|
|
861
|
+
subject.push(x = new Intersection(p0, segment, null, true));
|
|
862
|
+
clip.push(x.o = new Intersection(p0, null, x, false));
|
|
863
|
+
subject.push(x = new Intersection(p1, segment, null, false));
|
|
864
|
+
clip.push(x.o = new Intersection(p1, null, x, true));
|
|
865
|
+
});
|
|
866
|
+
|
|
867
|
+
if (!subject.length) return;
|
|
868
|
+
|
|
869
|
+
clip.sort(compareIntersection);
|
|
870
|
+
link(subject);
|
|
871
|
+
link(clip);
|
|
872
|
+
|
|
873
|
+
for (i = 0, n = clip.length; i < n; ++i) {
|
|
874
|
+
clip[i].e = startInside = !startInside;
|
|
875
|
+
}
|
|
876
|
+
|
|
877
|
+
var start = subject[0],
|
|
878
|
+
points,
|
|
879
|
+
point;
|
|
880
|
+
|
|
881
|
+
while (1) {
|
|
882
|
+
// Find first unvisited intersection.
|
|
883
|
+
var current = start,
|
|
884
|
+
isSubject = true;
|
|
885
|
+
while (current.v) if ((current = current.n) === start) return;
|
|
886
|
+
points = current.z;
|
|
887
|
+
stream.lineStart();
|
|
888
|
+
do {
|
|
889
|
+
current.v = current.o.v = true;
|
|
890
|
+
if (current.e) {
|
|
891
|
+
if (isSubject) {
|
|
892
|
+
for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);
|
|
893
|
+
} else {
|
|
894
|
+
interpolate(current.x, current.n.x, 1, stream);
|
|
895
|
+
}
|
|
896
|
+
current = current.n;
|
|
897
|
+
} else {
|
|
898
|
+
if (isSubject) {
|
|
899
|
+
points = current.p.z;
|
|
900
|
+
for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);
|
|
901
|
+
} else {
|
|
902
|
+
interpolate(current.x, current.p.x, -1, stream);
|
|
903
|
+
}
|
|
904
|
+
current = current.p;
|
|
905
|
+
}
|
|
906
|
+
current = current.o;
|
|
907
|
+
points = current.z;
|
|
908
|
+
isSubject = !isSubject;
|
|
909
|
+
} while (!current.v);
|
|
910
|
+
stream.lineEnd();
|
|
911
|
+
}
|
|
912
|
+
};
|
|
913
|
+
|
|
914
|
+
function link(array) {
|
|
915
|
+
if (!(n = array.length)) return;
|
|
916
|
+
var n,
|
|
917
|
+
i = 0,
|
|
918
|
+
a = array[0],
|
|
919
|
+
b;
|
|
920
|
+
while (++i < n) {
|
|
921
|
+
a.n = b = array[i];
|
|
922
|
+
b.p = a;
|
|
923
|
+
a = b;
|
|
924
|
+
}
|
|
925
|
+
a.n = b = array[0];
|
|
926
|
+
b.p = a;
|
|
927
|
+
}
|
|
928
|
+
|
|
929
|
+
var clipMax = 1e9;
|
|
930
|
+
var clipMin = -clipMax;
|
|
931
|
+
|
|
932
|
+
// TODO Use d3-polygon’s polygonContains here for the ring check?
|
|
933
|
+
// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?
|
|
934
|
+
|
|
935
|
+
function clipExtent(x0, y0, x1, y1) {
|
|
936
|
+
|
|
937
|
+
function visible(x, y) {
|
|
938
|
+
return x0 <= x && x <= x1 && y0 <= y && y <= y1;
|
|
939
|
+
}
|
|
940
|
+
|
|
941
|
+
function interpolate(from, to, direction, stream) {
|
|
942
|
+
var a = 0, a1 = 0;
|
|
943
|
+
if (from == null
|
|
944
|
+
|| (a = corner(from, direction)) !== (a1 = corner(to, direction))
|
|
945
|
+
|| comparePoint(from, to) < 0 ^ direction > 0) {
|
|
946
|
+
do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);
|
|
947
|
+
while ((a = (a + direction + 4) % 4) !== a1);
|
|
948
|
+
} else {
|
|
949
|
+
stream.point(to[0], to[1]);
|
|
950
|
+
}
|
|
951
|
+
}
|
|
952
|
+
|
|
953
|
+
function corner(p, direction) {
|
|
954
|
+
return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3
|
|
955
|
+
: abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1
|
|
956
|
+
: abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0
|
|
957
|
+
: direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon
|
|
958
|
+
}
|
|
959
|
+
|
|
960
|
+
function compareIntersection(a, b) {
|
|
961
|
+
return comparePoint(a.x, b.x);
|
|
962
|
+
}
|
|
963
|
+
|
|
964
|
+
function comparePoint(a, b) {
|
|
965
|
+
var ca = corner(a, 1),
|
|
966
|
+
cb = corner(b, 1);
|
|
967
|
+
return ca !== cb ? ca - cb
|
|
968
|
+
: ca === 0 ? b[1] - a[1]
|
|
969
|
+
: ca === 1 ? a[0] - b[0]
|
|
970
|
+
: ca === 2 ? a[1] - b[1]
|
|
971
|
+
: b[0] - a[0];
|
|
972
|
+
}
|
|
973
|
+
|
|
974
|
+
return function(stream) {
|
|
975
|
+
var activeStream = stream,
|
|
976
|
+
bufferStream = clipBuffer(),
|
|
977
|
+
segments,
|
|
978
|
+
polygon,
|
|
979
|
+
ring,
|
|
980
|
+
x__, y__, v__, // first point
|
|
981
|
+
x_, y_, v_, // previous point
|
|
982
|
+
first,
|
|
983
|
+
clean;
|
|
984
|
+
|
|
985
|
+
var clipStream = {
|
|
986
|
+
point: point,
|
|
987
|
+
lineStart: lineStart,
|
|
988
|
+
lineEnd: lineEnd,
|
|
989
|
+
polygonStart: polygonStart,
|
|
990
|
+
polygonEnd: polygonEnd
|
|
991
|
+
};
|
|
992
|
+
|
|
993
|
+
function point(x, y) {
|
|
994
|
+
if (visible(x, y)) activeStream.point(x, y);
|
|
995
|
+
}
|
|
996
|
+
|
|
997
|
+
function polygonInside() {
|
|
998
|
+
var winding = 0;
|
|
999
|
+
|
|
1000
|
+
for (var i = 0, n = polygon.length; i < n; ++i) {
|
|
1001
|
+
for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {
|
|
1002
|
+
a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];
|
|
1003
|
+
if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }
|
|
1004
|
+
else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }
|
|
1005
|
+
}
|
|
1006
|
+
}
|
|
1007
|
+
|
|
1008
|
+
return winding;
|
|
1009
|
+
}
|
|
1010
|
+
|
|
1011
|
+
// Buffer geometry within a polygon and then clip it en masse.
|
|
1012
|
+
function polygonStart() {
|
|
1013
|
+
activeStream = bufferStream, segments = [], polygon = [], clean = true;
|
|
1014
|
+
}
|
|
1015
|
+
|
|
1016
|
+
function polygonEnd() {
|
|
1017
|
+
var startInside = polygonInside(),
|
|
1018
|
+
cleanInside = clean && startInside,
|
|
1019
|
+
visible = (segments = d3Array.merge(segments)).length;
|
|
1020
|
+
if (cleanInside || visible) {
|
|
1021
|
+
stream.polygonStart();
|
|
1022
|
+
if (cleanInside) {
|
|
1023
|
+
stream.lineStart();
|
|
1024
|
+
interpolate(null, null, 1, stream);
|
|
1025
|
+
stream.lineEnd();
|
|
1026
|
+
}
|
|
1027
|
+
if (visible) {
|
|
1028
|
+
clipPolygon(segments, compareIntersection, startInside, interpolate, stream);
|
|
1029
|
+
}
|
|
1030
|
+
stream.polygonEnd();
|
|
1031
|
+
}
|
|
1032
|
+
activeStream = stream, segments = polygon = ring = null;
|
|
1033
|
+
}
|
|
1034
|
+
|
|
1035
|
+
function lineStart() {
|
|
1036
|
+
clipStream.point = linePoint;
|
|
1037
|
+
if (polygon) polygon.push(ring = []);
|
|
1038
|
+
first = true;
|
|
1039
|
+
v_ = false;
|
|
1040
|
+
x_ = y_ = NaN;
|
|
1041
|
+
}
|
|
1042
|
+
|
|
1043
|
+
// TODO rather than special-case polygons, simply handle them separately.
|
|
1044
|
+
// Ideally, coincident intersection points should be jittered to avoid
|
|
1045
|
+
// clipping issues.
|
|
1046
|
+
function lineEnd() {
|
|
1047
|
+
if (segments) {
|
|
1048
|
+
linePoint(x__, y__);
|
|
1049
|
+
if (v__ && v_) bufferStream.rejoin();
|
|
1050
|
+
segments.push(bufferStream.result());
|
|
1051
|
+
}
|
|
1052
|
+
clipStream.point = point;
|
|
1053
|
+
if (v_) activeStream.lineEnd();
|
|
1054
|
+
}
|
|
1055
|
+
|
|
1056
|
+
function linePoint(x, y) {
|
|
1057
|
+
var v = visible(x, y);
|
|
1058
|
+
if (polygon) ring.push([x, y]);
|
|
1059
|
+
if (first) {
|
|
1060
|
+
x__ = x, y__ = y, v__ = v;
|
|
1061
|
+
first = false;
|
|
1062
|
+
if (v) {
|
|
1063
|
+
activeStream.lineStart();
|
|
1064
|
+
activeStream.point(x, y);
|
|
1065
|
+
}
|
|
1066
|
+
} else {
|
|
1067
|
+
if (v && v_) activeStream.point(x, y);
|
|
1068
|
+
else {
|
|
1069
|
+
var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],
|
|
1070
|
+
b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];
|
|
1071
|
+
if (clipLine(a, b, x0, y0, x1, y1)) {
|
|
1072
|
+
if (!v_) {
|
|
1073
|
+
activeStream.lineStart();
|
|
1074
|
+
activeStream.point(a[0], a[1]);
|
|
1075
|
+
}
|
|
1076
|
+
activeStream.point(b[0], b[1]);
|
|
1077
|
+
if (!v) activeStream.lineEnd();
|
|
1078
|
+
clean = false;
|
|
1079
|
+
} else if (v) {
|
|
1080
|
+
activeStream.lineStart();
|
|
1081
|
+
activeStream.point(x, y);
|
|
1082
|
+
clean = false;
|
|
1083
|
+
}
|
|
1084
|
+
}
|
|
1085
|
+
}
|
|
1086
|
+
x_ = x, y_ = y, v_ = v;
|
|
1087
|
+
}
|
|
1088
|
+
|
|
1089
|
+
return clipStream;
|
|
1090
|
+
};
|
|
1091
|
+
}
|
|
1092
|
+
|
|
1093
|
+
var extent = function() {
|
|
1094
|
+
var x0 = 0,
|
|
1095
|
+
y0 = 0,
|
|
1096
|
+
x1 = 960,
|
|
1097
|
+
y1 = 500,
|
|
1098
|
+
cache,
|
|
1099
|
+
cacheStream,
|
|
1100
|
+
clip;
|
|
1101
|
+
|
|
1102
|
+
return clip = {
|
|
1103
|
+
stream: function(stream) {
|
|
1104
|
+
return cache && cacheStream === stream ? cache : cache = clipExtent(x0, y0, x1, y1)(cacheStream = stream);
|
|
1105
|
+
},
|
|
1106
|
+
extent: function(_) {
|
|
1107
|
+
return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]];
|
|
1108
|
+
}
|
|
1109
|
+
};
|
|
1110
|
+
};
|
|
1111
|
+
|
|
1112
|
+
var sum = adder();
|
|
1113
|
+
|
|
1114
|
+
var polygonContains = function(polygon, point) {
|
|
1115
|
+
var lambda = point[0],
|
|
1116
|
+
phi = point[1],
|
|
1117
|
+
normal = [sin(lambda), -cos(lambda), 0],
|
|
1118
|
+
angle = 0,
|
|
1119
|
+
winding = 0;
|
|
1120
|
+
|
|
1121
|
+
sum.reset();
|
|
1122
|
+
|
|
1123
|
+
for (var i = 0, n = polygon.length; i < n; ++i) {
|
|
1124
|
+
if (!(m = (ring = polygon[i]).length)) continue;
|
|
1125
|
+
var ring,
|
|
1126
|
+
m,
|
|
1127
|
+
point0 = ring[m - 1],
|
|
1128
|
+
lambda0 = point0[0],
|
|
1129
|
+
phi0 = point0[1] / 2 + quarterPi,
|
|
1130
|
+
sinPhi0 = sin(phi0),
|
|
1131
|
+
cosPhi0 = cos(phi0);
|
|
1132
|
+
|
|
1133
|
+
for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {
|
|
1134
|
+
var point1 = ring[j],
|
|
1135
|
+
lambda1 = point1[0],
|
|
1136
|
+
phi1 = point1[1] / 2 + quarterPi,
|
|
1137
|
+
sinPhi1 = sin(phi1),
|
|
1138
|
+
cosPhi1 = cos(phi1),
|
|
1139
|
+
delta = lambda1 - lambda0,
|
|
1140
|
+
sign$$1 = delta >= 0 ? 1 : -1,
|
|
1141
|
+
absDelta = sign$$1 * delta,
|
|
1142
|
+
antimeridian = absDelta > pi,
|
|
1143
|
+
k = sinPhi0 * sinPhi1;
|
|
1144
|
+
|
|
1145
|
+
sum.add(atan2(k * sign$$1 * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));
|
|
1146
|
+
angle += antimeridian ? delta + sign$$1 * tau : delta;
|
|
1147
|
+
|
|
1148
|
+
// Are the longitudes either side of the point’s meridian (lambda),
|
|
1149
|
+
// and are the latitudes smaller than the parallel (phi)?
|
|
1150
|
+
if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {
|
|
1151
|
+
var arc = cartesianCross(cartesian(point0), cartesian(point1));
|
|
1152
|
+
cartesianNormalizeInPlace(arc);
|
|
1153
|
+
var intersection = cartesianCross(normal, arc);
|
|
1154
|
+
cartesianNormalizeInPlace(intersection);
|
|
1155
|
+
var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);
|
|
1156
|
+
if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {
|
|
1157
|
+
winding += antimeridian ^ delta >= 0 ? 1 : -1;
|
|
1158
|
+
}
|
|
1159
|
+
}
|
|
1160
|
+
}
|
|
1161
|
+
}
|
|
1162
|
+
|
|
1163
|
+
// First, determine whether the South pole is inside or outside:
|
|
1164
|
+
//
|
|
1165
|
+
// It is inside if:
|
|
1166
|
+
// * the polygon winds around it in a clockwise direction.
|
|
1167
|
+
// * the polygon does not (cumulatively) wind around it, but has a negative
|
|
1168
|
+
// (counter-clockwise) area.
|
|
1169
|
+
//
|
|
1170
|
+
// Second, count the (signed) number of times a segment crosses a lambda
|
|
1171
|
+
// from the point to the South pole. If it is zero, then the point is the
|
|
1172
|
+
// same side as the South pole.
|
|
1173
|
+
|
|
1174
|
+
return (angle < -epsilon || angle < epsilon && sum < -epsilon) ^ (winding & 1);
|
|
1175
|
+
};
|
|
1176
|
+
|
|
1177
|
+
var lengthSum = adder();
|
|
1178
|
+
var lambda0$2;
|
|
1179
|
+
var sinPhi0$1;
|
|
1180
|
+
var cosPhi0$1;
|
|
1181
|
+
|
|
1182
|
+
var lengthStream = {
|
|
1183
|
+
sphere: noop,
|
|
1184
|
+
point: noop,
|
|
1185
|
+
lineStart: lengthLineStart,
|
|
1186
|
+
lineEnd: noop,
|
|
1187
|
+
polygonStart: noop,
|
|
1188
|
+
polygonEnd: noop
|
|
1189
|
+
};
|
|
1190
|
+
|
|
1191
|
+
function lengthLineStart() {
|
|
1192
|
+
lengthStream.point = lengthPointFirst;
|
|
1193
|
+
lengthStream.lineEnd = lengthLineEnd;
|
|
1194
|
+
}
|
|
1195
|
+
|
|
1196
|
+
function lengthLineEnd() {
|
|
1197
|
+
lengthStream.point = lengthStream.lineEnd = noop;
|
|
1198
|
+
}
|
|
1199
|
+
|
|
1200
|
+
function lengthPointFirst(lambda, phi) {
|
|
1201
|
+
lambda *= radians, phi *= radians;
|
|
1202
|
+
lambda0$2 = lambda, sinPhi0$1 = sin(phi), cosPhi0$1 = cos(phi);
|
|
1203
|
+
lengthStream.point = lengthPoint;
|
|
1204
|
+
}
|
|
1205
|
+
|
|
1206
|
+
function lengthPoint(lambda, phi) {
|
|
1207
|
+
lambda *= radians, phi *= radians;
|
|
1208
|
+
var sinPhi = sin(phi),
|
|
1209
|
+
cosPhi = cos(phi),
|
|
1210
|
+
delta = abs(lambda - lambda0$2),
|
|
1211
|
+
cosDelta = cos(delta),
|
|
1212
|
+
sinDelta = sin(delta),
|
|
1213
|
+
x = cosPhi * sinDelta,
|
|
1214
|
+
y = cosPhi0$1 * sinPhi - sinPhi0$1 * cosPhi * cosDelta,
|
|
1215
|
+
z = sinPhi0$1 * sinPhi + cosPhi0$1 * cosPhi * cosDelta;
|
|
1216
|
+
lengthSum.add(atan2(sqrt(x * x + y * y), z));
|
|
1217
|
+
lambda0$2 = lambda, sinPhi0$1 = sinPhi, cosPhi0$1 = cosPhi;
|
|
1218
|
+
}
|
|
1219
|
+
|
|
1220
|
+
var length = function(object) {
|
|
1221
|
+
lengthSum.reset();
|
|
1222
|
+
geoStream(object, lengthStream);
|
|
1223
|
+
return +lengthSum;
|
|
1224
|
+
};
|
|
1225
|
+
|
|
1226
|
+
var coordinates = [null, null];
|
|
1227
|
+
var object = {type: "LineString", coordinates: coordinates};
|
|
1228
|
+
|
|
1229
|
+
var distance = function(a, b) {
|
|
1230
|
+
coordinates[0] = a;
|
|
1231
|
+
coordinates[1] = b;
|
|
1232
|
+
return length(object);
|
|
1233
|
+
};
|
|
1234
|
+
|
|
1235
|
+
var containsObjectType = {
|
|
1236
|
+
Feature: function(object, point) {
|
|
1237
|
+
return containsGeometry(object.geometry, point);
|
|
1238
|
+
},
|
|
1239
|
+
FeatureCollection: function(object, point) {
|
|
1240
|
+
var features = object.features, i = -1, n = features.length;
|
|
1241
|
+
while (++i < n) if (containsGeometry(features[i].geometry, point)) return true;
|
|
1242
|
+
return false;
|
|
1243
|
+
}
|
|
1244
|
+
};
|
|
1245
|
+
|
|
1246
|
+
var containsGeometryType = {
|
|
1247
|
+
Sphere: function() {
|
|
1248
|
+
return true;
|
|
1249
|
+
},
|
|
1250
|
+
Point: function(object, point) {
|
|
1251
|
+
return containsPoint(object.coordinates, point);
|
|
1252
|
+
},
|
|
1253
|
+
MultiPoint: function(object, point) {
|
|
1254
|
+
var coordinates = object.coordinates, i = -1, n = coordinates.length;
|
|
1255
|
+
while (++i < n) if (containsPoint(coordinates[i], point)) return true;
|
|
1256
|
+
return false;
|
|
1257
|
+
},
|
|
1258
|
+
LineString: function(object, point) {
|
|
1259
|
+
return containsLine(object.coordinates, point);
|
|
1260
|
+
},
|
|
1261
|
+
MultiLineString: function(object, point) {
|
|
1262
|
+
var coordinates = object.coordinates, i = -1, n = coordinates.length;
|
|
1263
|
+
while (++i < n) if (containsLine(coordinates[i], point)) return true;
|
|
1264
|
+
return false;
|
|
1265
|
+
},
|
|
1266
|
+
Polygon: function(object, point) {
|
|
1267
|
+
return containsPolygon(object.coordinates, point);
|
|
1268
|
+
},
|
|
1269
|
+
MultiPolygon: function(object, point) {
|
|
1270
|
+
var coordinates = object.coordinates, i = -1, n = coordinates.length;
|
|
1271
|
+
while (++i < n) if (containsPolygon(coordinates[i], point)) return true;
|
|
1272
|
+
return false;
|
|
1273
|
+
},
|
|
1274
|
+
GeometryCollection: function(object, point) {
|
|
1275
|
+
var geometries = object.geometries, i = -1, n = geometries.length;
|
|
1276
|
+
while (++i < n) if (containsGeometry(geometries[i], point)) return true;
|
|
1277
|
+
return false;
|
|
1278
|
+
}
|
|
1279
|
+
};
|
|
1280
|
+
|
|
1281
|
+
function containsGeometry(geometry, point) {
|
|
1282
|
+
return geometry && containsGeometryType.hasOwnProperty(geometry.type)
|
|
1283
|
+
? containsGeometryType[geometry.type](geometry, point)
|
|
1284
|
+
: false;
|
|
1285
|
+
}
|
|
1286
|
+
|
|
1287
|
+
function containsPoint(coordinates, point) {
|
|
1288
|
+
return distance(coordinates, point) === 0;
|
|
1289
|
+
}
|
|
1290
|
+
|
|
1291
|
+
function containsLine(coordinates, point) {
|
|
1292
|
+
var ab = distance(coordinates[0], coordinates[1]),
|
|
1293
|
+
ao = distance(coordinates[0], point),
|
|
1294
|
+
ob = distance(point, coordinates[1]);
|
|
1295
|
+
return ao + ob <= ab + epsilon;
|
|
1296
|
+
}
|
|
1297
|
+
|
|
1298
|
+
function containsPolygon(coordinates, point) {
|
|
1299
|
+
return !!polygonContains(coordinates.map(ringRadians), pointRadians(point));
|
|
1300
|
+
}
|
|
1301
|
+
|
|
1302
|
+
function ringRadians(ring) {
|
|
1303
|
+
return ring = ring.map(pointRadians), ring.pop(), ring;
|
|
1304
|
+
}
|
|
1305
|
+
|
|
1306
|
+
function pointRadians(point) {
|
|
1307
|
+
return [point[0] * radians, point[1] * radians];
|
|
1308
|
+
}
|
|
1309
|
+
|
|
1310
|
+
var contains = function(object, point) {
|
|
1311
|
+
return (object && containsObjectType.hasOwnProperty(object.type)
|
|
1312
|
+
? containsObjectType[object.type]
|
|
1313
|
+
: containsGeometry)(object, point);
|
|
1314
|
+
};
|
|
1315
|
+
|
|
1316
|
+
function graticuleX(y0, y1, dy) {
|
|
1317
|
+
var y = d3Array.range(y0, y1 - epsilon, dy).concat(y1);
|
|
1318
|
+
return function(x) { return y.map(function(y) { return [x, y]; }); };
|
|
1319
|
+
}
|
|
1320
|
+
|
|
1321
|
+
function graticuleY(x0, x1, dx) {
|
|
1322
|
+
var x = d3Array.range(x0, x1 - epsilon, dx).concat(x1);
|
|
1323
|
+
return function(y) { return x.map(function(x) { return [x, y]; }); };
|
|
1324
|
+
}
|
|
1325
|
+
|
|
1326
|
+
function graticule() {
|
|
1327
|
+
var x1, x0, X1, X0,
|
|
1328
|
+
y1, y0, Y1, Y0,
|
|
1329
|
+
dx = 10, dy = dx, DX = 90, DY = 360,
|
|
1330
|
+
x, y, X, Y,
|
|
1331
|
+
precision = 2.5;
|
|
1332
|
+
|
|
1333
|
+
function graticule() {
|
|
1334
|
+
return {type: "MultiLineString", coordinates: lines()};
|
|
1335
|
+
}
|
|
1336
|
+
|
|
1337
|
+
function lines() {
|
|
1338
|
+
return d3Array.range(ceil(X0 / DX) * DX, X1, DX).map(X)
|
|
1339
|
+
.concat(d3Array.range(ceil(Y0 / DY) * DY, Y1, DY).map(Y))
|
|
1340
|
+
.concat(d3Array.range(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) > epsilon; }).map(x))
|
|
1341
|
+
.concat(d3Array.range(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) > epsilon; }).map(y));
|
|
1342
|
+
}
|
|
1343
|
+
|
|
1344
|
+
graticule.lines = function() {
|
|
1345
|
+
return lines().map(function(coordinates) { return {type: "LineString", coordinates: coordinates}; });
|
|
1346
|
+
};
|
|
1347
|
+
|
|
1348
|
+
graticule.outline = function() {
|
|
1349
|
+
return {
|
|
1350
|
+
type: "Polygon",
|
|
1351
|
+
coordinates: [
|
|
1352
|
+
X(X0).concat(
|
|
1353
|
+
Y(Y1).slice(1),
|
|
1354
|
+
X(X1).reverse().slice(1),
|
|
1355
|
+
Y(Y0).reverse().slice(1))
|
|
1356
|
+
]
|
|
1357
|
+
};
|
|
1358
|
+
};
|
|
1359
|
+
|
|
1360
|
+
graticule.extent = function(_) {
|
|
1361
|
+
if (!arguments.length) return graticule.extentMinor();
|
|
1362
|
+
return graticule.extentMajor(_).extentMinor(_);
|
|
1363
|
+
};
|
|
1364
|
+
|
|
1365
|
+
graticule.extentMajor = function(_) {
|
|
1366
|
+
if (!arguments.length) return [[X0, Y0], [X1, Y1]];
|
|
1367
|
+
X0 = +_[0][0], X1 = +_[1][0];
|
|
1368
|
+
Y0 = +_[0][1], Y1 = +_[1][1];
|
|
1369
|
+
if (X0 > X1) _ = X0, X0 = X1, X1 = _;
|
|
1370
|
+
if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;
|
|
1371
|
+
return graticule.precision(precision);
|
|
1372
|
+
};
|
|
1373
|
+
|
|
1374
|
+
graticule.extentMinor = function(_) {
|
|
1375
|
+
if (!arguments.length) return [[x0, y0], [x1, y1]];
|
|
1376
|
+
x0 = +_[0][0], x1 = +_[1][0];
|
|
1377
|
+
y0 = +_[0][1], y1 = +_[1][1];
|
|
1378
|
+
if (x0 > x1) _ = x0, x0 = x1, x1 = _;
|
|
1379
|
+
if (y0 > y1) _ = y0, y0 = y1, y1 = _;
|
|
1380
|
+
return graticule.precision(precision);
|
|
1381
|
+
};
|
|
1382
|
+
|
|
1383
|
+
graticule.step = function(_) {
|
|
1384
|
+
if (!arguments.length) return graticule.stepMinor();
|
|
1385
|
+
return graticule.stepMajor(_).stepMinor(_);
|
|
1386
|
+
};
|
|
1387
|
+
|
|
1388
|
+
graticule.stepMajor = function(_) {
|
|
1389
|
+
if (!arguments.length) return [DX, DY];
|
|
1390
|
+
DX = +_[0], DY = +_[1];
|
|
1391
|
+
return graticule;
|
|
1392
|
+
};
|
|
1393
|
+
|
|
1394
|
+
graticule.stepMinor = function(_) {
|
|
1395
|
+
if (!arguments.length) return [dx, dy];
|
|
1396
|
+
dx = +_[0], dy = +_[1];
|
|
1397
|
+
return graticule;
|
|
1398
|
+
};
|
|
1399
|
+
|
|
1400
|
+
graticule.precision = function(_) {
|
|
1401
|
+
if (!arguments.length) return precision;
|
|
1402
|
+
precision = +_;
|
|
1403
|
+
x = graticuleX(y0, y1, 90);
|
|
1404
|
+
y = graticuleY(x0, x1, precision);
|
|
1405
|
+
X = graticuleX(Y0, Y1, 90);
|
|
1406
|
+
Y = graticuleY(X0, X1, precision);
|
|
1407
|
+
return graticule;
|
|
1408
|
+
};
|
|
1409
|
+
|
|
1410
|
+
return graticule
|
|
1411
|
+
.extentMajor([[-180, -90 + epsilon], [180, 90 - epsilon]])
|
|
1412
|
+
.extentMinor([[-180, -80 - epsilon], [180, 80 + epsilon]]);
|
|
1413
|
+
}
|
|
1414
|
+
|
|
1415
|
+
function graticule10() {
|
|
1416
|
+
return graticule()();
|
|
1417
|
+
}
|
|
1418
|
+
|
|
1419
|
+
var interpolate = function(a, b) {
|
|
1420
|
+
var x0 = a[0] * radians,
|
|
1421
|
+
y0 = a[1] * radians,
|
|
1422
|
+
x1 = b[0] * radians,
|
|
1423
|
+
y1 = b[1] * radians,
|
|
1424
|
+
cy0 = cos(y0),
|
|
1425
|
+
sy0 = sin(y0),
|
|
1426
|
+
cy1 = cos(y1),
|
|
1427
|
+
sy1 = sin(y1),
|
|
1428
|
+
kx0 = cy0 * cos(x0),
|
|
1429
|
+
ky0 = cy0 * sin(x0),
|
|
1430
|
+
kx1 = cy1 * cos(x1),
|
|
1431
|
+
ky1 = cy1 * sin(x1),
|
|
1432
|
+
d = 2 * asin(sqrt(haversin(y1 - y0) + cy0 * cy1 * haversin(x1 - x0))),
|
|
1433
|
+
k = sin(d);
|
|
1434
|
+
|
|
1435
|
+
var interpolate = d ? function(t) {
|
|
1436
|
+
var B = sin(t *= d) / k,
|
|
1437
|
+
A = sin(d - t) / k,
|
|
1438
|
+
x = A * kx0 + B * kx1,
|
|
1439
|
+
y = A * ky0 + B * ky1,
|
|
1440
|
+
z = A * sy0 + B * sy1;
|
|
1441
|
+
return [
|
|
1442
|
+
atan2(y, x) * degrees,
|
|
1443
|
+
atan2(z, sqrt(x * x + y * y)) * degrees
|
|
1444
|
+
];
|
|
1445
|
+
} : function() {
|
|
1446
|
+
return [x0 * degrees, y0 * degrees];
|
|
1447
|
+
};
|
|
1448
|
+
|
|
1449
|
+
interpolate.distance = d;
|
|
1450
|
+
|
|
1451
|
+
return interpolate;
|
|
1452
|
+
};
|
|
1453
|
+
|
|
1454
|
+
var identity = function(x) {
|
|
1455
|
+
return x;
|
|
1456
|
+
};
|
|
1457
|
+
|
|
1458
|
+
var areaSum$1 = adder();
|
|
1459
|
+
var areaRingSum$1 = adder();
|
|
1460
|
+
var x00;
|
|
1461
|
+
var y00;
|
|
1462
|
+
var x0$1;
|
|
1463
|
+
var y0$1;
|
|
1464
|
+
|
|
1465
|
+
var areaStream$1 = {
|
|
1466
|
+
point: noop,
|
|
1467
|
+
lineStart: noop,
|
|
1468
|
+
lineEnd: noop,
|
|
1469
|
+
polygonStart: function() {
|
|
1470
|
+
areaStream$1.lineStart = areaRingStart$1;
|
|
1471
|
+
areaStream$1.lineEnd = areaRingEnd$1;
|
|
1472
|
+
},
|
|
1473
|
+
polygonEnd: function() {
|
|
1474
|
+
areaStream$1.lineStart = areaStream$1.lineEnd = areaStream$1.point = noop;
|
|
1475
|
+
areaSum$1.add(abs(areaRingSum$1));
|
|
1476
|
+
areaRingSum$1.reset();
|
|
1477
|
+
},
|
|
1478
|
+
result: function() {
|
|
1479
|
+
var area = areaSum$1 / 2;
|
|
1480
|
+
areaSum$1.reset();
|
|
1481
|
+
return area;
|
|
1482
|
+
}
|
|
1483
|
+
};
|
|
1484
|
+
|
|
1485
|
+
function areaRingStart$1() {
|
|
1486
|
+
areaStream$1.point = areaPointFirst$1;
|
|
1487
|
+
}
|
|
1488
|
+
|
|
1489
|
+
function areaPointFirst$1(x, y) {
|
|
1490
|
+
areaStream$1.point = areaPoint$1;
|
|
1491
|
+
x00 = x0$1 = x, y00 = y0$1 = y;
|
|
1492
|
+
}
|
|
1493
|
+
|
|
1494
|
+
function areaPoint$1(x, y) {
|
|
1495
|
+
areaRingSum$1.add(y0$1 * x - x0$1 * y);
|
|
1496
|
+
x0$1 = x, y0$1 = y;
|
|
1497
|
+
}
|
|
1498
|
+
|
|
1499
|
+
function areaRingEnd$1() {
|
|
1500
|
+
areaPoint$1(x00, y00);
|
|
1501
|
+
}
|
|
1502
|
+
|
|
1503
|
+
var x0$2 = Infinity;
|
|
1504
|
+
var y0$2 = x0$2;
|
|
1505
|
+
var x1 = -x0$2;
|
|
1506
|
+
var y1 = x1;
|
|
1507
|
+
|
|
1508
|
+
var boundsStream$1 = {
|
|
1509
|
+
point: boundsPoint$1,
|
|
1510
|
+
lineStart: noop,
|
|
1511
|
+
lineEnd: noop,
|
|
1512
|
+
polygonStart: noop,
|
|
1513
|
+
polygonEnd: noop,
|
|
1514
|
+
result: function() {
|
|
1515
|
+
var bounds = [[x0$2, y0$2], [x1, y1]];
|
|
1516
|
+
x1 = y1 = -(y0$2 = x0$2 = Infinity);
|
|
1517
|
+
return bounds;
|
|
1518
|
+
}
|
|
1519
|
+
};
|
|
1520
|
+
|
|
1521
|
+
function boundsPoint$1(x, y) {
|
|
1522
|
+
if (x < x0$2) x0$2 = x;
|
|
1523
|
+
if (x > x1) x1 = x;
|
|
1524
|
+
if (y < y0$2) y0$2 = y;
|
|
1525
|
+
if (y > y1) y1 = y;
|
|
1526
|
+
}
|
|
1527
|
+
|
|
1528
|
+
// TODO Enforce positive area for exterior, negative area for interior?
|
|
1529
|
+
|
|
1530
|
+
var X0$1 = 0;
|
|
1531
|
+
var Y0$1 = 0;
|
|
1532
|
+
var Z0$1 = 0;
|
|
1533
|
+
var X1$1 = 0;
|
|
1534
|
+
var Y1$1 = 0;
|
|
1535
|
+
var Z1$1 = 0;
|
|
1536
|
+
var X2$1 = 0;
|
|
1537
|
+
var Y2$1 = 0;
|
|
1538
|
+
var Z2$1 = 0;
|
|
1539
|
+
var x00$1;
|
|
1540
|
+
var y00$1;
|
|
1541
|
+
var x0$3;
|
|
1542
|
+
var y0$3;
|
|
1543
|
+
|
|
1544
|
+
var centroidStream$1 = {
|
|
1545
|
+
point: centroidPoint$1,
|
|
1546
|
+
lineStart: centroidLineStart$1,
|
|
1547
|
+
lineEnd: centroidLineEnd$1,
|
|
1548
|
+
polygonStart: function() {
|
|
1549
|
+
centroidStream$1.lineStart = centroidRingStart$1;
|
|
1550
|
+
centroidStream$1.lineEnd = centroidRingEnd$1;
|
|
1551
|
+
},
|
|
1552
|
+
polygonEnd: function() {
|
|
1553
|
+
centroidStream$1.point = centroidPoint$1;
|
|
1554
|
+
centroidStream$1.lineStart = centroidLineStart$1;
|
|
1555
|
+
centroidStream$1.lineEnd = centroidLineEnd$1;
|
|
1556
|
+
},
|
|
1557
|
+
result: function() {
|
|
1558
|
+
var centroid = Z2$1 ? [X2$1 / Z2$1, Y2$1 / Z2$1]
|
|
1559
|
+
: Z1$1 ? [X1$1 / Z1$1, Y1$1 / Z1$1]
|
|
1560
|
+
: Z0$1 ? [X0$1 / Z0$1, Y0$1 / Z0$1]
|
|
1561
|
+
: [NaN, NaN];
|
|
1562
|
+
X0$1 = Y0$1 = Z0$1 =
|
|
1563
|
+
X1$1 = Y1$1 = Z1$1 =
|
|
1564
|
+
X2$1 = Y2$1 = Z2$1 = 0;
|
|
1565
|
+
return centroid;
|
|
1566
|
+
}
|
|
1567
|
+
};
|
|
1568
|
+
|
|
1569
|
+
function centroidPoint$1(x, y) {
|
|
1570
|
+
X0$1 += x;
|
|
1571
|
+
Y0$1 += y;
|
|
1572
|
+
++Z0$1;
|
|
1573
|
+
}
|
|
1574
|
+
|
|
1575
|
+
function centroidLineStart$1() {
|
|
1576
|
+
centroidStream$1.point = centroidPointFirstLine;
|
|
1577
|
+
}
|
|
1578
|
+
|
|
1579
|
+
function centroidPointFirstLine(x, y) {
|
|
1580
|
+
centroidStream$1.point = centroidPointLine;
|
|
1581
|
+
centroidPoint$1(x0$3 = x, y0$3 = y);
|
|
1582
|
+
}
|
|
1583
|
+
|
|
1584
|
+
function centroidPointLine(x, y) {
|
|
1585
|
+
var dx = x - x0$3, dy = y - y0$3, z = sqrt(dx * dx + dy * dy);
|
|
1586
|
+
X1$1 += z * (x0$3 + x) / 2;
|
|
1587
|
+
Y1$1 += z * (y0$3 + y) / 2;
|
|
1588
|
+
Z1$1 += z;
|
|
1589
|
+
centroidPoint$1(x0$3 = x, y0$3 = y);
|
|
1590
|
+
}
|
|
1591
|
+
|
|
1592
|
+
function centroidLineEnd$1() {
|
|
1593
|
+
centroidStream$1.point = centroidPoint$1;
|
|
1594
|
+
}
|
|
1595
|
+
|
|
1596
|
+
function centroidRingStart$1() {
|
|
1597
|
+
centroidStream$1.point = centroidPointFirstRing;
|
|
1598
|
+
}
|
|
1599
|
+
|
|
1600
|
+
function centroidRingEnd$1() {
|
|
1601
|
+
centroidPointRing(x00$1, y00$1);
|
|
1602
|
+
}
|
|
1603
|
+
|
|
1604
|
+
function centroidPointFirstRing(x, y) {
|
|
1605
|
+
centroidStream$1.point = centroidPointRing;
|
|
1606
|
+
centroidPoint$1(x00$1 = x0$3 = x, y00$1 = y0$3 = y);
|
|
1607
|
+
}
|
|
1608
|
+
|
|
1609
|
+
function centroidPointRing(x, y) {
|
|
1610
|
+
var dx = x - x0$3,
|
|
1611
|
+
dy = y - y0$3,
|
|
1612
|
+
z = sqrt(dx * dx + dy * dy);
|
|
1613
|
+
|
|
1614
|
+
X1$1 += z * (x0$3 + x) / 2;
|
|
1615
|
+
Y1$1 += z * (y0$3 + y) / 2;
|
|
1616
|
+
Z1$1 += z;
|
|
1617
|
+
|
|
1618
|
+
z = y0$3 * x - x0$3 * y;
|
|
1619
|
+
X2$1 += z * (x0$3 + x);
|
|
1620
|
+
Y2$1 += z * (y0$3 + y);
|
|
1621
|
+
Z2$1 += z * 3;
|
|
1622
|
+
centroidPoint$1(x0$3 = x, y0$3 = y);
|
|
1623
|
+
}
|
|
1624
|
+
|
|
1625
|
+
function PathContext(context) {
|
|
1626
|
+
this._context = context;
|
|
1627
|
+
}
|
|
1628
|
+
|
|
1629
|
+
PathContext.prototype = {
|
|
1630
|
+
_radius: 4.5,
|
|
1631
|
+
pointRadius: function(_) {
|
|
1632
|
+
return this._radius = _, this;
|
|
1633
|
+
},
|
|
1634
|
+
polygonStart: function() {
|
|
1635
|
+
this._line = 0;
|
|
1636
|
+
},
|
|
1637
|
+
polygonEnd: function() {
|
|
1638
|
+
this._line = NaN;
|
|
1639
|
+
},
|
|
1640
|
+
lineStart: function() {
|
|
1641
|
+
this._point = 0;
|
|
1642
|
+
},
|
|
1643
|
+
lineEnd: function() {
|
|
1644
|
+
if (this._line === 0) this._context.closePath();
|
|
1645
|
+
this._point = NaN;
|
|
1646
|
+
},
|
|
1647
|
+
point: function(x, y) {
|
|
1648
|
+
switch (this._point) {
|
|
1649
|
+
case 0: {
|
|
1650
|
+
this._context.moveTo(x, y);
|
|
1651
|
+
this._point = 1;
|
|
1652
|
+
break;
|
|
1653
|
+
}
|
|
1654
|
+
case 1: {
|
|
1655
|
+
this._context.lineTo(x, y);
|
|
1656
|
+
break;
|
|
1657
|
+
}
|
|
1658
|
+
default: {
|
|
1659
|
+
this._context.moveTo(x + this._radius, y);
|
|
1660
|
+
this._context.arc(x, y, this._radius, 0, tau);
|
|
1661
|
+
break;
|
|
1662
|
+
}
|
|
1663
|
+
}
|
|
1664
|
+
},
|
|
1665
|
+
result: noop
|
|
1666
|
+
};
|
|
1667
|
+
|
|
1668
|
+
var lengthSum$1 = adder();
|
|
1669
|
+
var lengthRing;
|
|
1670
|
+
var x00$2;
|
|
1671
|
+
var y00$2;
|
|
1672
|
+
var x0$4;
|
|
1673
|
+
var y0$4;
|
|
1674
|
+
|
|
1675
|
+
var lengthStream$1 = {
|
|
1676
|
+
point: noop,
|
|
1677
|
+
lineStart: function() {
|
|
1678
|
+
lengthStream$1.point = lengthPointFirst$1;
|
|
1679
|
+
},
|
|
1680
|
+
lineEnd: function() {
|
|
1681
|
+
if (lengthRing) lengthPoint$1(x00$2, y00$2);
|
|
1682
|
+
lengthStream$1.point = noop;
|
|
1683
|
+
},
|
|
1684
|
+
polygonStart: function() {
|
|
1685
|
+
lengthRing = true;
|
|
1686
|
+
},
|
|
1687
|
+
polygonEnd: function() {
|
|
1688
|
+
lengthRing = null;
|
|
1689
|
+
},
|
|
1690
|
+
result: function() {
|
|
1691
|
+
var length = +lengthSum$1;
|
|
1692
|
+
lengthSum$1.reset();
|
|
1693
|
+
return length;
|
|
1694
|
+
}
|
|
1695
|
+
};
|
|
1696
|
+
|
|
1697
|
+
function lengthPointFirst$1(x, y) {
|
|
1698
|
+
lengthStream$1.point = lengthPoint$1;
|
|
1699
|
+
x00$2 = x0$4 = x, y00$2 = y0$4 = y;
|
|
1700
|
+
}
|
|
1701
|
+
|
|
1702
|
+
function lengthPoint$1(x, y) {
|
|
1703
|
+
x0$4 -= x, y0$4 -= y;
|
|
1704
|
+
lengthSum$1.add(sqrt(x0$4 * x0$4 + y0$4 * y0$4));
|
|
1705
|
+
x0$4 = x, y0$4 = y;
|
|
1706
|
+
}
|
|
1707
|
+
|
|
1708
|
+
function PathString() {
|
|
1709
|
+
this._string = [];
|
|
1710
|
+
}
|
|
1711
|
+
|
|
1712
|
+
PathString.prototype = {
|
|
1713
|
+
_radius: 4.5,
|
|
1714
|
+
_circle: circle$1(4.5),
|
|
1715
|
+
pointRadius: function(_) {
|
|
1716
|
+
if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;
|
|
1717
|
+
return this;
|
|
1718
|
+
},
|
|
1719
|
+
polygonStart: function() {
|
|
1720
|
+
this._line = 0;
|
|
1721
|
+
},
|
|
1722
|
+
polygonEnd: function() {
|
|
1723
|
+
this._line = NaN;
|
|
1724
|
+
},
|
|
1725
|
+
lineStart: function() {
|
|
1726
|
+
this._point = 0;
|
|
1727
|
+
},
|
|
1728
|
+
lineEnd: function() {
|
|
1729
|
+
if (this._line === 0) this._string.push("Z");
|
|
1730
|
+
this._point = NaN;
|
|
1731
|
+
},
|
|
1732
|
+
point: function(x, y) {
|
|
1733
|
+
switch (this._point) {
|
|
1734
|
+
case 0: {
|
|
1735
|
+
this._string.push("M", x, ",", y);
|
|
1736
|
+
this._point = 1;
|
|
1737
|
+
break;
|
|
1738
|
+
}
|
|
1739
|
+
case 1: {
|
|
1740
|
+
this._string.push("L", x, ",", y);
|
|
1741
|
+
break;
|
|
1742
|
+
}
|
|
1743
|
+
default: {
|
|
1744
|
+
if (this._circle == null) this._circle = circle$1(this._radius);
|
|
1745
|
+
this._string.push("M", x, ",", y, this._circle);
|
|
1746
|
+
break;
|
|
1747
|
+
}
|
|
1748
|
+
}
|
|
1749
|
+
},
|
|
1750
|
+
result: function() {
|
|
1751
|
+
if (this._string.length) {
|
|
1752
|
+
var result = this._string.join("");
|
|
1753
|
+
this._string = [];
|
|
1754
|
+
return result;
|
|
1755
|
+
} else {
|
|
1756
|
+
return null;
|
|
1757
|
+
}
|
|
1758
|
+
}
|
|
1759
|
+
};
|
|
1760
|
+
|
|
1761
|
+
function circle$1(radius) {
|
|
1762
|
+
return "m0," + radius
|
|
1763
|
+
+ "a" + radius + "," + radius + " 0 1,1 0," + -2 * radius
|
|
1764
|
+
+ "a" + radius + "," + radius + " 0 1,1 0," + 2 * radius
|
|
1765
|
+
+ "z";
|
|
1766
|
+
}
|
|
1767
|
+
|
|
1768
|
+
var index = function(projection, context) {
|
|
1769
|
+
var pointRadius = 4.5,
|
|
1770
|
+
projectionStream,
|
|
1771
|
+
contextStream;
|
|
1772
|
+
|
|
1773
|
+
function path(object) {
|
|
1774
|
+
if (object) {
|
|
1775
|
+
if (typeof pointRadius === "function") contextStream.pointRadius(+pointRadius.apply(this, arguments));
|
|
1776
|
+
geoStream(object, projectionStream(contextStream));
|
|
1777
|
+
}
|
|
1778
|
+
return contextStream.result();
|
|
1779
|
+
}
|
|
1780
|
+
|
|
1781
|
+
path.area = function(object) {
|
|
1782
|
+
geoStream(object, projectionStream(areaStream$1));
|
|
1783
|
+
return areaStream$1.result();
|
|
1784
|
+
};
|
|
1785
|
+
|
|
1786
|
+
path.measure = function(object) {
|
|
1787
|
+
geoStream(object, projectionStream(lengthStream$1));
|
|
1788
|
+
return lengthStream$1.result();
|
|
1789
|
+
};
|
|
1790
|
+
|
|
1791
|
+
path.bounds = function(object) {
|
|
1792
|
+
geoStream(object, projectionStream(boundsStream$1));
|
|
1793
|
+
return boundsStream$1.result();
|
|
1794
|
+
};
|
|
1795
|
+
|
|
1796
|
+
path.centroid = function(object) {
|
|
1797
|
+
geoStream(object, projectionStream(centroidStream$1));
|
|
1798
|
+
return centroidStream$1.result();
|
|
1799
|
+
};
|
|
1800
|
+
|
|
1801
|
+
path.projection = function(_) {
|
|
1802
|
+
return arguments.length ? (projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream, path) : projection;
|
|
1803
|
+
};
|
|
1804
|
+
|
|
1805
|
+
path.context = function(_) {
|
|
1806
|
+
if (!arguments.length) return context;
|
|
1807
|
+
contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _);
|
|
1808
|
+
if (typeof pointRadius !== "function") contextStream.pointRadius(pointRadius);
|
|
1809
|
+
return path;
|
|
1810
|
+
};
|
|
1811
|
+
|
|
1812
|
+
path.pointRadius = function(_) {
|
|
1813
|
+
if (!arguments.length) return pointRadius;
|
|
1814
|
+
pointRadius = typeof _ === "function" ? _ : (contextStream.pointRadius(+_), +_);
|
|
1815
|
+
return path;
|
|
1816
|
+
};
|
|
1817
|
+
|
|
1818
|
+
return path.projection(projection).context(context);
|
|
1819
|
+
};
|
|
1820
|
+
|
|
1821
|
+
var clip = function(pointVisible, clipLine, interpolate, start) {
|
|
1822
|
+
return function(rotate, sink) {
|
|
1823
|
+
var line = clipLine(sink),
|
|
1824
|
+
rotatedStart = rotate.invert(start[0], start[1]),
|
|
1825
|
+
ringBuffer = clipBuffer(),
|
|
1826
|
+
ringSink = clipLine(ringBuffer),
|
|
1827
|
+
polygonStarted = false,
|
|
1828
|
+
polygon,
|
|
1829
|
+
segments,
|
|
1830
|
+
ring;
|
|
1831
|
+
|
|
1832
|
+
var clip = {
|
|
1833
|
+
point: point,
|
|
1834
|
+
lineStart: lineStart,
|
|
1835
|
+
lineEnd: lineEnd,
|
|
1836
|
+
polygonStart: function() {
|
|
1837
|
+
clip.point = pointRing;
|
|
1838
|
+
clip.lineStart = ringStart;
|
|
1839
|
+
clip.lineEnd = ringEnd;
|
|
1840
|
+
segments = [];
|
|
1841
|
+
polygon = [];
|
|
1842
|
+
},
|
|
1843
|
+
polygonEnd: function() {
|
|
1844
|
+
clip.point = point;
|
|
1845
|
+
clip.lineStart = lineStart;
|
|
1846
|
+
clip.lineEnd = lineEnd;
|
|
1847
|
+
segments = d3Array.merge(segments);
|
|
1848
|
+
var startInside = polygonContains(polygon, rotatedStart);
|
|
1849
|
+
if (segments.length) {
|
|
1850
|
+
if (!polygonStarted) sink.polygonStart(), polygonStarted = true;
|
|
1851
|
+
clipPolygon(segments, compareIntersection, startInside, interpolate, sink);
|
|
1852
|
+
} else if (startInside) {
|
|
1853
|
+
if (!polygonStarted) sink.polygonStart(), polygonStarted = true;
|
|
1854
|
+
sink.lineStart();
|
|
1855
|
+
interpolate(null, null, 1, sink);
|
|
1856
|
+
sink.lineEnd();
|
|
1857
|
+
}
|
|
1858
|
+
if (polygonStarted) sink.polygonEnd(), polygonStarted = false;
|
|
1859
|
+
segments = polygon = null;
|
|
1860
|
+
},
|
|
1861
|
+
sphere: function() {
|
|
1862
|
+
sink.polygonStart();
|
|
1863
|
+
sink.lineStart();
|
|
1864
|
+
interpolate(null, null, 1, sink);
|
|
1865
|
+
sink.lineEnd();
|
|
1866
|
+
sink.polygonEnd();
|
|
1867
|
+
}
|
|
1868
|
+
};
|
|
1869
|
+
|
|
1870
|
+
function point(lambda, phi) {
|
|
1871
|
+
var point = rotate(lambda, phi);
|
|
1872
|
+
if (pointVisible(lambda = point[0], phi = point[1])) sink.point(lambda, phi);
|
|
1873
|
+
}
|
|
1874
|
+
|
|
1875
|
+
function pointLine(lambda, phi) {
|
|
1876
|
+
var point = rotate(lambda, phi);
|
|
1877
|
+
line.point(point[0], point[1]);
|
|
1878
|
+
}
|
|
1879
|
+
|
|
1880
|
+
function lineStart() {
|
|
1881
|
+
clip.point = pointLine;
|
|
1882
|
+
line.lineStart();
|
|
1883
|
+
}
|
|
1884
|
+
|
|
1885
|
+
function lineEnd() {
|
|
1886
|
+
clip.point = point;
|
|
1887
|
+
line.lineEnd();
|
|
1888
|
+
}
|
|
1889
|
+
|
|
1890
|
+
function pointRing(lambda, phi) {
|
|
1891
|
+
ring.push([lambda, phi]);
|
|
1892
|
+
var point = rotate(lambda, phi);
|
|
1893
|
+
ringSink.point(point[0], point[1]);
|
|
1894
|
+
}
|
|
1895
|
+
|
|
1896
|
+
function ringStart() {
|
|
1897
|
+
ringSink.lineStart();
|
|
1898
|
+
ring = [];
|
|
1899
|
+
}
|
|
1900
|
+
|
|
1901
|
+
function ringEnd() {
|
|
1902
|
+
pointRing(ring[0][0], ring[0][1]);
|
|
1903
|
+
ringSink.lineEnd();
|
|
1904
|
+
|
|
1905
|
+
var clean = ringSink.clean(),
|
|
1906
|
+
ringSegments = ringBuffer.result(),
|
|
1907
|
+
i, n = ringSegments.length, m,
|
|
1908
|
+
segment,
|
|
1909
|
+
point;
|
|
1910
|
+
|
|
1911
|
+
ring.pop();
|
|
1912
|
+
polygon.push(ring);
|
|
1913
|
+
ring = null;
|
|
1914
|
+
|
|
1915
|
+
if (!n) return;
|
|
1916
|
+
|
|
1917
|
+
// No intersections.
|
|
1918
|
+
if (clean & 1) {
|
|
1919
|
+
segment = ringSegments[0];
|
|
1920
|
+
if ((m = segment.length - 1) > 0) {
|
|
1921
|
+
if (!polygonStarted) sink.polygonStart(), polygonStarted = true;
|
|
1922
|
+
sink.lineStart();
|
|
1923
|
+
for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);
|
|
1924
|
+
sink.lineEnd();
|
|
1925
|
+
}
|
|
1926
|
+
return;
|
|
1927
|
+
}
|
|
1928
|
+
|
|
1929
|
+
// Rejoin connected segments.
|
|
1930
|
+
// TODO reuse ringBuffer.rejoin()?
|
|
1931
|
+
if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));
|
|
1932
|
+
|
|
1933
|
+
segments.push(ringSegments.filter(validSegment));
|
|
1934
|
+
}
|
|
1935
|
+
|
|
1936
|
+
return clip;
|
|
1937
|
+
};
|
|
1938
|
+
};
|
|
1939
|
+
|
|
1940
|
+
function validSegment(segment) {
|
|
1941
|
+
return segment.length > 1;
|
|
1942
|
+
}
|
|
1943
|
+
|
|
1944
|
+
// Intersections are sorted along the clip edge. For both antimeridian cutting
|
|
1945
|
+
// and circle clipping, the same comparison is used.
|
|
1946
|
+
function compareIntersection(a, b) {
|
|
1947
|
+
return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])
|
|
1948
|
+
- ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);
|
|
1949
|
+
}
|
|
1950
|
+
|
|
1951
|
+
var clipAntimeridian = clip(
|
|
1952
|
+
function() { return true; },
|
|
1953
|
+
clipAntimeridianLine,
|
|
1954
|
+
clipAntimeridianInterpolate,
|
|
1955
|
+
[-pi, -halfPi]
|
|
1956
|
+
);
|
|
1957
|
+
|
|
1958
|
+
// Takes a line and cuts into visible segments. Return values: 0 - there were
|
|
1959
|
+
// intersections or the line was empty; 1 - no intersections; 2 - there were
|
|
1960
|
+
// intersections, and the first and last segments should be rejoined.
|
|
1961
|
+
function clipAntimeridianLine(stream) {
|
|
1962
|
+
var lambda0 = NaN,
|
|
1963
|
+
phi0 = NaN,
|
|
1964
|
+
sign0 = NaN,
|
|
1965
|
+
clean; // no intersections
|
|
1966
|
+
|
|
1967
|
+
return {
|
|
1968
|
+
lineStart: function() {
|
|
1969
|
+
stream.lineStart();
|
|
1970
|
+
clean = 1;
|
|
1971
|
+
},
|
|
1972
|
+
point: function(lambda1, phi1) {
|
|
1973
|
+
var sign1 = lambda1 > 0 ? pi : -pi,
|
|
1974
|
+
delta = abs(lambda1 - lambda0);
|
|
1975
|
+
if (abs(delta - pi) < epsilon) { // line crosses a pole
|
|
1976
|
+
stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);
|
|
1977
|
+
stream.point(sign0, phi0);
|
|
1978
|
+
stream.lineEnd();
|
|
1979
|
+
stream.lineStart();
|
|
1980
|
+
stream.point(sign1, phi0);
|
|
1981
|
+
stream.point(lambda1, phi0);
|
|
1982
|
+
clean = 0;
|
|
1983
|
+
} else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian
|
|
1984
|
+
if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies
|
|
1985
|
+
if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;
|
|
1986
|
+
phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);
|
|
1987
|
+
stream.point(sign0, phi0);
|
|
1988
|
+
stream.lineEnd();
|
|
1989
|
+
stream.lineStart();
|
|
1990
|
+
stream.point(sign1, phi0);
|
|
1991
|
+
clean = 0;
|
|
1992
|
+
}
|
|
1993
|
+
stream.point(lambda0 = lambda1, phi0 = phi1);
|
|
1994
|
+
sign0 = sign1;
|
|
1995
|
+
},
|
|
1996
|
+
lineEnd: function() {
|
|
1997
|
+
stream.lineEnd();
|
|
1998
|
+
lambda0 = phi0 = NaN;
|
|
1999
|
+
},
|
|
2000
|
+
clean: function() {
|
|
2001
|
+
return 2 - clean; // if intersections, rejoin first and last segments
|
|
2002
|
+
}
|
|
2003
|
+
};
|
|
2004
|
+
}
|
|
2005
|
+
|
|
2006
|
+
function clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {
|
|
2007
|
+
var cosPhi0,
|
|
2008
|
+
cosPhi1,
|
|
2009
|
+
sinLambda0Lambda1 = sin(lambda0 - lambda1);
|
|
2010
|
+
return abs(sinLambda0Lambda1) > epsilon
|
|
2011
|
+
? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)
|
|
2012
|
+
- sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))
|
|
2013
|
+
/ (cosPhi0 * cosPhi1 * sinLambda0Lambda1))
|
|
2014
|
+
: (phi0 + phi1) / 2;
|
|
2015
|
+
}
|
|
2016
|
+
|
|
2017
|
+
function clipAntimeridianInterpolate(from, to, direction, stream) {
|
|
2018
|
+
var phi;
|
|
2019
|
+
if (from == null) {
|
|
2020
|
+
phi = direction * halfPi;
|
|
2021
|
+
stream.point(-pi, phi);
|
|
2022
|
+
stream.point(0, phi);
|
|
2023
|
+
stream.point(pi, phi);
|
|
2024
|
+
stream.point(pi, 0);
|
|
2025
|
+
stream.point(pi, -phi);
|
|
2026
|
+
stream.point(0, -phi);
|
|
2027
|
+
stream.point(-pi, -phi);
|
|
2028
|
+
stream.point(-pi, 0);
|
|
2029
|
+
stream.point(-pi, phi);
|
|
2030
|
+
} else if (abs(from[0] - to[0]) > epsilon) {
|
|
2031
|
+
var lambda = from[0] < to[0] ? pi : -pi;
|
|
2032
|
+
phi = direction * lambda / 2;
|
|
2033
|
+
stream.point(-lambda, phi);
|
|
2034
|
+
stream.point(0, phi);
|
|
2035
|
+
stream.point(lambda, phi);
|
|
2036
|
+
} else {
|
|
2037
|
+
stream.point(to[0], to[1]);
|
|
2038
|
+
}
|
|
2039
|
+
}
|
|
2040
|
+
|
|
2041
|
+
var clipCircle = function(radius, delta) {
|
|
2042
|
+
var cr = cos(radius),
|
|
2043
|
+
smallRadius = cr > 0,
|
|
2044
|
+
notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case
|
|
2045
|
+
|
|
2046
|
+
function interpolate(from, to, direction, stream) {
|
|
2047
|
+
circleStream(stream, radius, delta, direction, from, to);
|
|
2048
|
+
}
|
|
2049
|
+
|
|
2050
|
+
function visible(lambda, phi) {
|
|
2051
|
+
return cos(lambda) * cos(phi) > cr;
|
|
2052
|
+
}
|
|
2053
|
+
|
|
2054
|
+
// Takes a line and cuts into visible segments. Return values used for polygon
|
|
2055
|
+
// clipping: 0 - there were intersections or the line was empty; 1 - no
|
|
2056
|
+
// intersections 2 - there were intersections, and the first and last segments
|
|
2057
|
+
// should be rejoined.
|
|
2058
|
+
function clipLine(stream) {
|
|
2059
|
+
var point0, // previous point
|
|
2060
|
+
c0, // code for previous point
|
|
2061
|
+
v0, // visibility of previous point
|
|
2062
|
+
v00, // visibility of first point
|
|
2063
|
+
clean; // no intersections
|
|
2064
|
+
return {
|
|
2065
|
+
lineStart: function() {
|
|
2066
|
+
v00 = v0 = false;
|
|
2067
|
+
clean = 1;
|
|
2068
|
+
},
|
|
2069
|
+
point: function(lambda, phi) {
|
|
2070
|
+
var point1 = [lambda, phi],
|
|
2071
|
+
point2,
|
|
2072
|
+
v = visible(lambda, phi),
|
|
2073
|
+
c = smallRadius
|
|
2074
|
+
? v ? 0 : code(lambda, phi)
|
|
2075
|
+
: v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;
|
|
2076
|
+
if (!point0 && (v00 = v0 = v)) stream.lineStart();
|
|
2077
|
+
// Handle degeneracies.
|
|
2078
|
+
// TODO ignore if not clipping polygons.
|
|
2079
|
+
if (v !== v0) {
|
|
2080
|
+
point2 = intersect(point0, point1);
|
|
2081
|
+
if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2)) {
|
|
2082
|
+
point1[0] += epsilon;
|
|
2083
|
+
point1[1] += epsilon;
|
|
2084
|
+
v = visible(point1[0], point1[1]);
|
|
2085
|
+
}
|
|
2086
|
+
}
|
|
2087
|
+
if (v !== v0) {
|
|
2088
|
+
clean = 0;
|
|
2089
|
+
if (v) {
|
|
2090
|
+
// outside going in
|
|
2091
|
+
stream.lineStart();
|
|
2092
|
+
point2 = intersect(point1, point0);
|
|
2093
|
+
stream.point(point2[0], point2[1]);
|
|
2094
|
+
} else {
|
|
2095
|
+
// inside going out
|
|
2096
|
+
point2 = intersect(point0, point1);
|
|
2097
|
+
stream.point(point2[0], point2[1]);
|
|
2098
|
+
stream.lineEnd();
|
|
2099
|
+
}
|
|
2100
|
+
point0 = point2;
|
|
2101
|
+
} else if (notHemisphere && point0 && smallRadius ^ v) {
|
|
2102
|
+
var t;
|
|
2103
|
+
// If the codes for two points are different, or are both zero,
|
|
2104
|
+
// and there this segment intersects with the small circle.
|
|
2105
|
+
if (!(c & c0) && (t = intersect(point1, point0, true))) {
|
|
2106
|
+
clean = 0;
|
|
2107
|
+
if (smallRadius) {
|
|
2108
|
+
stream.lineStart();
|
|
2109
|
+
stream.point(t[0][0], t[0][1]);
|
|
2110
|
+
stream.point(t[1][0], t[1][1]);
|
|
2111
|
+
stream.lineEnd();
|
|
2112
|
+
} else {
|
|
2113
|
+
stream.point(t[1][0], t[1][1]);
|
|
2114
|
+
stream.lineEnd();
|
|
2115
|
+
stream.lineStart();
|
|
2116
|
+
stream.point(t[0][0], t[0][1]);
|
|
2117
|
+
}
|
|
2118
|
+
}
|
|
2119
|
+
}
|
|
2120
|
+
if (v && (!point0 || !pointEqual(point0, point1))) {
|
|
2121
|
+
stream.point(point1[0], point1[1]);
|
|
2122
|
+
}
|
|
2123
|
+
point0 = point1, v0 = v, c0 = c;
|
|
2124
|
+
},
|
|
2125
|
+
lineEnd: function() {
|
|
2126
|
+
if (v0) stream.lineEnd();
|
|
2127
|
+
point0 = null;
|
|
2128
|
+
},
|
|
2129
|
+
// Rejoin first and last segments if there were intersections and the first
|
|
2130
|
+
// and last points were visible.
|
|
2131
|
+
clean: function() {
|
|
2132
|
+
return clean | ((v00 && v0) << 1);
|
|
2133
|
+
}
|
|
2134
|
+
};
|
|
2135
|
+
}
|
|
2136
|
+
|
|
2137
|
+
// Intersects the great circle between a and b with the clip circle.
|
|
2138
|
+
function intersect(a, b, two) {
|
|
2139
|
+
var pa = cartesian(a),
|
|
2140
|
+
pb = cartesian(b);
|
|
2141
|
+
|
|
2142
|
+
// We have two planes, n1.p = d1 and n2.p = d2.
|
|
2143
|
+
// Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).
|
|
2144
|
+
var n1 = [1, 0, 0], // normal
|
|
2145
|
+
n2 = cartesianCross(pa, pb),
|
|
2146
|
+
n2n2 = cartesianDot(n2, n2),
|
|
2147
|
+
n1n2 = n2[0], // cartesianDot(n1, n2),
|
|
2148
|
+
determinant = n2n2 - n1n2 * n1n2;
|
|
2149
|
+
|
|
2150
|
+
// Two polar points.
|
|
2151
|
+
if (!determinant) return !two && a;
|
|
2152
|
+
|
|
2153
|
+
var c1 = cr * n2n2 / determinant,
|
|
2154
|
+
c2 = -cr * n1n2 / determinant,
|
|
2155
|
+
n1xn2 = cartesianCross(n1, n2),
|
|
2156
|
+
A = cartesianScale(n1, c1),
|
|
2157
|
+
B = cartesianScale(n2, c2);
|
|
2158
|
+
cartesianAddInPlace(A, B);
|
|
2159
|
+
|
|
2160
|
+
// Solve |p(t)|^2 = 1.
|
|
2161
|
+
var u = n1xn2,
|
|
2162
|
+
w = cartesianDot(A, u),
|
|
2163
|
+
uu = cartesianDot(u, u),
|
|
2164
|
+
t2 = w * w - uu * (cartesianDot(A, A) - 1);
|
|
2165
|
+
|
|
2166
|
+
if (t2 < 0) return;
|
|
2167
|
+
|
|
2168
|
+
var t = sqrt(t2),
|
|
2169
|
+
q = cartesianScale(u, (-w - t) / uu);
|
|
2170
|
+
cartesianAddInPlace(q, A);
|
|
2171
|
+
q = spherical(q);
|
|
2172
|
+
|
|
2173
|
+
if (!two) return q;
|
|
2174
|
+
|
|
2175
|
+
// Two intersection points.
|
|
2176
|
+
var lambda0 = a[0],
|
|
2177
|
+
lambda1 = b[0],
|
|
2178
|
+
phi0 = a[1],
|
|
2179
|
+
phi1 = b[1],
|
|
2180
|
+
z;
|
|
2181
|
+
|
|
2182
|
+
if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;
|
|
2183
|
+
|
|
2184
|
+
var delta = lambda1 - lambda0,
|
|
2185
|
+
polar = abs(delta - pi) < epsilon,
|
|
2186
|
+
meridian = polar || delta < epsilon;
|
|
2187
|
+
|
|
2188
|
+
if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;
|
|
2189
|
+
|
|
2190
|
+
// Check that the first point is between a and b.
|
|
2191
|
+
if (meridian
|
|
2192
|
+
? polar
|
|
2193
|
+
? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1)
|
|
2194
|
+
: phi0 <= q[1] && q[1] <= phi1
|
|
2195
|
+
: delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {
|
|
2196
|
+
var q1 = cartesianScale(u, (-w + t) / uu);
|
|
2197
|
+
cartesianAddInPlace(q1, A);
|
|
2198
|
+
return [q, spherical(q1)];
|
|
2199
|
+
}
|
|
2200
|
+
}
|
|
2201
|
+
|
|
2202
|
+
// Generates a 4-bit vector representing the location of a point relative to
|
|
2203
|
+
// the small circle's bounding box.
|
|
2204
|
+
function code(lambda, phi) {
|
|
2205
|
+
var r = smallRadius ? radius : pi - radius,
|
|
2206
|
+
code = 0;
|
|
2207
|
+
if (lambda < -r) code |= 1; // left
|
|
2208
|
+
else if (lambda > r) code |= 2; // right
|
|
2209
|
+
if (phi < -r) code |= 4; // below
|
|
2210
|
+
else if (phi > r) code |= 8; // above
|
|
2211
|
+
return code;
|
|
2212
|
+
}
|
|
2213
|
+
|
|
2214
|
+
return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);
|
|
2215
|
+
};
|
|
2216
|
+
|
|
2217
|
+
var transform = function(methods) {
|
|
2218
|
+
return {
|
|
2219
|
+
stream: transformer(methods)
|
|
2220
|
+
};
|
|
2221
|
+
};
|
|
2222
|
+
|
|
2223
|
+
function transformer(methods) {
|
|
2224
|
+
return function(stream) {
|
|
2225
|
+
var s = new TransformStream;
|
|
2226
|
+
for (var key in methods) s[key] = methods[key];
|
|
2227
|
+
s.stream = stream;
|
|
2228
|
+
return s;
|
|
2229
|
+
};
|
|
2230
|
+
}
|
|
2231
|
+
|
|
2232
|
+
function TransformStream() {}
|
|
2233
|
+
|
|
2234
|
+
TransformStream.prototype = {
|
|
2235
|
+
constructor: TransformStream,
|
|
2236
|
+
point: function(x, y) { this.stream.point(x, y); },
|
|
2237
|
+
sphere: function() { this.stream.sphere(); },
|
|
2238
|
+
lineStart: function() { this.stream.lineStart(); },
|
|
2239
|
+
lineEnd: function() { this.stream.lineEnd(); },
|
|
2240
|
+
polygonStart: function() { this.stream.polygonStart(); },
|
|
2241
|
+
polygonEnd: function() { this.stream.polygonEnd(); }
|
|
2242
|
+
};
|
|
2243
|
+
|
|
2244
|
+
function fitExtent(projection, extent, object) {
|
|
2245
|
+
var w = extent[1][0] - extent[0][0],
|
|
2246
|
+
h = extent[1][1] - extent[0][1],
|
|
2247
|
+
clip = projection.clipExtent && projection.clipExtent();
|
|
2248
|
+
|
|
2249
|
+
projection
|
|
2250
|
+
.scale(150)
|
|
2251
|
+
.translate([0, 0]);
|
|
2252
|
+
|
|
2253
|
+
if (clip != null) projection.clipExtent(null);
|
|
2254
|
+
|
|
2255
|
+
geoStream(object, projection.stream(boundsStream$1));
|
|
2256
|
+
|
|
2257
|
+
var b = boundsStream$1.result(),
|
|
2258
|
+
k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),
|
|
2259
|
+
x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,
|
|
2260
|
+
y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;
|
|
2261
|
+
|
|
2262
|
+
if (clip != null) projection.clipExtent(clip);
|
|
2263
|
+
|
|
2264
|
+
return projection
|
|
2265
|
+
.scale(k * 150)
|
|
2266
|
+
.translate([x, y]);
|
|
2267
|
+
}
|
|
2268
|
+
|
|
2269
|
+
function fitSize(projection, size, object) {
|
|
2270
|
+
return fitExtent(projection, [[0, 0], size], object);
|
|
2271
|
+
}
|
|
2272
|
+
|
|
2273
|
+
var maxDepth = 16;
|
|
2274
|
+
var cosMinDistance = cos(30 * radians); // cos(minimum angular distance)
|
|
2275
|
+
|
|
2276
|
+
var resample = function(project, delta2) {
|
|
2277
|
+
return +delta2 ? resample$1(project, delta2) : resampleNone(project);
|
|
2278
|
+
};
|
|
2279
|
+
|
|
2280
|
+
function resampleNone(project) {
|
|
2281
|
+
return transformer({
|
|
2282
|
+
point: function(x, y) {
|
|
2283
|
+
x = project(x, y);
|
|
2284
|
+
this.stream.point(x[0], x[1]);
|
|
2285
|
+
}
|
|
2286
|
+
});
|
|
2287
|
+
}
|
|
2288
|
+
|
|
2289
|
+
function resample$1(project, delta2) {
|
|
2290
|
+
|
|
2291
|
+
function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {
|
|
2292
|
+
var dx = x1 - x0,
|
|
2293
|
+
dy = y1 - y0,
|
|
2294
|
+
d2 = dx * dx + dy * dy;
|
|
2295
|
+
if (d2 > 4 * delta2 && depth--) {
|
|
2296
|
+
var a = a0 + a1,
|
|
2297
|
+
b = b0 + b1,
|
|
2298
|
+
c = c0 + c1,
|
|
2299
|
+
m = sqrt(a * a + b * b + c * c),
|
|
2300
|
+
phi2 = asin(c /= m),
|
|
2301
|
+
lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),
|
|
2302
|
+
p = project(lambda2, phi2),
|
|
2303
|
+
x2 = p[0],
|
|
2304
|
+
y2 = p[1],
|
|
2305
|
+
dx2 = x2 - x0,
|
|
2306
|
+
dy2 = y2 - y0,
|
|
2307
|
+
dz = dy * dx2 - dx * dy2;
|
|
2308
|
+
if (dz * dz / d2 > delta2 // perpendicular projected distance
|
|
2309
|
+
|| abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end
|
|
2310
|
+
|| a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance
|
|
2311
|
+
resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);
|
|
2312
|
+
stream.point(x2, y2);
|
|
2313
|
+
resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);
|
|
2314
|
+
}
|
|
2315
|
+
}
|
|
2316
|
+
}
|
|
2317
|
+
return function(stream) {
|
|
2318
|
+
var lambda00, x00, y00, a00, b00, c00, // first point
|
|
2319
|
+
lambda0, x0, y0, a0, b0, c0; // previous point
|
|
2320
|
+
|
|
2321
|
+
var resampleStream = {
|
|
2322
|
+
point: point,
|
|
2323
|
+
lineStart: lineStart,
|
|
2324
|
+
lineEnd: lineEnd,
|
|
2325
|
+
polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },
|
|
2326
|
+
polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }
|
|
2327
|
+
};
|
|
2328
|
+
|
|
2329
|
+
function point(x, y) {
|
|
2330
|
+
x = project(x, y);
|
|
2331
|
+
stream.point(x[0], x[1]);
|
|
2332
|
+
}
|
|
2333
|
+
|
|
2334
|
+
function lineStart() {
|
|
2335
|
+
x0 = NaN;
|
|
2336
|
+
resampleStream.point = linePoint;
|
|
2337
|
+
stream.lineStart();
|
|
2338
|
+
}
|
|
2339
|
+
|
|
2340
|
+
function linePoint(lambda, phi) {
|
|
2341
|
+
var c = cartesian([lambda, phi]), p = project(lambda, phi);
|
|
2342
|
+
resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);
|
|
2343
|
+
stream.point(x0, y0);
|
|
2344
|
+
}
|
|
2345
|
+
|
|
2346
|
+
function lineEnd() {
|
|
2347
|
+
resampleStream.point = point;
|
|
2348
|
+
stream.lineEnd();
|
|
2349
|
+
}
|
|
2350
|
+
|
|
2351
|
+
function ringStart() {
|
|
2352
|
+
lineStart();
|
|
2353
|
+
resampleStream.point = ringPoint;
|
|
2354
|
+
resampleStream.lineEnd = ringEnd;
|
|
2355
|
+
}
|
|
2356
|
+
|
|
2357
|
+
function ringPoint(lambda, phi) {
|
|
2358
|
+
linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;
|
|
2359
|
+
resampleStream.point = linePoint;
|
|
2360
|
+
}
|
|
2361
|
+
|
|
2362
|
+
function ringEnd() {
|
|
2363
|
+
resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);
|
|
2364
|
+
resampleStream.lineEnd = lineEnd;
|
|
2365
|
+
lineEnd();
|
|
2366
|
+
}
|
|
2367
|
+
|
|
2368
|
+
return resampleStream;
|
|
2369
|
+
};
|
|
2370
|
+
}
|
|
2371
|
+
|
|
2372
|
+
var transformRadians = transformer({
|
|
2373
|
+
point: function(x, y) {
|
|
2374
|
+
this.stream.point(x * radians, y * radians);
|
|
2375
|
+
}
|
|
2376
|
+
});
|
|
2377
|
+
|
|
2378
|
+
function projection(project) {
|
|
2379
|
+
return projectionMutator(function() { return project; })();
|
|
2380
|
+
}
|
|
2381
|
+
|
|
2382
|
+
function projectionMutator(projectAt) {
|
|
2383
|
+
var project,
|
|
2384
|
+
k = 150, // scale
|
|
2385
|
+
x = 480, y = 250, // translate
|
|
2386
|
+
dx, dy, lambda = 0, phi = 0, // center
|
|
2387
|
+
deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, projectRotate, // rotate
|
|
2388
|
+
theta = null, preclip = clipAntimeridian, // clip angle
|
|
2389
|
+
x0 = null, y0, x1, y1, postclip = identity, // clip extent
|
|
2390
|
+
delta2 = 0.5, projectResample = resample(projectTransform, delta2), // precision
|
|
2391
|
+
cache,
|
|
2392
|
+
cacheStream;
|
|
2393
|
+
|
|
2394
|
+
function projection(point) {
|
|
2395
|
+
point = projectRotate(point[0] * radians, point[1] * radians);
|
|
2396
|
+
return [point[0] * k + dx, dy - point[1] * k];
|
|
2397
|
+
}
|
|
2398
|
+
|
|
2399
|
+
function invert(point) {
|
|
2400
|
+
point = projectRotate.invert((point[0] - dx) / k, (dy - point[1]) / k);
|
|
2401
|
+
return point && [point[0] * degrees, point[1] * degrees];
|
|
2402
|
+
}
|
|
2403
|
+
|
|
2404
|
+
function projectTransform(x, y) {
|
|
2405
|
+
return x = project(x, y), [x[0] * k + dx, dy - x[1] * k];
|
|
2406
|
+
}
|
|
2407
|
+
|
|
2408
|
+
projection.stream = function(stream) {
|
|
2409
|
+
return cache && cacheStream === stream ? cache : cache = transformRadians(preclip(rotate, projectResample(postclip(cacheStream = stream))));
|
|
2410
|
+
};
|
|
2411
|
+
|
|
2412
|
+
projection.clipAngle = function(_) {
|
|
2413
|
+
return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians, 6 * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;
|
|
2414
|
+
};
|
|
2415
|
+
|
|
2416
|
+
projection.clipExtent = function(_) {
|
|
2417
|
+
return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];
|
|
2418
|
+
};
|
|
2419
|
+
|
|
2420
|
+
projection.scale = function(_) {
|
|
2421
|
+
return arguments.length ? (k = +_, recenter()) : k;
|
|
2422
|
+
};
|
|
2423
|
+
|
|
2424
|
+
projection.translate = function(_) {
|
|
2425
|
+
return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];
|
|
2426
|
+
};
|
|
2427
|
+
|
|
2428
|
+
projection.center = function(_) {
|
|
2429
|
+
return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];
|
|
2430
|
+
};
|
|
2431
|
+
|
|
2432
|
+
projection.rotate = function(_) {
|
|
2433
|
+
return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];
|
|
2434
|
+
};
|
|
2435
|
+
|
|
2436
|
+
projection.precision = function(_) {
|
|
2437
|
+
return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);
|
|
2438
|
+
};
|
|
2439
|
+
|
|
2440
|
+
projection.fitExtent = function(extent$$1, object) {
|
|
2441
|
+
return fitExtent(projection, extent$$1, object);
|
|
2442
|
+
};
|
|
2443
|
+
|
|
2444
|
+
projection.fitSize = function(size, object) {
|
|
2445
|
+
return fitSize(projection, size, object);
|
|
2446
|
+
};
|
|
2447
|
+
|
|
2448
|
+
function recenter() {
|
|
2449
|
+
projectRotate = compose(rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma), project);
|
|
2450
|
+
var center = project(lambda, phi);
|
|
2451
|
+
dx = x - center[0] * k;
|
|
2452
|
+
dy = y + center[1] * k;
|
|
2453
|
+
return reset();
|
|
2454
|
+
}
|
|
2455
|
+
|
|
2456
|
+
function reset() {
|
|
2457
|
+
cache = cacheStream = null;
|
|
2458
|
+
return projection;
|
|
2459
|
+
}
|
|
2460
|
+
|
|
2461
|
+
return function() {
|
|
2462
|
+
project = projectAt.apply(this, arguments);
|
|
2463
|
+
projection.invert = project.invert && invert;
|
|
2464
|
+
return recenter();
|
|
2465
|
+
};
|
|
2466
|
+
}
|
|
2467
|
+
|
|
2468
|
+
function conicProjection(projectAt) {
|
|
2469
|
+
var phi0 = 0,
|
|
2470
|
+
phi1 = pi / 3,
|
|
2471
|
+
m = projectionMutator(projectAt),
|
|
2472
|
+
p = m(phi0, phi1);
|
|
2473
|
+
|
|
2474
|
+
p.parallels = function(_) {
|
|
2475
|
+
return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees];
|
|
2476
|
+
};
|
|
2477
|
+
|
|
2478
|
+
return p;
|
|
2479
|
+
}
|
|
2480
|
+
|
|
2481
|
+
function cylindricalEqualAreaRaw(phi0) {
|
|
2482
|
+
var cosPhi0 = cos(phi0);
|
|
2483
|
+
|
|
2484
|
+
function forward(lambda, phi) {
|
|
2485
|
+
return [lambda * cosPhi0, sin(phi) / cosPhi0];
|
|
2486
|
+
}
|
|
2487
|
+
|
|
2488
|
+
forward.invert = function(x, y) {
|
|
2489
|
+
return [x / cosPhi0, asin(y * cosPhi0)];
|
|
2490
|
+
};
|
|
2491
|
+
|
|
2492
|
+
return forward;
|
|
2493
|
+
}
|
|
2494
|
+
|
|
2495
|
+
function conicEqualAreaRaw(y0, y1) {
|
|
2496
|
+
var sy0 = sin(y0), n = (sy0 + sin(y1)) / 2;
|
|
2497
|
+
|
|
2498
|
+
// Are the parallels symmetrical around the Equator?
|
|
2499
|
+
if (abs(n) < epsilon) return cylindricalEqualAreaRaw(y0);
|
|
2500
|
+
|
|
2501
|
+
var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n;
|
|
2502
|
+
|
|
2503
|
+
function project(x, y) {
|
|
2504
|
+
var r = sqrt(c - 2 * n * sin(y)) / n;
|
|
2505
|
+
return [r * sin(x *= n), r0 - r * cos(x)];
|
|
2506
|
+
}
|
|
2507
|
+
|
|
2508
|
+
project.invert = function(x, y) {
|
|
2509
|
+
var r0y = r0 - y;
|
|
2510
|
+
return [atan2(x, abs(r0y)) / n * sign(r0y), asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))];
|
|
2511
|
+
};
|
|
2512
|
+
|
|
2513
|
+
return project;
|
|
2514
|
+
}
|
|
2515
|
+
|
|
2516
|
+
var conicEqualArea = function() {
|
|
2517
|
+
return conicProjection(conicEqualAreaRaw)
|
|
2518
|
+
.scale(155.424)
|
|
2519
|
+
.center([0, 33.6442]);
|
|
2520
|
+
};
|
|
2521
|
+
|
|
2522
|
+
var albers = function() {
|
|
2523
|
+
return conicEqualArea()
|
|
2524
|
+
.parallels([29.5, 45.5])
|
|
2525
|
+
.scale(1070)
|
|
2526
|
+
.translate([480, 250])
|
|
2527
|
+
.rotate([96, 0])
|
|
2528
|
+
.center([-0.6, 38.7]);
|
|
2529
|
+
};
|
|
2530
|
+
|
|
2531
|
+
// The projections must have mutually exclusive clip regions on the sphere,
|
|
2532
|
+
// as this will avoid emitting interleaving lines and polygons.
|
|
2533
|
+
function multiplex(streams) {
|
|
2534
|
+
var n = streams.length;
|
|
2535
|
+
return {
|
|
2536
|
+
point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },
|
|
2537
|
+
sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },
|
|
2538
|
+
lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },
|
|
2539
|
+
lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },
|
|
2540
|
+
polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },
|
|
2541
|
+
polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }
|
|
2542
|
+
};
|
|
2543
|
+
}
|
|
2544
|
+
|
|
2545
|
+
// A composite projection for the United States, configured by default for
|
|
2546
|
+
// 960×500. The projection also works quite well at 960×600 if you change the
|
|
2547
|
+
// scale to 1285 and adjust the translate accordingly. The set of standard
|
|
2548
|
+
// parallels for each region comes from USGS, which is published here:
|
|
2549
|
+
// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers
|
|
2550
|
+
var albersUsa = function() {
|
|
2551
|
+
var cache,
|
|
2552
|
+
cacheStream,
|
|
2553
|
+
lower48 = albers(), lower48Point,
|
|
2554
|
+
alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338
|
|
2555
|
+
hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007
|
|
2556
|
+
point, pointStream = {point: function(x, y) { point = [x, y]; }};
|
|
2557
|
+
|
|
2558
|
+
function albersUsa(coordinates) {
|
|
2559
|
+
var x = coordinates[0], y = coordinates[1];
|
|
2560
|
+
return point = null,
|
|
2561
|
+
(lower48Point.point(x, y), point)
|
|
2562
|
+
|| (alaskaPoint.point(x, y), point)
|
|
2563
|
+
|| (hawaiiPoint.point(x, y), point);
|
|
2564
|
+
}
|
|
2565
|
+
|
|
2566
|
+
albersUsa.invert = function(coordinates) {
|
|
2567
|
+
var k = lower48.scale(),
|
|
2568
|
+
t = lower48.translate(),
|
|
2569
|
+
x = (coordinates[0] - t[0]) / k,
|
|
2570
|
+
y = (coordinates[1] - t[1]) / k;
|
|
2571
|
+
return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska
|
|
2572
|
+
: y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii
|
|
2573
|
+
: lower48).invert(coordinates);
|
|
2574
|
+
};
|
|
2575
|
+
|
|
2576
|
+
albersUsa.stream = function(stream) {
|
|
2577
|
+
return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);
|
|
2578
|
+
};
|
|
2579
|
+
|
|
2580
|
+
albersUsa.precision = function(_) {
|
|
2581
|
+
if (!arguments.length) return lower48.precision();
|
|
2582
|
+
lower48.precision(_), alaska.precision(_), hawaii.precision(_);
|
|
2583
|
+
return reset();
|
|
2584
|
+
};
|
|
2585
|
+
|
|
2586
|
+
albersUsa.scale = function(_) {
|
|
2587
|
+
if (!arguments.length) return lower48.scale();
|
|
2588
|
+
lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);
|
|
2589
|
+
return albersUsa.translate(lower48.translate());
|
|
2590
|
+
};
|
|
2591
|
+
|
|
2592
|
+
albersUsa.translate = function(_) {
|
|
2593
|
+
if (!arguments.length) return lower48.translate();
|
|
2594
|
+
var k = lower48.scale(), x = +_[0], y = +_[1];
|
|
2595
|
+
|
|
2596
|
+
lower48Point = lower48
|
|
2597
|
+
.translate(_)
|
|
2598
|
+
.clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])
|
|
2599
|
+
.stream(pointStream);
|
|
2600
|
+
|
|
2601
|
+
alaskaPoint = alaska
|
|
2602
|
+
.translate([x - 0.307 * k, y + 0.201 * k])
|
|
2603
|
+
.clipExtent([[x - 0.425 * k + epsilon, y + 0.120 * k + epsilon], [x - 0.214 * k - epsilon, y + 0.234 * k - epsilon]])
|
|
2604
|
+
.stream(pointStream);
|
|
2605
|
+
|
|
2606
|
+
hawaiiPoint = hawaii
|
|
2607
|
+
.translate([x - 0.205 * k, y + 0.212 * k])
|
|
2608
|
+
.clipExtent([[x - 0.214 * k + epsilon, y + 0.166 * k + epsilon], [x - 0.115 * k - epsilon, y + 0.234 * k - epsilon]])
|
|
2609
|
+
.stream(pointStream);
|
|
2610
|
+
|
|
2611
|
+
return reset();
|
|
2612
|
+
};
|
|
2613
|
+
|
|
2614
|
+
albersUsa.fitExtent = function(extent, object) {
|
|
2615
|
+
return fitExtent(albersUsa, extent, object);
|
|
2616
|
+
};
|
|
2617
|
+
|
|
2618
|
+
albersUsa.fitSize = function(size, object) {
|
|
2619
|
+
return fitSize(albersUsa, size, object);
|
|
2620
|
+
};
|
|
2621
|
+
|
|
2622
|
+
function reset() {
|
|
2623
|
+
cache = cacheStream = null;
|
|
2624
|
+
return albersUsa;
|
|
2625
|
+
}
|
|
2626
|
+
|
|
2627
|
+
return albersUsa.scale(1070);
|
|
2628
|
+
};
|
|
2629
|
+
|
|
2630
|
+
function azimuthalRaw(scale) {
|
|
2631
|
+
return function(x, y) {
|
|
2632
|
+
var cx = cos(x),
|
|
2633
|
+
cy = cos(y),
|
|
2634
|
+
k = scale(cx * cy);
|
|
2635
|
+
return [
|
|
2636
|
+
k * cy * sin(x),
|
|
2637
|
+
k * sin(y)
|
|
2638
|
+
];
|
|
2639
|
+
}
|
|
2640
|
+
}
|
|
2641
|
+
|
|
2642
|
+
function azimuthalInvert(angle) {
|
|
2643
|
+
return function(x, y) {
|
|
2644
|
+
var z = sqrt(x * x + y * y),
|
|
2645
|
+
c = angle(z),
|
|
2646
|
+
sc = sin(c),
|
|
2647
|
+
cc = cos(c);
|
|
2648
|
+
return [
|
|
2649
|
+
atan2(x * sc, z * cc),
|
|
2650
|
+
asin(z && y * sc / z)
|
|
2651
|
+
];
|
|
2652
|
+
}
|
|
2653
|
+
}
|
|
2654
|
+
|
|
2655
|
+
var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) {
|
|
2656
|
+
return sqrt(2 / (1 + cxcy));
|
|
2657
|
+
});
|
|
2658
|
+
|
|
2659
|
+
azimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) {
|
|
2660
|
+
return 2 * asin(z / 2);
|
|
2661
|
+
});
|
|
2662
|
+
|
|
2663
|
+
var azimuthalEqualArea = function() {
|
|
2664
|
+
return projection(azimuthalEqualAreaRaw)
|
|
2665
|
+
.scale(124.75)
|
|
2666
|
+
.clipAngle(180 - 1e-3);
|
|
2667
|
+
};
|
|
2668
|
+
|
|
2669
|
+
var azimuthalEquidistantRaw = azimuthalRaw(function(c) {
|
|
2670
|
+
return (c = acos(c)) && c / sin(c);
|
|
2671
|
+
});
|
|
2672
|
+
|
|
2673
|
+
azimuthalEquidistantRaw.invert = azimuthalInvert(function(z) {
|
|
2674
|
+
return z;
|
|
2675
|
+
});
|
|
2676
|
+
|
|
2677
|
+
var azimuthalEquidistant = function() {
|
|
2678
|
+
return projection(azimuthalEquidistantRaw)
|
|
2679
|
+
.scale(79.4188)
|
|
2680
|
+
.clipAngle(180 - 1e-3);
|
|
2681
|
+
};
|
|
2682
|
+
|
|
2683
|
+
function mercatorRaw(lambda, phi) {
|
|
2684
|
+
return [lambda, log(tan((halfPi + phi) / 2))];
|
|
2685
|
+
}
|
|
2686
|
+
|
|
2687
|
+
mercatorRaw.invert = function(x, y) {
|
|
2688
|
+
return [x, 2 * atan(exp(y)) - halfPi];
|
|
2689
|
+
};
|
|
2690
|
+
|
|
2691
|
+
var mercator = function() {
|
|
2692
|
+
return mercatorProjection(mercatorRaw)
|
|
2693
|
+
.scale(961 / tau);
|
|
2694
|
+
};
|
|
2695
|
+
|
|
2696
|
+
function mercatorProjection(project) {
|
|
2697
|
+
var m = projection(project),
|
|
2698
|
+
center = m.center,
|
|
2699
|
+
scale = m.scale,
|
|
2700
|
+
translate = m.translate,
|
|
2701
|
+
clipExtent = m.clipExtent,
|
|
2702
|
+
x0 = null, y0, x1, y1; // clip extent
|
|
2703
|
+
|
|
2704
|
+
m.scale = function(_) {
|
|
2705
|
+
return arguments.length ? (scale(_), reclip()) : scale();
|
|
2706
|
+
};
|
|
2707
|
+
|
|
2708
|
+
m.translate = function(_) {
|
|
2709
|
+
return arguments.length ? (translate(_), reclip()) : translate();
|
|
2710
|
+
};
|
|
2711
|
+
|
|
2712
|
+
m.center = function(_) {
|
|
2713
|
+
return arguments.length ? (center(_), reclip()) : center();
|
|
2714
|
+
};
|
|
2715
|
+
|
|
2716
|
+
m.clipExtent = function(_) {
|
|
2717
|
+
return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];
|
|
2718
|
+
};
|
|
2719
|
+
|
|
2720
|
+
function reclip() {
|
|
2721
|
+
var k = pi * scale(),
|
|
2722
|
+
t = m(rotation(m.rotate()).invert([0, 0]));
|
|
2723
|
+
return clipExtent(x0 == null
|
|
2724
|
+
? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw
|
|
2725
|
+
? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]
|
|
2726
|
+
: [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);
|
|
2727
|
+
}
|
|
2728
|
+
|
|
2729
|
+
return reclip();
|
|
2730
|
+
}
|
|
2731
|
+
|
|
2732
|
+
function tany(y) {
|
|
2733
|
+
return tan((halfPi + y) / 2);
|
|
2734
|
+
}
|
|
2735
|
+
|
|
2736
|
+
function conicConformalRaw(y0, y1) {
|
|
2737
|
+
var cy0 = cos(y0),
|
|
2738
|
+
n = y0 === y1 ? sin(y0) : log(cy0 / cos(y1)) / log(tany(y1) / tany(y0)),
|
|
2739
|
+
f = cy0 * pow(tany(y0), n) / n;
|
|
2740
|
+
|
|
2741
|
+
if (!n) return mercatorRaw;
|
|
2742
|
+
|
|
2743
|
+
function project(x, y) {
|
|
2744
|
+
if (f > 0) { if (y < -halfPi + epsilon) y = -halfPi + epsilon; }
|
|
2745
|
+
else { if (y > halfPi - epsilon) y = halfPi - epsilon; }
|
|
2746
|
+
var r = f / pow(tany(y), n);
|
|
2747
|
+
return [r * sin(n * x), f - r * cos(n * x)];
|
|
2748
|
+
}
|
|
2749
|
+
|
|
2750
|
+
project.invert = function(x, y) {
|
|
2751
|
+
var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy);
|
|
2752
|
+
return [atan2(x, abs(fy)) / n * sign(fy), 2 * atan(pow(f / r, 1 / n)) - halfPi];
|
|
2753
|
+
};
|
|
2754
|
+
|
|
2755
|
+
return project;
|
|
2756
|
+
}
|
|
2757
|
+
|
|
2758
|
+
var conicConformal = function() {
|
|
2759
|
+
return conicProjection(conicConformalRaw)
|
|
2760
|
+
.scale(109.5)
|
|
2761
|
+
.parallels([30, 30]);
|
|
2762
|
+
};
|
|
2763
|
+
|
|
2764
|
+
function equirectangularRaw(lambda, phi) {
|
|
2765
|
+
return [lambda, phi];
|
|
2766
|
+
}
|
|
2767
|
+
|
|
2768
|
+
equirectangularRaw.invert = equirectangularRaw;
|
|
2769
|
+
|
|
2770
|
+
var equirectangular = function() {
|
|
2771
|
+
return projection(equirectangularRaw)
|
|
2772
|
+
.scale(152.63);
|
|
2773
|
+
};
|
|
2774
|
+
|
|
2775
|
+
function conicEquidistantRaw(y0, y1) {
|
|
2776
|
+
var cy0 = cos(y0),
|
|
2777
|
+
n = y0 === y1 ? sin(y0) : (cy0 - cos(y1)) / (y1 - y0),
|
|
2778
|
+
g = cy0 / n + y0;
|
|
2779
|
+
|
|
2780
|
+
if (abs(n) < epsilon) return equirectangularRaw;
|
|
2781
|
+
|
|
2782
|
+
function project(x, y) {
|
|
2783
|
+
var gy = g - y, nx = n * x;
|
|
2784
|
+
return [gy * sin(nx), g - gy * cos(nx)];
|
|
2785
|
+
}
|
|
2786
|
+
|
|
2787
|
+
project.invert = function(x, y) {
|
|
2788
|
+
var gy = g - y;
|
|
2789
|
+
return [atan2(x, abs(gy)) / n * sign(gy), g - sign(n) * sqrt(x * x + gy * gy)];
|
|
2790
|
+
};
|
|
2791
|
+
|
|
2792
|
+
return project;
|
|
2793
|
+
}
|
|
2794
|
+
|
|
2795
|
+
var conicEquidistant = function() {
|
|
2796
|
+
return conicProjection(conicEquidistantRaw)
|
|
2797
|
+
.scale(131.154)
|
|
2798
|
+
.center([0, 13.9389]);
|
|
2799
|
+
};
|
|
2800
|
+
|
|
2801
|
+
function gnomonicRaw(x, y) {
|
|
2802
|
+
var cy = cos(y), k = cos(x) * cy;
|
|
2803
|
+
return [cy * sin(x) / k, sin(y) / k];
|
|
2804
|
+
}
|
|
2805
|
+
|
|
2806
|
+
gnomonicRaw.invert = azimuthalInvert(atan);
|
|
2807
|
+
|
|
2808
|
+
var gnomonic = function() {
|
|
2809
|
+
return projection(gnomonicRaw)
|
|
2810
|
+
.scale(144.049)
|
|
2811
|
+
.clipAngle(60);
|
|
2812
|
+
};
|
|
2813
|
+
|
|
2814
|
+
function scaleTranslate(kx, ky, tx, ty) {
|
|
2815
|
+
return kx === 1 && ky === 1 && tx === 0 && ty === 0 ? identity : transformer({
|
|
2816
|
+
point: function(x, y) {
|
|
2817
|
+
this.stream.point(x * kx + tx, y * ky + ty);
|
|
2818
|
+
}
|
|
2819
|
+
});
|
|
2820
|
+
}
|
|
2821
|
+
|
|
2822
|
+
var identity$1 = function() {
|
|
2823
|
+
var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, transform$$1 = identity, // scale, translate and reflect
|
|
2824
|
+
x0 = null, y0, x1, y1, clip = identity, // clip extent
|
|
2825
|
+
cache,
|
|
2826
|
+
cacheStream,
|
|
2827
|
+
projection;
|
|
2828
|
+
|
|
2829
|
+
function reset() {
|
|
2830
|
+
cache = cacheStream = null;
|
|
2831
|
+
return projection;
|
|
2832
|
+
}
|
|
2833
|
+
|
|
2834
|
+
return projection = {
|
|
2835
|
+
stream: function(stream) {
|
|
2836
|
+
return cache && cacheStream === stream ? cache : cache = transform$$1(clip(cacheStream = stream));
|
|
2837
|
+
},
|
|
2838
|
+
clipExtent: function(_) {
|
|
2839
|
+
return arguments.length ? (clip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipExtent(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];
|
|
2840
|
+
},
|
|
2841
|
+
scale: function(_) {
|
|
2842
|
+
return arguments.length ? (transform$$1 = scaleTranslate((k = +_) * sx, k * sy, tx, ty), reset()) : k;
|
|
2843
|
+
},
|
|
2844
|
+
translate: function(_) {
|
|
2845
|
+
return arguments.length ? (transform$$1 = scaleTranslate(k * sx, k * sy, tx = +_[0], ty = +_[1]), reset()) : [tx, ty];
|
|
2846
|
+
},
|
|
2847
|
+
reflectX: function(_) {
|
|
2848
|
+
return arguments.length ? (transform$$1 = scaleTranslate(k * (sx = _ ? -1 : 1), k * sy, tx, ty), reset()) : sx < 0;
|
|
2849
|
+
},
|
|
2850
|
+
reflectY: function(_) {
|
|
2851
|
+
return arguments.length ? (transform$$1 = scaleTranslate(k * sx, k * (sy = _ ? -1 : 1), tx, ty), reset()) : sy < 0;
|
|
2852
|
+
},
|
|
2853
|
+
fitExtent: function(extent$$1, object) {
|
|
2854
|
+
return fitExtent(projection, extent$$1, object);
|
|
2855
|
+
},
|
|
2856
|
+
fitSize: function(size, object) {
|
|
2857
|
+
return fitSize(projection, size, object);
|
|
2858
|
+
}
|
|
2859
|
+
};
|
|
2860
|
+
};
|
|
2861
|
+
|
|
2862
|
+
function naturalEarth1Raw(lambda, phi) {
|
|
2863
|
+
var phi2 = phi * phi, phi4 = phi2 * phi2;
|
|
2864
|
+
return [
|
|
2865
|
+
lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),
|
|
2866
|
+
phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))
|
|
2867
|
+
];
|
|
2868
|
+
}
|
|
2869
|
+
|
|
2870
|
+
naturalEarth1Raw.invert = function(x, y) {
|
|
2871
|
+
var phi = y, i = 25, delta;
|
|
2872
|
+
do {
|
|
2873
|
+
var phi2 = phi * phi, phi4 = phi2 * phi2;
|
|
2874
|
+
phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /
|
|
2875
|
+
(1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));
|
|
2876
|
+
} while (abs(delta) > epsilon && --i > 0);
|
|
2877
|
+
return [
|
|
2878
|
+
x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),
|
|
2879
|
+
phi
|
|
2880
|
+
];
|
|
2881
|
+
};
|
|
2882
|
+
|
|
2883
|
+
var naturalEarth1 = function() {
|
|
2884
|
+
return projection(naturalEarth1Raw)
|
|
2885
|
+
.scale(175.295);
|
|
2886
|
+
};
|
|
2887
|
+
|
|
2888
|
+
function orthographicRaw(x, y) {
|
|
2889
|
+
return [cos(y) * sin(x), sin(y)];
|
|
2890
|
+
}
|
|
2891
|
+
|
|
2892
|
+
orthographicRaw.invert = azimuthalInvert(asin);
|
|
2893
|
+
|
|
2894
|
+
var orthographic = function() {
|
|
2895
|
+
return projection(orthographicRaw)
|
|
2896
|
+
.scale(249.5)
|
|
2897
|
+
.clipAngle(90 + epsilon);
|
|
2898
|
+
};
|
|
2899
|
+
|
|
2900
|
+
function stereographicRaw(x, y) {
|
|
2901
|
+
var cy = cos(y), k = 1 + cos(x) * cy;
|
|
2902
|
+
return [cy * sin(x) / k, sin(y) / k];
|
|
2903
|
+
}
|
|
2904
|
+
|
|
2905
|
+
stereographicRaw.invert = azimuthalInvert(function(z) {
|
|
2906
|
+
return 2 * atan(z);
|
|
2907
|
+
});
|
|
2908
|
+
|
|
2909
|
+
var stereographic = function() {
|
|
2910
|
+
return projection(stereographicRaw)
|
|
2911
|
+
.scale(250)
|
|
2912
|
+
.clipAngle(142);
|
|
2913
|
+
};
|
|
2914
|
+
|
|
2915
|
+
function transverseMercatorRaw(lambda, phi) {
|
|
2916
|
+
return [log(tan((halfPi + phi) / 2)), -lambda];
|
|
2917
|
+
}
|
|
2918
|
+
|
|
2919
|
+
transverseMercatorRaw.invert = function(x, y) {
|
|
2920
|
+
return [-y, 2 * atan(exp(x)) - halfPi];
|
|
2921
|
+
};
|
|
2922
|
+
|
|
2923
|
+
var transverseMercator = function() {
|
|
2924
|
+
var m = mercatorProjection(transverseMercatorRaw),
|
|
2925
|
+
center = m.center,
|
|
2926
|
+
rotate = m.rotate;
|
|
2927
|
+
|
|
2928
|
+
m.center = function(_) {
|
|
2929
|
+
return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);
|
|
2930
|
+
};
|
|
2931
|
+
|
|
2932
|
+
m.rotate = function(_) {
|
|
2933
|
+
return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);
|
|
2934
|
+
};
|
|
2935
|
+
|
|
2936
|
+
return rotate([0, 0, 90])
|
|
2937
|
+
.scale(159.155);
|
|
2938
|
+
};
|
|
2939
|
+
|
|
2940
|
+
exports.geoArea = area;
|
|
2941
|
+
exports.geoBounds = bounds;
|
|
2942
|
+
exports.geoCentroid = centroid;
|
|
2943
|
+
exports.geoCircle = circle;
|
|
2944
|
+
exports.geoClipExtent = extent;
|
|
2945
|
+
exports.geoContains = contains;
|
|
2946
|
+
exports.geoDistance = distance;
|
|
2947
|
+
exports.geoGraticule = graticule;
|
|
2948
|
+
exports.geoGraticule10 = graticule10;
|
|
2949
|
+
exports.geoInterpolate = interpolate;
|
|
2950
|
+
exports.geoLength = length;
|
|
2951
|
+
exports.geoPath = index;
|
|
2952
|
+
exports.geoAlbers = albers;
|
|
2953
|
+
exports.geoAlbersUsa = albersUsa;
|
|
2954
|
+
exports.geoAzimuthalEqualArea = azimuthalEqualArea;
|
|
2955
|
+
exports.geoAzimuthalEqualAreaRaw = azimuthalEqualAreaRaw;
|
|
2956
|
+
exports.geoAzimuthalEquidistant = azimuthalEquidistant;
|
|
2957
|
+
exports.geoAzimuthalEquidistantRaw = azimuthalEquidistantRaw;
|
|
2958
|
+
exports.geoConicConformal = conicConformal;
|
|
2959
|
+
exports.geoConicConformalRaw = conicConformalRaw;
|
|
2960
|
+
exports.geoConicEqualArea = conicEqualArea;
|
|
2961
|
+
exports.geoConicEqualAreaRaw = conicEqualAreaRaw;
|
|
2962
|
+
exports.geoConicEquidistant = conicEquidistant;
|
|
2963
|
+
exports.geoConicEquidistantRaw = conicEquidistantRaw;
|
|
2964
|
+
exports.geoEquirectangular = equirectangular;
|
|
2965
|
+
exports.geoEquirectangularRaw = equirectangularRaw;
|
|
2966
|
+
exports.geoGnomonic = gnomonic;
|
|
2967
|
+
exports.geoGnomonicRaw = gnomonicRaw;
|
|
2968
|
+
exports.geoIdentity = identity$1;
|
|
2969
|
+
exports.geoProjection = projection;
|
|
2970
|
+
exports.geoProjectionMutator = projectionMutator;
|
|
2971
|
+
exports.geoMercator = mercator;
|
|
2972
|
+
exports.geoMercatorRaw = mercatorRaw;
|
|
2973
|
+
exports.geoNaturalEarth1 = naturalEarth1;
|
|
2974
|
+
exports.geoNaturalEarth1Raw = naturalEarth1Raw;
|
|
2975
|
+
exports.geoOrthographic = orthographic;
|
|
2976
|
+
exports.geoOrthographicRaw = orthographicRaw;
|
|
2977
|
+
exports.geoStereographic = stereographic;
|
|
2978
|
+
exports.geoStereographicRaw = stereographicRaw;
|
|
2979
|
+
exports.geoTransverseMercator = transverseMercator;
|
|
2980
|
+
exports.geoTransverseMercatorRaw = transverseMercatorRaw;
|
|
2981
|
+
exports.geoRotation = rotation;
|
|
2982
|
+
exports.geoStream = geoStream;
|
|
2983
|
+
exports.geoTransform = transform;
|
|
2984
|
+
|
|
2985
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
2986
|
+
|
|
2987
|
+
})));
|