当前位置: 首页 > 知识库问答 >
问题:

在OpenLayers 3中接收空白MapServer磁贴

姜献
2023-03-14

我正在使用OL3与mapserver…我的问题是,mapserver似乎运行良好,我有一个。像这样的“州”的地图文件…

MAP
IMAGETYPE      PNG24
CONFIG "PROJ_LIB" "C:/Program Files/MapServer/projlib/"
EXTENT         -180 -90 180 90
SIZE           256 256
FONTSET "E:/RCIS/Web/MapServerDlls/content/fontset.txt"
IMAGECOLOR     255 255 255
TRANSPARENT ON
PROJECTION 
 AUTO
END
            LAYER
                            GROUP "Base"
                            NAME "States"
                            TYPE POLYGON
                            STATUS ON
                            LABELCACHE ON 
                            PROCESSING 'LABEL_NO_CLIP=1' 
                            CONNECTIONTYPE PLUGIN
                            PLUGIN "msplugin_mssql2008.dll"
                            CONNECTION     "server=stbisqlr3.dvcorp.rcis.com,5208;uid=Mapping01D;pwd=9GreenSnap#4D;Initial Catalog=NATIONALDB;Integrated Security=False"
                            DATA "shape(geography),ST_NAME_MC from    NATIONALDB.sde.STATES USING INDEX STATES_SIDX USING UNIQUE STATES_ID USING   SRID=4269"
                            LABELITEM    "ST_NAME_MC"
                            CLASS
                                            STYLE                                     
                                             OUTLINECOLOR 000 153 000
                                            WIDTH 3
                                            END
                                            LABEL
                                                            COLOR 000 153 000
                                                            TYPE TRUETYPE
                                                            FONT Arial 
                                                            SIZE 12
                                                            ANTIALIAS FALSE
                                                            POSITION AUTO
                                                            PARTIALS FALSE
                                                            MINDISTANCE 2000
                                                            MINSCALEDENOM   20.00                                                               
                                            END
                            END                       
            PROJECTION 
                             AUTO
            END
            END       
END

我在OL3中建立了我的地图…

control.map = new ol.Map({
        target: 'map',
        renderer: 'canvas',
        layers: [],
        view: new ol.View({
            projection: 'EPSG:4326',
            center: [0, 0],
            zoom: 12
        })
    });

创建一个向量层,确定范围,创建视图,并显示向量对象…这很有效!!

vectorObjs.promise.then(function () {
        //Create empty extent
        var extent = ol.extent.createEmpty();
        //Loop through vector layers to add them to map and determine extent


        var totalExtent = ol.extent;

        angular.forEach(webMapValues.vectorFieldLayer, function (Field, key) {                

            control.map.addLayer(Field);
            extent = Field.getSource().getExtent();
            totalExtent = ol.extent.extend(extent, totalExtent);
        })

        control.map.getView().fit(totalExtent, control.map.getSize());



        var view = new ol.View({
            center: control.map.getView().getCenter(),
            zoom: 8,
            minZoom: 1,
            maxZoom: 19

        });
        control.map.view = view;

然后我尝试将状态层添加到地图中,一切看起来都正常,但我没有看到任何状态平铺?

var States = new ol.layer.Tile({
            name: 'States',
            extent: totalExtent,
            source: new ol.source.TileWMS({
               url: 'http://dvfmweb2:80/mapserver/mapserv.exe?map=E:/RCIS/Web/Mapfiles/MappingBase.map&',
                params: { 'LAYERS': 'States', 'BBOX': totalExtent, 'TILED': true }

            })
        });

        control.map.addLayer(States);

当我执行调用时,我在Chrome开发工具中看到几个行项目,指示状态块,即。

当我得到瓷砖回铬这是完整的信息。1.请求URL:

http://servername/mapserver/mapserv.exe?map=E:/RCIS/Web/Mapfiles/MappingStates。地图

请求方式:GET

状态代码: 200 OK

附加信息!!!

当我粘贴其中一个链接,得到一个“200OK”返回码时,我可以看到一个错误,上面写着。。。

<ServiceException code="InvalidSRS">
msWMSLoadGetMapParams(): WMS server error. Invalid CRS given : CRS must be  valid for all requested layers.
</ServiceException>

然而我只看到白色?

非常感谢您的帮助,我在这件事上忙得太久了!!

-鲍勃

共有2个答案

柴凌
2023-03-14

您只能请求服务/层支持的CRS。因此您出现了错误,因为您的层没有列出支持的EPSG:4326

要列出支持的多个CRS,您需要在您的层(或服务,或两者)中添加一个METADATA部分,表达支持的CRS,如:

METADATA
    "WMS_SRS" "CRS:84 EPSG:3857 EPSG:4269 EPSG:4326"
END
史朗
2023-03-14

事实证明,这是映射文件构造不正确的问题。以上是一个有效的映射文件,但要求必须已更改。。。下面是一个有效的映射文件。这可以用作系统的模板。。。请注意所有“您的…”需要填写的地图文件中的位置。

MAP
IMAGETYPE      PNG24
CONFIG "PROJ_LIB" "E:/your/path/to/projlib"
SIZE           256 256
FONTSET "E:/your/path/to/fontset.txt"
IMAGECOLOR     255 255 255
TRANSPARENT ON
PROJECTION 
 "init=epsg:4326"
END
WEB
  METADATA
    "wms_title" "states"
    "wms_enable_request"  "*"
  END
END
LAYER
    NAME "States"
    TYPE POLYGON
    STATUS ON
    LABELCACHE ON 
    PROCESSING 'LABEL_NO_CLIP=1' 
    CONNECTIONTYPE PLUGIN
    PLUGIN "msplugin_mssql2008.dll"
    CONNECTION      "server=YourServername.com,YourPort;uid=YouruserID;pwd=YourDBPassword;Initial    Catalog=YourDatabaseName;Integrated Security=False"
    DATA "shape(geography),YourStateColumnName from YourDatabaseName.STATES USING INDEX YourTableIndex USING UNIQUE YourStateIDColumn USING SRID=4269"
    LABELITEM    "YourStateNameColumn"
            PROCESSING "CLOSE_CONNECTION=DEFER"
    CLASS
        STYLE            
         OUTLINECOLOR 000 153 000
         WIDTH 3
        END
         LABEL
            COLOR 000 153 000
            TYPE TRUETYPE
            FONT Arial 
            SIZE 12
            ANTIALIAS FALSE
            POSITION AUTO
            PARTIALS FALSE

        END
    END     
    PROJECTION 
         "init=epsg:4326"
    END
END 
END

然后另存为状态。从WMS映射并指向它

 类似资料:
  • 我能够从URL发送JSON响应,然后当我在RecyclerView上显示相同的响应时,得到的输出是空白的,但选项卡和导航抽屉仍然存在。运行该应用程序时也没有错误。我也在使用截击库。 问题:我在列出服务的RecylerView上没有得到任何输出。我会在这里贴出与RecyclerView相关的代码。另外,我已经在底部发布了堆栈跟踪。 serviceViewAdapter.java(适配器) fragm

  • 我在向控制器发出的web api rest post请求中始终收到一个空值 在我的控制器中 模型 请求: 我尝试了以下解决方案,但没有任何效果 https://myadventuresincoding.wordpress.com/2012/06/19/c-supporting-textplain-in-an-mvc-4-rc-web-api-application/ 如何在WebAPI中获取POS

  • MapServer,它是美国明尼苏达大学 (University of Minnesota, 简称 UMN)在二十世纪90 年代利用 C语言开发的开源 WebGIS项目。 【MapServer简介】 它起源于 UMN和美国国家航空航天局的合作项目ForNet,以及之后的TerrSIP项目。可以说政府的支持在MapServer前期的发展中起了很大的作 用,1994年MapServer之父Steve

  • 我需要一个scanf()调用来接受空格(没有制表符或换行符,只有空格符号)。 我从这个问题的答案中得到了这个格式说明符: 如何使用扫描允许空间输入 虽然它可以很好地接受第一个输入序列,但它在第一个空白字符所在的位置终止,并使用空字符。发生什么事?我是否使用了错误的格式? 我应该说,我在这里使用scanf()是因为安全不是一个问题;我是唯一一个使用这个特殊程序的人,输入的格式是严格的。

  • 问题内容: 我想在包含空格(任意数量)的Pandas数据框中找到所有值,并用NaN替换这些值。 有什么想法可以改善吗? 基本上我想把这个: 变成这个: 我已经用下面的代码做到了,但是这很丑。这不是Pythonic,而且我敢肯定,这也不是最有效的熊猫使用方式。我遍历每一列,并对通过应用对每个值进行正则表达式搜索的函数生成的列掩码进行布尔替换,在空白处进行匹配。 通过仅迭代可能包含空字符串的字段,可以

  • 我想找到熊猫数据框中包含空白(任意数量)的所有值,并用NaN替换这些值。 有什么想法可以改进吗? 基本上,我想把这个转变为: 为此: 我已经设法做到了下面的代码,但人是丑陋的。这不是蟒蛇,我肯定这也不是对熊猫最有效的利用。我循环遍历每一列,并对应用一个函数生成的列掩码进行布尔替换,该函数对每个值进行正则表达式搜索,并在空格上进行匹配。 只需遍历可能包含空字符串的字段,即可对其进行一点优化: 但这算