# Аннотированный map-файл # Создан Pericles S. Nacionales для обучающего пособия по MapServer # 20050408 # Редакция и перевод на русский язык: GIS-Lab.info: http://gis-lab.info/docs/mapserver/tutorial5/ # Знак фунта (#) используется для обозначения комментариев. # Любой текст после такого знака до конца строки игнорируется. # # Каждый map-файл начинается с ключевого слова MAP, обозначающего начало описания объекта MAP. # Вся карта описывается внутри него. # Описание объекта MAP заканчивается ключевым словом END. # Основой объекта MAP являются пары "ключевое слово/значение" и другие объекты. MAP NAME EX1.9_ IMAGETYPE PNG24 #EXTENT 77.8022 50.6294 87.205 54.4892 #Географический охват #EXTENT 273851.72 5613495.09 901694.92 6055687.33 #UTM EXTENT 283851.72 5613495.09 918194.92 6055687.33 #UTM откорректированный охват SIZE 400 300 SHAPEPATH "/ms4w/apps/tutorial/datarus/" IMAGECOLOR 255 255 255 FONTSET "/ms4w/apps/tutorial/fonts/fonts.list" SYMBOLSET "./symbols/symbols35.sym" # Описание проекции (объект PROJECTION) обычно находится внутри объектов MAP или LAYER. # Проекция, определенная внутри объекта MAP, становится проекцией результирующей # карты - MapServer будет отрисовывать ваши карты в соответствии с установленной проекцией. # Вы также можете использовать объект PROJECTION внутри объекта LAYER для определения # исходной проекции. Ваши слои могут находиться в различных проекциях, при этом MapServer будет # перепроецировать их в соответствии с выходной проекцией. Если проекция не определена в пределах # слоя, MapServer считает, что ваша исходная проекция соответствует выходной. # PROJECTION не является необходимым объектом, если map-файл не # должен соответствовать одной из OGC спецификаций web-сервисов (WMS/WFS/WCS). PROJECTION # Определяем выходную проекцию # Параметры проекции могут быть определены двумя путями. # Это стандартное для Proj.4 определение спроектированной системы # координат (UTM, зона 44, WGS84) "proj=utm" "ellps=WGS84" "datum=WGS84" "zone=44" "units=m" "north" "no_defs" # В качестве альтернативы можно использовать код EPSG END # Конец определения выходной проекции WEB TEMPLATE "example1-9.html" IMAGEPATH '/ms4w/Apache/htdocs/tmp/' IMAGEURL '/tmp/' END # Внутри объекта MAP определяются слои (объекты LAYER). # Для отображения карты должен быть определен как минимум один слой. # По умолчанию можно определить не более 100 слоев. # При необходимости большего количества слоев, необходимо перекомпилировать MapServer. # Лимит слоев, обычно, задаётся в файле map.h. LAYER # Определяем полигональный слой NAME altay_poly DATA altay-a STATUS OFF TYPE POLYGON # Здесь представлен пример определения исходной проекции. # EPSG:4326 - это код географической проекции, # основаной на датуме WGS84. # # Объект PROJECTION, находящийся внутри объекта LAYER определяет входную # проекцию - исходную проекцию ваших данных. PROJECTION "init=epsg:4326" END # Параметр CLASSITEM определяет атрибут, который # позволяет разделить слой на классы. Этот атрибут хранится в dbf-файле используемого # shape-файла. В нашем примере shape-файл altay-a содержит в себе файл # altay-a.dbf, который содержит атрибут "NAM". Будем использовать одно значение # этого атрибута для выделения необходимого района на карте. Параметр CLASSITEM # используется совместно с параметром EXPRESSION. CLASSITEM "NAM" # Внутри объекта LAYER определяются классы (объекты LAYER). # Необходимо определить как минимум один класс. # По умолчанию можно определить не более 10 классов. # При необходимости большего количества классов, необходимо перекомпилировать MapServer. CLASS NAME "Алтайский край" EXPRESSION 'ALTAYSKIY KRAY' STYLE COLOR 255 0 0 END END END # Конец определения полигонального слоя # Помимо векторных данных (shape-файлы - векторные данные), MapServer поддерживает # растровые форматы данных. В мире ГИС наиболее распространенным растровым форматом # данных является GeoTIFF, это обычный TIFF, но содержащий в себе информацию о # географической привязке. MapServer также поддерживает JPEG, PNG, GIF и другие # распространенные форматы. Другие растровые форматы, поддерживаемые MapServer, # включают ESRI Arc/Info grid, HDF и HDF-EOS, NetCDF, Generic raster binaries, # OGC Web Map Service (WMS). Огромное количество поддерживаемых форматов # обеспечивается за счёт использования библиотеки абстракции геоданных # (Geospatial Data Abstraction Library, GDAL). Более подробную информацию по GDAL # можно найти по адресу http://www.gdal.org. MapServer 4.x может читать и отображать # битмаповые (например, GIF), RGB/A (true color) и мультиспектральные растры. LAYER # Определяем растровый слой NAME altay_raster DATA "/ms4w/apps/tutorial/datarus/raster/altay-8bit.tif" STATUS OFF TYPE RASTER PROJECTION "init=epsg:4326" END PROCESSING "BANDS=1,2,3" OFFSITE 0 0 0 END # Конец определения растрового слоя # MapServer позволяет отображать слои других картографических серверов, # поддерживающих картографические сервисы (WMS, Web Mapping Service). WMS - это # спецификация web-сервисов от Open Geospatial Consortium (OGC), являющаяся # стандартом при разработке картографических приложений для web. # Эта возможность позволяет отображать данные, которыми мы не обладаем (или # которые мы не можем хранить у себя ввиду ограниченности дискового пространства). # Основным недостатком такого подхода является то, что мы зависимы от другого сервера, # который может отказать в самый неподходящий момент. # Хорошо, что JPL (Jet Propulsion Laboratory) имеет WMS-сервер, который предоставляет информацию # со спутников MODIS и LandSat о любой местности земного шара. # Попробуйте сохранить такой объём данных у себя на компьютере! LAYER # Начало определения WMS-слоя NAME altay_wms TYPE RASTER OFFSITE 0 0 0 STATUS OFF CONNECTIONTYPE WMS CONNECTION "http://wms.jpl.nasa.gov/wms.cgi?" METADATA "wms_srs" "EPSG:4326" "wms_name" "daily_planet" "wms_server_version" "1.1.1" "wms_format" "image/jpeg" END PROJECTION "init=epsg:4326" END END # Конец определения WMS-слоя LAYER # Определяем линейный слой NAME altay_line DATA altay-a STATUS OFF TYPE LINE PROJECTION "init=epsg:4326" END CLASSITEM "NAM" CLASS NAME "Границы" EXPRESSION 'ALTAYSKIY KRAY' STYLE SYMBOL 'line5' COLOR 200 200 20 SIZE 1 END END END # Конец определения линейного слоя # Подписи могут быть выделены в отдельный слой. Это удобно, если вы хотите подписать объекты # полигонального слоя, перекрытые другими слоями. Выделив подписи в отдельный слой и # разместив их самым верхним слоем на карте, вы можете подписать объекты полигонального слоя, # хотя самих объектов может быть не видно. # # Слой подписей имеет тип ANNOTATION LAYER # Определяем слой подписей NAME altay_label DATA altay-a STATUS OFF TYPE ANNOTATION PROJECTION "init=epsg:4326" END CLASSITEM "NAM" # Точно также как CLASSITEM, LABELITEM определяет атрибут, который позволяет # выводить подписи. В нашем примере будем использовать значение атрибута "LABEL" # для подписывания необходимых полигонов LABELITEM "LABEL" CLASS EXPRESSION 'ALTAYSKIY KRAY' STYLE COLOR -1 -1 -1 END # В объекте CLASS может присутствовать описание нескольких объектов LABEL. # Более подробную информацию по объектам LABEL можно найти по адресу # http://ms.gis.umn.edu/docs/reference/mapfile LABEL COLOR 132 31 31 SHADOWCOLOR 218 218 218 SHADOWSIZE 2 2 TYPE TRUETYPE FONT arial-italic SIZE 12 ANTIALIAS TRUE POSITION CC PARTIALS FALSE MINDISTANCE 300 BUFFER 4 ENCODING CP1251 END END END # Конец определения слоя подписей END # Конец определения карты