Страница 3 из 6
Re: mapserver слои
Добавлено: 26 апр 2012, 09:21
Denis Rykov
Прежде всего научите MapServer отдавать WMS в том числе и в проекции 900913, если вы сейчас посмотрите на свой
конфиг, то увидите, что ваш сервис отдает данные только в epsg4326. А затем уже при создании WMS в OpenLayers в третьей группе параметров укажите, что этот слой не является базовым, чтобы его можно было просматривать одновременно с гугловым:
Код: Выделить всё
var layer = new OpenLayers.Layer.WMS( "OpenLayers WMS",
"http://ameno.control.ua:8880/cgi-bin/mapserv?map=/var/www/map2/fldwmsin.map",
{layers: 'rstr,fld,rd'},
{opacity: 0.5, isBaseLayer: false}
);
Re: mapserver слои
Добавлено: 26 апр 2012, 17:53
qnx
сделал как Вы сказали, но на гугловском слое мой слой поверху не появился...
п.с. спасибо огромное, что так подробно помогаете..
Re: mapserver слои
Добавлено: 26 апр 2012, 19:27
Denis Rykov
Если посмотреть какой запрос уходит к MapServer и какой ответ от него приходит, то можно видеть, что приходит сообщение об ошибке:
Код: Выделить всё
msProcessProjection(): Projection library error. no options found in 'init' file
Что означает, что MapServer не может найти код проекции, указанной вами в map-файле. Что-то не так похоже описали. Какие у вас источники данных для WMS-слоёв - векторные или растровые?
Re: mapserver слои
Добавлено: 26 апр 2012, 20:15
qnx
http://ameno.control.ua:8880/map2/fldwmsin.map прямая ссылка на mapfile
Код: Выделить всё
# gdalinfo /mnt/ntfs/fre/cosmo/geo-mosaic-final_ortho_v2.img > ../gdalinfo_rastr.txt
инфа о растре
http://ameno.control.ua:8880/map2/gdalinfo_rastr.txt
Код: Выделить всё
# ogrinfo -al -so Roads.shp > ../orginfo_roads.txt
инфа о файле с линиями
http://ameno.control.ua:8880/map2/orginfo_roads.txt
Код: Выделить всё
# ogrinfo -al -so filds.shp > ../orginfo_filds.txt
инфа о файле с полигонами
http://ameno.control.ua:8880/map2/orginfo_filds.txt
Re: mapserver слои
Добавлено: 26 апр 2012, 20:48
Denis Rykov
Попробуйте сделать следующее:
1. Во-первых, картинку лучше отдавать в png, сравните:
1 и
2. Замените начало вашего map-файла на:
Код: Выделить всё
MAP
SIZE 512 512
MAXSIZE 4096
IMAGECOLOR 255 255 255
IMAGETYPE PNG
SHAPEPATH "/var/www/map2/shapfls/"
OUTPUTFORMAT
NAME "png"
EXTENSION "png"
MIMETYPE "image/png"
DRIVER AGG/PNG
IMAGEMODE RGBA
FORMATOPTION "INTERLACE=OFF"
END
EXTENT -180 -90 180 90
PROJECTION
"init=epsg:4326"
END
то есть полностью уберите этот кусок:
Код: Выделить всё
PROJECTION
"proj=latlong"
"ellps=WGS84"
"datum=WGS84"
"proj=utm"
"ellps=WGS84"
"datum=WGS84"
"zone=44"
"units=m"
"north"
"no_defs"
END
2. Секция WEB должна выглядеть так:
Код: Выделить всё
WEB
METADATA
ows_title "manesrv"
wms_enable_request "*"
ows_service_onlineresource "http://ameno.control.ua/cgi-bin/mapserv?map=/var/www/map2/fldwms.map"
wms_srs "epsg:4326 epsg:3857 epsg:900913"
END
END
3. Внутрь описания каждого слоя добавьте такой фрагмент:
Код: Выделить всё
PROJECTION
"init=epsg:4326"
END
EXTENT -180 -90 180 90
Re: mapserver слои
Добавлено: 26 апр 2012, 22:12
qnx
сделал как вы велели, но как wms слой с гуглом пока не работает по прежнему..
п.с. растровый слой с вектором отдельно очень хороший теперь, четкие линии .. спасибо
Re: mapserver слои
Добавлено: 27 апр 2012, 05:30
Denis Rykov
Да, все верно, только похоже в файле с epsg кодами, который использует MapServer отсутствует описание кода для epsg900913, что в принципе довольно странно, но как быть в такой ситуации я писал
здесь. Плюс небольшие поправки по OL-коду, вообщем
вот смотрите, разбирайтесь, если будут вопросы - пишите. Работает, конечно, не очень быстро. Чтобы поднять скорость, можно заранее подготовить тайлы.
Re: mapserver слои
Добавлено: 27 апр 2012, 20:07
qnx
спасибо огромнейшее!!!
в какую проекцию нужно переделать исходные файлы растра и шейпов, чтоб избежать эти непонятности с нехваткой проекций.
Re: mapserver слои
Добавлено: 28 апр 2012, 04:37
Denis Rykov
По идее можно ничего не переделывать, ведь всё и так работает. В качестве способа чуть поднять производительность (так как данные запрашиваются в 900913 (точнее в 3857), а хранятся они фактически в 4326, то каждый раз происходит перепроецирование на стороне сервера) попробуйте перепроецировать ваши данные в 3857 и соответственно измените проекции в объектах LAYER map-файла.
Re: mapserver слои
Добавлено: 29 апр 2012, 09:33
qnx
все попытки подключения kml слоя не дали результата..
это в виду другой проекции??
http://ameno.control.ua:8880/map2/index_loc_kml.html все пробы и попытки (локальный сайт, но html код доступен)
http://ameno.control.ua/ol/wms/kml/kmlpolygon.kml там глобально kml
п.с. на счет map файла, как темплейта наверное для начала тяжело будет сделать, потому OL будет kml отрисосвывать на карте, если получится)
думаю делать так:
1 - запрос карты из браузера
2 - запуск сокета, который формирует kml файлы на сервере
3 - когда файлы сформированы переброс редиректом на отрисовку подложек с растрами и kml
Re: mapserver слои
Добавлено: 29 апр 2012, 10:39
Denis Rykov
Обновил свой
пример, посмотрите. Зачем вы пишите:
это говорит OpenLayers, что будто бы ваши данные в kml хранятся в проекции 3857, а ведь это не так, они у вас в 4326. И еще писать:
не нужно, векторные слои всегда по умолчанию не базовые.
Re: mapserver слои
Добавлено: 29 апр 2012, 10:50
qnx
http://ameno.control.ua:8880/map2/index_kml.html переделал под свою ссылку, но по полному пути к kml файлу отображать не хочет.
с таким адресом url: "
http://ameno.control.ua/ol/wms/kml/kmlpolygon.kml"
kml только с того же хоста можно показывать??
Re: mapserver слои
Добавлено: 29 апр 2012, 10:56
Denis Rykov
Настройте ProxyHost, вот
тут прочитайте, раздел Cross-domain security.
Re: mapserver слои
Добавлено: 29 апр 2012, 12:12
qnx
http://ameno.control.ua:8880/py/proxy.p ... control.ua
вроде как нужно все поставил... но сомневаюсь, что так должен этот скрипт работать....
хотя снизу пишет, что ошибок 0.
Re: mapserver слои
Добавлено: 29 апр 2012, 12:16
Denis Rykov
Ваш скрипт не работает, при переходе по
ссылке видим:
Код: Выделить всё
MOD_PYTHON ERROR
ProcessId: 26333
Interpreter: 'gisrv.gisrv.ua'
ServerName: 'gisrv.gisrv.ua'
DocumentRoot: '/var/www'
URI: '/py/proxy.py'
Location: None
Directory: '/var/www/py/'
Filename: '/var/www/py/proxy.py'
PathInfo: ''
Phase: 'PythonHandler'
Handler: 'proxy'
Traceback (most recent call last):
File "/usr/lib/python2.6/dist-packages/mod_python/importer.py", line 1537, in HandlerDispatch
default=default_handler, arg=req, silent=hlist.silent)
File "/usr/lib/python2.6/dist-packages/mod_python/importer.py", line 1202, in _process_target
module = import_module(module_name, path=path)
File "/usr/lib/python2.6/dist-packages/mod_python/importer.py", line 296, in import_module
log, import_path)
File "/usr/lib/python2.6/dist-packages/mod_python/importer.py", line 680, in import_module
execfile(file, module.__dict__)
File "/var/www/py/proxy.py", line 31, in <module>
method = os.environ["REQUEST_METHOD"]
File "/usr/lib/python2.6/UserDict.py", line 22, in __getitem__
raise KeyError(key)
KeyError: 'REQUEST_METHOD'
MODULE CACHE DETAILS
Accessed: Sun Apr 29 13:16:34 2012
Generation: 0
_mp_4e63fb6086f4d27799552416711c4705 {
FileName: '/var/www/py/proxy.py'
Instance: 1 [IMPORT]
Generation: 0 [ERROR]
Modified: Sun Apr 29 12:58:03 2012
}
У вас установлен apache2 mod_pyhton?