Как автоматически создавать изображения из серых карт из Википедии? - PullRequest
1 голос
/ 23 июля 2010

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

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

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

Ответы [ 3 ]

1 голос
/ 28 июля 2010

Практически идеальным решением этой проблемы является использование изображений SVG и этого переводчика кода SVG для тегов области imagmap: 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,, им просто нужно немного почистить с помощью Polygonator.

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

1 голос
/ 30 июля 2010

Что ж, реальный ответ здесь заключается в том, что файлы 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 в поле in, а не только «Mz tag».Получившиеся теги областей требуют редактирования, чтобы удалить пустые теги без координат и полигоны только с двумя точками.

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

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

0 голосов
/ 27 июля 2010

Я вижу, что могу использовать GD PHP 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

...