Вы можете использовать файлы .kml или .kmz, чтобы получить список штатов / провинций и полигонов для их контуров.Например, для США вы можете использовать этот файл .Чтобы извлечь полигоны, вы можете сделать что-то вроде этого
usa = Import["http://code.google.com/apis/kml/documentation/us_states.kml",
"Data"];
transform[s_] := StringTrim[s, Whitespace ~~ "(" ~~ ___ ~~ ")"]
polygons = Thread[transform["PlacemarkNames" /. usa[[1]]] ->
("Geometry" /. usa[[1]])];
stateNames = polygons[[All, 1]];
Тогда полигоны будут списком с элементами "state name" -> Polygon[points]
.Функция transform
- это просто вспомогательная функция для получения PlacemarkNames из файла .kml в нужном формате (в данном случае «(год)» удаляется из конца имен).
Используя эти полигоны, вы можете затем использовать FaceForm[]
, чтобы раскрасить отдельные полигоны.Предположим, у нас есть список данных вида "state" -> value
, например,
data = Thread[regionNames -> RandomReal[{0, 1}, Length[regionNames]]];
. Затем мы можем создать карту в соответствии с
colourf = ColorData["Temperature"];
element[value_, poly_] := GraphicsGroup[{EdgeForm[Black], FaceForm[colourf[value]], poly}]
Graphics[{element @@@ Transpose[regionNames /. {data, polygons}]}]
, которая выглядит как