Ошибки

drawEPP(): EPPL7 поддержка не доступна

Выводится ошибка, когда не используются данные EPPL7.

Эта ошибка, вводящая в заблуждение, для пользователей, кто даже не пытается выводить слои в формате EPPL7 (EPPL7 - это растровый формат). Полный текст ошибки может быть следующим:

msDrawRaster(): Unrecognized or unsupported image format ...

drawEPP(): EPPL7 support is not available.

Объяснение

Во время отрисовки слоя MapServer пытается использовать все доступные драйверы, и драйвер EPPL7 самый последний в списке. Это означает, что если произошел сбой в рендеринге слоя, по любой из причин, будет показано это сообщение об ошибке.

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

  • сервер возвращает или исключение ServiceException (которое MapServer не может распознать и разобрать в разумное сообщение об ошибке) или он возвращает изображение в нераспознанном формате... например, возвращает GIF картинку и MapServer собран без поддержки формата GIF.

  • Серверы WMS часто оповещают о поддержке множества форматов изображений, но не поддерживают их в запросе getmap.

loadLayer(): Неизвестный идентификатор. Достигнут предел количества классов

Показ ошибки когда пытаются отрисовать слой с большим количеством классов.

Эта ошибка утверждает, что MapServer достиг своего предела максимального числа классов в слое. Этот максимум может быть изменен в исходниках MapServer, с повторной компиляцией. Файл map.h содержит значения по умолчанию, и ниже приведены значения по умолчанию для MapServer 4.10 и 4.8:

#define MS_MAXCLASSES 250
#define MS_MAXSTYLES 5
#define MS_MAXLAYERS 200

Примечание

Это ограничение было скорректировано в MapServer 5.0 и не должно больше беспокоить.

loadMapInternal(): Ошибка в охвате карты.

Когда загружается ваш map-файл или один из ваших слоёв, MapServer жалуется на ошибку в охвате карты.

Начиная с версии MapServer 4.6, MapServer требует строгого указания охвата в разделах LAYER и MAP. Если minx больше, чем maxx, или miny больше, чем maxy, будет выдана ошибка. Проверьте параметры охвата EXTENT в MAP, охват EXTENT в LAYER , или в параметре wms_extent setting нет таких ошибок. MapServer всегда получает охват в виде:

EXTENT minx miny maxx maxy

Как задавать значения EXTENT из файла?

Самым легким путем получить охват EXTENT векторного файла - это применение утилиты ogrinfo, которая является частью библиотеки GDAL/OGR (для растровых файлов применяется утилита gdalinfo). Пользователи Windows могут скачать пакет FWTools, который включает все утилиты командной строки GDAL и OGR. MS4W также включает утилиты (в ms4w/tools/gdal-ogr-utils/). У пользователей Linux вероятно, уже есть библиотеки GDAL, если же нет, можете также использовать пакет FWTools.

Например, вот результат команды ogrinfo на файле shapefile (обратите внимание на строку с “Extent”):

$ ogrinfo province.shp province -summary
  INFO: Open of `province.shp'
  using driver `ESRI Shapefile' successful.

  Layer name: province
  Geometry: Polygon
  Feature Count: 1071
  Extent: (-2340603.750000, -719746.062500) - (3009430.500000, 3836605.250000)
  Layer SRS WKT:
  (unknown)
  AREA: Real (16.0)
  PERIMETER: Real (16.0)
  PROVINCE_: Real (16.0)
  PROVINCE_I: Real (16.0)
  STATUS: String (64.0)
  NAME: String (64.0)
  NAME_E: String (64.0)
  NAME_F: String (64.0)
  REG_CODE: Real (16.0)
  POLY_FEATU: Real (16.0)
  ISLAND: String (64.0)
  ISLAND_E: String (64.0)
  ISLAND_F: String (64.0)
  YYY: Real (16.0)
  SIZE: Real (16.0)
  ANGLE: Real (16.0)

Утилита Ogrinfo передает охват файла в форме (minx, miny),(maxx, maxy), поэтому охват EXTENT в файле map будет таким:

EXTENT -2340603.750000 -719746.062500 3009430.500000 3836605.250000

Примечание

Охват EXTENT в map файле должен быть таким же и в таких же единицах измерения как проекция PROJECTION в разделе MAP.

msGetLabelSize(): Запрошенный шрифт не найден.

Показывать ошибку, когда пытаются отобразить указанный шрифт.

Это сообщение сообщает вам, что MapServer не может найти указанны шрифт.

Make sure that the font is properly referenced in the FONTSET lookup file.

См.также

FONTSET

msLoadFontset(): ошибка открытия набора шрифтов

Ошибка при попытке показать надпись.

Это сообщение говорит, что MapServer не может найти шрифты из FONTSET определенного в Mapfile.

The FONTSET path is relative to the mapfile location.

См.также

FONTSET

msLoadMap(): сбой открытия файла map

Ошибка при попытке показать изображение карты.

Это сообщение говорит, что MapServer не может найти map файл или есть проблемы с map файлом. Проверьте указанный путь до map файла. Пользователи Linux/Unix должны убедиться, что веб-пользователи обладают правами на доступ к map файлу. Проверьте правильность синтаксиса утилиты shp2img применяемой для создания файла map.

Сообщение об ошибке, о том где MapServer предполагает найти map файл:

[MapServer Error]: msLoadMap(): (D:/ms4w/apps/blah/blah.map)
Failed to open map file D:/ms4w/apps/blah/blah.map

msProcessProjection(): в ‘init’ файле отсутствуют параметры

Ошибка показывается, когда пробуют использовать указанную проекцию.

Это сообщение говорит, что проекция пытаетесь использовать, не определена в файле epsg. Откройте файл epsg в текстовом редакторе и найдите требуемую проекцию, убедитесь, что она существует.

В Windows, файл epsg по умолчанию расположен в c:\proj\nad. Пользователи MS4W могут найти файл epsg в \ms4w\proj\nad.

msProcessProjection(): нет такого файла или папки

Ошибка показывается, когда пытаются указать путь к файлу epsg.

Это сообщение говорит о том, что MapServer не может найти файл epsg.

В Windows, файл epsg по умолчанию расположен в c:\proj\nad. Пользователи MS4W могут найти файл epsg в \ms4w\proj\nad.

Пользователи Linux/Unix должны внимательно указывать путь к файлу epsg, соблюдая регистр, так как имена файлов регистрозависимы в ОС Linux/Unix. Параметр “init=epsg:4326” ссылается на файл epsg, поэтому “init=EPSG:4326” не будет работать, сервер будет искать файл EPSG в верхнем регистре.

Указание расположения файла epsg

Для уточнения расположение epsg есть несколько параметров:

  1. Используйте системную переменную (“переменные среды окружения” в windows) с именем “PROJ_LIB” и укажите в ней вашу epsg папку.

  2. Можно использовать параметр CONFIG в map файле для принудительного указания пути к файлу epsg. Этот параметр указывается на уровне MAP.

    См.также

    Mapfile

    MAP
        ...
        CONFIG "PROJ_LIB" "C:/somedir/proj/nad/"
        ...
    END
    
  3. Можно задать переменную окружения в веб-сервере. В Apache есть директива SetEnv, которая может содержать переменные окружения. Добавьте что-то вроде этого в ваш Apache конфигурационный файл httpd.conf:

    SetEnv PROJ_LIB C:/somedir/proj/nad/
    

msProcessProjection(): Ошибка в библиотеке проекций. Главная ось или радиус = 0 или не заданы

Ошибка при попытке показать изображение в указанной проекции (параметрах проекции).

Начиная с MapServer 4.0, требуется указать эллипсоид данной проекции. Пропуск параметра о эллипсоиде приведет, в более поздних версиях MapServer, к ошибке.

Правильные примеры:

4.0 и новее:

PROJECTION
  "proj=latlong"
  "ellps=WGS84"
END

до версии MapServer 4.0:

PROJECTION
  "proj=latlong"
END

msQueryByPoint: поиск вернул пустой результат

Почему получаю ошибку “msQueryByPoint(): поиск вернул пустой результат. Нет подходящей(их) записи(ей)”, когда запрашиваются объекты, о которых точно известно, что существуют?

Запрос объекта требует объекта-шаблона TEMPLATE в объекте CLASS вашего описания слоя LAYER. Для значений точек во фрагменте html применяется синтаксис шаблонов MapServer.

Например, фрагмент из Map-файла:

LAYER
  NAME "Parcel9"
  TYPE POLYGON
  STATUS OFF
  DATA "Parcels/area09_parcels"
  CLASS
    STYLE
      OUTLINECOLOR 128 128 128
      COLOR 153 205 255
    END
    TEMPLATE "templates/Parcels/area09_parcels.html"
  END

  HEADER "templates/Parcels/area09_parcels_header.html"
  FOOTER "templates/Parcels/area09_parcels_footer.html"

END

Пример шаблона:

<tr>
  <td>[lrn]</td>
  <td>[PIN]</td>
</tr>

Специальное ключевое слово [lrn] это индикатор строки в результате, начинается с 1. [PIN] - это имя атрибута объекта.

msReturnPage(): Ошибка веб приложения. Неправильное имя шаблона

This error may occur if you try to access a template file with a file extension that is not recognized by MapServer. Valid file extensions for templates are:

.gml
.html
.htm
.js
.kml
.svg
.tmpl
.wml
.xml

This error may also occur when you are attempting to use a URL template for a query. The issue is that URL templates are only allowed for query modes that return only one result (e.g. query or itemquery)

Вы можете использовать шаблоны URL для запросов в режимах mode=query или mode=itemquery. Если попытаться выполнить запрос в режиме mode=nquery или mode=itemnquery, будет выдана ошибка:

Content-type: text/html msReturnPage(): Web application error. Malformed template name

msSaveImageGD(): нет досутпа к файлу

Ошибка при попытке показать изображение карты.

Ошибка отображается, если MapServer не может показать изображение карты. Вот несколько причин для проверки:

  • Заданы правильные параметры IMAGEPATH и IMAGEURL в map-файле

  • В режиме CGI, в страницах init, параметры IMAGEPATH и IMAGEURL заданы правильно.

  • Пользователи Linux/Unix должны убедиться, что веб-пользователь обладает правами на запись в IMAGEPATH

msWMSLoadGetMapParams(): ошибка сервера WMS. Размер изображения вышел за пределы, ширина WIDTH и высота HEIGHT должны быть между 1 и 2048 пикселями

Ошибка, которая возвращается/показывается, когда пользователь запрашивает изображение карты (через WMS), превышающая максимально разрешенные ширину и высоту для этого сервиса.

Для увеличения максимально допустимых ширины и высоты карты, создаваемой сервисом, используйте параметр MAXSIZE в объекте MAP. Построение больших карт требует больших мощностей и больше памяти, поэтому будьте внимательны.

Unable to load dll (MapScript)

Одна из библиотек dll, от которой зависит mapscript.dll, не может быть загружена.

Вы можете получить эту проблему на Windows, и в большинстве случаев может быть связана с отсутствующей или незагружаемой общей библиотекой. Сообщение об ошибке говорит о mapscript.dll, но безусловно отсутствует одна или несколько из DLL библиотек, от которых зависит libmap.dll. Таким образом, в первую очередь вы можете проверить зависимости вашего libmap.dll в каталоге приложения. Для этой задачи вы можете использовать Visual Studio Dependency Walker. Далее вы можете использовать инструмент мониторинга файлов (например SysInternal’s filemon), чтобы обнаружить библиотеки DLL, которые не могут быть загружены. Я предлагаю хранить все библиотеки DLL, требуемые вашему приложению, в папке приложения. Если вы можете запускать примеры приложений mapscript правильно, значит ваша сборка правильная и все библиотеки DLL доступны.

C#-специфичная информация

Вы можете обнаружить, что интерфейс mapscript C# ведет себя по-разному в приложениях пользователя и приложениях ASP.NET. Хотя вы можете правильно запустить рендеринг карты, вы можете столкнуться с проблемой загрузки библиотек DLL в приложениях ASP.NET. Во время создания проекта ASP.NET ваша папка приложения будет по умолчанию ‘Inetpubwwwroot[YourApp]bin’. Хост процесс приложения будет aspnet_wp.exe или w3wp.exe, в зависимости от системы. Приложение будет запущено в другом контексте безопасности, отличном от интерактивного пользователя (по умолчанию, под контекстом пользователя ASPNET). При размещении библиотеки DLL-s вне директории вашего приложения следует учитывать, что переменная окружения PATH может отличаться между интерактивным пользователем и пользователем ASPNET и / или у вас может не хватать разрешений на доступ к DLL за пределами вашей папки приложения.