Como depurar “msProcessProjection (): erro da biblioteca de projeção. nenhuma lista de sistema, errno: 2 "erro no mapserver?

8

Eu acho que tenho uma configuração incorreta no meu servidor de mapas que está impedindo que ele sirva imagens.

No meu arquivo de mapa, tenho esta seção:

  PROJECTION
    "init=epsg:4326"
  END

Se eu deixar essa seção, eu recebo este erro ao ligar GetMapou até GetCapabilities:

msProcessProjection(): Projection library error. no system list, errno: 2

Se eu remover essa seção (não desejável), GetCapabilitiesfunciona, mas GetMapdá este erro:

<ServiceExceptionReport version="1.1.1">
    <ServiceException code="InvalidSRS">msWMSLoadGetMapParams(): WMS server error. Cannot set new SRS on a map that doesn&#39;t have any projection set. Please make sure your mapfile has a projection defined at the top level.</ServiceException>
</ServiceExceptionReport>

O que é esperado, porque acabei de remover a seção.

Então, minha pergunta é como depurar o erro msProcessProjection(): Projection library error. no system list, errno: 2:?

Pesquisando online, vejo comentários relacionados a permissões, mas o apache (usuário executando o httpd) pode acessar os seguintes diretórios definidos no meu httpd.conf:

SetEnv LD_LIBRARY_PATH /some/place/lib/
SetEnv PROJ_LIB /some/place/share/proj/
SetEnv GDAL_DATA /some/place/share/gdal/
SetEnv LC_NUMBERIC C
SetEnv GEOTIFF_CSV /some/place/share/gdal/
SetEnv LANG=C

Em /some/place/share/proj, há um arquivo epsgque é como eu esperava.

Não recebo erros do apache.

Alex B
fonte

Respostas:

3

Você pode executar o mapservprograma diretamente na linha de comando (use supara alternar primeiro para o usuário apache) - executá-lo stracedeve ajudar a determinar como as bibliotecas estão sendo carregadas e as funções estão sendo chamadas.

Você deve definir suas variáveis ​​de ambiente específicas manualmente antes de chamar o mapserv para refletir corretamente sua configuração do Apache.

Além disso, você pode definir outras variáveis ​​de ambiente para simular a execução como um script CGI:

http://www.cgi101.com/book/ch3/text.html

QUERY_STRING será útil.

mwalker
fonte
6

Um par de pensamentos. É um pouco difícil diagnosticar isso sem olhar para o seu arquivo de mapa, mas aqui vai:

  1. Você deve tentar definir sua variável PROJ_LIB como /some/place/share/proj/nad/É onde o arquivo epsg deve estar localizado.

  2. Ativar depuração. Configure-o para o nível 5. Você também precisará configurar um arquivo de log de erros. Veja mais informações sobre ela nos documentos do MapServer http://mapserver.org/mapfile/map.html

Eu estou supondo que o caminho para o banco de dados epsg está errado ou seu usuário não tem direitos para lê-lo.

Se esse não for o problema, verificaria se você definiu todos os metadados de nível de camada e mapa no seu MapFile necessários para servir como servidor WMS. Mais informações aqui: http://mapserver.org/ogc/wms_server.html Verifique se você definiu um SRS / CRS válido nos seus metadados WMS.

DavidF
fonte
4

Acabei de encontrar este problema e descobri que o problema era porque não havia instalado o pacote 'proj-epsg'.

yum install proj-epsg
chris
fonte
1

Para ler mais sobre erros WMS e outros erros comuns, siga o link abaixo;

http://mapserver.org/errors.html#msprocessprojection-no-such-file-or-directory (A propósito, seguir esse método funcionou para mim)

e

http://mapserver.org/errors.html

user28864
fonte
Bem-vindo ao GIS SE! Nesse caso, acho que uma mensagem de erro específica está sendo solicitada, mas você forneceu conselhos genéricos como parte de uma resposta mais ou menos somente de link. Consequentemente, recomendo que você edite sua resposta para explicar como solucionar o erro específico sobre o qual está sendo perguntado.
PolyGeo
Eu tive o mesmo problema anteriormente e, usando o método no primeiro link que forneci, para especificar o local da biblioteca de projetos no arquivo de mapa e definindo a variável de ambiente através do meu servidor Web no arquivo httpd.conf da instalação do Apache , Eu pude contornar o problema. Por isso, forneci o link para a solução e onde o encontrei.
user28864
Tudo bem, desde que você também forneça esse contexto / explicação, e não apenas os links. Eu recomendo que você edite sua resposta para copiar / colar do seu comentário na sua resposta, com uma rápida limpeza. A idéia é que visitantes subsequentes com o mesmo problema tenham uma boa idéia de como resolvê-lo apenas lendo sua resposta, mesmo que os links acabem quebrando em algum momento no futuro. Obrigado por reservar um tempo para responder.
PolyGeo