首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MapServer - msLoadMap():正则表达式错误。MS_DEFAULT_MAPFILE_PATTERN验证失败

MapServer - msLoadMap():正则表达式错误。MS_DEFAULT_MAPFILE_PATTERN验证失败
EN

Stack Overflow用户
提问于 2021-09-10 16:48:47
回答 1查看 131关注 0票数 1

我正在尝试使用MapServer在我的谷歌地图上加载磁贴。当到达端点时,我收到以下错误:

msLoadMap():正则表达式错误。MS_DEFAULT_MAPFILE_PATTERN验证失败。

其中一个端点的示例如下:

http://localhost:8080/cgi-bin/tiler?layer=layer_392&map.layer[layer_392].class[0].style[0]=SIZE%203&mode=tile&tilemode=gmap&tile=4%2011%205

带有ScriptAlias的apache配置:

代码语言:javascript
复制
# 000-default.conf

<VirtualHost *:80>
  ServerAdmin webmaster@localhost
  DocumentRoot /var/www/web

  LogFormat "{ \"datetime\":\"%{%Y-%m-%d}tT%{%T}t.%{msec_frac}tZ\", \"network.client.ip\":\"%a\", \"http.url_details.host\":\"%V\", \"http.url\":\"%U\", \"http.url_details.queryString\":\"%q\", \"http.method\":\"%m\", \"http.status_code\":\"%>s\", \"http.useragent\":\"%{User-agent}i\", \"http.referer\":\"%{Referer}i\" }," json
  CustomLog /dev/stdout json

  ScriptAlias /cgi-bin/ /var/www/bin/tile-producer/docker/cron-jobs/
  <Directory /var/www>
    Options Indexes FollowSymLinks
    AllowOverride All
    Require all granted

    # Setup rewrite rules
    RewriteEngine on
    RewriteBase "/var/www/web"
  </Directory>
</VirtualHost>

映射文件:

代码语言:javascript
复制
#Generated by MapServer Generator MapWindow plug-in
#
# Start of map file
#
MAP
  NAME telusdirectory
  STATUS ON
  
  EXTENT -180 -90 180 90
  SHAPEPATH 'data'
  IMAGETYPE png
  
  PROJECTION
   "init=epsg:4326"
  END
  
  WEB
    METADATA
        "wms_title" "TELUS Directory Service WMS"
        "wms_onlineresource" "http://telus.magicsite.co.uk/cgi-bin/telus?"
        "wms_srs" "EPSG:4326"
        "tile_map_edge_buffer" "100" # 9 pixel rendering buffer
        "http_max_age" "86400"
    END
  END
  
  SYMBOL
    NAME 'square'
    TYPE VECTOR
    FILLED TRUE
    POINTS
      0 1
      0 0
      1 0
      1 1
      0 1
    END
  END #SYMBOL
  
  SYMBOL
    NAME 'ellipse'
    TYPE ELLIPSE
    FILLED TRUE
    POINTS
      1 1
    END
  END #SYMBOL

  IMAGEQUALITY 95
    IMAGETYPE png
    OUTPUTFORMAT
        NAME png
        DRIVER 'GD/PNG'
        MIMETYPE 'image/png'
        EXTENSION 'png'
     IMAGEMODE RGBA
        TRANSPARENT ON
    END  

  #
  # Start of layers definitions
  #
  
  #LAYER_DEFS
  LAYER
    PROJECTION
        "init=epsg:4326"
    END
    NAME layer_392
    TYPE point
    STATUS ON
    DATA 'layer_392.shp'
    CLASS
      NAME 'layer_392'
      STYLE
        SYMBOL 'ellipse'
        SIZE 2
        COLOR 73 22 109
      END #STYLE
    END #CLASS
    TEMPLATE "xxx"
        METADATA
            "wms_title" "Data layer"
        END
  END #LAYER

#/LAYER_DEFS

  
END #MAP

输入时命中的tiler脚本:

代码语言:javascript
复制
#!/usr/bin/perl

use CGI qw(:standard);
use URI::Escape;
use File::Basename;
use Cwd 'abs_path';
use v5.10;

my $q = CGI->new;


my @PARAMS = $q->param;
my $NEW_PARAMS;
my ($x, $y, $z) = split(' ', uri_unescape( scalar $q->param('tile') ) );


$NEW_PARAMS = "map="."/var/www/bin/tile-producer/docker/cron-jobs/mapdata"."/telus.map";


if ( @PARAMS ) {
    foreach  ( @PARAMS ) {
        $NEW_PARAMS .= "&$_=" . uri_escape( $q->param( $_ ) );
    }
}

$ENV{'QUERY_STRING'} = $NEW_PARAMS;
system("/usr/lib/cgi-bin/mapserv");

mapdata文件夹的内容:

EN

回答 1

Stack Overflow用户

发布于 2021-09-13 20:28:24

所以在看完所有这些之后。脚本中的env变量在输入时被命中,但没有传递到CGI。我必须先在Apache上启用它,然后它才开始工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69135504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档