Skeletal demo for d3.geoVoronoi
by Philippe Rivière.
<!DOCTYPE html>
<meta charset="utf-8">
<style>
#sphere {
fill: #ccc;
stroke: #444;
stroke-width: 2;
}
.polygons {
stroke: #444;
}
.sites {
stroke: black;
fill: white;
}
</style>
<svg width="960" height="600"></svg>
<script src="https://d3js.org/d3.v5.min.js"></script>
<script src="https://unpkg.com/d3-delaunay@5"></script>
<script src="https://unpkg.com/d3-geo-voronoi@1.5"></script>
<script>
d3.csv('capitals.csv').then(function(points) {
// Extract the `lon` and `lat` columns from each row; add an epsilon
// to allow for capitals set in the exact same coordinates
var v = d3.geoVoronoi()
.x(function(row) {
return +row.lon + 1e-9 * Math.random();
})
.y(function(row) {
return +row.lat;
})
(points);
var projection = d3.geoOrthographic(),
path = d3.geoPath().projection(projection);
var svg = d3.select("svg");
svg.append('path')
.attr('id', 'sphere')
.datum({ type: "Sphere" })
.attr('d', path);
svg.append('g')
.attr('class', 'polygons')
.selectAll('path')
.data(v.polygons().features)
.enter()
.append('path')
.attr('d', path)
.attr('fill', function(_,i) { return d3.schemeCategory10[i%10]; });
var c = {
type: "MultiPoint",
coordinates: points
.map(function(d) {
return[ +d.lon, +d.lat ];
})
};
console.log(c);
svg.append('path')
.attr('class', 'sites')
.datum(c)
.attr('d', path);
// gentle animation
d3.interval(function(elapsed) {
projection.rotate([ elapsed / 150, 0 ]);
svg.selectAll('path')
.attr('d', path);
}, 50);
}); // d3.csv
</script>
id,country,capital,lat,lon
AFG,Afghanistan,Kabul,34.516666666666666,69.18333333333334
AGO,Angola,Luanda,-8.833333333333334,13.216666666666667
ALB,Albania,Tirana,41.31666666666667,19.816666666666666
ARE,United Arab Emirates,Abu Dhabi,24.466666666666665,54.36666666666667
ARG,Argentina,Buenos Aires,-34.583333333333336,-58.666666666666664
ARM,Armenia,Yerevan,40.166666666666664,44.5
AUS,Australia,Canberra,-35.266666666666666,149.13333333333333
AUT,Austria,Vienna,48.2,16.366666666666667
AZE,Azerbaijan,Baku,40.38333333333333,49.86666666666667
BDI,Burundi,Bujumbura,-3.3666666666666667,29.35
BEL,Belgium,Brussels,50.833333333333336,4.333333333333333
BEN,Benin,Porto-Novo,6.483333333333333,2.6166666666666667
BFA,Burkina Faso,Ouagadougou,12.366666666666667,-1.5166666666666666
BGD,Bangladesh,Dhaka,23.716666666666665,90.4
BGR,Bulgaria,Sofia,42.68333333333333,23.316666666666666
BIH,Bosnia and Herzegovina,Sarajevo,43.86666666666667,18.416666666666668
BLR,Belarus,Minsk,53.9,27.566666666666666
BLZ,Belize,Belmopan,17.25,-88.76666666666667
BMU,Bermuda,Hamilton,32.28333333333333,-64.78333333333333
BOL,Bolivia,La Paz,-16.5,-68.15
BRA,Brazil,Brasilia,-15.783333333333333,-47.916666666666664
BTN,Bhutan,Thimphu,27.466666666666665,89.63333333333334
BWA,Botswana,Gaborone,-24.633333333333333,25.9
CAF,Central African Republic,Bangui,4.366666666666666,18.583333333333332
CAN,Canada,Ottawa,45.416666666666664,-75.7
CHE,Switzerland,Bern,46.916666666666664,7.466666666666667
CHL,Chile,Santiago,-33.45,-70.66666666666667
CHN,China,Beijing,39.916666666666664,116.38333333333334
CMR,Cameroon,Yaounde,3.8666666666666667,11.516666666666667
COD,Democratic Republic of the Congo,Kinshasa,-4.316666666666666,15.3
COL,Colombia,Bogota,4.6,-74.08333333333333
CRI,Costa Rica,San Jose,9.933333333333334,-84.08333333333333
CUB,Cuba,Havana,23.116666666666667,-82.35
CYP,Cyprus,Nicosia,35.166666666666664,33.36666666666667
CZE,Czech Republic,Prague,50.083333333333336,14.466666666666667
DEU,Germany,Berlin,52.516666666666666,13.4
DJI,Djibouti,Djibouti,11.583333333333334,43.15
DNK,Denmark,Copenhagen,55.666666666666664,12.583333333333334
DOM,Dominican Republic,Santo Domingo,18.466666666666665,-69.9
DZA,Algeria,Algiers,36.75,3.05
ECU,Ecuador,Quito,-0.21666666666666667,-78.5
EGY,Egypt,Cairo,30.05,31.25
ERI,Eritrea,Asmara,15.333333333333334,38.93333333333333
ESP,Spain,Madrid,40.4,-3.6833333333333336
EST,Estonia,Tallinn,59.43333333333333,24.716666666666665
ETH,Ethiopia,Addis Ababa,9.033333333333333,38.7
FIN,Finland,Helsinki,60.166666666666664,24.933333333333334
FJI,Fiji,Suva,-18.133333333333333,178.41666666666666
FLK,Falkland Islands,Stanley,-51.7,-57.85
FRA,France,Paris,48.86666666666667,2.3333333333333335
GAB,Gabon,Libreville,0.38333333333333336,9.45
GBR,United Kingdom,London,51.5,-0.08333333333333333
GEO,Georgia,Tbilisi,41.68333333333333,44.833333333333336
GHA,Ghana,Accra,5.55,-0.21666666666666667
GIN,Guinea,Conakry,9.5,-13.7
GNQ,Equatorial Guinea,Malabo,3.75,8.783333333333333
GRC,Greece,Athens,37.983333333333334,23.733333333333334
GRL,Greenland,Nuuk,64.18333333333334,-51.75
GTM,Guatemala,Guatemala City,14.616666666666667,-90.51666666666667
GUY,Guyana,Georgetown,6.8,-58.15
HND,Honduras,Tegucigalpa,14.1,-87.21666666666667
HRV,Croatia,Zagreb,45.8,16
HTI,Haiti,Port-au-Prince,18.533333333333335,-72.33333333333333
HUN,Hungary,Budapest,47.5,19.083333333333332
IDN,Indonesia,Jakarta,-6.166666666666667,106.81666666666666
IND,India,New Delhi,28.6,77.2
IRL,Ireland,Dublin,53.31666666666667,-6.233333333333333
IRN,Iran,Tehran,35.7,51.416666666666664
IRQ,Iraq,Baghdad,33.333333333333336,44.4
ISL,Iceland,Reykjavik,64.15,-21.95
ISR,Israel,Jerusalem,31.766666666666666,35.233333333333334
ITA,Italy,Rome,41.9,12.483333333333333
JAM,Jamaica,Kingston,18,-76.8
JOR,Jordan,Amman,31.95,35.93333333333333
JPN,Japan,Tokyo,35.68333333333333,139.75
KAZ,Kazakhstan,Astana,51.166666666666664,71.41666666666667
KEN,Kenya,Nairobi,-1.2833333333333332,36.81666666666667
KGZ,Kyrgyzstan,Bishkek,42.86666666666667,74.6
KHM,Cambodia,Phnom Penh,11.55,104.91666666666667
KOS,Kosovo,Pristina,42.666666666666664,21.166666666666668
KWT,Kuwait,Kuwait City,29.366666666666667,47.96666666666667
LAO,Laos,Vientiane,17.966666666666665,102.6
LBN,Lebanon,Beirut,33.86666666666667,35.5
LBR,Liberia,Monrovia,6.3,-10.8
LBY,Libya,Tripoli,32.88333333333333,13.166666666666666
LKA,Sri Lanka,Colombo,6.916666666666667,79.83333333333333
LSO,Lesotho,Maseru,-29.316666666666666,27.483333333333334
LTU,Lithuania,Vilnius,54.68333333333333,25.316666666666666
LUX,Luxembourg,Luxembourg,49.6,6.116666666666666
LVA,Latvia,Riga,56.95,24.1
MAR,Morocco,Rabat,34.016666666666666,-6.816666666666666
MDA,Moldova,Chisinau,47,28.85
MDG,Madagascar,Antananarivo,-18.916666666666668,47.516666666666666
MEX,Mexico,Mexico City,19.433333333333334,-99.13333333333334
MKD,Macedonia,Skopje,42,21.433333333333334
MLI,Mali,Bamako,12.65,-8
MLT,Malta,Valletta,35.88333333333333,14.5
MMR,Myanmar,Rangoon,16.8,96.15
MNE,Montenegro,Podgorica,42.43333333333333,19.266666666666666
MNG,Mongolia,Ulaanbaatar,47.916666666666664,106.91666666666667
MOZ,Mozambique,Maputo,-25.95,32.583333333333336
MRT,Mauritania,Nouakchott,18.066666666666666,-15.966666666666667
MWI,Malawi,Lilongwe,-13.966666666666667,33.78333333333333
MYS,Malaysia,Kuala Lumpur,3.1666666666666665,101.7
NAM,Namibia,Windhoek,-22.566666666666666,17.083333333333332
NCL,New Caledonia,Noumea,-22.266666666666666,166.45
NER,Niger,Niamey,13.516666666666667,2.1166666666666667
NGA,Nigeria,Abuja,9.083333333333334,7.533333333333333
NIC,Nicaragua,Managua,12.133333333333333,-86.25
NLD,Netherlands,Amsterdam,52.35,4.916666666666667
NOR,Norway,Oslo,59.916666666666664,10.75
NPL,Nepal,Kathmandu,27.716666666666665,85.31666666666666
NZL,New Zealand,Wellington,-41.3,174.78333333333333
OMN,Oman,Muscat,23.616666666666667,58.583333333333336
PAK,Pakistan,Islamabad,33.68333333333333,73.05
PAN,Panama,Panama City,8.966666666666667,-79.53333333333333
PER,Peru,Lima,-12.05,-77.05
PHL,Philippines,Manila,14.6,120.96666666666667
PNG,Papua New Guinea,Port Moresby,-9.45,147.18333333333334
POL,Poland,Warsaw,52.25,21
PRI,Puerto Rico,San Juan,18.466666666666665,-66.11666666666666
PRT,Portugal,Lisbon,38.71666666666667,-9.133333333333333
PRY,Paraguay,Asuncion,-25.266666666666666,-57.666666666666664
QAT,Qatar,Doha,25.283333333333335,51.53333333333333
ROU,Romania,Bucharest,44.43333333333333,26.1
RUS,Russia,Moscow,55.75,37.6
RWA,Rwanda,Kigali,-1.95,30.05
ESH,Western Sahara,El-Aaiún,27.153611,-13.203333
SAU,Saudi Arabia,Riyadh,24.65,46.7
SDN,Sudan,Khartoum,15.6,32.53333333333333
SDS,South Sudan,Juba,4.85,31.616666666666667
SEN,Senegal,Dakar,14.733333333333333,-17.633333333333333
SLB,Solomon Islands,Honiara,-9.433333333333334,159.95
SLE,Sierra Leone,Freetown,8.483333333333333,-13.233333333333333
SLV,El Salvador,San Salvador,13.7,-89.2
SOL,Somaliland,Hargeisa,9.55,44.05
SOM,Somalia,Mogadishu,2.066666666666667,45.333333333333336
SUR,Suriname,Paramaribo,5.833333333333333,-55.166666666666664
SVK,Slovakia,Bratislava,48.15,17.116666666666667
SVN,Slovenia,Ljubljana,46.05,14.516666666666667
SWE,Sweden,Stockholm,59.333333333333336,18.05
SWZ,Swaziland,Mbabane,-26.316666666666666,31.133333333333333
SYR,Syria,Damascus,33.5,36.3
TCD,Chad,N'Djamena,12.1,15.033333333333333
TGO,Togo,Lome,6.116666666666666,1.2166666666666668
THA,Thailand,Bangkok,13.75,100.51666666666667
TJK,Tajikistan,Dushanbe,38.55,68.76666666666667
TKM,Turkmenistan,Ashgabat,37.95,58.38333333333333
TTO,Trinidad and Tobago,Port of Spain,10.65,-61.516666666666666
TUN,Tunisia,Tunis,36.8,10.183333333333334
TUR,Turkey,Ankara,39.93333333333333,32.86666666666667
TWN,Taiwan,Taipei,25.033333333333335,121.51666666666667
UGA,Uganda,Kampala,0.31666666666666665,32.55
UKR,Ukraine,Kyiv,50.43333333333333,30.516666666666666
URY,Uruguay,Montevideo,-34.85,-56.166666666666664
UZB,Uzbekistan,Tashkent,41.31666666666667,69.25
VEN,Venezuela,Caracas,10.483333333333333,-66.86666666666666
VNM,Vietnam,Hanoi,21.033333333333335,105.85
VUT,Vanuatu,Port-Vila,-17.733333333333334,168.31666666666666
PSE,Palestine,Jerusalem,31.766666666666666,35.233333333333334
YEM,Yemen,Sanaa,15.35,44.2
ZAF,South Africa,Pretoria,-25.7,28.216666666666665
ZMB,Zambia,Lusaka,-15.416666666666666,28.283333333333335
ZWE,Zimbabwe,Harare,-17.816666666666666,31.033333333333335
CIV,Ivory Coast,Yamoussoukro,6.816666666666666,-5.266666666666667
BHS,The Bahamas,Nassau,25.083333333333332,-77.35
BRN,Brunei,Bandar Seri Begawan,4.883333333333333,114.93333333333334
COG,Republic of the Congo,Brazzaville,-4.25,15.283333333333333
PRK,North Korea,Pyongyang,39.016666666666666,125.75
GMB,Gambia,Banjul,13.45,-16.566666666666666
GNB,Guinea Bissau,Bissau,11.85,-15.583333333333334
KOR,South Korea,Seoul,37.55,126.98333333333333
SRB,Republic of Serbia,Belgrade,44.833333333333336,20.5
TLS,Timor-Leste,Dili,-8.583333333333334,125.6
TZA,United Republic of Tanzania,Dar es Salaam,-6.8,39.28333333333333
USA,United States of America,"Washington, DC",38.88333333333333,-77.03333333333333