пятница, 11 июня 2010 г.

Silverlight в действии. Первые опыты.

Собираем Blend 4, Visual Studio 2010 и ESRI ArcGIS Web Mapping в одну работающую систему.

Для отображения карт необходима установка SilverLight 4. По клику правой кнопкой мышки на карту, мы можем установить ее как локальное приложение. После установки при повторном клике правой кнопкой, мы можем удалить приложение.

воскресенье, 6 июня 2010 г.

суббота, 29 мая 2010 г.

Данные и метаданные. Размышления.

Это просто непричесанные размышления, предназначенные в настоящее время в основном для обсуждения.

В последние 3-4 года система геоинформации медленно, но верно меняет свою структуру.
Что же происходит?

Роль первичных все больше начинают играть данные, основанные на технологиях дополнительной реальности - дистанционном зондировании и фотоматериалах. Чуть задерживаются, но также начинают собираться в систему радарные, лидарные данные и результаты съемки в диапазонах, отличных от видимых. Эта информация, не имеющая лингвистической природы, априорно одинаково воспринимается людьми независимо от языка.

Векторные данные, до недавнего времени игравшие роль основных носителей информации, становятся метаданными. Роль векторных данных - создать систему пояснений к базовым растрам. На этом уровне возникают объекты и названия, топологии, значения, условные обозначения, их характеризующие. Данные приобретают субъективный тематический характер, зависящий от языка, знания условных обозначений. Данные о границах и им подобные также являются метаданными, описывающими тот или иной объект. Вообще в итоге получаем картину, полностью согласующуюся с Кантовскими представлениями о пространстве (априорной данности, вне которой сознание не может существовать) и объекте (вещью в себе, любая информация о которой является внешней и описательной - метаданными).

Классические метаданные, традиционно выполняющие роль описания геоинформации, в скором времени интегрируются в векторные данные. Стандарты передачи данных, основанные на XML или JSON, хорошо поддерживают такую интеграцию. Интеграция всей метаинформации обеспечит сохранение и своевременную модификацию описательной информации при модификации данных, к которым она относится.
Кроме этого, такие характеристики новых стандартных форматов как сериализуемость (AJAX), наличие языков описания структуры (XSD), запросов (XPath), преобразований (XSLT) и средств реализации во всех современных языках, по мере переноса работы с геоинформацией в интернет, станут решающими преимуществами.

Отдельной категорией информации являются результаты съемки с помощью GPS. Данные являются векторными и становятся объектами (метаданными) в тот момент, когда мы даем им описание или связываем с другими данными. Вопрос классификации этой категории данных на мой взгляд остается открытым.

пятница, 23 апреля 2010 г.

Скрипты в Google spreadsheets



Недавно стал доступен сервис скриптов в таблицах Google для персональных аккаунтов (gmail).
http://googledocs.blogspot.com/2010/03/apps-script-gallery-for-google.html
Краткое описание
http://www.google.com/google-d-s/scripts/scripts.html
Кроме этого, непосредственно из таблиц стал доступен сервис публикации скриптов в галерею.

Теперь мы можем создавать скрипты для Google Spreadsheets, загружать готовые, публиковать, обмениваться с другими пользователями.
Скрипты имеют богатый набор возможностей. Мы можем использовать всё управление, доступное в сервисах Google.
http://www.google.com/google-d-s/scripts/overview.html

Результатом работы скрипта, например, могут быть:
  • новая функция, отсутствующая в стандартном наборе;
  • значение, возвращаемое веб сервисом, в том числе, SOAP, WSDL и другие;
  • управление другими сервисами, например, сайтом, календарем, почтовой рассылкой;
  • автоматическое заполнение таблиц (непосредственное управление нашими spreadsheets);
  • создание пользовательских интерфейсов (custom spreadsheets UI).

Примеры применения скриптов в неогеографии

Расчет расстояния между точками по большой дуге
Copy Source | Copy HTML
  1. function GCD1(lat1, lon1, lat2, lon2) {
  2. // Return Great Circle Distance between points calculation
  3. function radians(a) {
  4. var outNum =Math.PI*a/180;
  5. return outNum;
  6. }
  7. var R = 6372.795;
  8. var d1=Math.sin(radians(lat1))*Math.sin(radians(lat2))+Math.cos(radians(lat1))*Math.cos(radians(lat2))*Math.cos(radians(lon2)-radians(lon1));
  9. var d2=Math.cos(radians(lat2))*Math.sin(radians(lon2)-radians(lon1));
  10. var d3=Math.cos(radians(lat1))*Math.sin(radians(lat2))-Math.sin(radians(lat1))*Math.cos(radians(lat2))*Math.cos(radians(lon2)-radians(lon1));
  11. var len=R*Math.atan2(Math.sqrt(d2*d2+d3*d3),d1);
  12. return len;
  13. }​

Прямое геокодирование
Вернуть KML по названию
Copy Source | Copy HTML
  1. function getKML(placeName) {
  2. // Return KML by placename
  3. if (placeName == "") {
  4. return "You have to write the name the place"
  5. }
  6. var url = "http://maps.google.com/maps/geo?q="+ placeName+"&output=kml";
  7. var response = UrlFetchApp.fetch(url);
  8. var str = response.getContentText();
  9. return str;
  10. }

Вернуть координаты по названию
  1. function getLngLat(placeName) {
  2. // Return LngLatitude by placename
  3. if (placeName == "") {
  4. return "You have to write the name the place"
  5. }
  6. var url = "http://maps.google.com/maps/geo?q="+ placeName+"&output=json";
  7. var response = UrlFetchApp.fetch(url);
  8. var str=eval('(' + response.getContentText() + ')').Placemark[ 0].Point.coordinates;
  9. return str;
  10. }
Вернуть долготу по названию
  1. function getLng(placeName) {
  2. // Return Longitude by placename
  3. if (placeName == "") {
  4. return "You have to write the name the place"
  5. }
  6. var url = "http://maps.google.com/maps/geo?q="+ placeName+"&output=json";
  7. var response = UrlFetchApp.fetch(url);
  8. var str=eval('(' + response.getContentText() + ')').Placemark[ 0].Point.coordinates[ 0];
  9. return str;
  10. }
Вернуть широту по названию
  1. function getLat(placeName) {
  2. // Return Latitude by placename
  3. if (placeName == "") {
  4. return "You have to write the name the place"
  5. }
  6. var url = "http://maps.google.com/maps/geo?q="+ placeName+"&output=json";
  7. var response = UrlFetchApp.fetch(url);
  8. var str=eval('(' + response.getContentText() + ')').Placemark[ 0].Point.coordinates[1];
  9. return str;
  10. }
Обратное геокодирование

Вернуть адрес по координатам
  1. function getAddress(placeCoord) {
  2. // Return Address by placeCoord (reverse geocoding) placeCoord=lat,lng
  3. if (placeCoord == "") {
  4. return "You have to write the name the place"
  5. }
  6. var url = "http://maps.google.com/maps/geo?q="+ placeCoord+"&output=json";
  7. var response = UrlFetchApp.fetch(url);
  8. var str=eval('(' + response.getContentText() + ')').Placemark[ 0].address;
  9. return str;
  10. }

Пример таблицы расчетов с применением этих скриптов

вторник, 9 марта 2010 г.

QR коды

Графические сервисы Google позволяют быстро создавать QR коды для любого типа информации.

Несколько примеров:
Мои координаты
Мой email


Номер телефона


Контактная информация

пятница, 26 февраля 2010 г.

OLAP. Статистика и анализ.

Росстат перешел на новый сервис предоставления статистических данных, основанный на технологиях OLAP. К достоинствам системы можно отнести возможность использовать ее компоненты как внедренные активные элементы сайтов (виджеты).

Также имеется возможность поддержки стандарта Opensocial и внедрение в качестве гаджета, например, на страницы сайтов.