Как автоматически создать ImageMaps серых карт из Википедии?

У меня есть проект с помощью различных членов серых карт Википедии: http://en.wikipedia.org/wiki/Wikipedia:Blank_maps. Я заполняю их с цветами, в зависимости от которых стран, состояний или областей пользователь выбирает путем нажатия на форму или путем проверки флажка.

Я хотел бы записать сценарий, который создает карты изображения автоматически каждой страны, состояния или области, так или иначе получая пиксельное местоположение X и Y границ страны, состояния или области, хотя без названий этих объектов, которые я заполню позже. Я уже сделал Мировую карту вручную и нашел американскую демонстрацию карты изображения карты с открытым исходным кодом. Я теперь хотел бы создать свои карты более быстро.

Я использую PHP и GD к floodfill формы, таким образом, я предполагаю, что мог использовать одно центральное пиксельное расположение форм также. Какие-либо предложения? Этот сценарий является возможностью, но является все еще несколько ручным: http://abhinavsingh.com/blog/2009/03/using-image-maps-in-javascript-a-demo-application/. Также Mapedit, http://www.boutell.com/mapedit/, имеет функцию волшебной палочки, которая работает вполне прилично, но снова у меня есть чувство, что это может быть сделано автоматически.

1
задан socrtwo 23 July 2010 в 17:50
поделиться

3 ответа

Я вижу, что могу использовать GD PHP's imagecolorat и перебирать все пиксели, чтобы найти те, которые черные. Это работает:

<?php
$im = ImageCreateFromPNG("india.png");
$width = imagesx($im);
$height = imagesy($im);
for ($cy=0;$cy<$height;$cy++) {
  echo '<p>';
  for ($cx=0;$cx<$width;$cx++) {
    $rgb = ImageColorAt($im, $cx, $cy);
    $col = imagecolorsforindex($im, $rgb); 
if ($col["red"] == 0 && $col["green"] == 0 && $col["blue"] ==0){
    echo $cx.", ".$cy." ";
  } else {echo "";}
}
}
?>

Может ли кто-нибудь подсказать, как найти полигоны в огромном многополигональном комплексе, который получается в результате выполнения приведенного выше кода на черно-белой двухцветной карте Индии, где все границы черные, а внутренние штаты и Индийский океан белые?

Вот изображение Индии: http://wherehaveibeen.info/images/india.png и беспорядок в координатах для карты, которую нужно разбить на отдельные полигоны: http://wherehaveibeen.info/images/black.php

0
ответ дан 2 September 2019 в 22:48
поделиться

Практически идеальным решением этой проблемы является использование изображений SVG и этого транслятора кода svg в теги областей изображений: http://www.electricfairground.com/polygonator/ . В результате получается подходящая карта изображения, хотя может потребоваться изменить размер изображения svg, а страны или провинции кажутся смещенными и иногда беспорядочно перемешанными. Поэтому для этого потребуется открыть страницу, созданную с помощью изображения SVG или экспортированной копии файла SVG в формате PNG, в редакторе wysiwig, который позволяет перемещать элементы карты изображений.

Я пытаюсь выяснить, каков шаблон смещения, и если я это сделаю, я опубликую его здесь: http://wherehaveibeen.info/images/polye.html . Автор «Полигонатора» привел меня к своему сервису и использовал изображения svg-карты из своей статьи здесь: http://www.electricfairground.com/2009/08/08/image-map-rollover-effects-using -jquerys-maphilight-plugin / . Он защищает там, трассировку изображений png в изображения svg через Inkscape. Но поскольку в Википедии уже есть карты в формате SVG, почему бы не перейти сразу к коду? Оказывается, что в файлах svg в основном уже есть разделенные полигоны и заданные граничные области, по крайней мере, на серых картах Википедии http://en.wikipedia.org/wiki/Wikipedia:Blank_maps , они просто нужно немного почистить с помощью Полигонатора.

Я обнаружил, что если я открою код SVG в Notepad ++, я смогу скопировать и вставить все содержимое файла SVG, а полигонатор удалит ненужный код. После этого требуется небольшая очистка тегов области карты изображений, но не сильно.Самая большая проблема - это упомянутые сгенерированные области тегов областей offests и случайные перепутанные перекрывающиеся местоположения областей imagemap в сгенерированном коде.

1
ответ дан 2 September 2019 в 22:48
поделиться

Что ж, реальный ответ здесь, похоже, заключается в том, что файлы SVG уже почти являются картами изображений и могут быть слегка обработаны, чтобы превратить их в карты изображений, а в Википедии определенно есть множество карт SVG.

Есть по крайней мере три проекта, которые пытаются сделать это, но на данный момент имеют лишь некоторый успех. Меня больше интересует создание онлайн-службы отображения изображений для обработки файлов SVG, которая могла бы работать в этом проекте, а не просто раскрашивать карту:

  • Polygonator - описывается здесь: http: // www. electricfairground.com/2009/08/08/image-map-rollover-effects-using-jquerys-maphilight-plugin/, но фактическая услуга находится здесь: http://www.electricfairground.com/polygonator /index.html - я думаю, это самый простой и лучший сервис или программное обеспечение. Вы должны вручную выгрузить текст SVG XML в поле ввода, но, несмотря на то, что говорит автор, я думаю, вы можете выгрузить весь файл SVG в поле ввода, а не только «тег M-z». Полученные теги области необходимо отредактировать, чтобы удалить пустые без координат и многоугольники только с двумя точками.

  • Inkscapemap - http://sourceforge.net/projects/inkscapemap/ - подавляет сложные файлы SVG, например, с затенением. Кроме того, я не мог заставить его отображаться как службу HTML, хотя я следовал совету по использованию основного класса файла jar, который, как я обнаружил, описан в файле манифеста, а также ссылался на основной файл jar и файл поддержки в " архив "атрибут.

  • http://davidlynch.org/blog/2008/03/creating-an-image-map-from-svg/ - очень интересный проект с множеством комментариев в блоге. Карты изображений снова не совсем идеальны и нуждаются в редактировании.

1
ответ дан 2 September 2019 в 22:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: