mapserver слои

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: mapserver слои

Сообщение Denis Rykov » 26 апр 2012, 09:21

Прежде всего научите 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}
);
Spatial is now, more than ever, just another column- The Geometry Column.

Аватара пользователя
qnx
Участник
Сообщения: 61
Зарегистрирован: 13 апр 2012, 12:10
Репутация: 0
Откуда: город-герой Киев

Re: mapserver слои

Сообщение qnx » 26 апр 2012, 17:53

сделал как Вы сказали, но на гугловском слое мой слой поверху не появился...

п.с. спасибо огромное, что так подробно помогаете..
КОЖЗГСФ

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: mapserver слои

Сообщение Denis Rykov » 26 апр 2012, 19:27

Если посмотреть какой запрос уходит к MapServer и какой ответ от него приходит, то можно видеть, что приходит сообщение об ошибке:

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

msProcessProjection(): Projection library error. no options found in 'init' file
Что означает, что MapServer не может найти код проекции, указанной вами в map-файле. Что-то не так похоже описали. Какие у вас источники данных для WMS-слоёв - векторные или растровые?
Spatial is now, more than ever, just another column- The Geometry Column.

Аватара пользователя
qnx
Участник
Сообщения: 61
Зарегистрирован: 13 апр 2012, 12:10
Репутация: 0
Откуда: город-герой Киев

Re: mapserver слои

Сообщение qnx » 26 апр 2012, 20:15

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
КОЖЗГСФ

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: mapserver слои

Сообщение Denis Rykov » 26 апр 2012, 20:48

Попробуйте сделать следующее:

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
Spatial is now, more than ever, just another column- The Geometry Column.

Аватара пользователя
qnx
Участник
Сообщения: 61
Зарегистрирован: 13 апр 2012, 12:10
Репутация: 0
Откуда: город-герой Киев

Re: mapserver слои

Сообщение qnx » 26 апр 2012, 22:12

сделал как вы велели, но как wms слой с гуглом пока не работает по прежнему..
п.с. растровый слой с вектором отдельно очень хороший теперь, четкие линии .. спасибо
КОЖЗГСФ

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: mapserver слои

Сообщение Denis Rykov » 27 апр 2012, 05:30

Да, все верно, только похоже в файле с epsg кодами, который использует MapServer отсутствует описание кода для epsg900913, что в принципе довольно странно, но как быть в такой ситуации я писал здесь. Плюс небольшие поправки по OL-коду, вообщем вот смотрите, разбирайтесь, если будут вопросы - пишите. Работает, конечно, не очень быстро. Чтобы поднять скорость, можно заранее подготовить тайлы.
Spatial is now, more than ever, just another column- The Geometry Column.

Аватара пользователя
qnx
Участник
Сообщения: 61
Зарегистрирован: 13 апр 2012, 12:10
Репутация: 0
Откуда: город-герой Киев

Re: mapserver слои

Сообщение qnx » 27 апр 2012, 20:07

спасибо огромнейшее!!!
в какую проекцию нужно переделать исходные файлы растра и шейпов, чтоб избежать эти непонятности с нехваткой проекций.
КОЖЗГСФ

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: mapserver слои

Сообщение Denis Rykov » 28 апр 2012, 04:37

По идее можно ничего не переделывать, ведь всё и так работает. В качестве способа чуть поднять производительность (так как данные запрашиваются в 900913 (точнее в 3857), а хранятся они фактически в 4326, то каждый раз происходит перепроецирование на стороне сервера) попробуйте перепроецировать ваши данные в 3857 и соответственно измените проекции в объектах LAYER map-файла.
Spatial is now, more than ever, just another column- The Geometry Column.

Аватара пользователя
qnx
Участник
Сообщения: 61
Зарегистрирован: 13 апр 2012, 12:10
Репутация: 0
Откуда: город-герой Киев

Re: mapserver слои

Сообщение qnx » 29 апр 2012, 09:33

все попытки подключения 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
КОЖЗГСФ

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: mapserver слои

Сообщение Denis Rykov » 29 апр 2012, 10:39

Обновил свой пример, посмотрите. Зачем вы пишите:

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

kml_poly.projection = "EPSG:3857";
это говорит OpenLayers, что будто бы ваши данные в kml хранятся в проекции 3857, а ведь это не так, они у вас в 4326. И еще писать:

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

kml_poly.setIsBaseLayer(false)
не нужно, векторные слои всегда по умолчанию не базовые.
Spatial is now, more than ever, just another column- The Geometry Column.

Аватара пользователя
qnx
Участник
Сообщения: 61
Зарегистрирован: 13 апр 2012, 12:10
Репутация: 0
Откуда: город-герой Киев

Re: mapserver слои

Сообщение qnx » 29 апр 2012, 10:50

http://ameno.control.ua:8880/map2/index_kml.html переделал под свою ссылку, но по полному пути к kml файлу отображать не хочет.
с таким адресом url: "http://ameno.control.ua/ol/wms/kml/kmlpolygon.kml"

kml только с того же хоста можно показывать??
КОЖЗГСФ

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: mapserver слои

Сообщение Denis Rykov » 29 апр 2012, 10:56

Настройте ProxyHost, вот тут прочитайте, раздел Cross-domain security.
Spatial is now, more than ever, just another column- The Geometry Column.

Аватара пользователя
qnx
Участник
Сообщения: 61
Зарегистрирован: 13 апр 2012, 12:10
Репутация: 0
Откуда: город-герой Киев

Re: mapserver слои

Сообщение qnx » 29 апр 2012, 12:12

http://ameno.control.ua:8880/py/proxy.p ... control.ua

вроде как нужно все поставил... но сомневаюсь, что так должен этот скрипт работать....
хотя снизу пишет, что ошибок 0.
КОЖЗГСФ

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: mapserver слои

Сообщение Denis Rykov » 29 апр 2012, 12:16

Ваш скрипт не работает, при переходе по ссылке видим:

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

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?
Spatial is now, more than ever, just another column- The Geometry Column.

Ответить

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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость