Страница 1 из 1

точечный слой в Mapserver

Добавлено: 12 дек 2012, 20:08
Marina TS
Здравствуйте!
Подскажите, пожалуйста, почему не отображается точеный слой (Mapserver+pmapper). описание в map-файле:

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

LAYER 
NAME plantsrf
DATA plantsrf
STATUS ON
TYPE POINT
TEMPLATE void

METADATA
"LAYER_ENCODING" "CP1251"
"DESCRIPTION" "Растения, занесенные в Красную Книгу РФ"
"RESULT_FIELDS" "NAME"
"RESULT_HEADERS" "Латинское название"
END

CLASSITEM "Gridcode"
LABELITEM "Gridcode"
TOLERANCE 5 # точность "попадания" - 5 пикселей

CLASS
NAME "Caulinia flexilis"
EXPRESSION '2'
STYLE
SYMBOL
NAME 'circle'
TYPE ELLIPSE
FILLED TRUE
POINTS
1 1
END
END
COLOR 0 100 0
END

LABEL
COLOR 0 0 0
SHADOWCOLOR 218 218 218
SHADOWSIZE 2 2
TYPE TRUETYPE
FONT FreeSerifBold
SIZE 8
ANTIALIAS TRUE
POSITION CL
PARTIALS FALSE
MINDISTANCE 300
BUFFER 3
ENCODING CP1251
END
END
или
CLASS
NAME "Caulinia flexilis"
EXPRESSION '2'
STYLE
SYMBOL "LINE92"
COLOR 0 100 0
END

LABEL
COLOR 0 0 0
SHADOWCOLOR 218 218 218
SHADOWSIZE 2 2
TYPE TRUETYPE
FONT FreeSerifBold
SIZE 8
ANTIALIAS TRUE
POSITION CL
PARTIALS FALSE
MINDISTANCE 300
BUFFER 3
ENCODING CP1251
END
END

Буду очень благодарна!

Re: точечный слой в Mapserver

Добавлено: 13 дек 2012, 09:22
Denis Rykov
Какая версия MapServer? Согласно документации объект SYMBOL внутри CLASS deprecated, начиная с версии 6.0. В этом случае описываете символ в файле symbols.sym и кладёте его рядом с map-файлом. Содержание файла symbols.sym:

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


SYMBOLSET
SYMBOL
NAME 'circle'
TYPE ELLIPSE
FILLED TRUE
POINTS
1 1
END
END
END

Подключаете symbols.sym в map-файл:

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

SYMBOLSET './symbols.sym'

И используете при описании символики слоя:

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


CLASS
STYLE
SYMBOL 'circle'
SIZE 10
END
COLOR 0 100 0
END

Re: точечный слой в Mapserver

Добавлено: 13 дек 2012, 11:03
Marina TS
Спасибо большое за ответ! я создала файл symbols.sym, сохранила его рядом с map- файлом, прописала путь к
SYMBOLSET "../default/symbols.sym"
в описании символики слоя

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

CLASS
            STYLE
	  SYMBOL 'circle'
    SIZE 10
	END
	    COLOR 0 100 0
	     END
		 
		 LABEL
        COLOR 0 0 0
        SHADOWCOLOR 218 218 218
        SHADOWSIZE 2 2
        TYPE TRUETYPE
        FONT FreeSerifBold
        SIZE 8
        ANTIALIAS TRUE
        POSITION CL
        PARTIALS FALSE
        MINDISTANCE 300
        BUFFER 3
        ENCODING CP1251
     END
    END
выдает ошибку "Warning: ms_newMapObj(): [MapServer Error]: loadLayer(): Parsing error near (LABEL):(line 562) in D:\ms4w\apps\pmapper\pmapper-4.3.0\incphp\globals.php on line 66 Fatal error: Uncaught exception 'MapScriptException' with message 'Failed to open map file "D:/ms4w/apps/pmapper/pmapper-4.3.0/config/default/forest.map"' in D:\ms4w\apps\pmapper\pmapper-4.3.0\incphp\globals.php:66 Stack trace: #0 D:\ms4w\apps\pmapper\pmapper-4.3.0\incphp\globals.php(66): ms_newMapObj('D:/ms4w/apps/pm...') #1 D:\ms4w\apps\pmapper\pmapper-4.3.0\map_default.phtml(43): require_once('D:\ms4w\apps\pm...') #2 {main} thrown in D:\ms4w\apps\pmapper\pmapper-4.3.0\incphp\globals.php on line 66"

line 562 -'это строка со словом Label, которая идет после описания symbol
До этого symbols.sym лежал в D:\ms4w\apps\pmapper\pmapper-4.3.0\config\common\symbols и в SYMBOLSET я прописывала "../common/symbols/symbols.sym", но выдает такую же ошибку!

Re: точечный слой в Mapserver

Добавлено: 13 дек 2012, 11:14
Denis Rykov
Вы спросили про символику - я ответил. Ну выпилите вы эту секцию с LABEL, если на нее ругается, чтобы проверить работает или нет собственно символика, если символика работает, но проблема с LABEL - создайте отдельную тему.

Re: точечный слой в Mapserver

Добавлено: 13 дек 2012, 11:40
Marina TS
спасибо, символика работает!что-то не так с Label.

Re: точечный слой в Mapserver

Добавлено: 14 дек 2012, 09:58
Семен Рубанов
Может быть, дело в том, что у Вас перед LABEL два раза встречается END? Ведь если первый закрывает секцию STYLE, то второй, получается, заканчивает описание всего блока CLASS. Таким образом, ключевое слово LABEL оказывается "подвешенным" вне класса; соответственно, парсер MapServer не может его корректно обработать. Наверное, Вы забыли удалить второй END, относящийся к описанию символа, когда переносили его в SYMBOLSET.

Re: точечный слой в Mapserver

Добавлено: 22 фев 2013, 10:39
Marina TS
да, так и есть, убрала END , сейчас все работает!