mapshaper 0.5.92 → 0.5.95
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/CHANGELOG.md +1319 -0
- package/mapshaper.js +114 -19
- package/package.json +1 -1
- package/www/manifest.js +7 -1
- package/www/mapshaper-gui.js +1660 -168
- package/www/mapshaper.js +114 -19
- package/www/nacis/Makefile +0 -22
- package/www/nacis/Makefile.txt +0 -22
- package/www/nacis/images/close.png +0 -0
- package/www/nacis/images/eye.png +0 -0
- package/www/nacis/images/eye2.png +0 -0
- package/www/nacis/index.html +0 -262
- package/www/nacis/manifest.js +0 -27
- package/www/nacis/map.svg +0 -12308
package/www/mapshaper.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
(function () {
|
|
2
2
|
|
|
3
|
-
var VERSION = "0.5.
|
|
3
|
+
var VERSION = "0.5.94";
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
var utils = /*#__PURE__*/Object.freeze({
|
|
@@ -994,15 +994,23 @@
|
|
|
994
994
|
}
|
|
995
995
|
|
|
996
996
|
function copyElements(src, i, dest, j, n, rev) {
|
|
997
|
-
|
|
997
|
+
var same = src == dest || src.buffer && src.buffer == dest.buffer;
|
|
998
998
|
var inc = 1,
|
|
999
|
-
offs = 0
|
|
999
|
+
offs = 0,
|
|
1000
|
+
k;
|
|
1000
1001
|
if (rev) {
|
|
1002
|
+
if (same) error('copy error');
|
|
1001
1003
|
inc = -1;
|
|
1002
1004
|
offs = n - 1;
|
|
1003
1005
|
}
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
+
if (same && j > i) {
|
|
1007
|
+
for (k=n-1; k>=0; k--) {
|
|
1008
|
+
dest[j + k] = src[i + k];
|
|
1009
|
+
}
|
|
1010
|
+
} else {
|
|
1011
|
+
for (k=0; k<n; k++, offs += inc) {
|
|
1012
|
+
dest[k + j] = src[i + offs];
|
|
1013
|
+
}
|
|
1006
1014
|
}
|
|
1007
1015
|
}
|
|
1008
1016
|
|
|
@@ -1756,6 +1764,69 @@
|
|
|
1756
1764
|
return [xmin, ymin, xmax, ymax];
|
|
1757
1765
|
}
|
|
1758
1766
|
|
|
1767
|
+
function deleteVertex(arcs, i) {
|
|
1768
|
+
var data = arcs.getVertexData();
|
|
1769
|
+
var nn = data.nn;
|
|
1770
|
+
var n = data.xx.length;
|
|
1771
|
+
// avoid re-allocating memory
|
|
1772
|
+
var xx2 = new Float64Array(data.xx.buffer, 0, n-1);
|
|
1773
|
+
var yy2 = new Float64Array(data.yy.buffer, 0, n-1);
|
|
1774
|
+
var count = 0;
|
|
1775
|
+
var found = false;
|
|
1776
|
+
for (var j=0; j<nn.length; j++) {
|
|
1777
|
+
count += nn[j];
|
|
1778
|
+
if (count >= i && !found) { // TODO: confirm this
|
|
1779
|
+
nn[j] = nn[j] - 1;
|
|
1780
|
+
found = true;
|
|
1781
|
+
}
|
|
1782
|
+
}
|
|
1783
|
+
utils.copyElements(data.xx, 0, xx2, 0, i);
|
|
1784
|
+
utils.copyElements(data.yy, 0, yy2, 0, i);
|
|
1785
|
+
utils.copyElements(data.xx, i+1, xx2, i, n-i-1);
|
|
1786
|
+
utils.copyElements(data.yy, i+1, yy2, i, n-i-1);
|
|
1787
|
+
arcs.updateVertexData(nn, xx2, yy2, null);
|
|
1788
|
+
}
|
|
1789
|
+
|
|
1790
|
+
function insertVertex(arcs, i, p) {
|
|
1791
|
+
// TODO: add extra bytes to the buffers, to reduce new memory allocation
|
|
1792
|
+
var data = arcs.getVertexData();
|
|
1793
|
+
var nn = data.nn;
|
|
1794
|
+
var n = data.xx.length;
|
|
1795
|
+
var count = 0;
|
|
1796
|
+
var found = false;
|
|
1797
|
+
var xx2, yy2;
|
|
1798
|
+
// avoid re-allocating memory on each insertion
|
|
1799
|
+
if (data.xx.buffer.byteLength >= data.xx.length * 8 + 8) {
|
|
1800
|
+
xx2 = new Float64Array(data.xx.buffer, 0, n+1);
|
|
1801
|
+
yy2 = new Float64Array(data.yy.buffer, 0, n+1);
|
|
1802
|
+
} else {
|
|
1803
|
+
xx2 = new Float64Array(new ArrayBuffer((n + 20) * 8), 0, n+1);
|
|
1804
|
+
yy2 = new Float64Array(new ArrayBuffer((n + 20) * 8), 0, n+1);
|
|
1805
|
+
}
|
|
1806
|
+
for (var j=0; j<nn.length; j++) {
|
|
1807
|
+
count += nn[j];
|
|
1808
|
+
if (count >= i && !found) { // TODO: confirm this
|
|
1809
|
+
nn[j] = nn[j] + 1;
|
|
1810
|
+
found = true;
|
|
1811
|
+
}
|
|
1812
|
+
}
|
|
1813
|
+
utils.copyElements(data.xx, 0, xx2, 0, i);
|
|
1814
|
+
utils.copyElements(data.yy, 0, yy2, 0, i);
|
|
1815
|
+
utils.copyElements(data.xx, i, xx2, i+1, n-i);
|
|
1816
|
+
utils.copyElements(data.yy, i, yy2, i+1, n-i);
|
|
1817
|
+
xx2[i] = p[0];
|
|
1818
|
+
yy2[i] = p[1];
|
|
1819
|
+
arcs.updateVertexData(nn, xx2, yy2, null);
|
|
1820
|
+
}
|
|
1821
|
+
|
|
1822
|
+
var ArcUtils = /*#__PURE__*/Object.freeze({
|
|
1823
|
+
__proto__: null,
|
|
1824
|
+
absArcId: absArcId,
|
|
1825
|
+
calcArcBounds: calcArcBounds,
|
|
1826
|
+
deleteVertex: deleteVertex,
|
|
1827
|
+
insertVertex: insertVertex
|
|
1828
|
+
});
|
|
1829
|
+
|
|
1759
1830
|
var WGS84 = {
|
|
1760
1831
|
// https://en.wikipedia.org/wiki/Earth_radius
|
|
1761
1832
|
SEMIMAJOR_AXIS: 6378137,
|
|
@@ -4922,6 +4993,7 @@
|
|
|
4922
4993
|
this._n = 0;
|
|
4923
4994
|
this.x = 0;
|
|
4924
4995
|
this.y = 0;
|
|
4996
|
+
this.i = -1;
|
|
4925
4997
|
}
|
|
4926
4998
|
|
|
4927
4999
|
ShapeIter.prototype.hasNext = function() {
|
|
@@ -4932,6 +5004,7 @@
|
|
|
4932
5004
|
if (arc.hasNext()) {
|
|
4933
5005
|
this.x = arc.x;
|
|
4934
5006
|
this.y = arc.y;
|
|
5007
|
+
this.i = arc.i;
|
|
4935
5008
|
return true;
|
|
4936
5009
|
}
|
|
4937
5010
|
this.nextArc();
|
|
@@ -5498,6 +5571,8 @@
|
|
|
5498
5571
|
}
|
|
5499
5572
|
};
|
|
5500
5573
|
|
|
5574
|
+
this.isFlat = function() { return !_zz; };
|
|
5575
|
+
|
|
5501
5576
|
this.getRetainedInterval = function() {
|
|
5502
5577
|
return _zlimit;
|
|
5503
5578
|
};
|
|
@@ -9386,6 +9461,9 @@
|
|
|
9386
9461
|
return rec && (rec[name] === val);
|
|
9387
9462
|
});
|
|
9388
9463
|
};
|
|
9464
|
+
obj.file_exists = function(name) {
|
|
9465
|
+
return cli.isFile(name);
|
|
9466
|
+
};
|
|
9389
9467
|
return obj;
|
|
9390
9468
|
}
|
|
9391
9469
|
|
|
@@ -23447,7 +23525,16 @@ ${svg}
|
|
|
23447
23525
|
// should be in gui-model.js, moved here for testing
|
|
23448
23526
|
this.getActiveLayer = function() {
|
|
23449
23527
|
var targ = (this.getDefaultTargets() || [])[0];
|
|
23450
|
-
|
|
23528
|
+
// var lyr = targ.layers[0];
|
|
23529
|
+
// Reasons to select the last layer of a multi-layer target:
|
|
23530
|
+
// * This layer was imported last
|
|
23531
|
+
// * This layer is displayed on top of other layers
|
|
23532
|
+
// * This layer is at the top of the layers list
|
|
23533
|
+
// * In TopoJSON input, it makes sense to think of the last object/layer
|
|
23534
|
+
// as the topmost one -- it corresponds to the painter's algorithm and
|
|
23535
|
+
// the way that objects are ordered in SVG.
|
|
23536
|
+
var lyr = targ.layers[targ.layers.length - 1];
|
|
23537
|
+
return targ ? {layer: lyr, dataset: targ.dataset} : null;
|
|
23451
23538
|
};
|
|
23452
23539
|
|
|
23453
23540
|
function layerObject(lyr, dataset) {
|
|
@@ -34968,16 +35055,7 @@ ${svg}
|
|
|
34968
35055
|
return findVertexIds(p2.x, p2.y, arcs);
|
|
34969
35056
|
}
|
|
34970
35057
|
|
|
34971
|
-
// Given a location @p (e.g. corresponding to the mouse pointer location),
|
|
34972
|
-
// find the midpoint of two vertices on @shp suitable for inserting a new vertex,
|
|
34973
|
-
// but only if:
|
|
34974
|
-
// 1. point @p is closer to the midpoint than either adjacent vertex
|
|
34975
|
-
// 2. the segment containing @p is longer than a minimum distance in pixels.
|
|
34976
|
-
//
|
|
34977
|
-
function findInsertionPoint(p, shp, arcs, pixelSize) {
|
|
34978
|
-
var p2 = findNearestVertex(p[0], p[1], shp, arcs);
|
|
34979
35058
|
|
|
34980
|
-
}
|
|
34981
35059
|
|
|
34982
35060
|
function snapVerticesToPoint(ids, p, arcs, final) {
|
|
34983
35061
|
ids.forEach(function(idx) {
|
|
@@ -35058,7 +35136,7 @@ ${svg}
|
|
|
35058
35136
|
function findNearestVertex(x, y, shp, arcs, spherical) {
|
|
35059
35137
|
var calcLen = spherical ? geom.greatCircleDistance : geom.distance2D,
|
|
35060
35138
|
minLen = Infinity,
|
|
35061
|
-
minX, minY, dist, iter;
|
|
35139
|
+
minX, minY, vId, dist, iter;
|
|
35062
35140
|
for (var i=0; i<shp.length; i++) {
|
|
35063
35141
|
iter = arcs.getShapeIter(shp[i]);
|
|
35064
35142
|
while (iter.hasNext()) {
|
|
@@ -35067,16 +35145,31 @@ ${svg}
|
|
|
35067
35145
|
minLen = dist;
|
|
35068
35146
|
minX = iter.x;
|
|
35069
35147
|
minY = iter.y;
|
|
35148
|
+
vId = iter.i;
|
|
35070
35149
|
}
|
|
35071
35150
|
}
|
|
35072
35151
|
}
|
|
35073
|
-
return minLen < Infinity ? {x: minX, y: minY} : null;
|
|
35152
|
+
return minLen < Infinity ? {x: minX, y: minY, i: vId} : null;
|
|
35153
|
+
}
|
|
35154
|
+
|
|
35155
|
+
// v: vertex in {x, y, i} format
|
|
35156
|
+
function findAdjacentVertex(v, shp, arcs, offs) {
|
|
35157
|
+
var p, i;
|
|
35158
|
+
var arcEnd = offs == 1 && vertexIsArcEnd(v.i, arcs);
|
|
35159
|
+
var arcStart = offs == -1 && vertexIsArcStart(v.i, arcs);
|
|
35160
|
+
if (arcEnd || arcStart) return null;
|
|
35161
|
+
i = v.i + offs;
|
|
35162
|
+
p = getVertexCoords(i, arcs);
|
|
35163
|
+
return {
|
|
35164
|
+
i: i,
|
|
35165
|
+
x: p[0],
|
|
35166
|
+
y: p[1]
|
|
35167
|
+
};
|
|
35074
35168
|
}
|
|
35075
35169
|
|
|
35076
35170
|
var VertexUtils = /*#__PURE__*/Object.freeze({
|
|
35077
35171
|
__proto__: null,
|
|
35078
35172
|
findNearestVertices: findNearestVertices,
|
|
35079
|
-
findInsertionPoint: findInsertionPoint,
|
|
35080
35173
|
snapVerticesToPoint: snapVerticesToPoint,
|
|
35081
35174
|
snapPointToArcEndpoint: snapPointToArcEndpoint,
|
|
35082
35175
|
findVertexIds: findVertexIds,
|
|
@@ -35084,7 +35177,8 @@ ${svg}
|
|
|
35084
35177
|
vertexIsArcEnd: vertexIsArcEnd,
|
|
35085
35178
|
vertexIsArcStart: vertexIsArcStart,
|
|
35086
35179
|
setVertexCoords: setVertexCoords,
|
|
35087
|
-
findNearestVertex: findNearestVertex
|
|
35180
|
+
findNearestVertex: findNearestVertex,
|
|
35181
|
+
findAdjacentVertex: findAdjacentVertex
|
|
35088
35182
|
});
|
|
35089
35183
|
|
|
35090
35184
|
// Returns x,y coordinates of the point that is at the midpoint of each polyline feature
|
|
@@ -40269,6 +40363,7 @@ ${svg}
|
|
|
40269
40363
|
AnchorPoints,
|
|
40270
40364
|
ArcClassifier,
|
|
40271
40365
|
ArcDissolve,
|
|
40366
|
+
ArcUtils,
|
|
40272
40367
|
Bbox2Clipping,
|
|
40273
40368
|
BinArray$1,
|
|
40274
40369
|
BufferCommon,
|
package/www/nacis/Makefile
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
map:
|
|
3
|
-
mapshaper countyp010.shp name=counties \
|
|
4
|
-
-filter 'STATE_FIPS < 72' \
|
|
5
|
-
-filter 'COUNTY != ""' \
|
|
6
|
-
-dissolve FIPS copy-fields=STATE \
|
|
7
|
-
-simplify 2% \
|
|
8
|
-
-proj albersusa \
|
|
9
|
-
-points inner + name=points \
|
|
10
|
-
-i 2012-president-general-counties.csv string-fields=fips name=data \
|
|
11
|
-
-filter-fields fips,votes,obama,romney \
|
|
12
|
-
-each 'margin = obama - romney' \
|
|
13
|
-
-each 'absmargin = Math.abs(margin)' \
|
|
14
|
-
-join target=points data keys=FIPS,fips \
|
|
15
|
-
-sort absmargin descending \
|
|
16
|
-
-svg-style r='Math.sqrt(absmargin) * 0.02' \
|
|
17
|
-
-svg-style opacity=0.5 fill='margin > 0 ? "#0061aa" : "#cc0000"' \
|
|
18
|
-
-lines STATE target=counties \
|
|
19
|
-
-svg-style stroke="#ddd" where='TYPE == "inner"' \
|
|
20
|
-
-svg-style stroke="#777" where='TYPE == "outer"' \
|
|
21
|
-
-svg-style stroke="#999" where='TYPE == "STATE"' \
|
|
22
|
-
-o map.svg target=counties,points
|
package/www/nacis/Makefile.txt
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
map:
|
|
3
|
-
mapshaper countyp010.shp name=counties \
|
|
4
|
-
-filter 'STATE_FIPS < 72' \
|
|
5
|
-
-filter 'COUNTY != ""' \
|
|
6
|
-
-dissolve FIPS copy-fields=STATE \
|
|
7
|
-
-simplify 2% \
|
|
8
|
-
-proj albersusa \
|
|
9
|
-
-points inner + name=points \
|
|
10
|
-
-i 2012-president-general-counties.csv string-fields=fips name=data \
|
|
11
|
-
-filter-fields fips,votes,obama,romney \
|
|
12
|
-
-each 'margin = obama - romney' \
|
|
13
|
-
-each 'absmargin = Math.abs(margin)' \
|
|
14
|
-
-join target=points data keys=FIPS,fips \
|
|
15
|
-
-sort absmargin descending \
|
|
16
|
-
-svg-style r='Math.sqrt(absmargin) * 0.02' \
|
|
17
|
-
-svg-style opacity=0.5 fill='margin > 0 ? "#0061aa" : "#cc0000"' \
|
|
18
|
-
-lines STATE target=counties \
|
|
19
|
-
-svg-style stroke="#ddd" where='TYPE == "inner"' \
|
|
20
|
-
-svg-style stroke="#777" where='TYPE == "outer"' \
|
|
21
|
-
-svg-style stroke="#999" where='TYPE == "STATE"' \
|
|
22
|
-
-o map.svg target=counties,points
|
|
Binary file
|
package/www/nacis/images/eye.png
DELETED
|
Binary file
|
|
Binary file
|
package/www/nacis/index.html
DELETED
|
@@ -1,262 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html>
|
|
3
|
-
<head>
|
|
4
|
-
<title>mapshaper</title>
|
|
5
|
-
<meta name="Description" content="A tool for topologically aware shape simplification. Reads and writes Shapefile, GeoJSON and TopoJSON formats.">
|
|
6
|
-
<meta charset="UTF-8">
|
|
7
|
-
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
8
|
-
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
9
|
-
<link rel="stylesheet" href="../page.css">
|
|
10
|
-
<link rel="stylesheet" href="../elements.css">
|
|
11
|
-
<link rel="icon"
|
|
12
|
-
type="image/png"
|
|
13
|
-
href="../images/icon.png">
|
|
14
|
-
</head>
|
|
15
|
-
<body>
|
|
16
|
-
<div class="hidden">
|
|
17
|
-
<svg version="1.1" id="home-icon" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
|
18
|
-
y="0px" width="14px" height="19px" viewBox="0 0 14 16">
|
|
19
|
-
<g>
|
|
20
|
-
<polygon points="13,7 13,6 12,6 12,5 11,5 11,4 10,4 10,3 9,3 9,2 8,2 8,1 6,1 6,2 5,2 5,3 4,3 4,4 3,4 3,5 2,5
|
|
21
|
-
2,6 1,6 1,7 0,7 0,9 2,9 2,14 6,14 6,10 8,10 8,14 12,14 12,9 14,9 14,7"/>
|
|
22
|
-
</g>
|
|
23
|
-
</svg>
|
|
24
|
-
<svg version="1.1" id="zoom-in-icon" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
|
25
|
-
y="0px" width="14px" height="21px" viewBox="0 0 14 14">
|
|
26
|
-
<g>
|
|
27
|
-
<polygon points="13,5 9,5 9,1 5,1 5,5 1,5 1,9 5,9 5,13 9,13 9,9 13,9"/>
|
|
28
|
-
</g>
|
|
29
|
-
</svg>
|
|
30
|
-
<svg version="1.1" id="zoom-out-icon" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px"
|
|
31
|
-
y="0px" width="14px" height="16px" viewBox="0 -1 14 10">
|
|
32
|
-
<g>
|
|
33
|
-
<polygon points="1,1 13,1 13,5 1,5 1,1" />
|
|
34
|
-
</g>
|
|
35
|
-
</svg>
|
|
36
|
-
<svg version="1.1" id="info-icon2"
|
|
37
|
-
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="13px" height="18px"
|
|
38
|
-
viewBox="-510 390 13 18" xml:space="preserve">
|
|
39
|
-
<circle fill="#30D4EF" cx="-503.4" cy="392.8" r="2.7"/>
|
|
40
|
-
<rect x="-508" y="405" fill="#30D4EF" width="10" height="3"/>
|
|
41
|
-
<rect x="-507" y="398" fill="#30D4EF" width="6" height="3"/>
|
|
42
|
-
<rect x="-505" y="400" fill="#30D4EF" width="4" height="6"/>
|
|
43
|
-
</svg>
|
|
44
|
-
|
|
45
|
-
</div>
|
|
46
|
-
|
|
47
|
-
<div class="page-header">
|
|
48
|
-
<div class="mapshaper-logo">map<span class="logo-highlight">shaper</span></div>
|
|
49
|
-
|
|
50
|
-
<div class="layer-control-btn"><span class="btn header-btn layer-name"></span></div>
|
|
51
|
-
|
|
52
|
-
<div class="simplify-control-wrapper"><div class="simplify-control"><div class="header-btn btn simplify-settings-btn">Settings</div>
|
|
53
|
-
<div class="slider">
|
|
54
|
-
<div class="handle"><img src="../images/slider_handle_v1.png" alt=""/></div>
|
|
55
|
-
<div class="track"></div>
|
|
56
|
-
</div>
|
|
57
|
-
<input type="text" value="label" class="clicktext" />
|
|
58
|
-
</div></div>
|
|
59
|
-
<div id="mode-buttons" class="page-header-buttons">
|
|
60
|
-
<span class="simplify-btn header-btn btn">Simplify</span><span class="separator"></span><span class="console-btn header-btn btn">Console</span><span class="separator"></span><span class="export-btn header-btn btn">Export</span>
|
|
61
|
-
</div>
|
|
62
|
-
<div id="splash-buttons" class="page-header-buttons">
|
|
63
|
-
<a href="https://github.com/mbloch/mapshaper/wiki"><span id="wiki-btn" class="header-btn btn">Wiki</span></a><span class="separator"></span><a href="https://github.com/mbloch/mapshaper"><span id="github-btn" class="header-btn btn">GitHub</span></a>
|
|
64
|
-
</div>
|
|
65
|
-
</div>
|
|
66
|
-
|
|
67
|
-
<div id="mshp-not-supported" class="main-area">
|
|
68
|
-
<div class="info-box">
|
|
69
|
-
<h3>Unfortunately, mapshaper can't run in <span class="unsupported-browser">this web browser</span></h3>
|
|
70
|
-
<div>For best results, try <a href="https://www.google.com/chrome/browser/desktop/">Google Chrome</a> or <a href="http://www.mozilla.org/en-US/firefox/new/">Mozilla Firefox</a>.</div>
|
|
71
|
-
</div>
|
|
72
|
-
</div>
|
|
73
|
-
|
|
74
|
-
<div class="layer-control main-area popup-dialog">
|
|
75
|
-
<div class="info-box">
|
|
76
|
-
<div class="info-box-scrolled">
|
|
77
|
-
<div class="layer-menu">
|
|
78
|
-
<h3>Layers</h3>
|
|
79
|
-
<div class="pin-all pinnable">
|
|
80
|
-
<img class="pin-btn unpinned" src="images/eye.png">
|
|
81
|
-
<img class="pin-btn pinned" src="images/eye2.png">
|
|
82
|
-
</div>
|
|
83
|
-
<div class="layer-list"></div>
|
|
84
|
-
<div><div id="add-file-btn" class="dialog-btn btn">Add a file</div></div>
|
|
85
|
-
</div>
|
|
86
|
-
</div>
|
|
87
|
-
</div>
|
|
88
|
-
</div>
|
|
89
|
-
|
|
90
|
-
<div class="export-options main-area popup-dialog">
|
|
91
|
-
<div class="info-box">
|
|
92
|
-
<h3>Export menu</h3>
|
|
93
|
-
<div style="height:3px"></div>
|
|
94
|
-
<div class=export-layers>
|
|
95
|
-
<h4>Layers</h4>
|
|
96
|
-
<div class="export-layer-list option-menu"></div>
|
|
97
|
-
</div>
|
|
98
|
-
<h4>File format</h4>
|
|
99
|
-
<div class="export-formats option-menu">
|
|
100
|
-
</div>
|
|
101
|
-
|
|
102
|
-
<div class="option-menu"><input type="text" class="advanced-options" placeholder="command line options" /><div class="tip-button">?<div class="tip-anchor">
|
|
103
|
-
<div class="tip">Enter options from the command line
|
|
104
|
-
interface. Examples: "bbox" "no-quantization"
|
|
105
|
-
"precision=0.001"</div></div></div></div>
|
|
106
|
-
<div class="cancel-btn btn dialog-btn">Cancel</div>
|
|
107
|
-
<div class="save-btn btn dialog-btn">Export</div>
|
|
108
|
-
</div>
|
|
109
|
-
</div>
|
|
110
|
-
|
|
111
|
-
<div class="simplify-options main-area popup-dialog">
|
|
112
|
-
<div class="info-box">
|
|
113
|
-
<h3>Simplification menu</h3>
|
|
114
|
-
<div class="option-menu">
|
|
115
|
-
<div><label for="import-retain-opt"><input type="checkbox" class="checkbox import-retain-opt"/>prevent shape removal</label>
|
|
116
|
-
<div class="tip-button">?<div class="tip-anchor">
|
|
117
|
-
<div class="tip">Prevent small polygon features from
|
|
118
|
-
disappearing at high simplification. Keeps
|
|
119
|
-
the largest ring of multi-ring features.
|
|
120
|
-
</div></div></div></div>
|
|
121
|
-
<div class="planar-opt-wrapper"><label for="planar-opt"><input type="checkbox" class="checkbox planar-opt"/>use planar geometry</label>
|
|
122
|
-
<div class="tip-button">?<div class="tip-anchor">
|
|
123
|
-
<div class="tip">Interpret x, y values as Cartesian coordinates
|
|
124
|
-
on a plane, rather than longitude, latitude
|
|
125
|
-
coordinates on a sphere.
|
|
126
|
-
</div></div></div></div>
|
|
127
|
-
</div>
|
|
128
|
-
|
|
129
|
-
<h4>Method</h4>
|
|
130
|
-
<div class="option-menu">
|
|
131
|
-
|
|
132
|
-
<div><label><input type="radio" name="method" value="dp" class="radio">Douglas-Peucker</label><div class="tip-button">?<div class="tip-anchor">
|
|
133
|
-
<div class="tip">Simplified lines remain within a set
|
|
134
|
-
distance of original lines. Good for
|
|
135
|
-
thinning dense points, but spikes
|
|
136
|
-
tend to form at high simplification.</div></div></div>
|
|
137
|
-
</div>
|
|
138
|
-
|
|
139
|
-
<div><label><input type="radio" name="method" value="visvalingam" class="radio">Visvalingam / effective area</label><div class="tip-button">?<div class="tip-anchor">
|
|
140
|
-
<div class="tip">Lines are simplified by iteratively
|
|
141
|
-
removing the point that forms
|
|
142
|
-
the least-area triangle with two
|
|
143
|
-
adjacent points.</div></div></div>
|
|
144
|
-
</div>
|
|
145
|
-
|
|
146
|
-
<div><label><input type="radio" name="method" value="weighted_visvalingam" class="radio">Visvalingam / weighted area</label><div class="tip-button">?<div class="tip-anchor">
|
|
147
|
-
<div class="tip">Points located at the vertex
|
|
148
|
-
of more acute angles are
|
|
149
|
-
preferentially removed, for
|
|
150
|
-
a smoother appearance.</div></div></div></div>
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
</div> <!-- option menu -->
|
|
154
|
-
|
|
155
|
-
<div>
|
|
156
|
-
<div class="cancel-btn btn dialog-btn">Cancel</div>
|
|
157
|
-
<div class="submit-btn btn dialog-btn">Apply</div>
|
|
158
|
-
</div>
|
|
159
|
-
</div> <!-- .info-box -->
|
|
160
|
-
</div> <!-- simplify-options -->
|
|
161
|
-
|
|
162
|
-
<div id="splash-screen" class="main-area">
|
|
163
|
-
<div>
|
|
164
|
-
<h3>Mapshaper is an editor for map data</h3>
|
|
165
|
-
</div>
|
|
166
|
-
<div id="drop-areas" class="drop-area-wrapper main-area">
|
|
167
|
-
|
|
168
|
-
<div class="file-catalog catalog-area">
|
|
169
|
-
</div>
|
|
170
|
-
<div class="file-catalog-spacer spacer"></div>
|
|
171
|
-
|
|
172
|
-
<div id="import-drop" class="drop-area">
|
|
173
|
-
<h4>Drop files here or <span class="inline-btn btn" id="file-selection-btn"><span class="label-text">select</span></span> from a folder</h4>
|
|
174
|
-
<div class="subtitle">Shapefile, GeoJSON, TopoJSON, DBF and CSV files are supported</div>
|
|
175
|
-
<div class="subtitle">Files can be loose or in a zip archive</div>
|
|
176
|
-
|
|
177
|
-
</div>
|
|
178
|
-
<div class="spacer"></div>
|
|
179
|
-
<div id="import-quick-drop" class="drop-area">
|
|
180
|
-
<h4>Quick import</h4>
|
|
181
|
-
<div class="subtitle">Drop files here to import with default settings</div>
|
|
182
|
-
</div>
|
|
183
|
-
</div>
|
|
184
|
-
</div>
|
|
185
|
-
|
|
186
|
-
<div id="import-options" class="main-area popup-dialog">
|
|
187
|
-
<div class="info-box">
|
|
188
|
-
<!-- <h4>Queued files</h4> -->
|
|
189
|
-
|
|
190
|
-
<div class="dropped-file-list"></div>
|
|
191
|
-
|
|
192
|
-
<div class="option-menu">
|
|
193
|
-
|
|
194
|
-
<div id="path-import-options">
|
|
195
|
-
<h4>Options</h4>
|
|
196
|
-
|
|
197
|
-
<div><label for="repair-intersections-opt"><input type="checkbox" checked class="checkbox" id="repair-intersections-opt"/>detect line intersections</label>
|
|
198
|
-
<div class="tip-button">?<div class="tip-anchor">
|
|
199
|
-
|
|
200
|
-
<div class="tip">Detect line intersections, including
|
|
201
|
-
self-intersections, to help identify
|
|
202
|
-
topological errors in a dataset.</div></div></div></div>
|
|
203
|
-
|
|
204
|
-
<div><label for="snap-points-opt"><input type="checkbox" class="checkbox" id="snap-points-opt" />snap vertices</label>
|
|
205
|
-
<div class="tip-button">?<div class="tip-anchor">
|
|
206
|
-
<div class="tip">Fix topology errors by snapping
|
|
207
|
-
together points with nearly identical
|
|
208
|
-
coordinates. This option does not
|
|
209
|
-
apply to TopoJSON files.</div></div></div></div>
|
|
210
|
-
<div style="height:5px"></div>
|
|
211
|
-
|
|
212
|
-
</div>
|
|
213
|
-
|
|
214
|
-
<div><input type="text" class="advanced-options" placeholder="command line options" /><div class="tip-button">?<div class="tip-anchor">
|
|
215
|
-
<div class="tip">Enter options from the command line
|
|
216
|
-
interface. Examples: "no-topology"
|
|
217
|
-
"encoding=big5"</div></div></div></div>
|
|
218
|
-
|
|
219
|
-
</div>
|
|
220
|
-
|
|
221
|
-
<div id="import-buttons">
|
|
222
|
-
<div class="cancel-btn btn dialog-btn">Cancel</div>
|
|
223
|
-
<div class="add-btn btn dialog-btn">Select</div>
|
|
224
|
-
<div class="submit-btn btn dialog-btn default-btn">Import</div>
|
|
225
|
-
</div>
|
|
226
|
-
|
|
227
|
-
</div> <!-- .info-box -->
|
|
228
|
-
</div> <!-- import-options -->
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
<!-- TODO: remove #mshp-main-page without causing the map to jitter when resized -->
|
|
232
|
-
<div id="mshp-main-page">
|
|
233
|
-
<div class="console main-area console-area">
|
|
234
|
-
<div class="console-window"><div class="console-buffer selectable"></div></div>
|
|
235
|
-
</div>
|
|
236
|
-
<div class="mshp-main-map main-area map-area">
|
|
237
|
-
<div class="coordinate-info colored-text selectable"></div>
|
|
238
|
-
<div class="intersection-display">
|
|
239
|
-
<div class="intersection-count">0 line intersections</div>
|
|
240
|
-
<div class="repair-btn text-btn colored-text">Repair</div>
|
|
241
|
-
</div>
|
|
242
|
-
<div class="map-layers"></div>
|
|
243
|
-
</div>
|
|
244
|
-
</div>
|
|
245
|
-
|
|
246
|
-
<div id="import-options-drop-area" class="main-area drop-area-wrapper hidden">
|
|
247
|
-
<div class="drop-area"></div>
|
|
248
|
-
</div>
|
|
249
|
-
|
|
250
|
-
<script src="../zip.js" type="text/javascript"></script>
|
|
251
|
-
<script src="../modules.js" type="text/javascript"></script>
|
|
252
|
-
<script src="../mapshaper.js" type="text/javascript"></script>
|
|
253
|
-
<script src="manifest.js" type="text/javascript"></script>
|
|
254
|
-
<script src="../mapshaper-gui.js" type="text/javascript"></script>
|
|
255
|
-
<script type="text/javascript">
|
|
256
|
-
zip.workerScripts = {
|
|
257
|
-
deflater: ['../z-worker.js', '../pako.deflate.js', '../codecs.js'],
|
|
258
|
-
inflater: ['../z-worker.js', '../pako.inflate.js', '../codecs.js']
|
|
259
|
-
};
|
|
260
|
-
</script>
|
|
261
|
-
</body>
|
|
262
|
-
</html>
|
package/www/nacis/manifest.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
mapshaper.manifest = {
|
|
2
|
-
catalog: {
|
|
3
|
-
cols: 3,
|
|
4
|
-
title: 'NACIS PCD Example Datasets',
|
|
5
|
-
items: [{
|
|
6
|
-
title: 'Sample One',
|
|
7
|
-
subtitle: 'Inspection practice',
|
|
8
|
-
files: [
|
|
9
|
-
'https://dl.dropboxusercontent.com/s/krtvbezmvgg102x/a.zip?dl=1'
|
|
10
|
-
]
|
|
11
|
-
}, {
|
|
12
|
-
title: 'Sample Two',
|
|
13
|
-
subtitle: 'Line intersections',
|
|
14
|
-
url: '',
|
|
15
|
-
files: [
|
|
16
|
-
'https://dl.dropboxusercontent.com/s/0duqwhavungcxl3/b.zip?dl=1'
|
|
17
|
-
]
|
|
18
|
-
}, {
|
|
19
|
-
title: 'Sample Three',
|
|
20
|
-
subtitle: 'U.S. counties',
|
|
21
|
-
url: '',
|
|
22
|
-
files: [
|
|
23
|
-
'https://dl.dropboxusercontent.com/s/4bwywe2856gmnrd/c.zip?dl=1'
|
|
24
|
-
]
|
|
25
|
-
}]
|
|
26
|
-
}
|
|
27
|
-
};
|