суббота, 28 февраля 2009 г.

Google Geo — большое обновление данных в Google Earth, подводные модели в Sketh Up

Сегодня большое обновление данных по России для данных высокого разрешения.
Что заметил - добавились данные по Перми, длинные меридианальные снимки вдоль Уральского хребта с запада и востока, причем летние и зимние. Добавились данные высокого разрешения в районе нефте-газо промысла ЯМАО и ХМАО.
Данные дополнены за счет нового спутника GeoEye, как написано. Показалось странным, что это написано про летние снимки, причем высвечивается 2009 год - по моему здесь как минимум одна ошибка. Но если не придираться к мелочам, то обновление замечательное. Особенно порадовал новый мост в Перми со всеми развязками и район проектируемой железной дороги по восточному склону Урала.
В Google Maps сегодня все по старому, новых снимков нет. Немного обновлен слой дорог, но по Россиии здесь ничего нового.
Новые данные можно проверить, нажав на интересующем виде в GE кнопку Смотреть в GMaps. Поскольку в GMaps старые данные, мы легко сможем их сравнить.

Sketh Up поддерживает теперь создание подводных моделей


пятница, 27 февраля 2009 г.

KML. Добавляем веб камеры.

Недавно на хабре было обсуждение веб камер http://habrahabr.ru/blogs/i_am_clever/52572/ , при этом разговор несколько раз коснулся методов применения такому материалу. Вспомнил свои старые эксперименты с веб камерами и решил опубликовать этот материал здесь.
Мое отношение - веб камеры с координатами были бы прекрасным сервисом, востребованным при решении многих задач, достойная поддержка для множества систем реального времени. Пример подборки - http://villagegis.com/Google.html - это создавалось в том числе для департамента транспорта.
Пока что не обнаружил у нас хорошей социальной сети по типу http://www.weatherbonk.com/weather/webcams.jsp - по моему неплохая тема для стартапа, или одного из его компонентов. Если кто нибудь сможет добавить к поиску камер определение места по ip, адресу и тп - было бы интересное начальное приближение.

Один из удобных клиентов для работы с веб камерами - Google Earth.

image

Мы можем включать изображение как:
Screenoverlay - наиболее простое решение, удобное для просмотра с заданным интервалом обновления
Photooverlay - у меня на экране изображение начинает мигать, пока выглядит не очень хорошо
Groundoverlay - может оказаться интересным, если мы сможем создавать сервисы трансформации изображений
Image in balloon - решение было бы наилучшим, если будет реализована возможность обновления изображения. В GE5 добавлена поддержка iframe и js, возможно теперь это можно реализовать средствами KML.
На хабре видел интересное решение на базе GMaps для Красногорска http://habrahabr.ru/blogs/webdev/52190/ правда в большей степени публикация посвящена настройке камер
Пример KML - Screenoverlay Пример довольно старый, из четырех камер сохранились ссылки только для двух.
Пример - мониторинг вулканов (Аляска)
image
KML - Screenoverlay Делал этот слой в 2006 году по материалам Alaska Volcano Observatory http://www.avo.alaska.edu/ Восстанавливал по описанию координаты и цеплялся на линк к веб камере.

Пример KML - Photooverlay
image

Как это реализуется средствами KML?
Рассмотрим это на примере Screenoverlay с использованием техники прямого редактирования кода KML.

Типичный код вставки выглядит так:
Copy Source | Copy HTML
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom">
<ScreenOverlay>
<name>Perm Webcam 2</name>
<Snippet maxLines="0"></Snippet>
<LookAt>
<longitude>56.22312242824621</longitude>
<latitude>58.01396606265071</latitude>
<altitude>0</altitude>
<range>107.638554354073</range>
<tilt>55.99393586459927</tilt>
<heading>2.145894923887044</heading>
</LookAt>
<Icon>
<href>http://webcam.perm.ru/cameras/2/jpeg/1159130566796_320x240.jpg</href>
<refreshMode>onInterval</refreshMode>
</Icon>
<overlayXY x="1" y="1" xunits="fraction" yunits="fraction"/>
<screenXY x="1" y="1" xunits="fraction" yunits="fraction"/>
<rotationXY x="0" y="0" xunits="fraction" yunits="fraction"/>
<size x="0" y="0" xunits="fraction" yunits="fraction"/>
<refreshInterval>1</refreshInterval>
</ScreenOverlay>
</kml>

Мы можем скопировать код и вставить его в GE - MyPlaces.

Время обновления определяется строкой
<refreshInterval>1</refreshInterval>

Мы можем управлять размерами и положением изображения (см официальную документацию).

Надеюсь, что этот материал поможет находить применение многочисленным веб камерам, объединяя их в тематические слои, в частности, в KML формате.

KML=XML+XSL Разработка веб приложений

Продолжаю серию публикаций о методах генерации KML
Эта статья продолжает http://habrahabr.ru/blogs/google/52009/

Методы создания и редактирования KML

  • Создание внутренними средствами Google Earth

  • Экспорт из ГИС как внутренними средствами, так и с помощью специальных расширений

  • Генерация средствами php, python и другими языками программирования

  • Генерация средствами spreadsheets, pipes, xslt и другими средствами трансформации данных

  • Прямое редактирование текста

Для начала - сайт в студию http://spreadsheetsgis.googlepages.com/ - раздел Editgrid Solutions. В эту часть включены примеры генерации KML методами XSLT

http://www.editgrid.com/ - наиболее мощное решение веб2 для spreadsheets, обладающее такими свойствами, как поддержка скриптов, xslt, простая и строгая базовая структура данных XML.

image

image
image

О возможностях EG попробую написать в другой статье.

Пример использования - вычисление параметров маршрута и создание KML на основе путевых точек.
Решение задачи - http://spreadsheetsgis.googlepages.com/pathcalculator включает создание таблицы исходных данных в Editgrid - http://www.editgrid.com/user/valery35/Pathv3 и добавление вычисляемых полей
расчета дистанции по большой дуге http://en.wikipedia.org/wiki/Great-circle_distance и приведения времени к стандартному виду типа 1997-08-27T10:30:15Z
Все необходимые поля значений у нас есть, можно приступать к формированию преобразования XML в KML

Исходные данные в формате XML http://www.editgrid.com/user/valery35/Pathv3.xml

Copy Source | Copy HTML
  1. <workbook>

  2.   <sheet name="path1" index="0">

  3.     <row row="0">

  4.       <cell col="0"/>

  5.       <cell col="1" type="string" input="R km" value="R km">R km</cell>

  6.       <cell col="2" datetime="19170611T190448" type="float" input="6372.795" value="6372.795">6372.795</cell>

  7.       <cell col="3" type="string" input="Seg" value="Seg">Seg</cell>

  8.       <cell col="4" type="string" input="Sum" value="Sum">Sum</cell>

  9.       <cell col="5"/>

  10.       <cell col="6"/>

  11.       <cell col="7"/>

  12.       <cell col="8"/>

  13.       <cell col="9"/>

  14.       <cell col="10"/>

  15.       <cell col="11"/>

  16.       <cell col="12"/>

  17.       <cell col="13"/>

  18.       <cell col="14"/>

  19.       <cell col="15"/>

  20.     </row>

  21. ...

  22.     <row row="3">

  23.       <cell col="0" type="string" input="Joe" value="Joe">Joe</cell>

  24.       <cell col="1" datetime="19000202T223336" type="float" input="33.94" value="33.94">33.940</cell>

  25.       <cell col="2" datetime="" type="float" input="-118.4" value="-118.4">-118.400</cell>

  26.       <cell col="3" datetime="19130704T174441" type="float" input="=$C$1*atan2(sin(radians(B3))*sin(radians(B4))+cos(radians(B3))*cos(radians(B4))*cos(radians(C4)-radians(C3)),sqrt(power(cos(radians(B4))*sin(radians(C4)-radians(C3)),2)+power(cos(radians(B3))*sin(radians(B4))-sin(radians(B3))*cos(radians(B4))*cos(radians(C4)-radians(C3)),2)))" value="4934.73936727376">4935</cell>

  27.       <cell col="4" datetime="19130704T174441" type="float" input="=E3+D4" value="4934.73936727376">4935</cell>

  28.       <cell col="5" type="string" input="1997-07-17" value="1997-07-17">1997-07-17</cell>

  29.       <cell col="6" type="string" input="10:30:15" value="10:30:15">10:30:15</cell>

  30.       <cell col="7" type="string" input="=concatenate(F4,&quot;T&quot;,G4,&quot;Z&quot;)" value="1997-07-17T10:30:15Z">1997-07-17T10:30:15Z</cell>

  31.       <cell col="8"/>

  32.       <cell col="9"/>

  33.       <cell col="10"/>

  34.       <cell col="11" type="string" input=" " value=" "> </cell>

  35.       <cell col="12"/>

  36.       <cell col="13"/>

  37.       <cell col="14"/>

  38.       <cell col="15"/>

  39.     </row>

  40. ...

  41.   </sheet>

  42. </workbook>



Как видим, внутреннее устройство таблицы довольно простое
Теперь XSLT преобразования.
В Editgrid есть вкладка My data formats, предназначенная для создания XSLT и добавления mime

Мы формируем несколько XSL скриптов

Создаем точки с тегами времени
Код xsl

Copy Source | Copy HTML
  1. <?xml version="1.0" encoding="UTF-8" ?>

  2. <xsl:stylesheet version="1.0" xmlns="http://earth.google.com/kml/2.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  3.     <xsl:output method="xml" />

  4.     <xsl:template match="/">

  5.         <kml>

  6.             <Document>

  7.                 <name>

  8.                     Spreadsheets name

  9.                 </name>

  10.                 <xsl:apply-templates />

  11.             </Document>

  12.         </kml>

  13.     </xsl:template>

  14.     <xsl:template match="sheet">

  15.         <xsl:for-each select="row[@row >= 2]">

  16.             <Placemark>

  17.                 <Snippet maxLines="0"></Snippet>

  18.                 <name>

  19.                     <xsl:value-of select="cell[@col=0]" />

  20.                 </name>

  21.                 <description>

  22.                     <![CDATA[

  23.                         <b>Length:</b><br>

  24.                         Seg: ]]><xsl:value-of select="format-number(cell[@col=3]/@value,'#.000')" /><![CDATA[ ,km<br>

  25.                         Sum: ]]><xsl:value-of select="format-number(cell[@col=4]/@value,'#.000')" /><![CDATA[ ,km<br>

  26.                     ]]>

  27.                 </description>

  28.                 <Point>

  29.                     <coordinates>

  30.                         <xsl:value-of select="cell[@col=2]/@value" />,

  31.                         <xsl:value-of select="cell[@col=1]/@value" />

  32.                     </coordinates>

  33.                 </Point>

  34.             </Placemark>

  35.         </xsl:for-each>

  36.     </xsl:template>

  37. </xsl:stylesheet>

  38.  



Результирующий KML является результатом трансформации.

Кроме этого, отдельные xsl созданы для
сегментов xsl kml
и общего трека - xsl kml
Отдельные элементы собраны в общий системный KML также с помощью xsl
и к системной области создано сетевое соединение KML xsl являющееся уже внешним пользовательским.
О системной области и сетевом линке постараюсь больше написать в следующих публикациях. Это отдельная тема.

Что мы в результате получили?
Полноценное веб приложение с заданным уровнем доступа.
Пользователи могут дополнять и изменять данные.
KML и вид треков будет меняться автоматически у всех пользователей.
Шаблон для создания новых приложений.
Не написано ни одной строчки кода, кроме xsl


воскресенье, 22 февраля 2009 г.

Scribd - хранилище документов

Наряду с известными Google Docs, в интернет доступны другие сервисы для хранения документов. Один из них это http://www.scribd.com
Сервис примечателен:
возможностью хранения и публикации внедренных документов различных типов -

  • Microsoft Office: Microsoft Word Files doc, docx Microsoft Powerpoint Files ppt, pptx, pps Microsoft Excel Files xls, xlsx
  • PDF: PDF pdf, ps
  • Open Office: Open Office Documents odt, odp, sxw, sxi, etc.
  • Text: Text Documents txt, rtf

Примечательна возможность публикации pdf файлов, отсутствующая в GDocs.
Следующее дополнение - Uploader. Это утилита, позволяющая производить загрузку и контроль ошибок для большого количества файлов.
Существует возможность указывать теги и другие метаданные о документе, объявлять совместный доступ, использовать API и другие возможности, характерные для современных веб сервисов. В целом оставляет приятное впечатление.

Опубликованный документ может быть внедрен в баллон Google Earth с указанием области интересов и времени действия документа. Для нас это немаловажно, например, при создании базы данных пространственно-временной изученности районов.

В качестве примера соединения было выбрано одно из архивных руководств пользователя, выполненное в виде отчета (2003 год).



Открыть в Google Earth
GeoScribd.kmz



geoconstructor

четверг, 19 февраля 2009 г.

Navigator 1.0.9 , KMLer 2.0.12


В программе Navigator добавлена возможность загрузки готовых треков в формате NMEA.
Выберите File (Test mode) и при подключении можете выбрать любой трек из вашей коллекции, или поиском в интернет (файлов с треками достаточно много).
Задачи:
1. Тестирование программы
2. Создание презентаций. Вы можете записать реальный маршрут и сохранить его в формат NMEA
3. Анализ работы GPS. При воспроизведении доступны не только координаты, но и данные о спутниках и качестве сигнала

Добавлен выбор единиц измерения для расстояния и скорости

Добавлена поддержка новых тегов KML - relativeToSeaFloor, clampToSeaFloor
Теперь мы можем создавать смешанные модели суша-море.добавлены

воскресенье, 15 февраля 2009 г.

KML — работаем профессионально. Введение.

KML - язык управления геоданными, являющийся основным для Google Earth, также поддерживается такими популярными средами как MS Virtual Earth, ArcGIS, Microstation, Autodesk ... Список постоянно пополняется, KML является также одним из OGC стандартов http://www.opengeospatial.org/standards/kml/
Ссылки
http://code.google.com/intl/ru/apis/kml/ - домашняя страница руководства по KML
http://ru.wikipedia.org/wiki/KML - Википедия
http://www.eastgeology.com/neogeografia - наша коллекция KML

Методы создания и редактирования KML
  • Создание внутренними средствами Google Earth
  • Экспорт из ГИС как внутренними средствами, так и с помощью специальных расширений
  • Генерация средствам php, python, xslt и другими
  • Прямое редактирование в текстовых редакторах

Прямое редактирование в текстовых редакторах

Описанию расширений и возможностей различных программных средств для генерации KML посвящено довольно много сайтов и публикаций, а о профессиональной работе непосредственно с KML текстом информация отсутствует. Поэтому начнем с редактирования.
Требуемый KML зачастую невозможно создать без прямого редактирования его текста в редакторе. Причин этому несколько:

  • Постоянно обновляются теги KML

  • Отсутствуют пользовательские средства, в полной мере поддерживающие все средства KML при создании и редактировании.


Существующие средства, как правило, ориентированы на упрощение реализации конкретных задач. Несмотря на наличие как стандартного программного обеспечения, так и собственного для работы с KML http://applications.geoblogspot.com/ , примерно половину времени работы с KML провожу в обычном текстовом редакторе (использую Notepad++).
Одна из основных возможностей GE - копирование и вставка объектов (Ctrl+C, Ctrl+V - далее CtrlCV).
Создаем или открываем KML в GE, выделяем его в списке Places, делаем CtrlCV и видим его дубликат.
Теперь открываем редактор, делаем Ctrl+V и видим текст KML в редакторе. Неважно, работаем мы с KML или KMZ форматом, внутренним форматом GE является KML. KMZ - это архивированный ZIP архив KML и распаковывается при открытии в GE автоматически. Вы можете также распаковать (unzip) KMZ файл вручную и убедиться в этом самостоятельно.

Пример - добавление даты события (тегов времени).

Открываем GE
Копируем следующий текст KML в буфер обмена и вставляем в My Places
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>Point with TimeStamps</name>
<Placemark>
<Point>
<coordinates>57.05104837705052,57.62926121886946,0</coordinates>
</Point>
</Placemark>
<Placemark>
<Point>
<coordinates>57.51270742269408,57.84105183908832,0</coordinates>
</Point>
</Placemark>
</Document>
</kml>

На глобусе должны появиться две точки. Теперь вставляем штамп времени. Для этого вставляем текст KML в редактор и добавляем необходимые теги. Результат примерно такой

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>Point with TimeStamps</name>
<Placemark>
<TimeStamp> <!-- Открываем описание даты события -->
<when>2007-01-12</when> <!-- Дата события -->
</TimeStamp> <!-- Закрываем описание даты события -->
<Point>
<coordinates>57.05104837705052,57.62926121886946,0</coordinates>
</Point>
</Placemark>
<Placemark>
<TimeStamp><when>2008-01-12</when></TimeStamp> <!-- Дата другого события -->
<Point>
<coordinates>57.51270742269408,57.84105183908832,0</coordinates>
</Point>
</Placemark>
</Document>
</kml>

Копируем полученный текст в буфер обмена и в GE. Получаем KML, который содержит даты событий. Шкала времени должна появиться автоматически, и теперь с ее помощью можно управлять видимостью событий.
Результат можно сохранить локально или опубликовать в internet как KMZ файл.

Вы можете сразу загрузить в GE приведенные примеры с небольшими изменениями:
Без временной шкалы - http://dl.getdropbox.com/u/470962/kml/learing/Points%20without%20of%20TimeStamps.kmz - внес небольшие изменения в стили, чтобы примеры отличались друг от друга
С добавлением даты событий http://dl.getdropbox.com/u/470962/kml/learing/Points%20with%20TimeStamps.kmz



пятница, 13 февраля 2009 г.

Google Code — эксперименты с хостингом


На известном ресурсе Google для разработчиков code.google.com/ мы можем размещать в открытом исходном коде свои проекты. Анализируя официальные блоги от Google, обратил внимание, что сами Google разработчики активно используют этот ресурс для публикации примеров, библиотек. Больше всего удивило, что у них код html работает непосредственно со страниц Code (из SVN), а у меня — нет.
Увидев публикацию googlegeodevelopers.blogspot.com/2009/01/timemap-helping-you-add-4th-dimension.html, посвященную объединению шкалы времени и GMaps, решил таки разобраться, в чем тут дело.

Исходный код для вставки
<iframe src="http://mytimemap.googlecode.com/svn/trunk/examples/kenya.html" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" height="800px" width="100%" title="Тестируем SVN и 4D GMaps - Valery35"></iframe>


Дело в том, что c момента возникновения GMaps интересуюсь этим сервисом, а в январе 2007 года еще немного экспериментировал с сервисом Simile, тоже с идеей пристыковать его как временную шкалу к GMaps. Вот следы экспериментов того времени
spreadsheetsgis.googlepages.com/timeline — пробная страница в Googlepages
blog.geoblogspot.com/2007/01/timeline-on-google-planet.html — внедренный элемент блога
Так что интерес к вопросу наконец то превысил лень, и, как результат, появилась эта статья.

Итак, имеем code.google.com/p/timemap/ — исходная область, имеющая работающую страницу
timemap.googlecode.com/svn/trunk/examples/kenya.html
Также установлены TortoiseSVN 1.5.7, Сборка 15182 — 32 Bit, 2009/01/24 22:44:13 и Vista

Задача — получить работающую копию.
1. Создаем рабочую область code.google.com/p/mytimemap/
2. Копируем область timemap в mytimemap — использовал TortoiseSVN команду SVN Checkout
3. Изменяем API Key у GMaps
4. Прописываем mime у некоторых типов файлов — почему то это не отражено в Google Code, нашел почти случайно.
На выбранном файле или группе файлов выбираем SVN > Свойства


Для HTML выбираем


Для CSS


Для KML


Для изображений


Для этого проекта больше ничего не понадобилось, думаю, при необходимость можно задавать mime и для других типов данных.

Все заработало:
Страница mytimemap.googlecode.com/svn/trunk/examples/kenya.html открывается прямо из рабочей области Code
Файл mytimemap.googlecode.com/svn/trunk/examples/kenya.kml открывается сразу в Google Earth

Полученные страницы можно внедрять элементами сайтов как виджеты или гаджеты, SVN позволяет работать с набором файлов, создавать сложные структуры папок, контролировать версии и отслеживать работу других участников проекта. Поскольку активно работаю с KML, то для меня особенно интересной была возможность хранения больших наборов KML(KMZ) файлов.

Кросс пост на Хабре http://habrahabr.ru/blogs/google/51866/

четверг, 12 февраля 2009 г.

Публикуем KML

Прекрасный кодировщик KML для публикаций http://s-c.me/
Просто копируем Placemark, создаем подсвеченную схему и вставляем код. Это пример в блоге. Вы можете просто выделить полученный текст и вставить в Google Earth.
Давно такое искал, спешу поделиться.
Пример KML (абстрактный)

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom">
<Placemark>
<name>Sutro Baths in 1946</name>
<visibility>0</visibility>
<Camera>
<gx:TimeStamp><when>1946-07-29T05:00:00-08:00</when>
</gx:TimeStamp>
<longitude>-122.518172</longitude>
<latitude>37.778036</latitude>
<altitude>221</altitude>
<heading>70</heading>
<tilt>75</tilt>
<roll>0</roll>
</Camera>
</Placemark>
</kml>

Placemarker — подписи в Google Earth

Одна из программ, которые мы разработали и распространяем бесплатно — это Placemarker
Программа не поддерживается ни одной организацией и целиком является авторской разработкой и собственностью.
image

Placemarker — это программа для генерации изображений на основе текста и значка. Placemarker позволяет создавать специальные подписи в Google Earth. Мы вводим требуемый текст надписи, добавляем значок, эффекты и выбираем шрифт. Результаты всех операций отображаются в окне предварительного просмотра. Далее мы выбираем положение надписи в Google Earth и сохраняем результат как локальный KMZ файл. Все эти возможности позволяют Placemarker быть хорошим инструментом для GE дизайнеров и создателей тематических карт.

Немного на русском
Немного на английском
Download — на всякий случай

Основные возможности программы, отсутствующие в стандартной Google Earth:
  • Многострочные подписи
  • Выбор шрифта и эффекта (тень, контур)
  • Выбор градиента цвета для текста и эффекта
  • Выбор положения значка относительно подписи
  • Выбор положения точки в Google Earth
  • Сохранение как KMZ файл с внедренным изображением

Одна из основных возможностей, требуемых при создании карт-презентаций это создание качественных условных обозначений.

Причем, как правило, требуется
  1. создать набор маркеров
  2. расположить их на карте
  3. выровнять к общему стилю
  4. подобрать индивидуальные особенности, исходя из общего вида картинки

Для решения этой задачи и был создан Placemarker.

Поддерживаются ОС Windows XP/2003/Vista

Окно диалога
image

Эффекты

Линейный градиент
image

Штриховка
image

Окно привязки подписи в GE
Окно включает навигатор для подписей. Мы можем последовательно перемещаться по ним
image

Примеры
Составные условные обозначения и прогноз погоды
image

Примеры результатов в Google Earth (KML файлы)
Пример 1
Пример 2

Кросспост на Хабр

пятница, 6 февраля 2009 г.

KML2KML 2.7.3

С помощью приложения KML2KML мы можем теперь строить изобаты, смешанные модели вода-суша-береговая линия.



Добавлена поддержка новых тегов KML - relativeToSeaFloor, clampToSeaFloor
Теперь мы можем создавать смешанные модели суша-море.

Открыть в Google Earth (требуется версия не ниже 5.0)


Мы можем видеть эти изолинии также из под воды


Смотрите также