Posts

Showing posts with the label GIS

Преобразование координат

Разбираясь в своих архивах, нашел много всего почти позабытого. В том числе утилитки для преобразования координат из WGS84 в Пулково 1942 и "морских" координат. Разумеется, эти преобразования можно выполнить с помощью универсальных библиотек, но они огромны и не всегда эффективны, не говоря уж про зависимости. Так что любителям минимализма и встраиваемых решений посвящается. #include <stdio.h> #include <math.h> #include <stdlib.h> double pifact = 0.017453292519943295; // PI/180 - перевод градусов в радианы // параметры референц-эллипсоида Красовского double aval = 6378245.0; // полуось эллипсоида double f = 298.3; // величина сжатия // параметры системы координат 42 года (СК Пулково 42) double cmlon = 45; // центральный меридиан 8-й зоны double orglat = 0; // центральная параллель (экватор) double scale = 1; // масштабный коэффициент double fe = 500000; // восточное смещение (без номера зоны) double fn = 0...

Well-known text (WKT) и Tcl

Well-known text - стандартный формат предоставления геоинформации во многих системах, в том числе, с этим форматом умеют работать OGR, Spatialite, PostGIS. Неплохо бы с этим форматом уметь и напрямую работать, из тиклевой программы. А реализовать это можно вот так: 1. Преобразование во вложенные тиклевские списки: proc WKT_read {wkt} { return [string map {, " " \ ( " {" \ , " " \ ) "} " \ } $wkt] } WKT_read {POINT(6 10)} POINT {6 10} WKT_read {LINESTRING(3 4,10 50,20 25)} LINESTRING {3 4 10 50 20 25} WKT_read {POLYGON((1 1,5 1,5 5,1 5,1 1),(2 2, 3 2, 3 3, 2 3,2 2))} POLYGON { {1 1 5 1 5 5 1 5 1 1} {2 2 3 2 3 3 2 3 2 2} } WKT_read {MULTIPOINT(3.5 5.6,4.8 10.5)} MULTIPOINT {3.5 5.6 4.8 10.5} WKT_read {MULTILINESTRING((3 4,10 50,20 25),(-5 -8,-10 -8,-15 -4))} MULTILINESTRING { {3 4 10 50 20 25} {-5 -8...

GPS конверторы - второе пришествие

Как говорится, все новое - это хорошо забытое старое. Вот и я вспомнил про сделанные когда-то онлайн-конверторы форматов трэков с GPS. Побудил меня к этому ничто иное, как главный двигатель прогресса, то бишь лень. Ну не хочется мне каждый раз вручную набирать команду преобразования трэка, а потом полученный файл закачивать на веб-сервер, откуда его можно просмотреть с помощью Google Maps (понятно, что Google Earth может и локальный файл просмотреть, но ведь хочется и друзьям ссылочку отправить). Напоминаю адрес - https://mobigroup.ru/page/services . Впрочем, образовалась некая проблема - трэков становится все больше (у меня навигатор Garin Oregon 300, трэки умеет сохранять в формате Mapsource в файлах с расширением mps, - в России, к сожалению, он не очень известен, может быть, надо обзорчик написать? если вам интересно, пишите, сделаем обзор), и искать среди них нужный все сложнее. Посему появляется желание сделать онлайн-систему хранения и управления трэками. Думаю, нужны следующие ...

sqlite в ГИС - продолжение

Приятная новость - индекс R-tree входит в состав версии 3.6.0 (впрочем, и сейчас можно скомпилировать загружаемую библиотеку для поддержки этого индекса, и многие разработчики так и делают, разве что на "маках" есть какие-то проблемы, но эта ОСь мне лично до лампочки), которая будет выпущена в среду. Вот что по этому поводу написал в рассылку сам автор SQLite: The current plan is to release SQLite version 3.6.0 on Wednesday, 2008-07-16. Draft documentation on version 3.6.0 is available at http://www.sqlite.org/draft/doc/index.html . Please pay particular attention to: http://www.sqlite.org/draft/doc/35to36.html If you sees any problems with the upcoming release, or finds omissions or errors or ambiguities in the documentation, now would be a very good time to speak up. Thank you for your attention. D. Richard Hipp drh@hwaci.com Вот отсюда http://www.gaia-gis.it/spatialite-2.0/index.html можно взять аналог PostGIS для SQLite. Кстати, этот аналог обладает интересным ...

Немного о GeoServer

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

sqlite в ГИС

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

Картографические приложения с помощью библиотеки OpenLayers

Гора не сходится с горой, Но жизнь свершает круг, И старый недруг нам порой Милей, чем новый друг. Вадим Шефнер "Лачуга должника" Некоторое время тому назад мы уже знакомились с технологией создания картсервера с помощью одноименного приложения mapserver. И все было хорошо - великолепная отрисовка множества векторных и растровых слоев, работа с разнообразными проекциями и источниками данных. Пользовательских интерфейсов для mapserver тоже хватает - и на яваскрипт, и флэшовые, и на ява-аплетах, не говоря уже про простой хтмл. Сложность только одна - где бы взять необходимые нам векторные данные, широко доступное изобилие которых наблюдается на территории западных стран? Вот эта мелочь и является камнем преткновения. Ну еще чисто технические сложности - нужны подготовленные к публикации данные, файл проекта с описанием свойств карты и всех слоев (map-файл), что в общем тоже требует много времени. Сегодня мы поговорим о решениях для бизнеса - есть у нас задача по визуализации се...

Визуализация данных при помощи PyNGL

Попалась на глаза статья, посвященная визуализации научных данных с помощью питоновских библиотек. Не то чтобы я сторонник питона, но отход от использования явы в ГИС-приложениях и смежных областях очень радует, ибо мое отношение к яве "ни за что и никогда". К питону претензия только одна - язык объектный, что чревато всякими нехорошими эффектами (наподобии проблемы с параллельным выполнением кода, отсутствия средств для генерации кода и его последующего выполнения и проч.). Зато вызывает уважение, что питон сумел потеснить перл и яву, на фоне этих артефактов объектная модель питона смотрится привлекательно. Как раз вот сегодня пользовался утилитами из комплекта FWTools, а если быть точным, то питоновской оберткой к gdal, в очередной раз ругался на странную с моей точки зрения идеологию разбора параметров командной строки :-) А вот и сама статья статья

Руководство по GRASS 6.0

В сети появился русский перевод руководства по GRASS 6.0. Учебное руководство по ГИС GRASS 6.0 Вот еще статья там же появилась: Использование Doxygen для работы с исходным программным кодом ПО ГИС Честно сказать, имею большие сомнения в эффективности предлагаемого подхода, но тем не менее и он имеет право на жизнь. Особенно для тех, кто и математику не знает и софт писать не умеет, не говоря уже про чтение исходников. Т.е. для решения разовой задачи вроде ничего, а для серьезного проекта лучше действовать более системно, имхо.

Сервер WMS и библиотека OpenLayers и Google API

Image
Mapserver предоставляет возможность создания серверов WMS и WFS. Такой подход позволяет разделить картсервер и наборы карт от логики (и кода) визуализации, а также пользоваться сторонними WMS/WFS серверами. Кроме того, клиентская часть может быть написана на различных языках под разные платформы. Вот некоторые примеры: яваскрипт библиотека OpenLayers и гугловая версия API, десктопная программа QGIS и другие. Вот ссылка, которая напомнила мне про эту технологию и сподвигла заглянуть в исходники некоторых своих проектов. OpenLayers: начало работы А вот пример карты НН с моего сервера, отображаемой на карте Гугл (когда-то в блоге эта карта висела, при переносе картсервера я этот пример удалил). wms236.js var MAGIC_NUMBER=6356752.3142; var WGS84_SEMI_MAJOR_AXIS = 6378137.0; var WGS84_ECCENTRICITY = 0.0818191913108718138; var DEG2RAD=0.0174532922519943; var PI=3.14159267; var FORMAT_DEFAULT="image/png"; var MERC_ZOOM_DEFAULT = 15; function dd2MercMetersLng(p_lng) { return WGS84_...

Использование Java и PostGIS для отображения карты дорог в Google Maps

Перевести пока нет времени, но статья интересная, сохраню ссылочку для себя и всех интересующихся. Теперь речь идет о картах, что гармонично дополнит предыдущие примеры работы с трэками. http://cse-mjmcl.cse.bris.ac.uk/blog/2006/05/27/1148737394599.html P.S. Глянул файлик GoogleMapsServlet.java , написан вполне себе неплохо, перепишите на своем любимом языке и можете пользоваться. Как понадобится, сделаю на тикле и выложу.

Настройка шрифтов в mapserver (mapserver fonts howto)

Статистика сайта мне подсказывает, что этот вопрос интересует посетителей. Интересно, почему, ведь в этом нет ничего сложного. Впрочем, не все могут иметь опыт наступания на грабли в давних версиях библиотеки GD и не приучены оные [грабли] обходить. Требуемые действия не зависят от платформы, будь то Linux, Unix или клоны BSD. Итак, по порядку. 1. Нужно использовать юникодные шрифты. Можно даже виндовые, из XP. Вот такой набор будет достаточным на первое время: arialbd.ttf arialbi.ttf ariali.ttf arial.ttf ariblk.ttf comic.ttf courbd.ttf courbi.ttf couri.ttf cour.ttf FreeMonoBoldOblique.ttf FreeMonoBold.ttf FreeMonoOblique.ttf FreeMono.ttf FreeSansBoldOblique.ttf FreeSansBold.ttf FreeSansOblique.ttf FreeSans.ttf FreeSerifBoldItalic.ttf FreeSerifBold.ttf FreeSerifItalic.ttf FreeSerif.ttf symbols.ttf verdana.ttf 2. Пишем конфигурационный файл для используемых шрифтов (fonts.list): mono ../fonts/FreeMono.ttf sans ../fonts/FreeSans.ttf sansb ../fonts/FreeSans...

ПУБЛИКАЦИЯ ВЕКТОРНЫХ КАРТ

Подготовка векторных карт к виду, пригодному для их использования в геоинформационных системах (ГИС), является необходимой частью процесса создания карты. Однако в настоящее время практически все отечественные карты не могут быть загружены в ГИС без значительных доработок, а зачастую требуется их векторизация заново. Причиной являются как множественные нарушения топологии, так и проблемы денормализации пространственных и метаданных. В России повсеместно используются векторные карты в файловом формате программы MapInfo, значительно реже - в форматах ArcView, ArcGIS и других, в то время как в мировой практике большие массивы пространственных данных сохраняют в так называемых пространственных хранилищах данных (spatial datasets), представляющих собой реляционные или объектно-реляционные базы данных (БД) с поддержкой геометрических типов данных и операций над ними. Примером таких баз данных являются PostgreSQL с модулем PostGIS и Oracle. Применение указанного подхода обеспечивает логическу...

ПУБЛИКАЦИЯ РАСТРОВЫХ КАРТ

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

ПРОЕКТИРОВАНИЕ ГЕОИНФОРМАЦИОННЫХ СИСТЕМ

Существует множество определений географических информационных систем (ГИС), которые зачастую противоречивы. Кроме того, ни одно из известных автору определений не может являться основой построения реальной ГИС. В то же время понятие геоинформационной системы может быть получено на основе определения системы. В общем случае, система представляет собой совокупность частей и взаимодействий между ними. Тогда информационную систему мы можем определить как множество информации и заданные над этим множеством операции, то есть приходим к понятию теоретико-множественной модели, давно известной математикам. Заметим, что определение множества требует от нас лишь одного: задания критерия принадлежности элементов множеству. То есть, если для любого элемента мы можем однозначно указать, входит он в множество или нет, множество определено. Для географической информации могут быть определены следующие типы информации: точка, линия и полигон. Аттрибутивную информацию можно представлять строками и числ...