2

XML を Geoserver WMS GetMap に「投稿」して、画像を取得できるようにする必要があります。Geoserver の「デモ」機能を使用してテストできる有効な XML がいくつかあり、期待どおりの画像が返されます。

ただし、PHP で同じ要求と応答を生成するために使用する必要があるメカニズムを理解できないようです。

私は cURL を使用してみました (既に WFS 要求に正常に使用しているため)、fputs で遊んだことがありますが、クラックできないようです。

PHP を使用した GeoServer への WMS GetMap 'Posted' XML リクエストの実例はありますか?

どうもありがとう、スティーブ

4

1 に答える 1

2

xml、php、curl を使用して geoserver からアイテムを取得するために curl を使用する方法の例については、以下のコードを参照してください。

<?php

  $xml_builder = '
                    <?xml version="1.0" encoding="utf-8"?>
                    <ogc:GetMap xmlns:ogc="http://www.opengis.net/ows"
                        xmlns:gml="http://www.opengis.net/gml"
                        version="1.2.0"
                        service="WMS">
                    <StyledLayerDescriptor version="1.0.0">
                    <NamedLayer>
                     <Name>myNs:roads</Name>
                     <NamedStyle>
                      <Name>simple_roads</Name>
                     </NamedStyle>
                    </NamedLayer>
                    </StyledLayerDescriptor>
                    <Output>
                     <Format>image/png</Format>
                     <Size>
                     <Width>600</Width>
                     <Height>320</Height>
                     </Size>
                    </Output>
                    <Exceptions>application/vnd.ogc.se+xml</Exceptions>

</ogc:GetMap>
                 ';
  // We send XML via CURL using POST with a http header of text/xml.
  $ch = curl_init('http://localhost:8080/GeoServer/wms');
  curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/xml'));
  curl_setopt($ch, CURLOPT_HEADER, 0);
  curl_setopt($ch, CURLOPT_POST, 1);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $xml_builder);
  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  $ch_result = curl_exec($ch);
  curl_close($ch);
  // Print CURL result.
  echo $ch_result;
?>

明らかに、XMLを変更して、必要なレイヤーに合わせて変更する必要があります。サーバーの観点からローカルホストにない場合は、curl_init の URL をサーバーに変更する必要もあります。

それがすべて機能する場合、返される画像であるため、多くの奇妙なテキストが印刷されるはずです。PNG ヘッダーの一部であるため、上部のテキストに PNG が表示されることがあります。

于 2013-08-09T01:52:43.753 に答える