ka-map + Google Maps(flex) + Map Server

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
orlangur
Новоприбывший
Сообщения: 4
Зарегистрирован: 26 июн 2009, 17:44
Репутация: 0

ka-map + Google Maps(flex) + Map Server

Сообщение orlangur » 02 июл 2009, 11:21

Доброго времени суток, ув. эксперты!
Прошу совета и/или помощи. В БД PostgreSQL PostGIS имеются географические координаты улицы некоторых крупных городов. Необходимо наложить эти улицы поверх Google карты. МапСервер одну большую картинку умеет отображать с улицами и подписями. На сколько я понял, ka-map можно использовать для разбивки этой большой карты на отдельные тайлы. Проблема возникает при попытке наложить на гугло-карту. Для этого использую TileLayerOverlay и свой класс унаследованный от TileLayerBase. АПИ гугла автоматически вызывает метод loadTile для загрузки очередного тайла. Параметрами туда передаются координаты тайла (гугловские координаты, по сути индексы строки и столбца) и зум. Не могу сообразить, что мне нужно сделать, чтоб привести эти координаты в вид понятный ka-map и MapServer'у, чтоб тот сгенерировал и вернул нужный тайл.
На просторах интернета находил модифицированный файл tile.php (из ка-мап), который вроде как предназначен для того, чтоб "подружить" ka-map с гугло-картами, однако не захотел он работать как нужно. При переводе индексов тайла гугла в екстент для мап-сервера, все время получается miny и maxy одинаковыми...
Заранее спасибо.

orlangur
Новоприбывший
Сообщения: 4
Зарегистрирован: 26 июн 2009, 17:44
Репутация: 0

Re: ka-map + Google Maps(flex) + Map Server

Сообщение orlangur » 02 июл 2009, 15:26

Некоторые изменения. Удалось добиться генерации тайлов и наложения на гугл-мапс. Однако вышло так, что улицы оказались сильно смещены (смещение: 2-4 км в северо-восточном направлении. исходные координаты более-менее точные - пробовал рисовать линии-улицы на карте средствами флеша - почти идеально совпадали). В мап-файле для MapServer общую проекцию определил как:

Код: Выделить всё

PROJECTION
	"+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext  +no_defs"
  END
А для слоев улиц, которые берутся из базы и в исходном варианте имеют координаты точек в виде широта/долгота, следующую проекцию:

Код: Выделить всё

PROJECTION
    "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"
END
Что может быть причиной смещения? Может я неправильно выбираю исходную проекцию данных? или целевую проекцию гугла...?

AntonAD
Участник
Сообщения: 83
Зарегистрирован: 16 июн 2009, 10:38
Репутация: 0

Re: ka-map + Google Maps(flex) + Map Server

Сообщение AntonAD » 02 июл 2009, 16:02

сложно судить в чем именно проблема, но я сам только что поборол наложение растра на google maps.
использовал эту статью: gis-lab.info/qa/ms-gm.html

надеюсь поможет

orlangur
Новоприбывший
Сообщения: 4
Зарегистрирован: 26 июн 2009, 17:44
Репутация: 0

Re: ka-map + Google Maps(flex) + Map Server

Сообщение orlangur » 02 июл 2009, 17:37

проблема решена.
Загвоздка была в алгоритме перевода градусов в метры по проекции Меркатора (в файле генерации тайлов tile.php): использовался средний радиус Земли, а нужен был, судя по всему, экваториальный (во всяком случае с ним у меня улицы встали на свои места).

Ответить

Вернуться в «Веб-картография»

Кто сейчас на конференции

Сейчас этот форум просматривают: Bing [Bot] и 1 гость