Comparing version 1.6.26 to 1.6.27
@@ -1,1 +0,1 @@ | ||
var version = "1.6.26"; export * from "../client"; export {version}; | ||
var version = "1.6.27"; export * from "../client"; export {version}; |
@@ -5,542 +5,544 @@ (function (global, factory) { | ||
(factory((global.topojson = global.topojson || {}))); | ||
}(this, function (exports) { 'use strict'; | ||
}(this, (function (exports) { 'use strict'; | ||
function noop() {} | ||
function noop() {} | ||
function transformAbsolute(transform) { | ||
if (!transform) return noop; | ||
var x0, | ||
y0, | ||
kx = transform.scale[0], | ||
ky = transform.scale[1], | ||
dx = transform.translate[0], | ||
dy = transform.translate[1]; | ||
return function(point, i) { | ||
if (!i) x0 = y0 = 0; | ||
point[0] = (x0 += point[0]) * kx + dx; | ||
point[1] = (y0 += point[1]) * ky + dy; | ||
}; | ||
} | ||
function transformAbsolute(transform) { | ||
if (!transform) return noop; | ||
var x0, | ||
y0, | ||
kx = transform.scale[0], | ||
ky = transform.scale[1], | ||
dx = transform.translate[0], | ||
dy = transform.translate[1]; | ||
return function(point, i) { | ||
if (!i) x0 = y0 = 0; | ||
point[0] = (x0 += point[0]) * kx + dx; | ||
point[1] = (y0 += point[1]) * ky + dy; | ||
}; | ||
} | ||
function transformRelative(transform) { | ||
if (!transform) return noop; | ||
var x0, | ||
y0, | ||
kx = transform.scale[0], | ||
ky = transform.scale[1], | ||
dx = transform.translate[0], | ||
dy = transform.translate[1]; | ||
return function(point, i) { | ||
if (!i) x0 = y0 = 0; | ||
var x1 = Math.round((point[0] - dx) / kx), | ||
y1 = Math.round((point[1] - dy) / ky); | ||
point[0] = x1 - x0; | ||
point[1] = y1 - y0; | ||
x0 = x1; | ||
y0 = y1; | ||
}; | ||
} | ||
function transformRelative(transform) { | ||
if (!transform) return noop; | ||
var x0, | ||
y0, | ||
kx = transform.scale[0], | ||
ky = transform.scale[1], | ||
dx = transform.translate[0], | ||
dy = transform.translate[1]; | ||
return function(point, i) { | ||
if (!i) x0 = y0 = 0; | ||
var x1 = Math.round((point[0] - dx) / kx), | ||
y1 = Math.round((point[1] - dy) / ky); | ||
point[0] = x1 - x0; | ||
point[1] = y1 - y0; | ||
x0 = x1; | ||
y0 = y1; | ||
}; | ||
} | ||
function reverse(array, n) { | ||
var t, j = array.length, i = j - n; | ||
while (i < --j) t = array[i], array[i++] = array[j], array[j] = t; | ||
function reverse(array, n) { | ||
var t, j = array.length, i = j - n; | ||
while (i < --j) t = array[i], array[i++] = array[j], array[j] = t; | ||
} | ||
function bisect(a, x) { | ||
var lo = 0, hi = a.length; | ||
while (lo < hi) { | ||
var mid = lo + hi >>> 1; | ||
if (a[mid] < x) lo = mid + 1; | ||
else hi = mid; | ||
} | ||
return lo; | ||
} | ||
function bisect(a, x) { | ||
var lo = 0, hi = a.length; | ||
while (lo < hi) { | ||
var mid = lo + hi >>> 1; | ||
if (a[mid] < x) lo = mid + 1; | ||
else hi = mid; | ||
function feature(topology, o) { | ||
return o.type === "GeometryCollection" ? { | ||
type: "FeatureCollection", | ||
features: o.geometries.map(function(o) { return feature$1(topology, o); }) | ||
} : feature$1(topology, o); | ||
} | ||
function feature$1(topology, o) { | ||
var f = { | ||
type: "Feature", | ||
id: o.id, | ||
properties: o.properties || {}, | ||
geometry: object(topology, o) | ||
}; | ||
if (o.id == null) delete f.id; | ||
return f; | ||
} | ||
function object(topology, o) { | ||
var absolute = transformAbsolute(topology.transform), | ||
arcs = topology.arcs; | ||
function arc(i, points) { | ||
if (points.length) points.pop(); | ||
for (var a = arcs[i < 0 ? ~i : i], k = 0, n = a.length, p; k < n; ++k) { | ||
points.push(p = a[k].slice()); | ||
absolute(p, k); | ||
} | ||
return lo; | ||
if (i < 0) reverse(points, n); | ||
} | ||
function feature(topology, o) { | ||
return o.type === "GeometryCollection" ? { | ||
type: "FeatureCollection", | ||
features: o.geometries.map(function(o) { return feature$1(topology, o); }) | ||
} : feature$1(topology, o); | ||
function point(p) { | ||
p = p.slice(); | ||
absolute(p, 0); | ||
return p; | ||
} | ||
function feature$1(topology, o) { | ||
var f = { | ||
type: "Feature", | ||
id: o.id, | ||
properties: o.properties || {}, | ||
geometry: object(topology, o) | ||
}; | ||
if (o.id == null) delete f.id; | ||
return f; | ||
function line(arcs) { | ||
var points = []; | ||
for (var i = 0, n = arcs.length; i < n; ++i) arc(arcs[i], points); | ||
if (points.length < 2) points.push(points[0].slice()); | ||
return points; | ||
} | ||
function object(topology, o) { | ||
var absolute = transformAbsolute(topology.transform), | ||
arcs = topology.arcs; | ||
function ring(arcs) { | ||
var points = line(arcs); | ||
while (points.length < 4) points.push(points[0].slice()); | ||
return points; | ||
} | ||
function arc(i, points) { | ||
if (points.length) points.pop(); | ||
for (var a = arcs[i < 0 ? ~i : i], k = 0, n = a.length, p; k < n; ++k) { | ||
points.push(p = a[k].slice()); | ||
absolute(p, k); | ||
} | ||
if (i < 0) reverse(points, n); | ||
} | ||
function polygon(arcs) { | ||
return arcs.map(ring); | ||
} | ||
function point(p) { | ||
p = p.slice(); | ||
absolute(p, 0); | ||
return p; | ||
} | ||
function geometry(o) { | ||
var t = o.type; | ||
return t === "GeometryCollection" ? {type: t, geometries: o.geometries.map(geometry)} | ||
: t in geometryType ? {type: t, coordinates: geometryType[t](o)} | ||
: null; | ||
} | ||
function line(arcs) { | ||
var points = []; | ||
for (var i = 0, n = arcs.length; i < n; ++i) arc(arcs[i], points); | ||
if (points.length < 2) points.push(points[0].slice()); | ||
return points; | ||
} | ||
var geometryType = { | ||
Point: function(o) { return point(o.coordinates); }, | ||
MultiPoint: function(o) { return o.coordinates.map(point); }, | ||
LineString: function(o) { return line(o.arcs); }, | ||
MultiLineString: function(o) { return o.arcs.map(line); }, | ||
Polygon: function(o) { return polygon(o.arcs); }, | ||
MultiPolygon: function(o) { return o.arcs.map(polygon); } | ||
}; | ||
function ring(arcs) { | ||
var points = line(arcs); | ||
while (points.length < 4) points.push(points[0].slice()); | ||
return points; | ||
} | ||
return geometry(o); | ||
} | ||
function polygon(arcs) { | ||
return arcs.map(ring); | ||
} | ||
function stitchArcs(topology, arcs) { | ||
var stitchedArcs = {}, | ||
fragmentByStart = {}, | ||
fragmentByEnd = {}, | ||
fragments = [], | ||
emptyIndex = -1; | ||
function geometry(o) { | ||
var t = o.type; | ||
return t === "GeometryCollection" ? {type: t, geometries: o.geometries.map(geometry)} | ||
: t in geometryType ? {type: t, coordinates: geometryType[t](o)} | ||
: null; | ||
// Stitch empty arcs first, since they may be subsumed by other arcs. | ||
arcs.forEach(function(i, j) { | ||
var arc = topology.arcs[i < 0 ? ~i : i], t; | ||
if (arc.length < 3 && !arc[1][0] && !arc[1][1]) { | ||
t = arcs[++emptyIndex], arcs[emptyIndex] = i, arcs[j] = t; | ||
} | ||
}); | ||
var geometryType = { | ||
Point: function(o) { return point(o.coordinates); }, | ||
MultiPoint: function(o) { return o.coordinates.map(point); }, | ||
LineString: function(o) { return line(o.arcs); }, | ||
MultiLineString: function(o) { return o.arcs.map(line); }, | ||
Polygon: function(o) { return polygon(o.arcs); }, | ||
MultiPolygon: function(o) { return o.arcs.map(polygon); } | ||
}; | ||
arcs.forEach(function(i) { | ||
var e = ends(i), | ||
start = e[0], | ||
end = e[1], | ||
f, g; | ||
return geometry(o); | ||
} | ||
function stitchArcs(topology, arcs) { | ||
var stitchedArcs = {}, | ||
fragmentByStart = {}, | ||
fragmentByEnd = {}, | ||
fragments = [], | ||
emptyIndex = -1; | ||
// Stitch empty arcs first, since they may be subsumed by other arcs. | ||
arcs.forEach(function(i, j) { | ||
var arc = topology.arcs[i < 0 ? ~i : i], t; | ||
if (arc.length < 3 && !arc[1][0] && !arc[1][1]) { | ||
t = arcs[++emptyIndex], arcs[emptyIndex] = i, arcs[j] = t; | ||
if (f = fragmentByEnd[start]) { | ||
delete fragmentByEnd[f.end]; | ||
f.push(i); | ||
f.end = end; | ||
if (g = fragmentByStart[end]) { | ||
delete fragmentByStart[g.start]; | ||
var fg = g === f ? f : f.concat(g); | ||
fragmentByStart[fg.start = f.start] = fragmentByEnd[fg.end = g.end] = fg; | ||
} else { | ||
fragmentByStart[f.start] = fragmentByEnd[f.end] = f; | ||
} | ||
}); | ||
arcs.forEach(function(i) { | ||
var e = ends(i), | ||
start = e[0], | ||
end = e[1], | ||
f, g; | ||
if (f = fragmentByEnd[start]) { | ||
delete fragmentByEnd[f.end]; | ||
f.push(i); | ||
f.end = end; | ||
if (g = fragmentByStart[end]) { | ||
delete fragmentByStart[g.start]; | ||
var fg = g === f ? f : f.concat(g); | ||
fragmentByStart[fg.start = f.start] = fragmentByEnd[fg.end = g.end] = fg; | ||
} else { | ||
fragmentByStart[f.start] = fragmentByEnd[f.end] = f; | ||
} | ||
} else if (f = fragmentByStart[end]) { | ||
delete fragmentByStart[f.start]; | ||
f.unshift(i); | ||
f.start = start; | ||
if (g = fragmentByEnd[start]) { | ||
delete fragmentByEnd[g.end]; | ||
var gf = g === f ? f : g.concat(f); | ||
fragmentByStart[gf.start = g.start] = fragmentByEnd[gf.end = f.end] = gf; | ||
} else { | ||
fragmentByStart[f.start] = fragmentByEnd[f.end] = f; | ||
} | ||
} else if (f = fragmentByStart[end]) { | ||
delete fragmentByStart[f.start]; | ||
f.unshift(i); | ||
f.start = start; | ||
if (g = fragmentByEnd[start]) { | ||
delete fragmentByEnd[g.end]; | ||
var gf = g === f ? f : g.concat(f); | ||
fragmentByStart[gf.start = g.start] = fragmentByEnd[gf.end = f.end] = gf; | ||
} else { | ||
f = [i]; | ||
fragmentByStart[f.start = start] = fragmentByEnd[f.end = end] = f; | ||
fragmentByStart[f.start] = fragmentByEnd[f.end] = f; | ||
} | ||
}); | ||
function ends(i) { | ||
var arc = topology.arcs[i < 0 ? ~i : i], p0 = arc[0], p1; | ||
if (topology.transform) p1 = [0, 0], arc.forEach(function(dp) { p1[0] += dp[0], p1[1] += dp[1]; }); | ||
else p1 = arc[arc.length - 1]; | ||
return i < 0 ? [p1, p0] : [p0, p1]; | ||
} else { | ||
f = [i]; | ||
fragmentByStart[f.start = start] = fragmentByEnd[f.end = end] = f; | ||
} | ||
}); | ||
function flush(fragmentByEnd, fragmentByStart) { | ||
for (var k in fragmentByEnd) { | ||
var f = fragmentByEnd[k]; | ||
delete fragmentByStart[f.start]; | ||
delete f.start; | ||
delete f.end; | ||
f.forEach(function(i) { stitchedArcs[i < 0 ? ~i : i] = 1; }); | ||
fragments.push(f); | ||
} | ||
} | ||
flush(fragmentByEnd, fragmentByStart); | ||
flush(fragmentByStart, fragmentByEnd); | ||
arcs.forEach(function(i) { if (!stitchedArcs[i < 0 ? ~i : i]) fragments.push([i]); }); | ||
return fragments; | ||
function ends(i) { | ||
var arc = topology.arcs[i < 0 ? ~i : i], p0 = arc[0], p1; | ||
if (topology.transform) p1 = [0, 0], arc.forEach(function(dp) { p1[0] += dp[0], p1[1] += dp[1]; }); | ||
else p1 = arc[arc.length - 1]; | ||
return i < 0 ? [p1, p0] : [p0, p1]; | ||
} | ||
function mesh(topology) { | ||
return object(topology, meshArcs.apply(this, arguments)); | ||
function flush(fragmentByEnd, fragmentByStart) { | ||
for (var k in fragmentByEnd) { | ||
var f = fragmentByEnd[k]; | ||
delete fragmentByStart[f.start]; | ||
delete f.start; | ||
delete f.end; | ||
f.forEach(function(i) { stitchedArcs[i < 0 ? ~i : i] = 1; }); | ||
fragments.push(f); | ||
} | ||
} | ||
function meshArcs(topology, o, filter) { | ||
var arcs = []; | ||
flush(fragmentByEnd, fragmentByStart); | ||
flush(fragmentByStart, fragmentByEnd); | ||
arcs.forEach(function(i) { if (!stitchedArcs[i < 0 ? ~i : i]) fragments.push([i]); }); | ||
function arc(i) { | ||
var j = i < 0 ? ~i : i; | ||
(geomsByArc[j] || (geomsByArc[j] = [])).push({i: i, g: geom}); | ||
} | ||
return fragments; | ||
} | ||
function line(arcs) { | ||
arcs.forEach(arc); | ||
} | ||
function mesh(topology) { | ||
return object(topology, meshArcs.apply(this, arguments)); | ||
} | ||
function polygon(arcs) { | ||
arcs.forEach(line); | ||
} | ||
function meshArcs(topology, o, filter) { | ||
var arcs = []; | ||
function geometry(o) { | ||
if (o.type === "GeometryCollection") o.geometries.forEach(geometry); | ||
else if (o.type in geometryType) geom = o, geometryType[o.type](o.arcs); | ||
} | ||
function arc(i) { | ||
var j = i < 0 ? ~i : i; | ||
(geomsByArc[j] || (geomsByArc[j] = [])).push({i: i, g: geom}); | ||
} | ||
if (arguments.length > 1) { | ||
var geomsByArc = [], | ||
geom; | ||
function line(arcs) { | ||
arcs.forEach(arc); | ||
} | ||
var geometryType = { | ||
LineString: line, | ||
MultiLineString: polygon, | ||
Polygon: polygon, | ||
MultiPolygon: function(arcs) { arcs.forEach(polygon); } | ||
}; | ||
function polygon(arcs) { | ||
arcs.forEach(line); | ||
} | ||
geometry(o); | ||
function geometry(o) { | ||
if (o.type === "GeometryCollection") o.geometries.forEach(geometry); | ||
else if (o.type in geometryType) geom = o, geometryType[o.type](o.arcs); | ||
} | ||
geomsByArc.forEach(arguments.length < 3 | ||
? function(geoms) { arcs.push(geoms[0].i); } | ||
: function(geoms) { if (filter(geoms[0].g, geoms[geoms.length - 1].g)) arcs.push(geoms[0].i); }); | ||
} else { | ||
for (var i = 0, n = topology.arcs.length; i < n; ++i) arcs.push(i); | ||
} | ||
if (arguments.length > 1) { | ||
var geomsByArc = [], | ||
geom; | ||
return {type: "MultiLineString", arcs: stitchArcs(topology, arcs)}; | ||
} | ||
var geometryType = { | ||
LineString: line, | ||
MultiLineString: polygon, | ||
Polygon: polygon, | ||
MultiPolygon: function(arcs) { arcs.forEach(polygon); } | ||
}; | ||
function cartesianTriangleArea(triangle) { | ||
var a = triangle[0], b = triangle[1], c = triangle[2]; | ||
return Math.abs((a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1])); | ||
geometry(o); | ||
geomsByArc.forEach(arguments.length < 3 | ||
? function(geoms) { arcs.push(geoms[0].i); } | ||
: function(geoms) { if (filter(geoms[0].g, geoms[geoms.length - 1].g)) arcs.push(geoms[0].i); }); | ||
} else { | ||
for (var i = 0, n = topology.arcs.length; i < n; ++i) arcs.push(i); | ||
} | ||
function ring(ring) { | ||
var i = -1, | ||
n = ring.length, | ||
a, | ||
b = ring[n - 1], | ||
area = 0; | ||
return {type: "MultiLineString", arcs: stitchArcs(topology, arcs)}; | ||
} | ||
while (++i < n) { | ||
a = b; | ||
b = ring[i]; | ||
area += a[0] * b[1] - a[1] * b[0]; | ||
} | ||
function cartesianTriangleArea(triangle) { | ||
var a = triangle[0], b = triangle[1], c = triangle[2]; | ||
return Math.abs((a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1])); | ||
} | ||
return area / 2; | ||
} | ||
function ring(ring) { | ||
var i = -1, | ||
n = ring.length, | ||
a, | ||
b = ring[n - 1], | ||
area = 0; | ||
function merge(topology) { | ||
return object(topology, mergeArcs.apply(this, arguments)); | ||
while (++i < n) { | ||
a = b; | ||
b = ring[i]; | ||
area += a[0] * b[1] - a[1] * b[0]; | ||
} | ||
function mergeArcs(topology, objects) { | ||
var polygonsByArc = {}, | ||
polygons = [], | ||
components = []; | ||
return area / 2; | ||
} | ||
objects.forEach(function(o) { | ||
if (o.type === "Polygon") register(o.arcs); | ||
else if (o.type === "MultiPolygon") o.arcs.forEach(register); | ||
}); | ||
function merge(topology) { | ||
return object(topology, mergeArcs.apply(this, arguments)); | ||
} | ||
function register(polygon) { | ||
polygon.forEach(function(ring$$) { | ||
ring$$.forEach(function(arc) { | ||
(polygonsByArc[arc = arc < 0 ? ~arc : arc] || (polygonsByArc[arc] = [])).push(polygon); | ||
}); | ||
function mergeArcs(topology, objects) { | ||
var polygonsByArc = {}, | ||
polygons = [], | ||
components = []; | ||
objects.forEach(function(o) { | ||
if (o.type === "Polygon") register(o.arcs); | ||
else if (o.type === "MultiPolygon") o.arcs.forEach(register); | ||
}); | ||
function register(polygon) { | ||
polygon.forEach(function(ring$$) { | ||
ring$$.forEach(function(arc) { | ||
(polygonsByArc[arc = arc < 0 ? ~arc : arc] || (polygonsByArc[arc] = [])).push(polygon); | ||
}); | ||
polygons.push(polygon); | ||
} | ||
}); | ||
polygons.push(polygon); | ||
} | ||
function area(ring$$) { | ||
return Math.abs(ring(object(topology, {type: "Polygon", arcs: [ring$$]}).coordinates[0])); | ||
} | ||
function area(ring$$) { | ||
return Math.abs(ring(object(topology, {type: "Polygon", arcs: [ring$$]}).coordinates[0])); | ||
} | ||
polygons.forEach(function(polygon) { | ||
if (!polygon._) { | ||
var component = [], | ||
neighbors = [polygon]; | ||
polygon._ = 1; | ||
components.push(component); | ||
while (polygon = neighbors.pop()) { | ||
component.push(polygon); | ||
polygon.forEach(function(ring$$) { | ||
ring$$.forEach(function(arc) { | ||
polygonsByArc[arc < 0 ? ~arc : arc].forEach(function(polygon) { | ||
if (!polygon._) { | ||
polygon._ = 1; | ||
neighbors.push(polygon); | ||
} | ||
}); | ||
polygons.forEach(function(polygon) { | ||
if (!polygon._) { | ||
var component = [], | ||
neighbors = [polygon]; | ||
polygon._ = 1; | ||
components.push(component); | ||
while (polygon = neighbors.pop()) { | ||
component.push(polygon); | ||
polygon.forEach(function(ring$$) { | ||
ring$$.forEach(function(arc) { | ||
polygonsByArc[arc < 0 ? ~arc : arc].forEach(function(polygon) { | ||
if (!polygon._) { | ||
polygon._ = 1; | ||
neighbors.push(polygon); | ||
} | ||
}); | ||
}); | ||
} | ||
}); | ||
} | ||
}); | ||
} | ||
}); | ||
polygons.forEach(function(polygon) { | ||
delete polygon._; | ||
}); | ||
polygons.forEach(function(polygon) { | ||
delete polygon._; | ||
}); | ||
return { | ||
type: "MultiPolygon", | ||
arcs: components.map(function(polygons) { | ||
var arcs = [], n; | ||
return { | ||
type: "MultiPolygon", | ||
arcs: components.map(function(polygons) { | ||
var arcs = [], n; | ||
// Extract the exterior (unique) arcs. | ||
polygons.forEach(function(polygon) { | ||
polygon.forEach(function(ring$$) { | ||
ring$$.forEach(function(arc) { | ||
if (polygonsByArc[arc < 0 ? ~arc : arc].length < 2) { | ||
arcs.push(arc); | ||
} | ||
}); | ||
// Extract the exterior (unique) arcs. | ||
polygons.forEach(function(polygon) { | ||
polygon.forEach(function(ring$$) { | ||
ring$$.forEach(function(arc) { | ||
if (polygonsByArc[arc < 0 ? ~arc : arc].length < 2) { | ||
arcs.push(arc); | ||
} | ||
}); | ||
}); | ||
}); | ||
// Stitch the arcs into one or more rings. | ||
arcs = stitchArcs(topology, arcs); | ||
// Stitch the arcs into one or more rings. | ||
arcs = stitchArcs(topology, arcs); | ||
// If more than one ring is returned, | ||
// at most one of these rings can be the exterior; | ||
// choose the one with the greatest absolute area. | ||
if ((n = arcs.length) > 1) { | ||
for (var i = 1, k = area(arcs[0]), ki, t; i < n; ++i) { | ||
if ((ki = area(arcs[i])) > k) { | ||
t = arcs[0], arcs[0] = arcs[i], arcs[i] = t, k = ki; | ||
} | ||
// If more than one ring is returned, | ||
// at most one of these rings can be the exterior; | ||
// choose the one with the greatest absolute area. | ||
if ((n = arcs.length) > 1) { | ||
for (var i = 1, k = area(arcs[0]), ki, t; i < n; ++i) { | ||
if ((ki = area(arcs[i])) > k) { | ||
t = arcs[0], arcs[0] = arcs[i], arcs[i] = t, k = ki; | ||
} | ||
} | ||
} | ||
return arcs; | ||
}) | ||
}; | ||
} | ||
return arcs; | ||
}) | ||
}; | ||
} | ||
function neighbors(objects) { | ||
var indexesByArc = {}, // arc index -> array of object indexes | ||
neighbors = objects.map(function() { return []; }); | ||
function neighbors(objects) { | ||
var indexesByArc = {}, // arc index -> array of object indexes | ||
neighbors = objects.map(function() { return []; }); | ||
function line(arcs, i) { | ||
arcs.forEach(function(a) { | ||
if (a < 0) a = ~a; | ||
var o = indexesByArc[a]; | ||
if (o) o.push(i); | ||
else indexesByArc[a] = [i]; | ||
}); | ||
} | ||
function line(arcs, i) { | ||
arcs.forEach(function(a) { | ||
if (a < 0) a = ~a; | ||
var o = indexesByArc[a]; | ||
if (o) o.push(i); | ||
else indexesByArc[a] = [i]; | ||
}); | ||
} | ||
function polygon(arcs, i) { | ||
arcs.forEach(function(arc) { line(arc, i); }); | ||
} | ||
function polygon(arcs, i) { | ||
arcs.forEach(function(arc) { line(arc, i); }); | ||
} | ||
function geometry(o, i) { | ||
if (o.type === "GeometryCollection") o.geometries.forEach(function(o) { geometry(o, i); }); | ||
else if (o.type in geometryType) geometryType[o.type](o.arcs, i); | ||
} | ||
function geometry(o, i) { | ||
if (o.type === "GeometryCollection") o.geometries.forEach(function(o) { geometry(o, i); }); | ||
else if (o.type in geometryType) geometryType[o.type](o.arcs, i); | ||
} | ||
var geometryType = { | ||
LineString: line, | ||
MultiLineString: polygon, | ||
Polygon: polygon, | ||
MultiPolygon: function(arcs, i) { arcs.forEach(function(arc) { polygon(arc, i); }); } | ||
}; | ||
var geometryType = { | ||
LineString: line, | ||
MultiLineString: polygon, | ||
Polygon: polygon, | ||
MultiPolygon: function(arcs, i) { arcs.forEach(function(arc) { polygon(arc, i); }); } | ||
}; | ||
objects.forEach(geometry); | ||
objects.forEach(geometry); | ||
for (var i in indexesByArc) { | ||
for (var indexes = indexesByArc[i], m = indexes.length, j = 0; j < m; ++j) { | ||
for (var k = j + 1; k < m; ++k) { | ||
var ij = indexes[j], ik = indexes[k], n; | ||
if ((n = neighbors[ij])[i = bisect(n, ik)] !== ik) n.splice(i, 0, ik); | ||
if ((n = neighbors[ik])[i = bisect(n, ij)] !== ij) n.splice(i, 0, ij); | ||
} | ||
for (var i in indexesByArc) { | ||
for (var indexes = indexesByArc[i], m = indexes.length, j = 0; j < m; ++j) { | ||
for (var k = j + 1; k < m; ++k) { | ||
var ij = indexes[j], ik = indexes[k], n; | ||
if ((n = neighbors[ij])[i = bisect(n, ik)] !== ik) n.splice(i, 0, ik); | ||
if ((n = neighbors[ik])[i = bisect(n, ij)] !== ij) n.splice(i, 0, ij); | ||
} | ||
} | ||
return neighbors; | ||
} | ||
function compareArea(a, b) { | ||
return a[1][2] - b[1][2]; | ||
} | ||
return neighbors; | ||
} | ||
function minAreaHeap() { | ||
var heap = {}, | ||
array = [], | ||
size = 0; | ||
function compareArea(a, b) { | ||
return a[1][2] - b[1][2]; | ||
} | ||
heap.push = function(object) { | ||
up(array[object._ = size] = object, size++); | ||
return size; | ||
}; | ||
function minAreaHeap() { | ||
var heap = {}, | ||
array = [], | ||
size = 0; | ||
heap.pop = function() { | ||
if (size <= 0) return; | ||
var removed = array[0], object; | ||
if (--size > 0) object = array[size], down(array[object._ = 0] = object, 0); | ||
return removed; | ||
}; | ||
heap.push = function(object) { | ||
up(array[object._ = size] = object, size++); | ||
return size; | ||
}; | ||
heap.remove = function(removed) { | ||
var i = removed._, object; | ||
if (array[i] !== removed) return; // invalid request | ||
if (i !== --size) object = array[size], (compareArea(object, removed) < 0 ? up : down)(array[object._ = i] = object, i); | ||
return i; | ||
}; | ||
heap.pop = function() { | ||
if (size <= 0) return; | ||
var removed = array[0], object; | ||
if (--size > 0) object = array[size], down(array[object._ = 0] = object, 0); | ||
return removed; | ||
}; | ||
function up(object, i) { | ||
while (i > 0) { | ||
var j = ((i + 1) >> 1) - 1, | ||
parent = array[j]; | ||
if (compareArea(object, parent) >= 0) break; | ||
array[parent._ = i] = parent; | ||
array[object._ = i = j] = object; | ||
} | ||
heap.remove = function(removed) { | ||
var i = removed._, object; | ||
if (array[i] !== removed) return; // invalid request | ||
if (i !== --size) object = array[size], (compareArea(object, removed) < 0 ? up : down)(array[object._ = i] = object, i); | ||
return i; | ||
}; | ||
function up(object, i) { | ||
while (i > 0) { | ||
var j = ((i + 1) >> 1) - 1, | ||
parent = array[j]; | ||
if (compareArea(object, parent) >= 0) break; | ||
array[parent._ = i] = parent; | ||
array[object._ = i = j] = object; | ||
} | ||
} | ||
function down(object, i) { | ||
while (true) { | ||
var r = (i + 1) << 1, | ||
l = r - 1, | ||
j = i, | ||
child = array[j]; | ||
if (l < size && compareArea(array[l], child) < 0) child = array[j = l]; | ||
if (r < size && compareArea(array[r], child) < 0) child = array[j = r]; | ||
if (j === i) break; | ||
array[child._ = i] = child; | ||
array[object._ = i = j] = object; | ||
} | ||
function down(object, i) { | ||
while (true) { | ||
var r = (i + 1) << 1, | ||
l = r - 1, | ||
j = i, | ||
child = array[j]; | ||
if (l < size && compareArea(array[l], child) < 0) child = array[j = l]; | ||
if (r < size && compareArea(array[r], child) < 0) child = array[j = r]; | ||
if (j === i) break; | ||
array[child._ = i] = child; | ||
array[object._ = i = j] = object; | ||
} | ||
return heap; | ||
} | ||
function presimplify(topology, triangleArea) { | ||
var absolute = transformAbsolute(topology.transform), | ||
relative = transformRelative(topology.transform), | ||
heap = minAreaHeap(); | ||
return heap; | ||
} | ||
if (!triangleArea) triangleArea = cartesianTriangleArea; | ||
function presimplify(topology, triangleArea) { | ||
var absolute = transformAbsolute(topology.transform), | ||
relative = transformRelative(topology.transform), | ||
heap = minAreaHeap(); | ||
topology.arcs.forEach(function(arc) { | ||
var triangles = [], | ||
maxArea = 0, | ||
triangle, | ||
i, | ||
n, | ||
p; | ||
if (!triangleArea) triangleArea = cartesianTriangleArea; | ||
// To store each point’s effective area, we create a new array rather than | ||
// extending the passed-in point to workaround a Chrome/V8 bug (getting | ||
// stuck in smi mode). For midpoints, the initial effective area of | ||
// Infinity will be computed in the next step. | ||
for (i = 0, n = arc.length; i < n; ++i) { | ||
p = arc[i]; | ||
absolute(arc[i] = [p[0], p[1], Infinity], i); | ||
} | ||
topology.arcs.forEach(function(arc) { | ||
var triangles = [], | ||
maxArea = 0, | ||
triangle, | ||
i, | ||
n, | ||
p; | ||
for (i = 1, n = arc.length - 1; i < n; ++i) { | ||
triangle = arc.slice(i - 1, i + 2); | ||
triangle[1][2] = triangleArea(triangle); | ||
triangles.push(triangle); | ||
heap.push(triangle); | ||
} | ||
// To store each point’s effective area, we create a new array rather than | ||
// extending the passed-in point to workaround a Chrome/V8 bug (getting | ||
// stuck in smi mode). For midpoints, the initial effective area of | ||
// Infinity will be computed in the next step. | ||
for (i = 0, n = arc.length; i < n; ++i) { | ||
p = arc[i]; | ||
absolute(arc[i] = [p[0], p[1], Infinity], i); | ||
} | ||
for (i = 0, n = triangles.length; i < n; ++i) { | ||
triangle = triangles[i]; | ||
triangle.previous = triangles[i - 1]; | ||
triangle.next = triangles[i + 1]; | ||
} | ||
for (i = 1, n = arc.length - 1; i < n; ++i) { | ||
triangle = arc.slice(i - 1, i + 2); | ||
triangle[1][2] = triangleArea(triangle); | ||
triangles.push(triangle); | ||
heap.push(triangle); | ||
} | ||
while (triangle = heap.pop()) { | ||
var previous = triangle.previous, | ||
next = triangle.next; | ||
for (i = 0, n = triangles.length; i < n; ++i) { | ||
triangle = triangles[i]; | ||
triangle.previous = triangles[i - 1]; | ||
triangle.next = triangles[i + 1]; | ||
} | ||
// If the area of the current point is less than that of the previous point | ||
// to be eliminated, use the latter's area instead. This ensures that the | ||
// current point cannot be eliminated without eliminating previously- | ||
// eliminated points. | ||
if (triangle[1][2] < maxArea) triangle[1][2] = maxArea; | ||
else maxArea = triangle[1][2]; | ||
while (triangle = heap.pop()) { | ||
var previous = triangle.previous, | ||
next = triangle.next; | ||
if (previous) { | ||
previous.next = next; | ||
previous[2] = triangle[2]; | ||
update(previous); | ||
} | ||
// If the area of the current point is less than that of the previous point | ||
// to be eliminated, use the latter's area instead. This ensures that the | ||
// current point cannot be eliminated without eliminating previously- | ||
// eliminated points. | ||
if (triangle[1][2] < maxArea) triangle[1][2] = maxArea; | ||
else maxArea = triangle[1][2]; | ||
if (next) { | ||
next.previous = previous; | ||
next[0] = triangle[0]; | ||
update(next); | ||
} | ||
if (previous) { | ||
previous.next = next; | ||
previous[2] = triangle[2]; | ||
update(previous); | ||
} | ||
arc.forEach(relative); | ||
}); | ||
function update(triangle) { | ||
heap.remove(triangle); | ||
triangle[1][2] = triangleArea(triangle); | ||
heap.push(triangle); | ||
if (next) { | ||
next.previous = previous; | ||
next[0] = triangle[0]; | ||
update(next); | ||
} | ||
} | ||
return topology; | ||
arc.forEach(relative); | ||
}); | ||
function update(triangle) { | ||
heap.remove(triangle); | ||
triangle[1][2] = triangleArea(triangle); | ||
heap.push(triangle); | ||
} | ||
var version = "1.6.26"; | ||
return topology; | ||
} | ||
exports.version = version; | ||
exports.mesh = mesh; | ||
exports.meshArcs = meshArcs; | ||
exports.merge = merge; | ||
exports.mergeArcs = mergeArcs; | ||
exports.feature = feature; | ||
exports.neighbors = neighbors; | ||
exports.presimplify = presimplify; | ||
var version = "1.6.27"; | ||
})); | ||
exports.version = version; | ||
exports.mesh = mesh; | ||
exports.meshArcs = meshArcs; | ||
exports.merge = merge; | ||
exports.mergeArcs = mergeArcs; | ||
exports.feature = feature; | ||
exports.neighbors = neighbors; | ||
exports.presimplify = presimplify; | ||
Object.defineProperty(exports, '__esModule', { value: true }); | ||
}))); |
@@ -1,1 +0,1 @@ | ||
!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(n.topojson=n.topojson||{})}(this,function(n){"use strict";function t(){}function r(n){if(!n)return t;var r,e,o=n.scale[0],i=n.scale[1],u=n.translate[0],f=n.translate[1];return function(n,t){t||(r=e=0),n[0]=(r+=n[0])*o+u,n[1]=(e+=n[1])*i+f}}function e(n){if(!n)return t;var r,e,o=n.scale[0],i=n.scale[1],u=n.translate[0],f=n.translate[1];return function(n,t){t||(r=e=0);var c=Math.round((n[0]-u)/o),a=Math.round((n[1]-f)/i);n[0]=c-r,n[1]=a-e,r=c,e=a}}function o(n,t){for(var r,e=n.length,o=e-t;o<--e;)r=n[o],n[o++]=n[e],n[e]=r}function i(n,t){for(var r=0,e=n.length;e>r;){var o=r+e>>>1;n[o]<t?r=o+1:e=o}return r}function u(n,t){return"GeometryCollection"===t.type?{type:"FeatureCollection",features:t.geometries.map(function(t){return f(n,t)})}:f(n,t)}function f(n,t){var r={type:"Feature",id:t.id,properties:t.properties||{},geometry:c(n,t)};return null==t.id&&delete r.id,r}function c(n,t){function e(n,t){t.length&&t.pop();for(var r,e=l[0>n?~n:n],i=0,u=e.length;u>i;++i)t.push(r=e[i].slice()),s(r,i);0>n&&o(t,u)}function i(n){return n=n.slice(),s(n,0),n}function u(n){for(var t=[],r=0,o=n.length;o>r;++r)e(n[r],t);return t.length<2&&t.push(t[0].slice()),t}function f(n){for(var t=u(n);t.length<4;)t.push(t[0].slice());return t}function c(n){return n.map(f)}function a(n){var t=n.type;return"GeometryCollection"===t?{type:t,geometries:n.geometries.map(a)}:t in h?{type:t,coordinates:h[t](n)}:null}var s=r(n.transform),l=n.arcs,h={Point:function(n){return i(n.coordinates)},MultiPoint:function(n){return n.coordinates.map(i)},LineString:function(n){return u(n.arcs)},MultiLineString:function(n){return n.arcs.map(u)},Polygon:function(n){return c(n.arcs)},MultiPolygon:function(n){return n.arcs.map(c)}};return a(t)}function a(n,t){function r(t){var r,e=n.arcs[0>t?~t:t],o=e[0];return n.transform?(r=[0,0],e.forEach(function(n){r[0]+=n[0],r[1]+=n[1]})):r=e[e.length-1],0>t?[r,o]:[o,r]}function e(n,t){for(var r in n){var e=n[r];delete t[e.start],delete e.start,delete e.end,e.forEach(function(n){o[0>n?~n:n]=1}),f.push(e)}}var o={},i={},u={},f=[],c=-1;return t.forEach(function(r,e){var o,i=n.arcs[0>r?~r:r];i.length<3&&!i[1][0]&&!i[1][1]&&(o=t[++c],t[c]=r,t[e]=o)}),t.forEach(function(n){var t,e,o=r(n),f=o[0],c=o[1];if(t=u[f])if(delete u[t.end],t.push(n),t.end=c,e=i[c]){delete i[e.start];var a=e===t?t:t.concat(e);i[a.start=t.start]=u[a.end=e.end]=a}else i[t.start]=u[t.end]=t;else if(t=i[c])if(delete i[t.start],t.unshift(n),t.start=f,e=u[f]){delete u[e.end];var s=e===t?t:e.concat(t);i[s.start=e.start]=u[s.end=t.end]=s}else i[t.start]=u[t.end]=t;else t=[n],i[t.start=f]=u[t.end=c]=t}),e(u,i),e(i,u),t.forEach(function(n){o[0>n?~n:n]||f.push([n])}),f}function s(n){return c(n,l.apply(this,arguments))}function l(n,t,r){function e(n){var t=0>n?~n:n;(s[t]||(s[t]=[])).push({i:n,g:c})}function o(n){n.forEach(e)}function i(n){n.forEach(o)}function u(n){"GeometryCollection"===n.type?n.geometries.forEach(u):n.type in l&&(c=n,l[n.type](n.arcs))}var f=[];if(arguments.length>1){var c,s=[],l={LineString:o,MultiLineString:i,Polygon:i,MultiPolygon:function(n){n.forEach(i)}};u(t),s.forEach(arguments.length<3?function(n){f.push(n[0].i)}:function(n){r(n[0].g,n[n.length-1].g)&&f.push(n[0].i)})}else for(var h=0,p=n.arcs.length;p>h;++h)f.push(h);return{type:"MultiLineString",arcs:a(n,f)}}function h(n){var t=n[0],r=n[1],e=n[2];return Math.abs((t[0]-e[0])*(r[1]-t[1])-(t[0]-r[0])*(e[1]-t[1]))}function p(n){for(var t,r=-1,e=n.length,o=n[e-1],i=0;++r<e;)t=o,o=n[r],i+=t[0]*o[1]-t[1]*o[0];return i/2}function v(n){return c(n,g.apply(this,arguments))}function g(n,t){function r(n){n.forEach(function(t){t.forEach(function(t){(o[t=0>t?~t:t]||(o[t]=[])).push(n)})}),i.push(n)}function e(t){return Math.abs(p(c(n,{type:"Polygon",arcs:[t]}).coordinates[0]))}var o={},i=[],u=[];return t.forEach(function(n){"Polygon"===n.type?r(n.arcs):"MultiPolygon"===n.type&&n.arcs.forEach(r)}),i.forEach(function(n){if(!n._){var t=[],r=[n];for(n._=1,u.push(t);n=r.pop();)t.push(n),n.forEach(function(n){n.forEach(function(n){o[0>n?~n:n].forEach(function(n){n._||(n._=1,r.push(n))})})})}}),i.forEach(function(n){delete n._}),{type:"MultiPolygon",arcs:u.map(function(t){var r,i=[];if(t.forEach(function(n){n.forEach(function(n){n.forEach(function(n){o[0>n?~n:n].length<2&&i.push(n)})})}),i=a(n,i),(r=i.length)>1)for(var u,f,c=1,s=e(i[0]);r>c;++c)(u=e(i[c]))>s&&(f=i[0],i[0]=i[c],i[c]=f,s=u);return i})}}function y(n){function t(n,t){n.forEach(function(n){0>n&&(n=~n);var r=o[n];r?r.push(t):o[n]=[t]})}function r(n,r){n.forEach(function(n){t(n,r)})}function e(n,t){"GeometryCollection"===n.type?n.geometries.forEach(function(n){e(n,t)}):n.type in f&&f[n.type](n.arcs,t)}var o={},u=n.map(function(){return[]}),f={LineString:t,MultiLineString:r,Polygon:r,MultiPolygon:function(n,t){n.forEach(function(n){r(n,t)})}};n.forEach(e);for(var c in o)for(var a=o[c],s=a.length,l=0;s>l;++l)for(var h=l+1;s>h;++h){var p,v=a[l],g=a[h];(p=u[v])[c=i(p,g)]!==g&&p.splice(c,0,g),(p=u[g])[c=i(p,v)]!==v&&p.splice(c,0,v)}return u}function d(n,t){return n[1][2]-t[1][2]}function m(){function n(n,t){for(;t>0;){var r=(t+1>>1)-1,o=e[r];if(d(n,o)>=0)break;e[o._=t]=o,e[n._=t=r]=n}}function t(n,t){for(;;){var r=t+1<<1,i=r-1,u=t,f=e[u];if(o>i&&d(e[i],f)<0&&(f=e[u=i]),o>r&&d(e[r],f)<0&&(f=e[u=r]),u===t)break;e[f._=t]=f,e[n._=t=u]=n}}var r={},e=[],o=0;return r.push=function(t){return n(e[t._=o]=t,o++),o},r.pop=function(){if(!(0>=o)){var n,r=e[0];return--o>0&&(n=e[o],t(e[n._=0]=n,0)),r}},r.remove=function(r){var i,u=r._;if(e[u]===r)return u!==--o&&(i=e[o],(d(i,r)<0?n:t)(e[i._=u]=i,u)),u},r}function E(n,t){function o(n){f.remove(n),n[1][2]=t(n),f.push(n)}var i=r(n.transform),u=e(n.transform),f=m();return t||(t=h),n.arcs.forEach(function(n){var r,e,c,a,s=[],l=0;for(e=0,c=n.length;c>e;++e)a=n[e],i(n[e]=[a[0],a[1],1/0],e);for(e=1,c=n.length-1;c>e;++e)r=n.slice(e-1,e+2),r[1][2]=t(r),s.push(r),f.push(r);for(e=0,c=s.length;c>e;++e)r=s[e],r.previous=s[e-1],r.next=s[e+1];for(;r=f.pop();){var h=r.previous,p=r.next;r[1][2]<l?r[1][2]=l:l=r[1][2],h&&(h.next=p,h[2]=r[2],o(h)),p&&(p.previous=h,p[0]=r[0],o(p))}n.forEach(u)}),n}var M="1.6.26";n.version=M,n.mesh=s,n.meshArcs=l,n.merge=v,n.mergeArcs=g,n.feature=u,n.neighbors=y,n.presimplify=E}); | ||
!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t(n.topojson=n.topojson||{})}(this,function(n){"use strict";function t(){}function r(n){if(!n)return t;var r,e,o=n.scale[0],i=n.scale[1],u=n.translate[0],f=n.translate[1];return function(n,t){t||(r=e=0),n[0]=(r+=n[0])*o+u,n[1]=(e+=n[1])*i+f}}function e(n){if(!n)return t;var r,e,o=n.scale[0],i=n.scale[1],u=n.translate[0],f=n.translate[1];return function(n,t){t||(r=e=0);var c=Math.round((n[0]-u)/o),a=Math.round((n[1]-f)/i);n[0]=c-r,n[1]=a-e,r=c,e=a}}function o(n,t){for(var r,e=n.length,o=e-t;o<--e;)r=n[o],n[o++]=n[e],n[e]=r}function i(n,t){for(var r=0,e=n.length;r<e;){var o=r+e>>>1;n[o]<t?r=o+1:e=o}return r}function u(n,t){return"GeometryCollection"===t.type?{type:"FeatureCollection",features:t.geometries.map(function(t){return f(n,t)})}:f(n,t)}function f(n,t){var r={type:"Feature",id:t.id,properties:t.properties||{},geometry:c(n,t)};return null==t.id&&delete r.id,r}function c(n,t){function e(n,t){t.length&&t.pop();for(var r,e=l[n<0?~n:n],i=0,u=e.length;i<u;++i)t.push(r=e[i].slice()),s(r,i);n<0&&o(t,u)}function i(n){return n=n.slice(),s(n,0),n}function u(n){for(var t=[],r=0,o=n.length;r<o;++r)e(n[r],t);return t.length<2&&t.push(t[0].slice()),t}function f(n){for(var t=u(n);t.length<4;)t.push(t[0].slice());return t}function c(n){return n.map(f)}function a(n){var t=n.type;return"GeometryCollection"===t?{type:t,geometries:n.geometries.map(a)}:t in h?{type:t,coordinates:h[t](n)}:null}var s=r(n.transform),l=n.arcs,h={Point:function(n){return i(n.coordinates)},MultiPoint:function(n){return n.coordinates.map(i)},LineString:function(n){return u(n.arcs)},MultiLineString:function(n){return n.arcs.map(u)},Polygon:function(n){return c(n.arcs)},MultiPolygon:function(n){return n.arcs.map(c)}};return a(t)}function a(n,t){function r(t){var r,e=n.arcs[t<0?~t:t],o=e[0];return n.transform?(r=[0,0],e.forEach(function(n){r[0]+=n[0],r[1]+=n[1]})):r=e[e.length-1],t<0?[r,o]:[o,r]}function e(n,t){for(var r in n){var e=n[r];delete t[e.start],delete e.start,delete e.end,e.forEach(function(n){o[n<0?~n:n]=1}),f.push(e)}}var o={},i={},u={},f=[],c=-1;return t.forEach(function(r,e){var o,i=n.arcs[r<0?~r:r];i.length<3&&!i[1][0]&&!i[1][1]&&(o=t[++c],t[c]=r,t[e]=o)}),t.forEach(function(n){var t,e,o=r(n),f=o[0],c=o[1];if(t=u[f])if(delete u[t.end],t.push(n),t.end=c,e=i[c]){delete i[e.start];var a=e===t?t:t.concat(e);i[a.start=t.start]=u[a.end=e.end]=a}else i[t.start]=u[t.end]=t;else if(t=i[c])if(delete i[t.start],t.unshift(n),t.start=f,e=u[f]){delete u[e.end];var s=e===t?t:e.concat(t);i[s.start=e.start]=u[s.end=t.end]=s}else i[t.start]=u[t.end]=t;else t=[n],i[t.start=f]=u[t.end=c]=t}),e(u,i),e(i,u),t.forEach(function(n){o[n<0?~n:n]||f.push([n])}),f}function s(n){return c(n,l.apply(this,arguments))}function l(n,t,r){function e(n){var t=n<0?~n:n;(s[t]||(s[t]=[])).push({i:n,g:c})}function o(n){n.forEach(e)}function i(n){n.forEach(o)}function u(n){"GeometryCollection"===n.type?n.geometries.forEach(u):n.type in l&&(c=n,l[n.type](n.arcs))}var f=[];if(arguments.length>1){var c,s=[],l={LineString:o,MultiLineString:i,Polygon:i,MultiPolygon:function(n){n.forEach(i)}};u(t),s.forEach(arguments.length<3?function(n){f.push(n[0].i)}:function(n){r(n[0].g,n[n.length-1].g)&&f.push(n[0].i)})}else for(var h=0,p=n.arcs.length;h<p;++h)f.push(h);return{type:"MultiLineString",arcs:a(n,f)}}function h(n){var t=n[0],r=n[1],e=n[2];return Math.abs((t[0]-e[0])*(r[1]-t[1])-(t[0]-r[0])*(e[1]-t[1]))}function p(n){for(var t,r=-1,e=n.length,o=n[e-1],i=0;++r<e;)t=o,o=n[r],i+=t[0]*o[1]-t[1]*o[0];return i/2}function v(n){return c(n,g.apply(this,arguments))}function g(n,t){function r(n){n.forEach(function(t){t.forEach(function(t){(o[t=t<0?~t:t]||(o[t]=[])).push(n)})}),i.push(n)}function e(t){return Math.abs(p(c(n,{type:"Polygon",arcs:[t]}).coordinates[0]))}var o={},i=[],u=[];return t.forEach(function(n){"Polygon"===n.type?r(n.arcs):"MultiPolygon"===n.type&&n.arcs.forEach(r)}),i.forEach(function(n){if(!n._){var t=[],r=[n];for(n._=1,u.push(t);n=r.pop();)t.push(n),n.forEach(function(n){n.forEach(function(n){o[n<0?~n:n].forEach(function(n){n._||(n._=1,r.push(n))})})})}}),i.forEach(function(n){delete n._}),{type:"MultiPolygon",arcs:u.map(function(t){var r,i=[];if(t.forEach(function(n){n.forEach(function(n){n.forEach(function(n){o[n<0?~n:n].length<2&&i.push(n)})})}),i=a(n,i),(r=i.length)>1)for(var u,f,c=1,s=e(i[0]);c<r;++c)(u=e(i[c]))>s&&(f=i[0],i[0]=i[c],i[c]=f,s=u);return i})}}function d(n){function t(n,t){n.forEach(function(n){n<0&&(n=~n);var r=o[n];r?r.push(t):o[n]=[t]})}function r(n,r){n.forEach(function(n){t(n,r)})}function e(n,t){"GeometryCollection"===n.type?n.geometries.forEach(function(n){e(n,t)}):n.type in f&&f[n.type](n.arcs,t)}var o={},u=n.map(function(){return[]}),f={LineString:t,MultiLineString:r,Polygon:r,MultiPolygon:function(n,t){n.forEach(function(n){r(n,t)})}};n.forEach(e);for(var c in o)for(var a=o[c],s=a.length,l=0;l<s;++l)for(var h=l+1;h<s;++h){var p,v=a[l],g=a[h];(p=u[v])[c=i(p,g)]!==g&&p.splice(c,0,g),(p=u[g])[c=i(p,v)]!==v&&p.splice(c,0,v)}return u}function y(n,t){return n[1][2]-t[1][2]}function m(){function n(n,t){for(;t>0;){var r=(t+1>>1)-1,o=e[r];if(y(n,o)>=0)break;e[o._=t]=o,e[n._=t=r]=n}}function t(n,t){for(;;){var r=t+1<<1,i=r-1,u=t,f=e[u];if(i<o&&y(e[i],f)<0&&(f=e[u=i]),r<o&&y(e[r],f)<0&&(f=e[u=r]),u===t)break;e[f._=t]=f,e[n._=t=u]=n}}var r={},e=[],o=0;return r.push=function(t){return n(e[t._=o]=t,o++),o},r.pop=function(){if(!(o<=0)){var n,r=e[0];return--o>0&&(n=e[o],t(e[n._=0]=n,0)),r}},r.remove=function(r){var i,u=r._;if(e[u]===r)return u!==--o&&(i=e[o],(y(i,r)<0?n:t)(e[i._=u]=i,u)),u},r}function E(n,t){function o(n){f.remove(n),n[1][2]=t(n),f.push(n)}var i=r(n.transform),u=e(n.transform),f=m();return t||(t=h),n.arcs.forEach(function(n){var r,e,c,a,s=[],l=0;for(e=0,c=n.length;e<c;++e)a=n[e],i(n[e]=[a[0],a[1],1/0],e);for(e=1,c=n.length-1;e<c;++e)r=n.slice(e-1,e+2),r[1][2]=t(r),s.push(r),f.push(r);for(e=0,c=s.length;e<c;++e)r=s[e],r.previous=s[e-1],r.next=s[e+1];for(;r=f.pop();){var h=r.previous,p=r.next;r[1][2]<l?r[1][2]=l:l=r[1][2],h&&(h.next=p,h[2]=r[2],o(h)),p&&(p.previous=h,p[0]=r[0],o(p))}n.forEach(u)}),n}var M="1.6.27";n.version=M,n.mesh=s,n.meshArcs=l,n.merge=v,n.mergeArcs=g,n.feature=u,n.neighbors=d,n.presimplify=E,Object.defineProperty(n,"__esModule",{value:!0})}); |
{ | ||
"name": "topojson", | ||
"version": "1.6.26", | ||
"version": "1.6.27", | ||
"description": "An extension to GeoJSON that encodes topology.", | ||
@@ -45,3 +45,4 @@ "keywords": [ | ||
"devDependencies": { | ||
"rollup": "0.26", | ||
"eslint": "3", | ||
"rollup": "0.34", | ||
"tape": "4", | ||
@@ -48,0 +49,0 @@ "uglify-js": "2", |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
2710
126029
6