| author | Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr> |
| Fri, 18 Apr 2014 14:31:58 +0200 | |
| changeset 51 | 79833eaa394a |
| parent 47 | c0b4a8b5a012 |
| permissions | -rw-r--r-- |
|
47
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
1 |
/** |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
2 |
* Given a GeoJSON object, returns the corresponding bounding box. The bounding |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
3 |
* box is represented by a two-dimensional array: [[left, bottom], [right, |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
4 |
* top]], where left is the minimum longitude, bottom is the minimum latitude, |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
5 |
* right is maximum longitude, and top is the maximum latitude. |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
6 |
*/ |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
7 |
d3.geo.bounds = function(feature) { |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
8 |
var left = Infinity, |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
9 |
bottom = Infinity, |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
10 |
right = -Infinity, |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
11 |
top = -Infinity; |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
12 |
d3_geo_bounds(feature, function(x, y) { |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
13 |
if (x < left) left = x; |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
14 |
if (x > right) right = x; |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
15 |
if (y < bottom) bottom = y; |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
16 |
if (y > top) top = y; |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
17 |
}); |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
18 |
return [[left, bottom], [right, top]]; |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
19 |
}; |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
20 |
|
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
21 |
function d3_geo_bounds(o, f) { |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
22 |
if (o.type in d3_geo_boundsTypes) d3_geo_boundsTypes[o.type](o, f); |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
23 |
} |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
24 |
|
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
25 |
var d3_geo_boundsTypes = { |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
26 |
Feature: d3_geo_boundsFeature, |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
27 |
FeatureCollection: d3_geo_boundsFeatureCollection, |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
28 |
LineString: d3_geo_boundsLineString, |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
29 |
MultiLineString: d3_geo_boundsMultiLineString, |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
30 |
MultiPoint: d3_geo_boundsLineString, |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
31 |
MultiPolygon: d3_geo_boundsMultiPolygon, |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
32 |
Point: d3_geo_boundsPoint, |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
33 |
Polygon: d3_geo_boundsPolygon |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
34 |
}; |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
35 |
|
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
36 |
function d3_geo_boundsFeature(o, f) { |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
37 |
d3_geo_bounds(o.geometry, f); |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
38 |
} |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
39 |
|
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
40 |
function d3_geo_boundsFeatureCollection(o, f) { |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
41 |
for (var a = o.features, i = 0, n = a.length; i < n; i++) { |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
42 |
d3_geo_bounds(a[i].geometry, f); |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
43 |
} |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
44 |
} |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
45 |
|
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
46 |
function d3_geo_boundsLineString(o, f) { |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
47 |
for (var a = o.coordinates, i = 0, n = a.length; i < n; i++) { |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
48 |
f.apply(null, a[i]); |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
49 |
} |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
50 |
} |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
51 |
|
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
52 |
function d3_geo_boundsMultiLineString(o, f) { |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
53 |
for (var a = o.coordinates, i = 0, n = a.length; i < n; i++) { |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
54 |
for (var b = a[i], j = 0, m = b.length; j < m; j++) { |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
55 |
f.apply(null, b[j]); |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
56 |
} |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
57 |
} |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
58 |
} |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
59 |
|
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
60 |
function d3_geo_boundsMultiPolygon(o, f) { |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
61 |
for (var a = o.coordinates, i = 0, n = a.length; i < n; i++) { |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
62 |
for (var b = a[i][0], j = 0, m = b.length; j < m; j++) { |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
63 |
f.apply(null, b[j]); |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
64 |
} |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
65 |
} |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
66 |
} |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
67 |
|
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
68 |
function d3_geo_boundsPoint(o, f) { |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
69 |
f.apply(null, o.coordinates); |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
70 |
} |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
71 |
|
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
72 |
function d3_geo_boundsPolygon(o, f) { |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
73 |
for (var a = o.coordinates[0], i = 0, n = a.length; i < n; i++) { |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
74 |
f.apply(null, a[i]); |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
75 |
} |
|
c0b4a8b5a012
add toolkit.html + démonstrateurs
Nicolas Sauret <nicolas.sauret@iri.centrepompidou.fr>
parents:
diff
changeset
|
76 |
} |