Comments 40
Мне нравится.
Спасибо за статью, очень познавательно.
Библиотека потрясающая. Что вытворяет с её помощью сам Майк, можно посмотреть здесь. Там не обычные примеры, а полноценные работы для The New York Times.
Ага, уровень работ Майка это к чему нужно стремиться. У Jason Davies тоже есть интересные работы. Ну вообще наиболее интересные примеры Майк собирает в галерею.
Круто, совсем недавно такое было невозможно.
к сожалению найти геокодер вроде этого gpsvisualizer.com/geocoder, чтобы он понимал русский язык- я не смог (может кто знает?)
Пользовался API Google Maps, регистрироваться не надо.
Пример: gdeteplee.ru/
Получение данных внизу файла gdeteplee.ru/js/script.js?0.1.9, объект Map, аттрибут Map.vr.geocoder. В методе Map.add() как раз получаю координаты по адресу.
Все что нужно, это подключить js файл:
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
Это понятно, но я имел ввиду уже готовый сервис, причём с пакетной обработкой данных, а то что API Google/Yandex Maps такую возможность предоставляют, при наличии прямых рук, я догадывался =).
Вы вон сколько вещей сделали, написать пару INPUTов с парой строчек JavaScript навряд ли сильно Вас затруднит =)
к сожалению найти геокодер вроде этого gpsvisualizer.com/geocoder, чтобы он понимал русский язык- я не смог (может кто знает?), а лезть в API Яндекс.Карт не хотелось, тем более что список маленький. Хорошо бы они сами колдунчик такой сделали, ну да ладно, отвлекся я.
Можно было использовать Nominatim . Понимает русские адреса, также умеет отдавать границы регионов в svg (kml, geojson, wkt), что сильно упростило бы задачу. Пример
чур тапками не кидаться, что такое getjson?
geojson же. The GeoJSON Format Specification
Тег <acronym> без расшифровки — зло.
А я-то на нем минуту мышку держал.
А это интересно, ведь расшифровка была, сейчас заменил на аналогичный
<abbr>
в соответствии с HTML5 — теперь всё работает. Надо бы донести как-то информацию об этой фиче до НЛО. Видимо никто особо не заморачивается на столько, чтоб аббревиатуры расшифровывать =)«Пицца против Суши» на карте России — bl.ocks.org/SLR436/5693283
А зачем динамически отрисовывать карту каждый раз из JSON’а? Почему не сохранить в SVG и раскрашивать по необходимости в стилях?
Вы можете сохранить SVG и раскрашивать его с помощью CSS, или вообще руками в Inkscape, если вам так угодно. Все (или почти все) SVG карты нашей страны на wkimedia сделаны именно таким образом. Если вы откроете код некоторых, то увидите какой там зоопарк и ужаснётесь. Именно поэтому здесь я показал как сделать то, что Вам нужно, а не разбираться почему часть карты отрисована через
<path>
, другая через <polygon>
, третья ещё как-то. Это раз. Во-вторых динамическая отрисовка позволяет менять масштаб, вид проекции и много ещё чего. Но конечно же всё зависит от задач, стоящих перед вами, и вы вольны выбирать удобные вам методы.не пробовали сделать карту с динамическим разделением имеющихся данных с помощью d3.quantsize или что-то подобное? (как вот в этом примере — bl.ocks.org/mbostock/4060606).
я пробовал тоже построить такую карту для российских данных (рабочий пример вот — bl.ocks.org/quantviews/raw/ed7a710a4e81cf7a910e/), там используется модифицированная легенда тоже на основе одного из примеров Майка
я пробовал тоже построить такую карту для российских данных (рабочий пример вот — bl.ocks.org/quantviews/raw/ed7a710a4e81cf7a910e/), там используется модифицированная легенда тоже на основе одного из примеров Майка
Quantize не пробовал, думаю это целесообразно при большом количестве пороговых значений, хотя кому как нравится. Легенда у вас выглядит классно. И поделитесь пожалуйста неужатым GeoJSON'ом раз у вас есть границы Ингушетии.
я хотел сделать сделать шаблон для быстрого отрисовывания любых данных — как раз в статистических целях. Для публикации, конечно, надежнее скорретировать границы руками, в пользу более «круглых» значений.
Вот несжатый GeoJSON (26 мб) — drive.google.com/folderview?id=0BwmSbblXaJ73OGdKS3ZUYU9UeU0&usp=sharing
Исходный shp я также брал с gis-lab.info, но там были немного другие файлы (разные файлы для федеральных округов/ субъектов РФ/ муниципальных образований). Проблем с кодировками вроде тоже не возникло.
Вот несжатый GeoJSON (26 мб) — drive.google.com/folderview?id=0BwmSbblXaJ73OGdKS3ZUYU9UeU0&usp=sharing
Исходный shp я также брал с gis-lab.info, но там были немного другие файлы (разные файлы для федеральных округов/ субъектов РФ/ муниципальных образований). Проблем с кодировками вроде тоже не возникло.
Спасибо за файл, а по поводу шаблона, что-то путное выйдет только в случае одинаковой структуры данных, иначе не вижу смысла. Например, регулярный отчёт какой-нибудь. В остальных случаях проще переписать пару строк простого кода, чем копаться в сложном, добавляя «ещё один», не предусмотренный ранее вариант. Для всевозможных чартов есть вот такая надстройка над d3: nvd3.
согласен, что для типовых графиков лучше использовать готовые надстройки над d3. в данном случае речь как раз идет о карте РФ и разных данных по субъектам РФ от Росстата. Сейчас карты для рабочего анализа я обычно рисую в R.
я с Shiny эксперементировал и сделал некоторые рабочие приложения по интерактивной визуализации данных больших датасетов, но в локальном режиме, для собственных нужд. Сейчас RStudio в рамках бета-тестирования дает возможность публиковать приложения Shiny на их серверах бесплатно, но сам еще не пробовал работу c RStudio Server.
Я хотел написать статьи по R для хабра, так как похоже, многим эта тема интересна — но так как не ит-шник, то чувствую неуверенно, что могу сморозить какую-нибудь глупость. Надо это преодолеть :) кое-что публикую в блоге (http://quantviews.blogspot.ru/), включая коды анализа, но описания там не-технические (кое-что про статистику ДТП, меня эта тема тоже интересует).
Кстати, еще один интересный развивающийся проект — rCharts дает возможность публиковать интерактивные графики на основе надстроек d3 (polyscharts, nvd3, morris и другие) прямо из R. Он еще в процессе разработки, но в рабочем состоянии.
Я хотел написать статьи по R для хабра, так как похоже, многим эта тема интересна — но так как не ит-шник, то чувствую неуверенно, что могу сморозить какую-нибудь глупость. Надо это преодолеть :) кое-что публикую в блоге (http://quantviews.blogspot.ru/), включая коды анализа, но описания там не-технические (кое-что про статистику ДТП, меня эта тема тоже интересует).
Кстати, еще один интересный развивающийся проект — rCharts дает возможность публиковать интерактивные графики на основе надстроек d3 (polyscharts, nvd3, morris и другие) прямо из R. Он еще в процессе разработки, но в рабочем состоянии.
и при построении карты на этих данных, наверно, имеет смысл их пронормировать на население или количество зарегестрированных ТС. Иначе получается, что данные отражают разницу в регионах, а не в показателях смертности
Всё ок, но про шифровку я ничего не понял) Какие еще болгарские кодировки… ну да ладно.
Есть пара штук, которые возможно будут полезны:
Генерализованные слои границ субъектов РФ: gis-lab.info/qa/rusbounds-rosreestr-gen.html
Границы административно-территориального деления РФ из OpenStreetMap: gis-lab.info/qa/osm-adm.html
Есть пара штук, которые возможно будут полезны:
Генерализованные слои границ субъектов РФ: gis-lab.info/qa/rusbounds-rosreestr-gen.html
Границы административно-территориального деления РФ из OpenStreetMap: gis-lab.info/qa/osm-adm.html
Про шифровку я тоже до сих пор не понимаю, что это было, пользовался вот этой картой Albers-Siberia. А за ссылки спасибо, да и вообще спасибо за ту работу, что ведётся сообществом GIS-Lab.
А теперь самый интересный вопрос: а можно ли наложить эту карту на Google Maps с прозрачностью? Тогда получится просто шикарная система!
Вот пример использования Google Maps вместе с D3: Google Maps + D3.
Только полез искать в интернете TopoJSON для российских регионов — наткнулся на вашу статью. Спасибо большое!
Большое спасибо за статью…
Более точные данные можн взять в 2гис
api.2gis.ru/doc/geo/search/
Идейки )
Можн же например наложить эти данные на растровую карту… например на историческую
retromap.ru/
Там все карты режутся на тайтлы и накладываются допслоем на гуглмепс
Более точные данные можн взять в 2гис
api.2gis.ru/doc/geo/search/
Идейки )
Можн же например наложить эти данные на растровую карту… например на историческую
retromap.ru/
Там все карты режутся на тайтлы и накладываются допслоем на гуглмепс
UFO just landed and posted this here
Спасибо за руководство.
Для подстройки размера карты под размер окна браузера поменял расчёт ширины и высоты:
И расчёт масштабирования (scale):
И тег h1 убрал, чтобы он не сокращал полезную площадь document.body (при наличии тега и текущем способе расчёта ширины/высоты появлялся скролинг).
Для подстройки размера карты под размер окна браузера поменял расчёт ширины и высоты:
//Сначала зададим размеры нашей SVG карты.
var zoom = document.body.clientWidth / 960.0;
var width = Math.round(zoom * 960),
height = Math.round(zoom * 500);
И расчёт масштабирования (scale):
//Зададим параметры проецирования (вспоминаем/смотрим Albers_Siberia.prj из начала статьи):
var projection = d3.geo.albers()
.rotate([-105, 0])
.center([-10, 65])
.parallels([52, 64])
.scale(Math.round(3.0 * document.body.clientWidth / 4.0))
.translate([width / 2, height / 2]);
И тег h1 убрал, чтобы он не сокращал полезную площадь document.body (при наличии тега и текущем способе расчёта ширины/высоты появлялся скролинг).
Для расчёта масштабирования (scale) лучше использовать не магические константы, а, так называемый, bounding box. Правда для этого необходимы данные по внешним границам.
0.95 здесь означает, что карта будет занимать 95% холста.
var b = path.bounds(d),
scale = 0.95 / Math.max((b[1][0] - b[0][0]) / mapWidth, (b[1][1] - b[0][1]) / mapHeight);
0.95 здесь означает, что карта будет занимать 95% холста.
Sign up to leave a comment.
Интерактивная SVG картограмма с помощью d3.js